cmd/8g, cmd/old8a: stop renaming x86 import to i386

Change-Id: If2872e73da4daa4ff1912883d30c8fc9754ef552
Reviewed-on: https://go-review.googlesource.com/6894
Reviewed-by: Rob Pike <r@golang.org>
diff --git a/src/cmd/8g/cgen.go b/src/cmd/8g/cgen.go
index 0b21045..aefae7e 100644
--- a/src/cmd/8g/cgen.go
+++ b/src/cmd/8g/cgen.go
@@ -7,7 +7,7 @@
 import (
 	"cmd/internal/gc"
 	"cmd/internal/obj"
-	i386 "cmd/internal/obj/x86"
+	"cmd/internal/obj/x86"
 	"fmt"
 )
 
@@ -272,7 +272,7 @@
 		gc.OMUL:
 		a = optoas(int(n.Op), nl.Type)
 
-		if a == i386.AIMULB {
+		if a == x86.AIMULB {
 			cgen_bmul(int(n.Op), nl, nr, res)
 			break
 		}
@@ -331,7 +331,7 @@
 		if gc.Isconst(nl, gc.CTSTR) {
 			var n1 gc.Node
 			regalloc(&n1, gc.Types[gc.Tptr], res)
-			p1 := gins(i386.ALEAL, nil, &n1)
+			p1 := gins(x86.ALEAL, nil, &n1)
 			gc.Datastring(nl.Val.U.Sval, &p1.From)
 			gmove(&n1, res)
 			regfree(&n1)
@@ -529,9 +529,9 @@
 
 	var zero gc.Node
 	gc.Nodconst(&zero, gc.Types[gc.TINT32], 0)
-	gins(i386.ACMPL, &hi, &zero)
+	gins(x86.ACMPL, &hi, &zero)
 	splitclean()
-	return gc.Gbranch(i386.AJNE, nil, +1)
+	return gc.Gbranch(x86.AJNE, nil, +1)
 }
 
 /*
@@ -565,7 +565,7 @@
 		clearfat(&n1)
 		var n2 gc.Node
 		regalloc(&n2, gc.Types[gc.Tptr], res)
-		gins(i386.ALEAL, &n1, &n2)
+		gins(x86.ALEAL, &n1, &n2)
 		gmove(&n2, res)
 		regfree(&n2)
 		return
@@ -578,7 +578,7 @@
 		}
 		var n1 gc.Node
 		regalloc(&n1, gc.Types[gc.Tptr], res)
-		gins(i386.ALEAL, n, &n1)
+		gins(x86.ALEAL, n, &n1)
 		gmove(&n1, res)
 		regfree(&n1)
 		return
@@ -746,7 +746,7 @@
 
 		if gc.Isconst(nl, gc.CTSTR) {
 			regalloc(&n3, gc.Types[gc.Tptr], res)
-			p1 := gins(i386.ALEAL, nil, &n3)
+			p1 := gins(x86.ALEAL, nil, &n3)
 			gc.Datastring(nl.Val.U.Sval, &p1.From)
 			p1.From.Scale = 1
 			p1.From.Index = n2.Val.U.Reg
@@ -769,7 +769,7 @@
 		} else // nothing to do
 		if w == 1 || w == 2 || w == 4 || w == 8 {
 			// LEAL (n3)(n2*w), n3
-			p1 := gins(i386.ALEAL, &n2, &n3)
+			p1 := gins(x86.ALEAL, &n2, &n3)
 
 			p1.From.Scale = int16(w)
 			p1.From.Type = obj.TYPE_MEM
@@ -858,7 +858,7 @@
 		// Increase the refcount of the register so that igen's caller
 	// has to call regfree.
 	case gc.OINDREG:
-		if n.Val.U.Reg != i386.REG_SP {
+		if n.Val.U.Reg != x86.REG_SP {
 			reg[n.Val.U.Reg]++
 		}
 		*a = *n
@@ -914,7 +914,7 @@
 		fp := gc.Structfirst(&flist, gc.Getoutarg(n.Left.Type))
 		*a = gc.Node{}
 		a.Op = gc.OINDREG
-		a.Val.U.Reg = i386.REG_SP
+		a.Val.U.Reg = x86.REG_SP
 		a.Addable = 1
 		a.Xoffset = fp.Width
 		a.Type = n.Type
@@ -1030,9 +1030,9 @@
 		var n1 gc.Node
 		gc.Nodconst(&n1, n.Type, 0)
 		gins(optoas(gc.OCMP, n.Type), n, &n1)
-		a := i386.AJNE
+		a := x86.AJNE
 		if !true_ {
-			a = i386.AJEQ
+			a = x86.AJEQ
 		}
 		gc.Patch(gc.Gbranch(a, n.Type, likely), to)
 		return
@@ -1228,9 +1228,9 @@
 	var n2 gc.Node
 	gc.Nodconst(&n2, n.Type, 0)
 	gins(optoas(gc.OCMP, n.Type), &n1, &n2)
-	a := i386.AJNE
+	a := x86.AJNE
 	if !true_ {
-		a = i386.AJEQ
+		a = x86.AJEQ
 	}
 	gc.Patch(gc.Gbranch(a, n.Type, likely), to)
 	regfree(&n1)
@@ -1355,9 +1355,9 @@
 	}
 
 	var dst gc.Node
-	gc.Nodreg(&dst, gc.Types[gc.Tptr], i386.REG_DI)
+	gc.Nodreg(&dst, gc.Types[gc.Tptr], x86.REG_DI)
 	var src gc.Node
-	gc.Nodreg(&src, gc.Types[gc.Tptr], i386.REG_SI)
+	gc.Nodreg(&src, gc.Types[gc.Tptr], x86.REG_SI)
 
 	var tsrc gc.Node
 	gc.Tempname(&tsrc, gc.Types[gc.Tptr])
@@ -1392,40 +1392,40 @@
 	// the src and dst overlap, then reverse direction
 	if osrc < odst && int64(odst) < int64(osrc)+w {
 		// reverse direction
-		gins(i386.ASTD, nil, nil) // set direction flag
+		gins(x86.ASTD, nil, nil) // set direction flag
 		if c > 0 {
-			gconreg(i386.AADDL, w-1, i386.REG_SI)
-			gconreg(i386.AADDL, w-1, i386.REG_DI)
+			gconreg(x86.AADDL, w-1, x86.REG_SI)
+			gconreg(x86.AADDL, w-1, x86.REG_DI)
 
-			gconreg(i386.AMOVL, int64(c), i386.REG_CX)
-			gins(i386.AREP, nil, nil)   // repeat
-			gins(i386.AMOVSB, nil, nil) // MOVB *(SI)-,*(DI)-
+			gconreg(x86.AMOVL, int64(c), x86.REG_CX)
+			gins(x86.AREP, nil, nil)   // repeat
+			gins(x86.AMOVSB, nil, nil) // MOVB *(SI)-,*(DI)-
 		}
 
 		if q > 0 {
 			if c > 0 {
-				gconreg(i386.AADDL, -3, i386.REG_SI)
-				gconreg(i386.AADDL, -3, i386.REG_DI)
+				gconreg(x86.AADDL, -3, x86.REG_SI)
+				gconreg(x86.AADDL, -3, x86.REG_DI)
 			} else {
-				gconreg(i386.AADDL, w-4, i386.REG_SI)
-				gconreg(i386.AADDL, w-4, i386.REG_DI)
+				gconreg(x86.AADDL, w-4, x86.REG_SI)
+				gconreg(x86.AADDL, w-4, x86.REG_DI)
 			}
 
-			gconreg(i386.AMOVL, int64(q), i386.REG_CX)
-			gins(i386.AREP, nil, nil)   // repeat
-			gins(i386.AMOVSL, nil, nil) // MOVL *(SI)-,*(DI)-
+			gconreg(x86.AMOVL, int64(q), x86.REG_CX)
+			gins(x86.AREP, nil, nil)   // repeat
+			gins(x86.AMOVSL, nil, nil) // MOVL *(SI)-,*(DI)-
 		}
 
 		// we leave with the flag clear
-		gins(i386.ACLD, nil, nil)
+		gins(x86.ACLD, nil, nil)
 	} else {
-		gins(i386.ACLD, nil, nil) // paranoia.  TODO(rsc): remove?
+		gins(x86.ACLD, nil, nil) // paranoia.  TODO(rsc): remove?
 
 		// normal direction
 		if q > 128 || (q >= 4 && gc.Nacl) {
-			gconreg(i386.AMOVL, int64(q), i386.REG_CX)
-			gins(i386.AREP, nil, nil)   // repeat
-			gins(i386.AMOVSL, nil, nil) // MOVL *(SI)+,*(DI)+
+			gconreg(x86.AMOVL, int64(q), x86.REG_CX)
+			gins(x86.AREP, nil, nil)   // repeat
+			gins(x86.AMOVSL, nil, nil) // MOVL *(SI)+,*(DI)+
 		} else if q >= 4 {
 			p := gins(obj.ADUFFCOPY, nil, nil)
 			p.To.Type = obj.TYPE_ADDR
@@ -1435,7 +1435,7 @@
 			p.To.Offset = 10 * (128 - int64(q))
 		} else if !gc.Nacl && c == 0 {
 			var cx gc.Node
-			gc.Nodreg(&cx, gc.Types[gc.TINT32], i386.REG_CX)
+			gc.Nodreg(&cx, gc.Types[gc.TINT32], x86.REG_CX)
 
 			// We don't need the MOVSL side-effect of updating SI and DI,
 			// and issuing a sequence of MOVLs directly is faster.
@@ -1451,13 +1451,13 @@
 			}
 		} else {
 			for q > 0 {
-				gins(i386.AMOVSL, nil, nil) // MOVL *(SI)+,*(DI)+
+				gins(x86.AMOVSL, nil, nil) // MOVL *(SI)+,*(DI)+
 				q--
 			}
 		}
 
 		for c > 0 {
-			gins(i386.AMOVSB, nil, nil) // MOVB *(SI)+,*(DI)+
+			gins(x86.AMOVSB, nil, nil) // MOVB *(SI)+,*(DI)+
 			c--
 		}
 	}
diff --git a/src/cmd/8g/cgen64.go b/src/cmd/8g/cgen64.go
index aec1e99..4c435f6 100644
--- a/src/cmd/8g/cgen64.go
+++ b/src/cmd/8g/cgen64.go
@@ -7,7 +7,7 @@
 import (
 	"cmd/internal/gc"
 	"cmd/internal/obj"
-	i386 "cmd/internal/obj/x86"
+	"cmd/internal/obj/x86"
 )
 
 /*
@@ -31,9 +31,9 @@
 		var hi1 gc.Node
 		var lo1 gc.Node
 		split64(res, &lo1, &hi1)
-		gins(i386.ANEGL, nil, &lo1)
-		gins(i386.AADCL, ncon(0), &hi1)
-		gins(i386.ANEGL, nil, &hi1)
+		gins(x86.ANEGL, nil, &lo1)
+		gins(x86.AADCL, ncon(0), &hi1)
+		gins(x86.ANEGL, nil, &hi1)
 		splitclean()
 		return
 
@@ -42,8 +42,8 @@
 		var lo1 gc.Node
 		var hi1 gc.Node
 		split64(res, &lo1, &hi1)
-		gins(i386.ANOTL, nil, &lo1)
-		gins(i386.ANOTL, nil, &hi1)
+		gins(x86.ANOTL, nil, &lo1)
+		gins(x86.ANOTL, nil, &hi1)
 		splitclean()
 		return
 
@@ -78,11 +78,11 @@
 	}
 
 	var ax gc.Node
-	gc.Nodreg(&ax, gc.Types[gc.TINT32], i386.REG_AX)
+	gc.Nodreg(&ax, gc.Types[gc.TINT32], x86.REG_AX)
 	var cx gc.Node
-	gc.Nodreg(&cx, gc.Types[gc.TINT32], i386.REG_CX)
+	gc.Nodreg(&cx, gc.Types[gc.TINT32], x86.REG_CX)
 	var dx gc.Node
-	gc.Nodreg(&dx, gc.Types[gc.TINT32], i386.REG_DX)
+	gc.Nodreg(&dx, gc.Types[gc.TINT32], x86.REG_DX)
 
 	// Setup for binary operation.
 	var hi1 gc.Node
@@ -99,19 +99,19 @@
 	switch n.Op {
 	// TODO: Constants
 	case gc.OADD:
-		gins(i386.AMOVL, &lo1, &ax)
+		gins(x86.AMOVL, &lo1, &ax)
 
-		gins(i386.AMOVL, &hi1, &dx)
-		gins(i386.AADDL, &lo2, &ax)
-		gins(i386.AADCL, &hi2, &dx)
+		gins(x86.AMOVL, &hi1, &dx)
+		gins(x86.AADDL, &lo2, &ax)
+		gins(x86.AADCL, &hi2, &dx)
 
 		// TODO: Constants.
 	case gc.OSUB:
-		gins(i386.AMOVL, &lo1, &ax)
+		gins(x86.AMOVL, &lo1, &ax)
 
-		gins(i386.AMOVL, &hi1, &dx)
-		gins(i386.ASUBL, &lo2, &ax)
-		gins(i386.ASBBL, &hi2, &dx)
+		gins(x86.AMOVL, &hi1, &dx)
+		gins(x86.ASUBL, &lo2, &ax)
+		gins(x86.ASBBL, &hi2, &dx)
 
 		// let's call the next two EX and FX.
 	case gc.OMUL:
@@ -122,30 +122,30 @@
 		regalloc(&fx, gc.Types[gc.TPTR32], nil)
 
 		// load args into DX:AX and EX:CX.
-		gins(i386.AMOVL, &lo1, &ax)
+		gins(x86.AMOVL, &lo1, &ax)
 
-		gins(i386.AMOVL, &hi1, &dx)
-		gins(i386.AMOVL, &lo2, &cx)
-		gins(i386.AMOVL, &hi2, &ex)
+		gins(x86.AMOVL, &hi1, &dx)
+		gins(x86.AMOVL, &lo2, &cx)
+		gins(x86.AMOVL, &hi2, &ex)
 
 		// if DX and EX are zero, use 32 x 32 -> 64 unsigned multiply.
-		gins(i386.AMOVL, &dx, &fx)
+		gins(x86.AMOVL, &dx, &fx)
 
-		gins(i386.AORL, &ex, &fx)
-		p1 := gc.Gbranch(i386.AJNE, nil, 0)
-		gins(i386.AMULL, &cx, nil) // implicit &ax
+		gins(x86.AORL, &ex, &fx)
+		p1 := gc.Gbranch(x86.AJNE, nil, 0)
+		gins(x86.AMULL, &cx, nil) // implicit &ax
 		p2 := gc.Gbranch(obj.AJMP, nil, 0)
 		gc.Patch(p1, gc.Pc)
 
 		// full 64x64 -> 64, from 32x32 -> 64.
-		gins(i386.AIMULL, &cx, &dx)
+		gins(x86.AIMULL, &cx, &dx)
 
-		gins(i386.AMOVL, &ax, &fx)
-		gins(i386.AIMULL, &ex, &fx)
-		gins(i386.AADDL, &dx, &fx)
-		gins(i386.AMOVL, &cx, &dx)
-		gins(i386.AMULL, &dx, nil) // implicit &ax
-		gins(i386.AADDL, &fx, &dx)
+		gins(x86.AMOVL, &ax, &fx)
+		gins(x86.AIMULL, &ex, &fx)
+		gins(x86.AADDL, &dx, &fx)
+		gins(x86.AMOVL, &cx, &dx)
+		gins(x86.AMULL, &dx, nil) // implicit &ax
+		gins(x86.AADDL, &fx, &dx)
 		gc.Patch(p2, gc.Pc)
 
 		regfree(&ex)
@@ -168,22 +168,22 @@
 			// reverse during load to do the first 32 bits of rotate
 			v -= 32
 
-			gins(i386.AMOVL, &lo1, &dx)
-			gins(i386.AMOVL, &hi1, &ax)
+			gins(x86.AMOVL, &lo1, &dx)
+			gins(x86.AMOVL, &hi1, &ax)
 		} else {
-			gins(i386.AMOVL, &lo1, &ax)
-			gins(i386.AMOVL, &hi1, &dx)
+			gins(x86.AMOVL, &lo1, &ax)
+			gins(x86.AMOVL, &hi1, &dx)
 		}
 
 		if v == 0 {
 		} else // done
 		{
-			gins(i386.AMOVL, &dx, &cx)
-			p1 := gins(i386.ASHLL, ncon(uint32(v)), &dx)
-			p1.From.Index = i386.REG_AX // double-width shift
+			gins(x86.AMOVL, &dx, &cx)
+			p1 := gins(x86.ASHLL, ncon(uint32(v)), &dx)
+			p1.From.Index = x86.REG_AX // double-width shift
 			p1.From.Scale = 0
-			p1 = gins(i386.ASHLL, ncon(uint32(v)), &ax)
-			p1.From.Index = i386.REG_CX // double-width shift
+			p1 = gins(x86.ASHLL, ncon(uint32(v)), &ax)
+			p1.From.Index = x86.REG_CX // double-width shift
 			p1.From.Scale = 0
 		}
 
@@ -196,8 +196,8 @@
 				}
 				splitclean()
 				split64(res, &lo2, &hi2)
-				gins(i386.AMOVL, ncon(0), &lo2)
-				gins(i386.AMOVL, ncon(0), &hi2)
+				gins(x86.AMOVL, ncon(0), &lo2)
+				gins(x86.AMOVL, ncon(0), &hi2)
 				splitclean()
 				return
 			}
@@ -209,71 +209,71 @@
 				split64(res, &lo2, &hi2)
 				gmove(&lo1, &hi2)
 				if v > 32 {
-					gins(i386.ASHLL, ncon(uint32(v-32)), &hi2)
+					gins(x86.ASHLL, ncon(uint32(v-32)), &hi2)
 				}
 
-				gins(i386.AMOVL, ncon(0), &lo2)
+				gins(x86.AMOVL, ncon(0), &lo2)
 				splitclean()
 				splitclean()
 				return
 			}
 
 			// general shift
-			gins(i386.AMOVL, &lo1, &ax)
+			gins(x86.AMOVL, &lo1, &ax)
 
-			gins(i386.AMOVL, &hi1, &dx)
-			p1 := gins(i386.ASHLL, ncon(uint32(v)), &dx)
-			p1.From.Index = i386.REG_AX // double-width shift
+			gins(x86.AMOVL, &hi1, &dx)
+			p1 := gins(x86.ASHLL, ncon(uint32(v)), &dx)
+			p1.From.Index = x86.REG_AX // double-width shift
 			p1.From.Scale = 0
-			gins(i386.ASHLL, ncon(uint32(v)), &ax)
+			gins(x86.ASHLL, ncon(uint32(v)), &ax)
 			break
 		}
 
 		// load value into DX:AX.
-		gins(i386.AMOVL, &lo1, &ax)
+		gins(x86.AMOVL, &lo1, &ax)
 
-		gins(i386.AMOVL, &hi1, &dx)
+		gins(x86.AMOVL, &hi1, &dx)
 
 		// load shift value into register.
 		// if high bits are set, zero value.
 		var p1 *obj.Prog
 
 		if gc.Is64(r.Type) {
-			gins(i386.ACMPL, &hi2, ncon(0))
-			p1 = gc.Gbranch(i386.AJNE, nil, +1)
-			gins(i386.AMOVL, &lo2, &cx)
+			gins(x86.ACMPL, &hi2, ncon(0))
+			p1 = gc.Gbranch(x86.AJNE, nil, +1)
+			gins(x86.AMOVL, &lo2, &cx)
 		} else {
 			cx.Type = gc.Types[gc.TUINT32]
 			gmove(r, &cx)
 		}
 
 		// if shift count is >=64, zero value
-		gins(i386.ACMPL, &cx, ncon(64))
+		gins(x86.ACMPL, &cx, ncon(64))
 
 		p2 := gc.Gbranch(optoas(gc.OLT, gc.Types[gc.TUINT32]), nil, +1)
 		if p1 != nil {
 			gc.Patch(p1, gc.Pc)
 		}
-		gins(i386.AXORL, &dx, &dx)
-		gins(i386.AXORL, &ax, &ax)
+		gins(x86.AXORL, &dx, &dx)
+		gins(x86.AXORL, &ax, &ax)
 		gc.Patch(p2, gc.Pc)
 
 		// if shift count is >= 32, zero low.
-		gins(i386.ACMPL, &cx, ncon(32))
+		gins(x86.ACMPL, &cx, ncon(32))
 
 		p1 = gc.Gbranch(optoas(gc.OLT, gc.Types[gc.TUINT32]), nil, +1)
-		gins(i386.AMOVL, &ax, &dx)
-		gins(i386.ASHLL, &cx, &dx) // SHLL only uses bottom 5 bits of count
-		gins(i386.AXORL, &ax, &ax)
+		gins(x86.AMOVL, &ax, &dx)
+		gins(x86.ASHLL, &cx, &dx) // SHLL only uses bottom 5 bits of count
+		gins(x86.AXORL, &ax, &ax)
 		p2 = gc.Gbranch(obj.AJMP, nil, 0)
 		gc.Patch(p1, gc.Pc)
 
 		// general shift
-		p1 = gins(i386.ASHLL, &cx, &dx)
+		p1 = gins(x86.ASHLL, &cx, &dx)
 
-		p1.From.Index = i386.REG_AX // double-width shift
+		p1.From.Index = x86.REG_AX // double-width shift
 		p1.From.Scale = 0
-		gins(i386.ASHLL, &cx, &ax)
+		gins(x86.ASHLL, &cx, &ax)
 		gc.Patch(p2, gc.Pc)
 
 	case gc.ORSH:
@@ -287,12 +287,12 @@
 				split64(res, &lo2, &hi2)
 				if hi1.Type.Etype == gc.TINT32 {
 					gmove(&hi1, &lo2)
-					gins(i386.ASARL, ncon(31), &lo2)
+					gins(x86.ASARL, ncon(31), &lo2)
 					gmove(&hi1, &hi2)
-					gins(i386.ASARL, ncon(31), &hi2)
+					gins(x86.ASARL, ncon(31), &hi2)
 				} else {
-					gins(i386.AMOVL, ncon(0), &lo2)
-					gins(i386.AMOVL, ncon(0), &hi2)
+					gins(x86.AMOVL, ncon(0), &lo2)
+					gins(x86.AMOVL, ncon(0), &hi2)
 				}
 
 				splitclean()
@@ -310,9 +310,9 @@
 				}
 				if hi1.Type.Etype == gc.TINT32 {
 					gmove(&hi1, &hi2)
-					gins(i386.ASARL, ncon(31), &hi2)
+					gins(x86.ASARL, ncon(31), &hi2)
 				} else {
-					gins(i386.AMOVL, ncon(0), &hi2)
+					gins(x86.AMOVL, ncon(0), &hi2)
 				}
 				splitclean()
 				splitclean()
@@ -320,71 +320,71 @@
 			}
 
 			// general shift
-			gins(i386.AMOVL, &lo1, &ax)
+			gins(x86.AMOVL, &lo1, &ax)
 
-			gins(i386.AMOVL, &hi1, &dx)
-			p1 := gins(i386.ASHRL, ncon(uint32(v)), &ax)
-			p1.From.Index = i386.REG_DX // double-width shift
+			gins(x86.AMOVL, &hi1, &dx)
+			p1 := gins(x86.ASHRL, ncon(uint32(v)), &ax)
+			p1.From.Index = x86.REG_DX // double-width shift
 			p1.From.Scale = 0
 			gins(optoas(gc.ORSH, hi1.Type), ncon(uint32(v)), &dx)
 			break
 		}
 
 		// load value into DX:AX.
-		gins(i386.AMOVL, &lo1, &ax)
+		gins(x86.AMOVL, &lo1, &ax)
 
-		gins(i386.AMOVL, &hi1, &dx)
+		gins(x86.AMOVL, &hi1, &dx)
 
 		// load shift value into register.
 		// if high bits are set, zero value.
 		var p1 *obj.Prog
 
 		if gc.Is64(r.Type) {
-			gins(i386.ACMPL, &hi2, ncon(0))
-			p1 = gc.Gbranch(i386.AJNE, nil, +1)
-			gins(i386.AMOVL, &lo2, &cx)
+			gins(x86.ACMPL, &hi2, ncon(0))
+			p1 = gc.Gbranch(x86.AJNE, nil, +1)
+			gins(x86.AMOVL, &lo2, &cx)
 		} else {
 			cx.Type = gc.Types[gc.TUINT32]
 			gmove(r, &cx)
 		}
 
 		// if shift count is >=64, zero or sign-extend value
-		gins(i386.ACMPL, &cx, ncon(64))
+		gins(x86.ACMPL, &cx, ncon(64))
 
 		p2 := gc.Gbranch(optoas(gc.OLT, gc.Types[gc.TUINT32]), nil, +1)
 		if p1 != nil {
 			gc.Patch(p1, gc.Pc)
 		}
 		if hi1.Type.Etype == gc.TINT32 {
-			gins(i386.ASARL, ncon(31), &dx)
-			gins(i386.AMOVL, &dx, &ax)
+			gins(x86.ASARL, ncon(31), &dx)
+			gins(x86.AMOVL, &dx, &ax)
 		} else {
-			gins(i386.AXORL, &dx, &dx)
-			gins(i386.AXORL, &ax, &ax)
+			gins(x86.AXORL, &dx, &dx)
+			gins(x86.AXORL, &ax, &ax)
 		}
 
 		gc.Patch(p2, gc.Pc)
 
 		// if shift count is >= 32, sign-extend hi.
-		gins(i386.ACMPL, &cx, ncon(32))
+		gins(x86.ACMPL, &cx, ncon(32))
 
 		p1 = gc.Gbranch(optoas(gc.OLT, gc.Types[gc.TUINT32]), nil, +1)
-		gins(i386.AMOVL, &dx, &ax)
+		gins(x86.AMOVL, &dx, &ax)
 		if hi1.Type.Etype == gc.TINT32 {
-			gins(i386.ASARL, &cx, &ax) // SARL only uses bottom 5 bits of count
-			gins(i386.ASARL, ncon(31), &dx)
+			gins(x86.ASARL, &cx, &ax) // SARL only uses bottom 5 bits of count
+			gins(x86.ASARL, ncon(31), &dx)
 		} else {
-			gins(i386.ASHRL, &cx, &ax)
-			gins(i386.AXORL, &dx, &dx)
+			gins(x86.ASHRL, &cx, &ax)
+			gins(x86.AXORL, &dx, &dx)
 		}
 
 		p2 = gc.Gbranch(obj.AJMP, nil, 0)
 		gc.Patch(p1, gc.Pc)
 
 		// general shift
-		p1 = gins(i386.ASHRL, &cx, &ax)
+		p1 = gins(x86.ASHRL, &cx, &ax)
 
-		p1.From.Index = i386.REG_DX // double-width shift
+		p1.From.Index = x86.REG_DX // double-width shift
 		p1.From.Scale = 0
 		gins(optoas(gc.ORSH, hi1.Type), &cx, &dx)
 		gc.Patch(p2, gc.Pc)
@@ -414,10 +414,10 @@
 					break
 
 				case 0xffffffff:
-					gins(i386.ANOTL, nil, &lo2)
+					gins(x86.ANOTL, nil, &lo2)
 
 				default:
-					gins(i386.AXORL, ncon(lv), &lo2)
+					gins(x86.AXORL, ncon(lv), &lo2)
 				}
 
 				switch hv {
@@ -425,32 +425,32 @@
 					break
 
 				case 0xffffffff:
-					gins(i386.ANOTL, nil, &hi2)
+					gins(x86.ANOTL, nil, &hi2)
 
 				default:
-					gins(i386.AXORL, ncon(hv), &hi2)
+					gins(x86.AXORL, ncon(hv), &hi2)
 				}
 
 			case gc.OAND:
 				switch lv {
 				case 0:
-					gins(i386.AMOVL, ncon(0), &lo2)
+					gins(x86.AMOVL, ncon(0), &lo2)
 
 				default:
 					gmove(&lo1, &lo2)
 					if lv != 0xffffffff {
-						gins(i386.AANDL, ncon(lv), &lo2)
+						gins(x86.AANDL, ncon(lv), &lo2)
 					}
 				}
 
 				switch hv {
 				case 0:
-					gins(i386.AMOVL, ncon(0), &hi2)
+					gins(x86.AMOVL, ncon(0), &hi2)
 
 				default:
 					gmove(&hi1, &hi2)
 					if hv != 0xffffffff {
-						gins(i386.AANDL, ncon(hv), &hi2)
+						gins(x86.AANDL, ncon(hv), &hi2)
 					}
 				}
 
@@ -460,11 +460,11 @@
 					gmove(&lo1, &lo2)
 
 				case 0xffffffff:
-					gins(i386.AMOVL, ncon(0xffffffff), &lo2)
+					gins(x86.AMOVL, ncon(0xffffffff), &lo2)
 
 				default:
 					gmove(&lo1, &lo2)
-					gins(i386.AORL, ncon(lv), &lo2)
+					gins(x86.AORL, ncon(lv), &lo2)
 				}
 
 				switch hv {
@@ -472,11 +472,11 @@
 					gmove(&hi1, &hi2)
 
 				case 0xffffffff:
-					gins(i386.AMOVL, ncon(0xffffffff), &hi2)
+					gins(x86.AMOVL, ncon(0xffffffff), &hi2)
 
 				default:
 					gmove(&hi1, &hi2)
-					gins(i386.AORL, ncon(hv), &hi2)
+					gins(x86.AORL, ncon(hv), &hi2)
 				}
 			}
 
@@ -485,8 +485,8 @@
 			return
 		}
 
-		gins(i386.AMOVL, &lo1, &ax)
-		gins(i386.AMOVL, &hi1, &dx)
+		gins(x86.AMOVL, &lo1, &ax)
+		gins(x86.AMOVL, &hi1, &dx)
 		gins(optoas(int(n.Op), lo1.Type), &lo2, &ax)
 		gins(optoas(int(n.Op), lo1.Type), &hi2, &dx)
 	}
@@ -497,8 +497,8 @@
 	splitclean()
 
 	split64(res, &lo1, &hi1)
-	gins(i386.AMOVL, &ax, &lo1)
-	gins(i386.AMOVL, &dx, &hi1)
+	gins(x86.AMOVL, &ax, &lo1)
+	gins(x86.AMOVL, &dx, &hi1)
 	splitclean()
 }
 
@@ -521,11 +521,11 @@
 	t := hi1.Type
 
 	if nl.Op == gc.OLITERAL || nr.Op == gc.OLITERAL {
-		gins(i386.ACMPL, &hi1, &hi2)
+		gins(x86.ACMPL, &hi1, &hi2)
 	} else {
 		regalloc(&rr, gc.Types[gc.TINT32], nil)
-		gins(i386.AMOVL, &hi1, &rr)
-		gins(i386.ACMPL, &rr, &hi2)
+		gins(x86.AMOVL, &hi1, &rr)
+		gins(x86.ACMPL, &rr, &hi2)
 		regfree(&rr)
 	}
 
@@ -540,14 +540,14 @@
 	// jeq to
 	// L:
 	case gc.OEQ:
-		br = gc.Gbranch(i386.AJNE, nil, -likely)
+		br = gc.Gbranch(x86.AJNE, nil, -likely)
 
 		// cmp hi
 	// jne to
 	// cmp lo
 	// jne to
 	case gc.ONE:
-		gc.Patch(gc.Gbranch(i386.AJNE, nil, likely), to)
+		gc.Patch(gc.Gbranch(x86.AJNE, nil, likely), to)
 
 		// cmp hi
 	// jgt to
@@ -578,11 +578,11 @@
 	t = lo1.Type
 
 	if nl.Op == gc.OLITERAL || nr.Op == gc.OLITERAL {
-		gins(i386.ACMPL, &lo1, &lo2)
+		gins(x86.ACMPL, &lo1, &lo2)
 	} else {
 		regalloc(&rr, gc.Types[gc.TINT32], nil)
-		gins(i386.AMOVL, &lo1, &rr)
-		gins(i386.ACMPL, &rr, &lo2)
+		gins(x86.AMOVL, &lo1, &rr)
+		gins(x86.ACMPL, &rr, &lo2)
 		regfree(&rr)
 	}
 
diff --git a/src/cmd/8g/galign.go b/src/cmd/8g/galign.go
index 8cb9319..7c462f5 100644
--- a/src/cmd/8g/galign.go
+++ b/src/cmd/8g/galign.go
@@ -7,14 +7,14 @@
 import (
 	"cmd/internal/gc"
 	"cmd/internal/obj"
-	i386 "cmd/internal/obj/x86"
+	"cmd/internal/obj/x86"
 )
 
 var thechar int = '8'
 
 var thestring string = "386"
 
-var thelinkarch *obj.LinkArch = &i386.Link386
+var thelinkarch *obj.LinkArch = &x86.Link386
 
 func linkarchinit() {
 }
@@ -43,8 +43,8 @@
 	gc.Thearch.Thestring = thestring
 	gc.Thearch.Thelinkarch = thelinkarch
 	gc.Thearch.Typedefs = typedefs
-	gc.Thearch.REGSP = i386.REGSP
-	gc.Thearch.REGCTXT = i386.REGCTXT
+	gc.Thearch.REGSP = x86.REGSP
+	gc.Thearch.REGCTXT = x86.REGCTXT
 	gc.Thearch.MAXWIDTH = MAXWIDTH
 	gc.Thearch.Anyregalloc = anyregalloc
 	gc.Thearch.Betypeinit = betypeinit
diff --git a/src/cmd/8g/gg.go b/src/cmd/8g/gg.go
index 161dcd0..bfbd12e 100644
--- a/src/cmd/8g/gg.go
+++ b/src/cmd/8g/gg.go
@@ -4,7 +4,7 @@
 
 package main
 
-import i386 "cmd/internal/obj/x86"
+import "cmd/internal/obj/x86"
 import "cmd/internal/gc"
 
 // TODO(rsc):
@@ -21,7 +21,7 @@
 	Fpop2 = 1 << 2
 )
 
-var reg [i386.MAXREG]uint8
+var reg [x86.MAXREG]uint8
 
 var panicdiv *gc.Node
 
diff --git a/src/cmd/8g/ggen.go b/src/cmd/8g/ggen.go
index 617551c..c153c93 100644
--- a/src/cmd/8g/ggen.go
+++ b/src/cmd/8g/ggen.go
@@ -7,7 +7,7 @@
 import (
 	"cmd/internal/gc"
 	"cmd/internal/obj"
-	i386 "cmd/internal/obj/x86"
+	"cmd/internal/obj/x86"
 )
 
 func defframe(ptxt *obj.Prog) {
@@ -65,23 +65,23 @@
 		return p
 	}
 	if *ax == 0 {
-		p = appendpp(p, i386.AMOVL, obj.TYPE_CONST, 0, 0, obj.TYPE_REG, i386.REG_AX, 0)
+		p = appendpp(p, x86.AMOVL, obj.TYPE_CONST, 0, 0, obj.TYPE_REG, x86.REG_AX, 0)
 		*ax = 1
 	}
 
 	if cnt <= int64(4*gc.Widthreg) {
 		for i := int64(0); i < cnt; i += int64(gc.Widthreg) {
-			p = appendpp(p, i386.AMOVL, obj.TYPE_REG, i386.REG_AX, 0, obj.TYPE_MEM, i386.REG_SP, frame+lo+i)
+			p = appendpp(p, x86.AMOVL, obj.TYPE_REG, x86.REG_AX, 0, obj.TYPE_MEM, x86.REG_SP, frame+lo+i)
 		}
 	} else if !gc.Nacl && cnt <= int64(128*gc.Widthreg) {
-		p = appendpp(p, i386.ALEAL, obj.TYPE_MEM, i386.REG_SP, frame+lo, obj.TYPE_REG, i386.REG_DI, 0)
+		p = appendpp(p, x86.ALEAL, obj.TYPE_MEM, x86.REG_SP, frame+lo, obj.TYPE_REG, x86.REG_DI, 0)
 		p = appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_ADDR, 0, 1*(128-cnt/int64(gc.Widthreg)))
 		p.To.Sym = gc.Linksym(gc.Pkglookup("duffzero", gc.Runtimepkg))
 	} else {
-		p = appendpp(p, i386.AMOVL, obj.TYPE_CONST, 0, cnt/int64(gc.Widthreg), obj.TYPE_REG, i386.REG_CX, 0)
-		p = appendpp(p, i386.ALEAL, obj.TYPE_MEM, i386.REG_SP, frame+lo, obj.TYPE_REG, i386.REG_DI, 0)
-		p = appendpp(p, i386.AREP, obj.TYPE_NONE, 0, 0, obj.TYPE_NONE, 0, 0)
-		p = appendpp(p, i386.ASTOSL, obj.TYPE_NONE, 0, 0, obj.TYPE_NONE, 0, 0)
+		p = appendpp(p, x86.AMOVL, obj.TYPE_CONST, 0, cnt/int64(gc.Widthreg), obj.TYPE_REG, x86.REG_CX, 0)
+		p = appendpp(p, x86.ALEAL, obj.TYPE_MEM, x86.REG_SP, frame+lo, obj.TYPE_REG, x86.REG_DI, 0)
+		p = appendpp(p, x86.AREP, obj.TYPE_NONE, 0, 0, obj.TYPE_NONE, 0, 0)
+		p = appendpp(p, x86.ASTOSL, obj.TYPE_NONE, 0, 0, obj.TYPE_NONE, 0, 0)
 	}
 
 	return p
@@ -140,7 +140,7 @@
 				break
 			}
 			n1.Type = z.Type
-			gins(i386.AMOVL, &z, &n1)
+			gins(x86.AMOVL, &z, &n1)
 			n1.Xoffset += 4
 		}
 
@@ -152,7 +152,7 @@
 				break
 			}
 			n1.Type = z.Type
-			gins(i386.AMOVB, &z, &n1)
+			gins(x86.AMOVB, &z, &n1)
 			n1.Xoffset++
 		}
 
@@ -161,14 +161,14 @@
 	}
 
 	var n1 gc.Node
-	gc.Nodreg(&n1, gc.Types[gc.Tptr], i386.REG_DI)
+	gc.Nodreg(&n1, gc.Types[gc.Tptr], x86.REG_DI)
 	agen(nl, &n1)
-	gconreg(i386.AMOVL, 0, i386.REG_AX)
+	gconreg(x86.AMOVL, 0, x86.REG_AX)
 
 	if q > 128 || (q >= 4 && gc.Nacl) {
-		gconreg(i386.AMOVL, int64(q), i386.REG_CX)
-		gins(i386.AREP, nil, nil)   // repeat
-		gins(i386.ASTOSL, nil, nil) // STOL AL,*(DI)+
+		gconreg(x86.AMOVL, int64(q), x86.REG_CX)
+		gins(x86.AREP, nil, nil)   // repeat
+		gins(x86.ASTOSL, nil, nil) // STOL AL,*(DI)+
 	} else if q >= 4 {
 		p := gins(obj.ADUFFZERO, nil, nil)
 		p.To.Type = obj.TYPE_ADDR
@@ -178,13 +178,13 @@
 		p.To.Offset = 1 * (128 - int64(q))
 	} else {
 		for q > 0 {
-			gins(i386.ASTOSL, nil, nil) // STOL AL,*(DI)+
+			gins(x86.ASTOSL, nil, nil) // STOL AL,*(DI)+
 			q--
 		}
 	}
 
 	for c > 0 {
-		gins(i386.ASTOSB, nil, nil) // STOB AL,*(DI)+
+		gins(x86.ASTOSB, nil, nil) // STOB AL,*(DI)+
 		c--
 	}
 }
@@ -225,9 +225,9 @@
 				// because the NOP pseudo-instruction will be removed by
 				// the linker.
 				var reg gc.Node
-				gc.Nodreg(&reg, gc.Types[gc.TINT], i386.REG_AX)
+				gc.Nodreg(&reg, gc.Types[gc.TINT], x86.REG_AX)
 
-				gins(i386.AXCHGL, &reg, &reg)
+				gins(x86.AXCHGL, &reg, &reg)
 			}
 
 			p := gins(obj.ACALL, nil, f)
@@ -239,9 +239,9 @@
 		}
 
 		var reg gc.Node
-		gc.Nodreg(&reg, gc.Types[gc.Tptr], i386.REG_DX)
+		gc.Nodreg(&reg, gc.Types[gc.Tptr], x86.REG_DX)
 		var r1 gc.Node
-		gc.Nodreg(&r1, gc.Types[gc.Tptr], i386.REG_BX)
+		gc.Nodreg(&r1, gc.Types[gc.Tptr], x86.REG_BX)
 		gmove(f, &reg)
 		reg.Op = gc.OINDREG
 		gmove(&reg, &r1)
@@ -256,19 +256,19 @@
 		var stk gc.Node
 
 		stk.Op = gc.OINDREG
-		stk.Val.U.Reg = i386.REG_SP
+		stk.Val.U.Reg = x86.REG_SP
 		stk.Xoffset = 0
 
 		// size of arguments at 0(SP)
 		var con gc.Node
 		gc.Nodconst(&con, gc.Types[gc.TINT32], int64(gc.Argsize(f.Type)))
 
-		gins(i386.AMOVL, &con, &stk)
+		gins(x86.AMOVL, &con, &stk)
 
 		// FuncVal* at 4(SP)
 		stk.Xoffset = int64(gc.Widthptr)
 
-		gins(i386.AMOVL, f, &stk)
+		gins(x86.AMOVL, f, &stk)
 
 		if proc == 1 {
 			ginscall(gc.Newproc, 0)
@@ -277,9 +277,9 @@
 		}
 		if proc == 2 {
 			var reg gc.Node
-			gc.Nodreg(&reg, gc.Types[gc.TINT32], i386.REG_AX)
-			gins(i386.ATESTL, &reg, &reg)
-			p := gc.Gbranch(i386.AJEQ, nil, +1)
+			gc.Nodreg(&reg, gc.Types[gc.TINT32], x86.REG_AX)
+			gins(x86.ATESTL, &reg, &reg)
+			p := gc.Gbranch(x86.AJEQ, nil, +1)
 			cgen_ret(nil)
 			gc.Patch(p, gc.Pc)
 		}
@@ -318,7 +318,7 @@
 	igen(i, &nodi, res) // REG = &inter
 
 	var nodsp gc.Node
-	gc.Nodindreg(&nodsp, gc.Types[gc.Tptr], i386.REG_SP)
+	gc.Nodindreg(&nodsp, gc.Types[gc.Tptr], x86.REG_SP)
 
 	nodsp.Xoffset = 0
 	if proc != 0 {
@@ -351,7 +351,7 @@
 		proc = 3
 	} else {
 		// go/defer. generate go func value.
-		gins(i386.ALEAL, &nodo, &nodr) // REG = &(20+offset(REG)) -- i.tab->fun[f]
+		gins(x86.ALEAL, &nodo, &nodr) // REG = &(20+offset(REG)) -- i.tab->fun[f]
 	}
 
 	nodr.Type = n.Left.Type
@@ -431,7 +431,7 @@
 
 	var nod gc.Node
 	nod.Op = gc.OINDREG
-	nod.Val.U.Reg = i386.REG_SP
+	nod.Val.U.Reg = x86.REG_SP
 	nod.Addable = 1
 
 	nod.Xoffset = fp.Width
@@ -458,7 +458,7 @@
 
 	var nod1 gc.Node
 	nod1.Op = gc.OINDREG
-	nod1.Val.U.Reg = i386.REG_SP
+	nod1.Val.U.Reg = x86.REG_SP
 	nod1.Addable = 1
 
 	nod1.Xoffset = fp.Width
@@ -467,11 +467,11 @@
 	if res.Op != gc.OREGISTER {
 		var nod2 gc.Node
 		regalloc(&nod2, gc.Types[gc.Tptr], res)
-		gins(i386.ALEAL, &nod1, &nod2)
-		gins(i386.AMOVL, &nod2, res)
+		gins(x86.ALEAL, &nod1, &nod2)
+		gins(x86.AMOVL, &nod2, res)
 		regfree(&nod2)
 	} else {
-		gins(i386.ALEAL, &nod1, res)
+		gins(x86.ALEAL, &nod1, res)
 	}
 }
 
@@ -665,10 +665,10 @@
 	}
 	var ax gc.Node
 	var oldax gc.Node
-	savex(i386.REG_AX, &ax, &oldax, res, t)
+	savex(x86.REG_AX, &ax, &oldax, res, t)
 	var olddx gc.Node
 	var dx gc.Node
-	savex(i386.REG_DX, &dx, &olddx, res, t)
+	savex(x86.REG_DX, &dx, &olddx, res, t)
 	dodiv(op, nl, nr, res, &ax, &dx)
 	restx(&dx, &olddx)
 	restx(&ax, &oldax)
@@ -711,8 +711,8 @@
 
 	var oldcx gc.Node
 	var cx gc.Node
-	gc.Nodreg(&cx, gc.Types[gc.TUINT32], i386.REG_CX)
-	if reg[i386.REG_CX] > 1 && !gc.Samereg(&cx, res) {
+	gc.Nodreg(&cx, gc.Types[gc.TUINT32], x86.REG_CX)
+	if reg[x86.REG_CX] > 1 && !gc.Samereg(&cx, res) {
 		gc.Tempname(&oldcx, gc.Types[gc.TUINT32])
 		gmove(&cx, &oldcx)
 	}
@@ -723,7 +723,7 @@
 		gc.Tempname(&nt, nr.Type)
 		n1 = nt
 	} else {
-		gc.Nodreg(&n1, gc.Types[gc.TUINT32], i386.REG_CX)
+		gc.Nodreg(&n1, gc.Types[gc.TUINT32], x86.REG_CX)
 		regalloc(&n1, nr.Type, &n1) // to hold the shift type in CX
 	}
 
@@ -745,7 +745,7 @@
 	if bounded {
 		if nr.Type.Width > 4 {
 			// delayed reg alloc
-			gc.Nodreg(&n1, gc.Types[gc.TUINT32], i386.REG_CX)
+			gc.Nodreg(&n1, gc.Types[gc.TUINT32], x86.REG_CX)
 
 			regalloc(&n1, gc.Types[gc.TUINT32], &n1) // to hold the shift type in CX
 			var lo gc.Node
@@ -758,7 +758,7 @@
 		var p1 *obj.Prog
 		if nr.Type.Width > 4 {
 			// delayed reg alloc
-			gc.Nodreg(&n1, gc.Types[gc.TUINT32], i386.REG_CX)
+			gc.Nodreg(&n1, gc.Types[gc.TUINT32], x86.REG_CX)
 
 			regalloc(&n1, gc.Types[gc.TUINT32], &n1) // to hold the shift type in CX
 			var lo gc.Node
@@ -858,7 +858,7 @@
 	cgen(nr, &n2)
 
 	// multiply.
-	gc.Nodreg(&ax, t, i386.REG_AX)
+	gc.Nodreg(&ax, t, x86.REG_AX)
 
 	gmove(&n2, &ax)
 	gins(a, &n1, nil)
@@ -866,13 +866,13 @@
 
 	if t.Width == 1 {
 		// byte multiply behaves differently.
-		gc.Nodreg(&ax, t, i386.REG_AH)
+		gc.Nodreg(&ax, t, x86.REG_AH)
 
-		gc.Nodreg(&dx, t, i386.REG_DX)
+		gc.Nodreg(&dx, t, x86.REG_DX)
 		gmove(&ax, &dx)
 	}
 
-	gc.Nodreg(&dx, t, i386.REG_DX)
+	gc.Nodreg(&dx, t, x86.REG_DX)
 	gmove(&dx, res)
 }
 
@@ -931,8 +931,8 @@
 
 	nl := n.Left
 	nr := n.Right
-	gc.Nodreg(&f0, nl.Type, i386.REG_F0)
-	gc.Nodreg(&f1, n.Type, i386.REG_F0+1)
+	gc.Nodreg(&f0, nl.Type, x86.REG_F0)
+	gc.Nodreg(&f1, n.Type, x86.REG_F0+1)
 	if nr != nil {
 		// binary
 		if nl.Ullman >= nr.Ullman {
@@ -1118,22 +1118,22 @@
 		a = gc.Brrev(a)
 	}
 
-	gc.Nodreg(&tmp, nr.Type, i386.REG_F0)
-	gc.Nodreg(&n2, nr.Type, i386.REG_F0+1)
-	gc.Nodreg(&ax, gc.Types[gc.TUINT16], i386.REG_AX)
+	gc.Nodreg(&tmp, nr.Type, x86.REG_F0)
+	gc.Nodreg(&n2, nr.Type, x86.REG_F0+1)
+	gc.Nodreg(&ax, gc.Types[gc.TUINT16], x86.REG_AX)
 	et = gc.Simsimtype(nr.Type)
 	if et == gc.TFLOAT64 {
 		if nl.Ullman > nr.Ullman {
 			cgen(nl, &tmp)
 			cgen(nr, &tmp)
-			gins(i386.AFXCHD, &tmp, &n2)
+			gins(x86.AFXCHD, &tmp, &n2)
 		} else {
 			cgen(nr, &tmp)
 			cgen(nl, &tmp)
 		}
 
-		gins(i386.AFUCOMIP, &tmp, &n2)
-		gins(i386.AFMOVDP, &tmp, &tmp) // annoying pop but still better than STSW+SAHF
+		gins(x86.AFUCOMIP, &tmp, &n2)
+		gins(x86.AFMOVDP, &tmp, &tmp) // annoying pop but still better than STSW+SAHF
 	} else {
 		// TODO(rsc): The moves back and forth to memory
 		// here are for truncating the value to 32 bits.
@@ -1149,9 +1149,9 @@
 		cgen(nr, &t1)
 		cgen(nl, &t2)
 		gmove(&t2, &tmp)
-		gins(i386.AFCOMFP, &t1, &tmp)
-		gins(i386.AFSTSW, nil, &ax)
-		gins(i386.ASAHF, nil, nil)
+		gins(x86.AFCOMFP, &t1, &tmp)
+		gins(x86.AFSTSW, nil, &ax)
+		gins(x86.ASAHF, nil, nil)
 	}
 
 	goto ret
@@ -1159,17 +1159,17 @@
 ret:
 	if a == gc.OEQ {
 		// neither NE nor P
-		p1 := gc.Gbranch(i386.AJNE, nil, -likely)
+		p1 := gc.Gbranch(x86.AJNE, nil, -likely)
 
-		p2 := gc.Gbranch(i386.AJPS, nil, -likely)
+		p2 := gc.Gbranch(x86.AJPS, nil, -likely)
 		gc.Patch(gc.Gbranch(obj.AJMP, nil, 0), to)
 		gc.Patch(p1, gc.Pc)
 		gc.Patch(p2, gc.Pc)
 	} else if a == gc.ONE {
 		// either NE or P
-		gc.Patch(gc.Gbranch(i386.AJNE, nil, likely), to)
+		gc.Patch(gc.Gbranch(x86.AJNE, nil, likely), to)
 
-		gc.Patch(gc.Gbranch(i386.AJPS, nil, likely), to)
+		gc.Patch(gc.Gbranch(x86.AJPS, nil, likely), to)
 	} else {
 		gc.Patch(gc.Gbranch(optoas(a, nr.Type), nil, likely), to)
 	}
@@ -1205,10 +1205,10 @@
 		p2.Lineno = p.Lineno
 		p1.Pc = 9999
 		p2.Pc = 9999
-		p.As = i386.ACMPL
+		p.As = x86.ACMPL
 		p.To.Type = obj.TYPE_CONST
 		p.To.Offset = 0
-		p1.As = i386.AJNE
+		p1.As = x86.AJNE
 		p1.From.Type = obj.TYPE_CONST
 		p1.From.Offset = 1 // likely
 		p1.To.Type = obj.TYPE_BRANCH
@@ -1217,10 +1217,10 @@
 		// crash by write to memory address 0.
 		// if possible, since we know arg is 0, use 0(arg),
 		// which will be shorter to encode than plain 0.
-		p2.As = i386.AMOVL
+		p2.As = x86.AMOVL
 
 		p2.From.Type = obj.TYPE_REG
-		p2.From.Reg = i386.REG_AX
+		p2.From.Reg = x86.REG_AX
 		if regtyp(&p.From) {
 			p2.To.Type = obj.TYPE_MEM
 			p2.To.Reg = p.From.Reg
diff --git a/src/cmd/8g/gsubr.go b/src/cmd/8g/gsubr.go
index 91dec41..0979cb5 100644
--- a/src/cmd/8g/gsubr.go
+++ b/src/cmd/8g/gsubr.go
@@ -33,7 +33,7 @@
 import (
 	"cmd/internal/gc"
 	"cmd/internal/obj"
-	i386 "cmd/internal/obj/x86"
+	"cmd/internal/obj/x86"
 	"fmt"
 )
 
@@ -56,7 +56,7 @@
 		gc.Fatal("optoas: no entry %v-%v", gc.Oconv(int(op), 0), gc.Tconv(t, 0))
 
 	case gc.OADDR<<16 | gc.TPTR32:
-		a = i386.ALEAL
+		a = x86.ALEAL
 
 	case gc.OEQ<<16 | gc.TBOOL,
 		gc.OEQ<<16 | gc.TINT8,
@@ -71,7 +71,7 @@
 		gc.OEQ<<16 | gc.TPTR64,
 		gc.OEQ<<16 | gc.TFLOAT32,
 		gc.OEQ<<16 | gc.TFLOAT64:
-		a = i386.AJEQ
+		a = x86.AJEQ
 
 	case gc.ONE<<16 | gc.TBOOL,
 		gc.ONE<<16 | gc.TINT8,
@@ -86,37 +86,37 @@
 		gc.ONE<<16 | gc.TPTR64,
 		gc.ONE<<16 | gc.TFLOAT32,
 		gc.ONE<<16 | gc.TFLOAT64:
-		a = i386.AJNE
+		a = x86.AJNE
 
 	case gc.OLT<<16 | gc.TINT8,
 		gc.OLT<<16 | gc.TINT16,
 		gc.OLT<<16 | gc.TINT32,
 		gc.OLT<<16 | gc.TINT64:
-		a = i386.AJLT
+		a = x86.AJLT
 
 	case gc.OLT<<16 | gc.TUINT8,
 		gc.OLT<<16 | gc.TUINT16,
 		gc.OLT<<16 | gc.TUINT32,
 		gc.OLT<<16 | gc.TUINT64:
-		a = i386.AJCS
+		a = x86.AJCS
 
 	case gc.OLE<<16 | gc.TINT8,
 		gc.OLE<<16 | gc.TINT16,
 		gc.OLE<<16 | gc.TINT32,
 		gc.OLE<<16 | gc.TINT64:
-		a = i386.AJLE
+		a = x86.AJLE
 
 	case gc.OLE<<16 | gc.TUINT8,
 		gc.OLE<<16 | gc.TUINT16,
 		gc.OLE<<16 | gc.TUINT32,
 		gc.OLE<<16 | gc.TUINT64:
-		a = i386.AJLS
+		a = x86.AJLS
 
 	case gc.OGT<<16 | gc.TINT8,
 		gc.OGT<<16 | gc.TINT16,
 		gc.OGT<<16 | gc.TINT32,
 		gc.OGT<<16 | gc.TINT64:
-		a = i386.AJGT
+		a = x86.AJGT
 
 	case gc.OGT<<16 | gc.TUINT8,
 		gc.OGT<<16 | gc.TUINT16,
@@ -124,13 +124,13 @@
 		gc.OGT<<16 | gc.TUINT64,
 		gc.OLT<<16 | gc.TFLOAT32,
 		gc.OLT<<16 | gc.TFLOAT64:
-		a = i386.AJHI
+		a = x86.AJHI
 
 	case gc.OGE<<16 | gc.TINT8,
 		gc.OGE<<16 | gc.TINT16,
 		gc.OGE<<16 | gc.TINT32,
 		gc.OGE<<16 | gc.TINT64:
-		a = i386.AJGE
+		a = x86.AJGE
 
 	case gc.OGE<<16 | gc.TUINT8,
 		gc.OGE<<16 | gc.TUINT16,
@@ -138,261 +138,261 @@
 		gc.OGE<<16 | gc.TUINT64,
 		gc.OLE<<16 | gc.TFLOAT32,
 		gc.OLE<<16 | gc.TFLOAT64:
-		a = i386.AJCC
+		a = x86.AJCC
 
 	case gc.OCMP<<16 | gc.TBOOL,
 		gc.OCMP<<16 | gc.TINT8,
 		gc.OCMP<<16 | gc.TUINT8:
-		a = i386.ACMPB
+		a = x86.ACMPB
 
 	case gc.OCMP<<16 | gc.TINT16,
 		gc.OCMP<<16 | gc.TUINT16:
-		a = i386.ACMPW
+		a = x86.ACMPW
 
 	case gc.OCMP<<16 | gc.TINT32,
 		gc.OCMP<<16 | gc.TUINT32,
 		gc.OCMP<<16 | gc.TPTR32:
-		a = i386.ACMPL
+		a = x86.ACMPL
 
 	case gc.OAS<<16 | gc.TBOOL,
 		gc.OAS<<16 | gc.TINT8,
 		gc.OAS<<16 | gc.TUINT8:
-		a = i386.AMOVB
+		a = x86.AMOVB
 
 	case gc.OAS<<16 | gc.TINT16,
 		gc.OAS<<16 | gc.TUINT16:
-		a = i386.AMOVW
+		a = x86.AMOVW
 
 	case gc.OAS<<16 | gc.TINT32,
 		gc.OAS<<16 | gc.TUINT32,
 		gc.OAS<<16 | gc.TPTR32:
-		a = i386.AMOVL
+		a = x86.AMOVL
 
 	case gc.OAS<<16 | gc.TFLOAT32:
-		a = i386.AMOVSS
+		a = x86.AMOVSS
 
 	case gc.OAS<<16 | gc.TFLOAT64:
-		a = i386.AMOVSD
+		a = x86.AMOVSD
 
 	case gc.OADD<<16 | gc.TINT8,
 		gc.OADD<<16 | gc.TUINT8:
-		a = i386.AADDB
+		a = x86.AADDB
 
 	case gc.OADD<<16 | gc.TINT16,
 		gc.OADD<<16 | gc.TUINT16:
-		a = i386.AADDW
+		a = x86.AADDW
 
 	case gc.OADD<<16 | gc.TINT32,
 		gc.OADD<<16 | gc.TUINT32,
 		gc.OADD<<16 | gc.TPTR32:
-		a = i386.AADDL
+		a = x86.AADDL
 
 	case gc.OSUB<<16 | gc.TINT8,
 		gc.OSUB<<16 | gc.TUINT8:
-		a = i386.ASUBB
+		a = x86.ASUBB
 
 	case gc.OSUB<<16 | gc.TINT16,
 		gc.OSUB<<16 | gc.TUINT16:
-		a = i386.ASUBW
+		a = x86.ASUBW
 
 	case gc.OSUB<<16 | gc.TINT32,
 		gc.OSUB<<16 | gc.TUINT32,
 		gc.OSUB<<16 | gc.TPTR32:
-		a = i386.ASUBL
+		a = x86.ASUBL
 
 	case gc.OINC<<16 | gc.TINT8,
 		gc.OINC<<16 | gc.TUINT8:
-		a = i386.AINCB
+		a = x86.AINCB
 
 	case gc.OINC<<16 | gc.TINT16,
 		gc.OINC<<16 | gc.TUINT16:
-		a = i386.AINCW
+		a = x86.AINCW
 
 	case gc.OINC<<16 | gc.TINT32,
 		gc.OINC<<16 | gc.TUINT32,
 		gc.OINC<<16 | gc.TPTR32:
-		a = i386.AINCL
+		a = x86.AINCL
 
 	case gc.ODEC<<16 | gc.TINT8,
 		gc.ODEC<<16 | gc.TUINT8:
-		a = i386.ADECB
+		a = x86.ADECB
 
 	case gc.ODEC<<16 | gc.TINT16,
 		gc.ODEC<<16 | gc.TUINT16:
-		a = i386.ADECW
+		a = x86.ADECW
 
 	case gc.ODEC<<16 | gc.TINT32,
 		gc.ODEC<<16 | gc.TUINT32,
 		gc.ODEC<<16 | gc.TPTR32:
-		a = i386.ADECL
+		a = x86.ADECL
 
 	case gc.OCOM<<16 | gc.TINT8,
 		gc.OCOM<<16 | gc.TUINT8:
-		a = i386.ANOTB
+		a = x86.ANOTB
 
 	case gc.OCOM<<16 | gc.TINT16,
 		gc.OCOM<<16 | gc.TUINT16:
-		a = i386.ANOTW
+		a = x86.ANOTW
 
 	case gc.OCOM<<16 | gc.TINT32,
 		gc.OCOM<<16 | gc.TUINT32,
 		gc.OCOM<<16 | gc.TPTR32:
-		a = i386.ANOTL
+		a = x86.ANOTL
 
 	case gc.OMINUS<<16 | gc.TINT8,
 		gc.OMINUS<<16 | gc.TUINT8:
-		a = i386.ANEGB
+		a = x86.ANEGB
 
 	case gc.OMINUS<<16 | gc.TINT16,
 		gc.OMINUS<<16 | gc.TUINT16:
-		a = i386.ANEGW
+		a = x86.ANEGW
 
 	case gc.OMINUS<<16 | gc.TINT32,
 		gc.OMINUS<<16 | gc.TUINT32,
 		gc.OMINUS<<16 | gc.TPTR32:
-		a = i386.ANEGL
+		a = x86.ANEGL
 
 	case gc.OAND<<16 | gc.TINT8,
 		gc.OAND<<16 | gc.TUINT8:
-		a = i386.AANDB
+		a = x86.AANDB
 
 	case gc.OAND<<16 | gc.TINT16,
 		gc.OAND<<16 | gc.TUINT16:
-		a = i386.AANDW
+		a = x86.AANDW
 
 	case gc.OAND<<16 | gc.TINT32,
 		gc.OAND<<16 | gc.TUINT32,
 		gc.OAND<<16 | gc.TPTR32:
-		a = i386.AANDL
+		a = x86.AANDL
 
 	case gc.OOR<<16 | gc.TINT8,
 		gc.OOR<<16 | gc.TUINT8:
-		a = i386.AORB
+		a = x86.AORB
 
 	case gc.OOR<<16 | gc.TINT16,
 		gc.OOR<<16 | gc.TUINT16:
-		a = i386.AORW
+		a = x86.AORW
 
 	case gc.OOR<<16 | gc.TINT32,
 		gc.OOR<<16 | gc.TUINT32,
 		gc.OOR<<16 | gc.TPTR32:
-		a = i386.AORL
+		a = x86.AORL
 
 	case gc.OXOR<<16 | gc.TINT8,
 		gc.OXOR<<16 | gc.TUINT8:
-		a = i386.AXORB
+		a = x86.AXORB
 
 	case gc.OXOR<<16 | gc.TINT16,
 		gc.OXOR<<16 | gc.TUINT16:
-		a = i386.AXORW
+		a = x86.AXORW
 
 	case gc.OXOR<<16 | gc.TINT32,
 		gc.OXOR<<16 | gc.TUINT32,
 		gc.OXOR<<16 | gc.TPTR32:
-		a = i386.AXORL
+		a = x86.AXORL
 
 	case gc.OLROT<<16 | gc.TINT8,
 		gc.OLROT<<16 | gc.TUINT8:
-		a = i386.AROLB
+		a = x86.AROLB
 
 	case gc.OLROT<<16 | gc.TINT16,
 		gc.OLROT<<16 | gc.TUINT16:
-		a = i386.AROLW
+		a = x86.AROLW
 
 	case gc.OLROT<<16 | gc.TINT32,
 		gc.OLROT<<16 | gc.TUINT32,
 		gc.OLROT<<16 | gc.TPTR32:
-		a = i386.AROLL
+		a = x86.AROLL
 
 	case gc.OLSH<<16 | gc.TINT8,
 		gc.OLSH<<16 | gc.TUINT8:
-		a = i386.ASHLB
+		a = x86.ASHLB
 
 	case gc.OLSH<<16 | gc.TINT16,
 		gc.OLSH<<16 | gc.TUINT16:
-		a = i386.ASHLW
+		a = x86.ASHLW
 
 	case gc.OLSH<<16 | gc.TINT32,
 		gc.OLSH<<16 | gc.TUINT32,
 		gc.OLSH<<16 | gc.TPTR32:
-		a = i386.ASHLL
+		a = x86.ASHLL
 
 	case gc.ORSH<<16 | gc.TUINT8:
-		a = i386.ASHRB
+		a = x86.ASHRB
 
 	case gc.ORSH<<16 | gc.TUINT16:
-		a = i386.ASHRW
+		a = x86.ASHRW
 
 	case gc.ORSH<<16 | gc.TUINT32,
 		gc.ORSH<<16 | gc.TPTR32:
-		a = i386.ASHRL
+		a = x86.ASHRL
 
 	case gc.ORSH<<16 | gc.TINT8:
-		a = i386.ASARB
+		a = x86.ASARB
 
 	case gc.ORSH<<16 | gc.TINT16:
-		a = i386.ASARW
+		a = x86.ASARW
 
 	case gc.ORSH<<16 | gc.TINT32:
-		a = i386.ASARL
+		a = x86.ASARL
 
 	case gc.OHMUL<<16 | gc.TINT8,
 		gc.OMUL<<16 | gc.TINT8,
 		gc.OMUL<<16 | gc.TUINT8:
-		a = i386.AIMULB
+		a = x86.AIMULB
 
 	case gc.OHMUL<<16 | gc.TINT16,
 		gc.OMUL<<16 | gc.TINT16,
 		gc.OMUL<<16 | gc.TUINT16:
-		a = i386.AIMULW
+		a = x86.AIMULW
 
 	case gc.OHMUL<<16 | gc.TINT32,
 		gc.OMUL<<16 | gc.TINT32,
 		gc.OMUL<<16 | gc.TUINT32,
 		gc.OMUL<<16 | gc.TPTR32:
-		a = i386.AIMULL
+		a = x86.AIMULL
 
 	case gc.OHMUL<<16 | gc.TUINT8:
-		a = i386.AMULB
+		a = x86.AMULB
 
 	case gc.OHMUL<<16 | gc.TUINT16:
-		a = i386.AMULW
+		a = x86.AMULW
 
 	case gc.OHMUL<<16 | gc.TUINT32,
 		gc.OHMUL<<16 | gc.TPTR32:
-		a = i386.AMULL
+		a = x86.AMULL
 
 	case gc.ODIV<<16 | gc.TINT8,
 		gc.OMOD<<16 | gc.TINT8:
-		a = i386.AIDIVB
+		a = x86.AIDIVB
 
 	case gc.ODIV<<16 | gc.TUINT8,
 		gc.OMOD<<16 | gc.TUINT8:
-		a = i386.ADIVB
+		a = x86.ADIVB
 
 	case gc.ODIV<<16 | gc.TINT16,
 		gc.OMOD<<16 | gc.TINT16:
-		a = i386.AIDIVW
+		a = x86.AIDIVW
 
 	case gc.ODIV<<16 | gc.TUINT16,
 		gc.OMOD<<16 | gc.TUINT16:
-		a = i386.ADIVW
+		a = x86.ADIVW
 
 	case gc.ODIV<<16 | gc.TINT32,
 		gc.OMOD<<16 | gc.TINT32:
-		a = i386.AIDIVL
+		a = x86.AIDIVL
 
 	case gc.ODIV<<16 | gc.TUINT32,
 		gc.ODIV<<16 | gc.TPTR32,
 		gc.OMOD<<16 | gc.TUINT32,
 		gc.OMOD<<16 | gc.TPTR32:
-		a = i386.ADIVL
+		a = x86.ADIVL
 
 	case gc.OEXTEND<<16 | gc.TINT16:
-		a = i386.ACWD
+		a = x86.ACWD
 
 	case gc.OEXTEND<<16 | gc.TINT32:
-		a = i386.ACDQ
+		a = x86.ACDQ
 	}
 
 	return a
@@ -408,40 +408,40 @@
 			gc.Fatal("foptoas-sse: no entry %v-%v", gc.Oconv(int(op), 0), gc.Tconv(t, 0))
 
 		case gc.OCMP<<16 | gc.TFLOAT32:
-			a = i386.AUCOMISS
+			a = x86.AUCOMISS
 
 		case gc.OCMP<<16 | gc.TFLOAT64:
-			a = i386.AUCOMISD
+			a = x86.AUCOMISD
 
 		case gc.OAS<<16 | gc.TFLOAT32:
-			a = i386.AMOVSS
+			a = x86.AMOVSS
 
 		case gc.OAS<<16 | gc.TFLOAT64:
-			a = i386.AMOVSD
+			a = x86.AMOVSD
 
 		case gc.OADD<<16 | gc.TFLOAT32:
-			a = i386.AADDSS
+			a = x86.AADDSS
 
 		case gc.OADD<<16 | gc.TFLOAT64:
-			a = i386.AADDSD
+			a = x86.AADDSD
 
 		case gc.OSUB<<16 | gc.TFLOAT32:
-			a = i386.ASUBSS
+			a = x86.ASUBSS
 
 		case gc.OSUB<<16 | gc.TFLOAT64:
-			a = i386.ASUBSD
+			a = x86.ASUBSD
 
 		case gc.OMUL<<16 | gc.TFLOAT32:
-			a = i386.AMULSS
+			a = x86.AMULSS
 
 		case gc.OMUL<<16 | gc.TFLOAT64:
-			a = i386.AMULSD
+			a = x86.AMULSD
 
 		case gc.ODIV<<16 | gc.TFLOAT32:
-			a = i386.ADIVSS
+			a = x86.ADIVSS
 
 		case gc.ODIV<<16 | gc.TFLOAT64:
-			a = i386.ADIVSD
+			a = x86.ADIVSD
 		}
 
 		return a
@@ -463,79 +463,79 @@
 
 	switch uint32(op)<<16 | (uint32(et)<<8 | uint32(flg)) {
 	case gc.OADD<<16 | (gc.TFLOAT32<<8 | 0):
-		return i386.AFADDF
+		return x86.AFADDF
 
 	case gc.OADD<<16 | (gc.TFLOAT64<<8 | 0):
-		return i386.AFADDD
+		return x86.AFADDD
 
 	case gc.OADD<<16 | (gc.TFLOAT64<<8 | Fpop):
-		return i386.AFADDDP
+		return x86.AFADDDP
 
 	case gc.OSUB<<16 | (gc.TFLOAT32<<8 | 0):
-		return i386.AFSUBF
+		return x86.AFSUBF
 
 	case gc.OSUB<<16 | (gc.TFLOAT32<<8 | Frev):
-		return i386.AFSUBRF
+		return x86.AFSUBRF
 
 	case gc.OSUB<<16 | (gc.TFLOAT64<<8 | 0):
-		return i386.AFSUBD
+		return x86.AFSUBD
 
 	case gc.OSUB<<16 | (gc.TFLOAT64<<8 | Frev):
-		return i386.AFSUBRD
+		return x86.AFSUBRD
 
 	case gc.OSUB<<16 | (gc.TFLOAT64<<8 | Fpop):
-		return i386.AFSUBDP
+		return x86.AFSUBDP
 
 	case gc.OSUB<<16 | (gc.TFLOAT64<<8 | (Fpop | Frev)):
-		return i386.AFSUBRDP
+		return x86.AFSUBRDP
 
 	case gc.OMUL<<16 | (gc.TFLOAT32<<8 | 0):
-		return i386.AFMULF
+		return x86.AFMULF
 
 	case gc.OMUL<<16 | (gc.TFLOAT64<<8 | 0):
-		return i386.AFMULD
+		return x86.AFMULD
 
 	case gc.OMUL<<16 | (gc.TFLOAT64<<8 | Fpop):
-		return i386.AFMULDP
+		return x86.AFMULDP
 
 	case gc.ODIV<<16 | (gc.TFLOAT32<<8 | 0):
-		return i386.AFDIVF
+		return x86.AFDIVF
 
 	case gc.ODIV<<16 | (gc.TFLOAT32<<8 | Frev):
-		return i386.AFDIVRF
+		return x86.AFDIVRF
 
 	case gc.ODIV<<16 | (gc.TFLOAT64<<8 | 0):
-		return i386.AFDIVD
+		return x86.AFDIVD
 
 	case gc.ODIV<<16 | (gc.TFLOAT64<<8 | Frev):
-		return i386.AFDIVRD
+		return x86.AFDIVRD
 
 	case gc.ODIV<<16 | (gc.TFLOAT64<<8 | Fpop):
-		return i386.AFDIVDP
+		return x86.AFDIVDP
 
 	case gc.ODIV<<16 | (gc.TFLOAT64<<8 | (Fpop | Frev)):
-		return i386.AFDIVRDP
+		return x86.AFDIVRDP
 
 	case gc.OCMP<<16 | (gc.TFLOAT32<<8 | 0):
-		return i386.AFCOMF
+		return x86.AFCOMF
 
 	case gc.OCMP<<16 | (gc.TFLOAT32<<8 | Fpop):
-		return i386.AFCOMFP
+		return x86.AFCOMFP
 
 	case gc.OCMP<<16 | (gc.TFLOAT64<<8 | 0):
-		return i386.AFCOMD
+		return x86.AFCOMD
 
 	case gc.OCMP<<16 | (gc.TFLOAT64<<8 | Fpop):
-		return i386.AFCOMDP
+		return x86.AFCOMDP
 
 	case gc.OCMP<<16 | (gc.TFLOAT64<<8 | Fpop2):
-		return i386.AFCOMDPP
+		return x86.AFCOMDPP
 
 	case gc.OMINUS<<16 | (gc.TFLOAT32<<8 | 0):
-		return i386.AFCHS
+		return x86.AFCHS
 
 	case gc.OMINUS<<16 | (gc.TFLOAT64<<8 | 0):
-		return i386.AFCHS
+		return x86.AFCHS
 	}
 
 	gc.Fatal("foptoas %v %v %#x", gc.Oconv(int(op), 0), gc.Tconv(t, 0), flg)
@@ -546,23 +546,23 @@
 	//	REG_DI,	// for movstring
 	//	REG_SI,	// for movstring
 
-	i386.REG_AX, // for divide
-	i386.REG_CX, // for shift
-	i386.REG_DX, // for divide
-	i386.REG_SP, // for stack
+	x86.REG_AX, // for divide
+	x86.REG_CX, // for shift
+	x86.REG_DX, // for divide
+	x86.REG_SP, // for stack
 
-	i386.REG_BL, // because REG_BX can be allocated
-	i386.REG_BH,
+	x86.REG_BL, // because REG_BX can be allocated
+	x86.REG_BH,
 }
 
 func ginit() {
 	for i := 0; i < len(reg); i++ {
 		reg[i] = 1
 	}
-	for i := i386.REG_AX; i <= i386.REG_DI; i++ {
+	for i := x86.REG_AX; i <= x86.REG_DI; i++ {
 		reg[i] = 0
 	}
-	for i := i386.REG_X0; i <= i386.REG_X7; i++ {
+	for i := x86.REG_X0; i <= x86.REG_X7; i++ {
 		reg[i] = 0
 	}
 	for i := 0; i < len(resvd); i++ {
@@ -570,19 +570,19 @@
 	}
 }
 
-var regpc [i386.MAXREG]uint32
+var regpc [x86.MAXREG]uint32
 
 func gclean() {
 	for i := 0; i < len(resvd); i++ {
 		reg[resvd[i]]--
 	}
 
-	for i := i386.REG_AX; i <= i386.REG_DI; i++ {
+	for i := x86.REG_AX; i <= x86.REG_DI; i++ {
 		if reg[i] != 0 {
 			gc.Yyerror("reg %v left allocated at %x", obj.Rconv(i), regpc[i])
 		}
 	}
-	for i := i386.REG_X0; i <= i386.REG_X7; i++ {
+	for i := x86.REG_X0; i <= x86.REG_X7; i++ {
 		if reg[i] != 0 {
 			gc.Yyerror("reg %v left allocated\n", obj.Rconv(i))
 		}
@@ -592,7 +592,7 @@
 func anyregalloc() bool {
 	var j int
 
-	for i := i386.REG_AX; i <= i386.REG_DI; i++ {
+	for i := x86.REG_AX; i <= x86.REG_DI; i++ {
 		if reg[i] == 0 {
 			goto ok
 		}
@@ -605,7 +605,7 @@
 	ok:
 	}
 
-	for i := i386.REG_X0; i <= i386.REG_X7; i++ {
+	for i := x86.REG_X0; i <= x86.REG_X7; i++ {
 		if reg[i] != 0 {
 			return true
 		}
@@ -641,19 +641,19 @@
 		gc.TBOOL:
 		if o != nil && o.Op == gc.OREGISTER {
 			i = int(o.Val.U.Reg)
-			if i >= i386.REG_AX && i <= i386.REG_DI {
+			if i >= x86.REG_AX && i <= x86.REG_DI {
 				goto out
 			}
 		}
 
-		for i = i386.REG_AX; i <= i386.REG_DI; i++ {
+		for i = x86.REG_AX; i <= x86.REG_DI; i++ {
 			if reg[i] == 0 {
 				goto out
 			}
 		}
 
 		fmt.Printf("registers allocated at\n")
-		for i := i386.REG_AX; i <= i386.REG_DI; i++ {
+		for i := x86.REG_AX; i <= x86.REG_DI; i++ {
 			fmt.Printf("\t%v\t%#x\n", obj.Rconv(i), regpc[i])
 		}
 		gc.Fatal("out of fixed registers")
@@ -662,24 +662,24 @@
 	case gc.TFLOAT32,
 		gc.TFLOAT64:
 		if gc.Use_sse == 0 {
-			i = i386.REG_F0
+			i = x86.REG_F0
 			goto out
 		}
 
 		if o != nil && o.Op == gc.OREGISTER {
 			i = int(o.Val.U.Reg)
-			if i >= i386.REG_X0 && i <= i386.REG_X7 {
+			if i >= x86.REG_X0 && i <= x86.REG_X7 {
 				goto out
 			}
 		}
 
-		for i = i386.REG_X0; i <= i386.REG_X7; i++ {
+		for i = x86.REG_X0; i <= x86.REG_X7; i++ {
 			if reg[i] == 0 {
 				goto out
 			}
 		}
 		fmt.Printf("registers allocated at\n")
-		for i := i386.REG_X0; i <= i386.REG_X7; i++ {
+		for i := x86.REG_X0; i <= x86.REG_X7; i++ {
 			fmt.Printf("\t%v\t%#x\n", obj.Rconv(i), regpc[i])
 		}
 		gc.Fatal("out of floating registers")
@@ -692,12 +692,12 @@
 	return
 
 out:
-	if i == i386.REG_SP {
+	if i == x86.REG_SP {
 		fmt.Printf("alloc SP\n")
 	}
 	if reg[i] == 0 {
 		regpc[i] = uint32(obj.Getcallerpc(&n))
-		if i == i386.REG_AX || i == i386.REG_CX || i == i386.REG_DX || i == i386.REG_SP {
+		if i == x86.REG_AX || i == x86.REG_CX || i == x86.REG_DX || i == x86.REG_SP {
 			gc.Dump("regalloc-o", o)
 			gc.Fatal("regalloc %v", obj.Rconv(i))
 		}
@@ -715,7 +715,7 @@
 		gc.Fatal("regfree: not a register")
 	}
 	i := int(n.Val.U.Reg)
-	if i == i386.REG_SP {
+	if i == x86.REG_SP {
 		return
 	}
 	if i < 0 || i >= len(reg) {
@@ -725,7 +725,7 @@
 		gc.Fatal("regfree: reg not allocated")
 	}
 	reg[i]--
-	if reg[i] == 0 && (i == i386.REG_AX || i == i386.REG_CX || i == i386.REG_DX || i == i386.REG_SP) {
+	if reg[i] == 0 && (i == x86.REG_AX || i == x86.REG_CX || i == x86.REG_DX || i == x86.REG_SP) {
 		gc.Fatal("regfree %v", obj.Rconv(i))
 	}
 }
@@ -936,7 +936,7 @@
 		gc.TINT8<<16 | gc.TUINT8,
 		gc.TUINT8<<16 | gc.TINT8,
 		gc.TUINT8<<16 | gc.TUINT8:
-		a = i386.AMOVB
+		a = x86.AMOVB
 
 	case gc.TINT16<<16 | gc.TINT8, // truncate
 		gc.TUINT16<<16 | gc.TINT8,
@@ -946,7 +946,7 @@
 		gc.TUINT16<<16 | gc.TUINT8,
 		gc.TINT32<<16 | gc.TUINT8,
 		gc.TUINT32<<16 | gc.TUINT8:
-		a = i386.AMOVB
+		a = x86.AMOVB
 
 		goto rsrc
 
@@ -959,9 +959,9 @@
 		split64(f, &flo, &fhi)
 
 		var r1 gc.Node
-		gc.Nodreg(&r1, t.Type, i386.REG_AX)
+		gc.Nodreg(&r1, t.Type, x86.REG_AX)
 		gmove(&flo, &r1)
-		gins(i386.AMOVB, &r1, t)
+		gins(x86.AMOVB, &r1, t)
 		splitclean()
 		return
 
@@ -969,13 +969,13 @@
 		gc.TINT16<<16 | gc.TUINT16,
 		gc.TUINT16<<16 | gc.TINT16,
 		gc.TUINT16<<16 | gc.TUINT16:
-		a = i386.AMOVW
+		a = x86.AMOVW
 
 	case gc.TINT32<<16 | gc.TINT16, // truncate
 		gc.TUINT32<<16 | gc.TINT16,
 		gc.TINT32<<16 | gc.TUINT16,
 		gc.TUINT32<<16 | gc.TUINT16:
-		a = i386.AMOVW
+		a = x86.AMOVW
 
 		goto rsrc
 
@@ -988,9 +988,9 @@
 		split64(f, &flo, &fhi)
 
 		var r1 gc.Node
-		gc.Nodreg(&r1, t.Type, i386.REG_AX)
+		gc.Nodreg(&r1, t.Type, x86.REG_AX)
 		gmove(&flo, &r1)
-		gins(i386.AMOVW, &r1, t)
+		gins(x86.AMOVW, &r1, t)
 		splitclean()
 		return
 
@@ -998,7 +998,7 @@
 		gc.TINT32<<16 | gc.TUINT32,
 		gc.TUINT32<<16 | gc.TINT32,
 		gc.TUINT32<<16 | gc.TUINT32:
-		a = i386.AMOVL
+		a = x86.AMOVL
 
 	case gc.TINT64<<16 | gc.TINT32, // truncate
 		gc.TUINT64<<16 | gc.TINT32,
@@ -1009,9 +1009,9 @@
 		split64(f, &flo, &fhi)
 
 		var r1 gc.Node
-		gc.Nodreg(&r1, t.Type, i386.REG_AX)
+		gc.Nodreg(&r1, t.Type, x86.REG_AX)
 		gmove(&flo, &r1)
-		gins(i386.AMOVL, &r1, t)
+		gins(x86.AMOVL, &r1, t)
 		splitclean()
 		return
 
@@ -1027,17 +1027,17 @@
 		var thi gc.Node
 		split64(t, &tlo, &thi)
 		if f.Op == gc.OLITERAL {
-			gins(i386.AMOVL, &flo, &tlo)
-			gins(i386.AMOVL, &fhi, &thi)
+			gins(x86.AMOVL, &flo, &tlo)
+			gins(x86.AMOVL, &fhi, &thi)
 		} else {
 			var r1 gc.Node
-			gc.Nodreg(&r1, gc.Types[gc.TUINT32], i386.REG_AX)
+			gc.Nodreg(&r1, gc.Types[gc.TUINT32], x86.REG_AX)
 			var r2 gc.Node
-			gc.Nodreg(&r2, gc.Types[gc.TUINT32], i386.REG_DX)
-			gins(i386.AMOVL, &flo, &r1)
-			gins(i386.AMOVL, &fhi, &r2)
-			gins(i386.AMOVL, &r1, &tlo)
-			gins(i386.AMOVL, &r2, &thi)
+			gc.Nodreg(&r2, gc.Types[gc.TUINT32], x86.REG_DX)
+			gins(x86.AMOVL, &flo, &r1)
+			gins(x86.AMOVL, &fhi, &r2)
+			gins(x86.AMOVL, &r1, &tlo)
+			gins(x86.AMOVL, &r2, &thi)
 		}
 
 		splitclean()
@@ -1049,13 +1049,13 @@
 		 */
 	case gc.TINT8<<16 | gc.TINT16, // sign extend int8
 		gc.TINT8<<16 | gc.TUINT16:
-		a = i386.AMOVBWSX
+		a = x86.AMOVBWSX
 
 		goto rdst
 
 	case gc.TINT8<<16 | gc.TINT32,
 		gc.TINT8<<16 | gc.TUINT32:
-		a = i386.AMOVBLSX
+		a = x86.AMOVBLSX
 		goto rdst
 
 	case gc.TINT8<<16 | gc.TINT64, // convert via int32
@@ -1066,13 +1066,13 @@
 
 	case gc.TUINT8<<16 | gc.TINT16, // zero extend uint8
 		gc.TUINT8<<16 | gc.TUINT16:
-		a = i386.AMOVBWZX
+		a = x86.AMOVBWZX
 
 		goto rdst
 
 	case gc.TUINT8<<16 | gc.TINT32,
 		gc.TUINT8<<16 | gc.TUINT32:
-		a = i386.AMOVBLZX
+		a = x86.AMOVBLZX
 		goto rdst
 
 	case gc.TUINT8<<16 | gc.TINT64, // convert via uint32
@@ -1083,7 +1083,7 @@
 
 	case gc.TINT16<<16 | gc.TINT32, // sign extend int16
 		gc.TINT16<<16 | gc.TUINT32:
-		a = i386.AMOVWLSX
+		a = x86.AMOVWLSX
 
 		goto rdst
 
@@ -1095,7 +1095,7 @@
 
 	case gc.TUINT16<<16 | gc.TINT32, // zero extend uint16
 		gc.TUINT16<<16 | gc.TUINT32:
-		a = i386.AMOVWLZX
+		a = x86.AMOVWLZX
 
 		goto rdst
 
@@ -1112,13 +1112,13 @@
 		split64(t, &tlo, &thi)
 
 		var flo gc.Node
-		gc.Nodreg(&flo, tlo.Type, i386.REG_AX)
+		gc.Nodreg(&flo, tlo.Type, x86.REG_AX)
 		var fhi gc.Node
-		gc.Nodreg(&fhi, thi.Type, i386.REG_DX)
+		gc.Nodreg(&fhi, thi.Type, x86.REG_DX)
 		gmove(f, &flo)
-		gins(i386.ACDQ, nil, nil)
-		gins(i386.AMOVL, &flo, &tlo)
-		gins(i386.AMOVL, &fhi, &thi)
+		gins(x86.ACDQ, nil, nil)
+		gins(x86.AMOVL, &flo, &tlo)
+		gins(x86.AMOVL, &fhi, &thi)
 		splitclean()
 		return
 
@@ -1129,7 +1129,7 @@
 		split64(t, &tlo, &thi)
 
 		gmove(f, &tlo)
-		gins(i386.AMOVL, ncon(0), &thi)
+		gins(x86.AMOVL, ncon(0), &thi)
 		splitclean()
 		return
 	}
@@ -1220,11 +1220,11 @@
 		}
 
 		var r1 gc.Node
-		gc.Nodreg(&r1, gc.Types[ft], i386.REG_F0)
+		gc.Nodreg(&r1, gc.Types[ft], x86.REG_F0)
 		if ft == gc.TFLOAT32 {
-			gins(i386.AFMOVF, f, &r1)
+			gins(x86.AFMOVF, f, &r1)
 		} else {
-			gins(i386.AFMOVD, f, &r1)
+			gins(x86.AFMOVD, f, &r1)
 		}
 
 		// set round to zero mode during conversion
@@ -1233,17 +1233,17 @@
 
 		var t2 gc.Node
 		memname(&t2, gc.Types[gc.TUINT16])
-		gins(i386.AFSTCW, nil, &t1)
-		gins(i386.AMOVW, ncon(0xf7f), &t2)
-		gins(i386.AFLDCW, &t2, nil)
+		gins(x86.AFSTCW, nil, &t1)
+		gins(x86.AMOVW, ncon(0xf7f), &t2)
+		gins(x86.AFLDCW, &t2, nil)
 		if tt == gc.TINT16 {
-			gins(i386.AFMOVWP, &r1, t)
+			gins(x86.AFMOVWP, &r1, t)
 		} else if tt == gc.TINT32 {
-			gins(i386.AFMOVLP, &r1, t)
+			gins(x86.AFMOVLP, &r1, t)
 		} else {
-			gins(i386.AFMOVVP, &r1, t)
+			gins(x86.AFMOVVP, &r1, t)
 		}
-		gins(i386.AFLDCW, &t1, nil)
+		gins(x86.AFLDCW, &t1, nil)
 		return
 
 	case gc.TFLOAT32<<16 | gc.TUINT64,
@@ -1255,36 +1255,36 @@
 
 		bignodes()
 		var f0 gc.Node
-		gc.Nodreg(&f0, gc.Types[ft], i386.REG_F0)
+		gc.Nodreg(&f0, gc.Types[ft], x86.REG_F0)
 		var f1 gc.Node
-		gc.Nodreg(&f1, gc.Types[ft], i386.REG_F0+1)
+		gc.Nodreg(&f1, gc.Types[ft], x86.REG_F0+1)
 		var ax gc.Node
-		gc.Nodreg(&ax, gc.Types[gc.TUINT16], i386.REG_AX)
+		gc.Nodreg(&ax, gc.Types[gc.TUINT16], x86.REG_AX)
 
 		if ft == gc.TFLOAT32 {
-			gins(i386.AFMOVF, f, &f0)
+			gins(x86.AFMOVF, f, &f0)
 		} else {
-			gins(i386.AFMOVD, f, &f0)
+			gins(x86.AFMOVD, f, &f0)
 		}
 
 		// if 0 > v { answer = 0 }
-		gins(i386.AFMOVD, &zerof, &f0)
+		gins(x86.AFMOVD, &zerof, &f0)
 
-		gins(i386.AFUCOMIP, &f0, &f1)
+		gins(x86.AFUCOMIP, &f0, &f1)
 		p1 := gc.Gbranch(optoas(gc.OGT, gc.Types[tt]), nil, 0)
 
 		// if 1<<64 <= v { answer = 0 too }
-		gins(i386.AFMOVD, &two64f, &f0)
+		gins(x86.AFMOVD, &two64f, &f0)
 
-		gins(i386.AFUCOMIP, &f0, &f1)
+		gins(x86.AFUCOMIP, &f0, &f1)
 		p2 := gc.Gbranch(optoas(gc.OGT, gc.Types[tt]), nil, 0)
 		gc.Patch(p1, gc.Pc)
-		gins(i386.AFMOVVP, &f0, t) // don't care about t, but will pop the stack
+		gins(x86.AFMOVVP, &f0, t) // don't care about t, but will pop the stack
 		var thi gc.Node
 		var tlo gc.Node
 		split64(t, &tlo, &thi)
-		gins(i386.AMOVL, ncon(0), &tlo)
-		gins(i386.AMOVL, ncon(0), &thi)
+		gins(x86.AMOVL, ncon(0), &tlo)
+		gins(x86.AMOVL, ncon(0), &thi)
 		splitclean()
 		p1 = gc.Gbranch(obj.AJMP, nil, 0)
 		gc.Patch(p2, gc.Pc)
@@ -1299,28 +1299,28 @@
 
 		var t2 gc.Node
 		memname(&t2, gc.Types[gc.TUINT16])
-		gins(i386.AFSTCW, nil, &t1)
-		gins(i386.AMOVW, ncon(0xf7f), &t2)
-		gins(i386.AFLDCW, &t2, nil)
+		gins(x86.AFSTCW, nil, &t1)
+		gins(x86.AMOVW, ncon(0xf7f), &t2)
+		gins(x86.AFLDCW, &t2, nil)
 
 		// actual work
-		gins(i386.AFMOVD, &two63f, &f0)
+		gins(x86.AFMOVD, &two63f, &f0)
 
-		gins(i386.AFUCOMIP, &f0, &f1)
+		gins(x86.AFUCOMIP, &f0, &f1)
 		p2 = gc.Gbranch(optoas(gc.OLE, gc.Types[tt]), nil, 0)
-		gins(i386.AFMOVVP, &f0, t)
+		gins(x86.AFMOVVP, &f0, t)
 		p3 := gc.Gbranch(obj.AJMP, nil, 0)
 		gc.Patch(p2, gc.Pc)
-		gins(i386.AFMOVD, &two63f, &f0)
-		gins(i386.AFSUBDP, &f0, &f1)
-		gins(i386.AFMOVVP, &f0, t)
+		gins(x86.AFMOVD, &two63f, &f0)
+		gins(x86.AFSUBDP, &f0, &f1)
+		gins(x86.AFMOVVP, &f0, t)
 		split64(t, &tlo, &thi)
-		gins(i386.AXORL, ncon(0x80000000), &thi) // + 2^63
+		gins(x86.AXORL, ncon(0x80000000), &thi) // + 2^63
 		gc.Patch(p3, gc.Pc)
 		splitclean()
 
 		// restore rounding mode
-		gins(i386.AFLDCW, &t1, nil)
+		gins(x86.AFLDCW, &t1, nil)
 
 		gc.Patch(p1, gc.Pc)
 		return
@@ -1334,12 +1334,12 @@
 			goto hardmem
 		}
 		var f0 gc.Node
-		gc.Nodreg(&f0, t.Type, i386.REG_F0)
-		gins(i386.AFMOVV, f, &f0)
+		gc.Nodreg(&f0, t.Type, x86.REG_F0)
+		gins(x86.AFMOVV, f, &f0)
 		if tt == gc.TFLOAT32 {
-			gins(i386.AFMOVFP, &f0, t)
+			gins(x86.AFMOVFP, &f0, t)
 		} else {
-			gins(i386.AFMOVDP, &f0, t)
+			gins(x86.AFMOVDP, &f0, t)
 		}
 		return
 
@@ -1349,30 +1349,30 @@
 	case gc.TUINT64<<16 | gc.TFLOAT32,
 		gc.TUINT64<<16 | gc.TFLOAT64:
 		var ax gc.Node
-		gc.Nodreg(&ax, gc.Types[gc.TUINT32], i386.REG_AX)
+		gc.Nodreg(&ax, gc.Types[gc.TUINT32], x86.REG_AX)
 
 		var dx gc.Node
-		gc.Nodreg(&dx, gc.Types[gc.TUINT32], i386.REG_DX)
+		gc.Nodreg(&dx, gc.Types[gc.TUINT32], x86.REG_DX)
 		var cx gc.Node
-		gc.Nodreg(&cx, gc.Types[gc.TUINT32], i386.REG_CX)
+		gc.Nodreg(&cx, gc.Types[gc.TUINT32], x86.REG_CX)
 		var t1 gc.Node
 		gc.Tempname(&t1, f.Type)
 		var tlo gc.Node
 		var thi gc.Node
 		split64(&t1, &tlo, &thi)
 		gmove(f, &t1)
-		gins(i386.ACMPL, &thi, ncon(0))
-		p1 := gc.Gbranch(i386.AJLT, nil, 0)
+		gins(x86.ACMPL, &thi, ncon(0))
+		p1 := gc.Gbranch(x86.AJLT, nil, 0)
 
 		// native
 		var r1 gc.Node
-		gc.Nodreg(&r1, gc.Types[tt], i386.REG_F0)
+		gc.Nodreg(&r1, gc.Types[tt], x86.REG_F0)
 
-		gins(i386.AFMOVV, &t1, &r1)
+		gins(x86.AFMOVV, &t1, &r1)
 		if tt == gc.TFLOAT32 {
-			gins(i386.AFMOVFP, &r1, t)
+			gins(x86.AFMOVFP, &r1, t)
 		} else {
-			gins(i386.AFMOVDP, &r1, t)
+			gins(x86.AFMOVDP, &r1, t)
 		}
 		p2 := gc.Gbranch(obj.AJMP, nil, 0)
 
@@ -1381,25 +1381,25 @@
 
 		gmove(&tlo, &ax)
 		gmove(&thi, &dx)
-		p1 = gins(i386.ASHRL, ncon(1), &ax)
-		p1.From.Index = i386.REG_DX // double-width shift DX -> AX
+		p1 = gins(x86.ASHRL, ncon(1), &ax)
+		p1.From.Index = x86.REG_DX // double-width shift DX -> AX
 		p1.From.Scale = 0
-		gins(i386.AMOVL, ncon(0), &cx)
-		gins(i386.ASETCC, nil, &cx)
-		gins(i386.AORL, &cx, &ax)
-		gins(i386.ASHRL, ncon(1), &dx)
+		gins(x86.AMOVL, ncon(0), &cx)
+		gins(x86.ASETCC, nil, &cx)
+		gins(x86.AORL, &cx, &ax)
+		gins(x86.ASHRL, ncon(1), &dx)
 		gmove(&dx, &thi)
 		gmove(&ax, &tlo)
-		gc.Nodreg(&r1, gc.Types[tt], i386.REG_F0)
+		gc.Nodreg(&r1, gc.Types[tt], x86.REG_F0)
 		var r2 gc.Node
-		gc.Nodreg(&r2, gc.Types[tt], i386.REG_F0+1)
-		gins(i386.AFMOVV, &t1, &r1)
-		gins(i386.AFMOVD, &r1, &r1)
-		gins(i386.AFADDDP, &r1, &r2)
+		gc.Nodreg(&r2, gc.Types[tt], x86.REG_F0+1)
+		gins(x86.AFMOVV, &t1, &r1)
+		gins(x86.AFMOVD, &r1, &r1)
+		gins(x86.AFADDDP, &r1, &r2)
 		if tt == gc.TFLOAT32 {
-			gins(i386.AFMOVFP, &r1, t)
+			gins(x86.AFMOVFP, &r1, t)
 		} else {
-			gins(i386.AFMOVDP, &r1, t)
+			gins(x86.AFMOVDP, &r1, t)
 		}
 		gc.Patch(p2, gc.Pc)
 		splitclean()
@@ -1449,12 +1449,12 @@
 			goto hardmem
 		}
 		var r1 gc.Node
-		gc.Nodreg(&r1, gc.Types[ft], i386.REG_F0)
+		gc.Nodreg(&r1, gc.Types[ft], x86.REG_F0)
 		if f.Op != gc.OREGISTER {
 			if ft == gc.TFLOAT32 {
-				gins(i386.AFMOVF, f, &r1)
+				gins(x86.AFMOVF, f, &r1)
 			} else {
-				gins(i386.AFMOVD, f, &r1)
+				gins(x86.AFMOVD, f, &r1)
 			}
 		}
 
@@ -1464,17 +1464,17 @@
 
 		var t2 gc.Node
 		memname(&t2, gc.Types[gc.TUINT16])
-		gins(i386.AFSTCW, nil, &t1)
-		gins(i386.AMOVW, ncon(0xf7f), &t2)
-		gins(i386.AFLDCW, &t2, nil)
+		gins(x86.AFSTCW, nil, &t1)
+		gins(x86.AMOVW, ncon(0xf7f), &t2)
+		gins(x86.AFLDCW, &t2, nil)
 		if tt == gc.TINT16 {
-			gins(i386.AFMOVWP, &r1, t)
+			gins(x86.AFMOVWP, &r1, t)
 		} else if tt == gc.TINT32 {
-			gins(i386.AFMOVLP, &r1, t)
+			gins(x86.AFMOVLP, &r1, t)
 		} else {
-			gins(i386.AFMOVVP, &r1, t)
+			gins(x86.AFMOVVP, &r1, t)
 		}
-		gins(i386.AFLDCW, &t1, nil)
+		gins(x86.AFLDCW, &t1, nil)
 		return
 
 		// convert via int32.
@@ -1493,9 +1493,9 @@
 			gc.Fatal("gmove %v", gc.Nconv(t, 0))
 
 		case gc.TINT8:
-			gins(i386.ACMPL, &t1, ncon(-0x80&(1<<32-1)))
+			gins(x86.ACMPL, &t1, ncon(-0x80&(1<<32-1)))
 			p1 := gc.Gbranch(optoas(gc.OLT, gc.Types[gc.TINT32]), nil, -1)
-			gins(i386.ACMPL, &t1, ncon(0x7f))
+			gins(x86.ACMPL, &t1, ncon(0x7f))
 			p2 := gc.Gbranch(optoas(gc.OGT, gc.Types[gc.TINT32]), nil, -1)
 			p3 := gc.Gbranch(obj.AJMP, nil, 0)
 			gc.Patch(p1, gc.Pc)
@@ -1505,16 +1505,16 @@
 			gmove(&t1, t)
 
 		case gc.TUINT8:
-			gins(i386.ATESTL, ncon(0xffffff00), &t1)
-			p1 := gc.Gbranch(i386.AJEQ, nil, +1)
-			gins(i386.AMOVL, ncon(0), &t1)
+			gins(x86.ATESTL, ncon(0xffffff00), &t1)
+			p1 := gc.Gbranch(x86.AJEQ, nil, +1)
+			gins(x86.AMOVL, ncon(0), &t1)
 			gc.Patch(p1, gc.Pc)
 			gmove(&t1, t)
 
 		case gc.TUINT16:
-			gins(i386.ATESTL, ncon(0xffff0000), &t1)
-			p1 := gc.Gbranch(i386.AJEQ, nil, +1)
-			gins(i386.AMOVL, ncon(0), &t1)
+			gins(x86.ATESTL, ncon(0xffff0000), &t1)
+			p1 := gc.Gbranch(x86.AJEQ, nil, +1)
+			gins(x86.AMOVL, ncon(0), &t1)
 			gc.Patch(p1, gc.Pc)
 			gmove(&t1, t)
 		}
@@ -1547,13 +1547,13 @@
 
 		switch ft {
 		case gc.TINT16:
-			a = i386.AFMOVW
+			a = x86.AFMOVW
 
 		case gc.TINT32:
-			a = i386.AFMOVL
+			a = x86.AFMOVL
 
 		default:
-			a = i386.AFMOVV
+			a = x86.AFMOVV
 		}
 
 		// convert via int32 memory
@@ -1589,23 +1589,23 @@
 			goto hard
 		}
 		if f.Op == gc.OREGISTER && t.Op == gc.OREGISTER {
-			if f.Val.U.Reg != i386.REG_F0 || t.Val.U.Reg != i386.REG_F0 {
+			if f.Val.U.Reg != x86.REG_F0 || t.Val.U.Reg != x86.REG_F0 {
 				goto fatal
 			}
 			return
 		}
 
-		a = i386.AFMOVF
+		a = x86.AFMOVF
 		if ft == gc.TFLOAT64 {
-			a = i386.AFMOVD
+			a = x86.AFMOVD
 		}
 		if gc.Ismem(t) {
-			if f.Op != gc.OREGISTER || f.Val.U.Reg != i386.REG_F0 {
+			if f.Op != gc.OREGISTER || f.Val.U.Reg != x86.REG_F0 {
 				gc.Fatal("gmove %v", gc.Nconv(f, 0))
 			}
-			a = i386.AFMOVFP
+			a = x86.AFMOVFP
 			if ft == gc.TFLOAT64 {
-				a = i386.AFMOVDP
+				a = x86.AFMOVDP
 			}
 		}
 
@@ -1614,16 +1614,16 @@
 			goto hard
 		}
 		if f.Op == gc.OREGISTER && t.Op == gc.OREGISTER {
-			if f.Val.U.Reg != i386.REG_F0 || t.Val.U.Reg != i386.REG_F0 {
+			if f.Val.U.Reg != x86.REG_F0 || t.Val.U.Reg != x86.REG_F0 {
 				goto fatal
 			}
 			return
 		}
 
 		if f.Op == gc.OREGISTER {
-			gins(i386.AFMOVDP, f, t)
+			gins(x86.AFMOVDP, f, t)
 		} else {
-			gins(i386.AFMOVF, f, t)
+			gins(x86.AFMOVF, f, t)
 		}
 		return
 
@@ -1634,15 +1634,15 @@
 		if f.Op == gc.OREGISTER && t.Op == gc.OREGISTER {
 			var r1 gc.Node
 			gc.Tempname(&r1, gc.Types[gc.TFLOAT32])
-			gins(i386.AFMOVFP, f, &r1)
-			gins(i386.AFMOVF, &r1, t)
+			gins(x86.AFMOVFP, f, &r1)
+			gins(x86.AFMOVF, &r1, t)
 			return
 		}
 
 		if f.Op == gc.OREGISTER {
-			gins(i386.AFMOVFP, f, t)
+			gins(x86.AFMOVFP, f, t)
 		} else {
-			gins(i386.AFMOVD, f, t)
+			gins(x86.AFMOVD, f, t)
 		}
 		return
 	}
@@ -1713,11 +1713,11 @@
 		goto hardmem
 
 	case gc.TFLOAT32<<16 | gc.TINT32:
-		a = i386.ACVTTSS2SL
+		a = x86.ACVTTSS2SL
 		goto rdst
 
 	case gc.TFLOAT64<<16 | gc.TINT32:
-		a = i386.ACVTTSD2SL
+		a = x86.ACVTTSD2SL
 		goto rdst
 
 		// convert via int32 memory
@@ -1744,28 +1744,28 @@
 		goto hardmem
 
 	case gc.TINT32<<16 | gc.TFLOAT32:
-		a = i386.ACVTSL2SS
+		a = x86.ACVTSL2SS
 		goto rdst
 
 	case gc.TINT32<<16 | gc.TFLOAT64:
-		a = i386.ACVTSL2SD
+		a = x86.ACVTSL2SD
 		goto rdst
 
 		/*
 		 * float to float
 		 */
 	case gc.TFLOAT32<<16 | gc.TFLOAT32:
-		a = i386.AMOVSS
+		a = x86.AMOVSS
 
 	case gc.TFLOAT64<<16 | gc.TFLOAT64:
-		a = i386.AMOVSD
+		a = x86.AMOVSD
 
 	case gc.TFLOAT32<<16 | gc.TFLOAT64:
-		a = i386.ACVTSS2SD
+		a = x86.ACVTSS2SD
 		goto rdst
 
 	case gc.TFLOAT64<<16 | gc.TFLOAT32:
-		a = i386.ACVTSD2SS
+		a = x86.ACVTSD2SS
 		goto rdst
 	}
 
@@ -1820,25 +1820,25 @@
  *	as f, t
  */
 func gins(as int, f *gc.Node, t *gc.Node) *obj.Prog {
-	if as == i386.AFMOVF && f != nil && f.Op == gc.OREGISTER && t != nil && t.Op == gc.OREGISTER {
+	if as == x86.AFMOVF && f != nil && f.Op == gc.OREGISTER && t != nil && t.Op == gc.OREGISTER {
 		gc.Fatal("gins MOVF reg, reg")
 	}
-	if as == i386.ACVTSD2SS && f != nil && f.Op == gc.OLITERAL {
+	if as == x86.ACVTSD2SS && f != nil && f.Op == gc.OLITERAL {
 		gc.Fatal("gins CVTSD2SS const")
 	}
-	if as == i386.AMOVSD && t != nil && t.Op == gc.OREGISTER && t.Val.U.Reg == i386.REG_F0 {
+	if as == x86.AMOVSD && t != nil && t.Op == gc.OREGISTER && t.Val.U.Reg == x86.REG_F0 {
 		gc.Fatal("gins MOVSD into F0")
 	}
 
 	switch as {
-	case i386.AMOVB,
-		i386.AMOVW,
-		i386.AMOVL:
+	case x86.AMOVB,
+		x86.AMOVW,
+		x86.AMOVL:
 		if f != nil && t != nil && samaddr(f, t) {
 			return nil
 		}
 
-	case i386.ALEAL:
+	case x86.ALEAL:
 		if f != nil && gc.Isconst(f, gc.CTNIL) {
 			gc.Fatal("gins LEAL nil %v", gc.Tconv(f.Type, 0))
 		}
@@ -1865,13 +1865,13 @@
 
 	w := 0
 	switch as {
-	case i386.AMOVB:
+	case x86.AMOVB:
 		w = 1
 
-	case i386.AMOVW:
+	case x86.AMOVW:
 		w = 2
 
-	case i386.AMOVL:
+	case x86.AMOVL:
 		w = 4
 	}
 
diff --git a/src/cmd/8g/peep.go b/src/cmd/8g/peep.go
index a85cdc3..1967d5f 100644
--- a/src/cmd/8g/peep.go
+++ b/src/cmd/8g/peep.go
@@ -33,13 +33,13 @@
 import (
 	"cmd/internal/gc"
 	"cmd/internal/obj"
-	i386 "cmd/internal/obj/x86"
+	"cmd/internal/obj/x86"
 	"fmt"
 )
 
 const (
 	REGEXT      = 0
-	exregoffset = i386.REG_DI
+	exregoffset = x86.REG_DI
 )
 
 var gactive uint32
@@ -100,20 +100,20 @@
 	for r := g.Start; r != nil; r = r.Link {
 		p = r.Prog
 		switch p.As {
-		case i386.ALEAL:
+		case x86.ALEAL:
 			if regtyp(&p.To) {
 				if p.From.Sym != nil {
-					if p.From.Index == i386.REG_NONE {
+					if p.From.Index == x86.REG_NONE {
 						conprop(r)
 					}
 				}
 			}
 
-		case i386.AMOVB,
-			i386.AMOVW,
-			i386.AMOVL,
-			i386.AMOVSS,
-			i386.AMOVSD:
+		case x86.AMOVB,
+			x86.AMOVW,
+			x86.AMOVL,
+			x86.AMOVSS,
+			x86.AMOVSD:
 			if regtyp(&p.To) {
 				if p.From.Type == obj.TYPE_CONST || p.From.Type == obj.TYPE_FCONST {
 					conprop(r)
@@ -135,9 +135,9 @@
 	for r = g.Start; r != nil; r = r.Link {
 		p = r.Prog
 		switch p.As {
-		case i386.AMOVL,
-			i386.AMOVSS,
-			i386.AMOVSD:
+		case x86.AMOVL,
+			x86.AMOVSS,
+			x86.AMOVSD:
 			if regtyp(&p.To) {
 				if regtyp(&p.From) {
 					if copyprop(g, r) {
@@ -150,66 +150,66 @@
 				}
 			}
 
-		case i386.AMOVBLZX,
-			i386.AMOVWLZX,
-			i386.AMOVBLSX,
-			i386.AMOVWLSX:
+		case x86.AMOVBLZX,
+			x86.AMOVWLZX,
+			x86.AMOVBLSX,
+			x86.AMOVWLSX:
 			if regtyp(&p.To) {
 				r1 = rnops(gc.Uniqs(r))
 				if r1 != nil {
 					p1 = r1.Prog
 					if p.As == p1.As && p.To.Type == p1.From.Type && p.To.Reg == p1.From.Reg {
-						p1.As = i386.AMOVL
+						p1.As = x86.AMOVL
 						t++
 					}
 				}
 			}
 
-		case i386.AADDL,
-			i386.AADDW:
+		case x86.AADDL,
+			x86.AADDW:
 			if p.From.Type != obj.TYPE_CONST || needc(p.Link) {
 				break
 			}
 			if p.From.Offset == -1 {
-				if p.As == i386.AADDL {
-					p.As = i386.ADECL
+				if p.As == x86.AADDL {
+					p.As = x86.ADECL
 				} else {
-					p.As = i386.ADECW
+					p.As = x86.ADECW
 				}
 				p.From = obj.Addr{}
 				break
 			}
 
 			if p.From.Offset == 1 {
-				if p.As == i386.AADDL {
-					p.As = i386.AINCL
+				if p.As == x86.AADDL {
+					p.As = x86.AINCL
 				} else {
-					p.As = i386.AINCW
+					p.As = x86.AINCW
 				}
 				p.From = obj.Addr{}
 				break
 			}
 
-		case i386.ASUBL,
-			i386.ASUBW:
+		case x86.ASUBL,
+			x86.ASUBW:
 			if p.From.Type != obj.TYPE_CONST || needc(p.Link) {
 				break
 			}
 			if p.From.Offset == -1 {
-				if p.As == i386.ASUBL {
-					p.As = i386.AINCL
+				if p.As == x86.ASUBL {
+					p.As = x86.AINCL
 				} else {
-					p.As = i386.AINCW
+					p.As = x86.AINCW
 				}
 				p.From = obj.Addr{}
 				break
 			}
 
 			if p.From.Offset == 1 {
-				if p.As == i386.ASUBL {
-					p.As = i386.ADECL
+				if p.As == x86.ASUBL {
+					p.As = x86.ADECL
 				} else {
-					p.As = i386.ADECW
+					p.As = x86.ADECW
 				}
 				p.From = obj.Addr{}
 				break
@@ -228,10 +228,10 @@
 	// the processor can do better if we do moves using both.
 	for r := g.Start; r != nil; r = r.Link {
 		p = r.Prog
-		if p.As == i386.AMOVSD {
+		if p.As == x86.AMOVSD {
 			if regtyp(&p.From) {
 				if regtyp(&p.To) {
-					p.As = i386.AMOVAPD
+					p.As = x86.AMOVAPD
 				}
 			}
 		}
@@ -252,7 +252,7 @@
 }
 
 func regtyp(a *obj.Addr) bool {
-	return a.Type == obj.TYPE_REG && (i386.REG_AX <= a.Reg && a.Reg <= i386.REG_DI || i386.REG_X0 <= a.Reg && a.Reg <= i386.REG_X7)
+	return a.Type == obj.TYPE_REG && (x86.REG_AX <= a.Reg && a.Reg <= x86.REG_DI || x86.REG_X0 <= a.Reg && a.Reg <= x86.REG_X7)
 }
 
 // movb elimination.
@@ -269,21 +269,21 @@
 		p = r.Prog
 		if regtyp(&p.To) {
 			switch p.As {
-			case i386.AINCB,
-				i386.AINCW:
-				p.As = i386.AINCL
+			case x86.AINCB,
+				x86.AINCW:
+				p.As = x86.AINCL
 
-			case i386.ADECB,
-				i386.ADECW:
-				p.As = i386.ADECL
+			case x86.ADECB,
+				x86.ADECW:
+				p.As = x86.ADECL
 
-			case i386.ANEGB,
-				i386.ANEGW:
-				p.As = i386.ANEGL
+			case x86.ANEGB,
+				x86.ANEGW:
+				p.As = x86.ANEGL
 
-			case i386.ANOTB,
-				i386.ANOTW:
-				p.As = i386.ANOTL
+			case x86.ANOTB,
+				x86.ANOTW:
+				p.As = x86.ANOTL
 			}
 
 			if regtyp(&p.From) || p.From.Type == obj.TYPE_CONST {
@@ -292,54 +292,54 @@
 				// we don't switch to 32-bit arithmetic if it can
 				// change how the carry bit is set (and the carry bit is needed).
 				switch p.As {
-				case i386.AMOVB,
-					i386.AMOVW:
-					p.As = i386.AMOVL
+				case x86.AMOVB,
+					x86.AMOVW:
+					p.As = x86.AMOVL
 
-				case i386.AADDB,
-					i386.AADDW:
+				case x86.AADDB,
+					x86.AADDW:
 					if !needc(p.Link) {
-						p.As = i386.AADDL
+						p.As = x86.AADDL
 					}
 
-				case i386.ASUBB,
-					i386.ASUBW:
+				case x86.ASUBB,
+					x86.ASUBW:
 					if !needc(p.Link) {
-						p.As = i386.ASUBL
+						p.As = x86.ASUBL
 					}
 
-				case i386.AMULB,
-					i386.AMULW:
-					p.As = i386.AMULL
+				case x86.AMULB,
+					x86.AMULW:
+					p.As = x86.AMULL
 
-				case i386.AIMULB,
-					i386.AIMULW:
-					p.As = i386.AIMULL
+				case x86.AIMULB,
+					x86.AIMULW:
+					p.As = x86.AIMULL
 
-				case i386.AANDB,
-					i386.AANDW:
-					p.As = i386.AANDL
+				case x86.AANDB,
+					x86.AANDW:
+					p.As = x86.AANDL
 
-				case i386.AORB,
-					i386.AORW:
-					p.As = i386.AORL
+				case x86.AORB,
+					x86.AORW:
+					p.As = x86.AORL
 
-				case i386.AXORB,
-					i386.AXORW:
-					p.As = i386.AXORL
+				case x86.AXORB,
+					x86.AXORW:
+					p.As = x86.AXORL
 
-				case i386.ASHLB,
-					i386.ASHLW:
-					p.As = i386.ASHLL
+				case x86.ASHLB,
+					x86.ASHLW:
+					p.As = x86.ASHLL
 				}
 			} else {
 				// explicit zero extension
 				switch p.As {
-				case i386.AMOVB:
-					p.As = i386.AMOVBLZX
+				case x86.AMOVB:
+					p.As = x86.AMOVBLZX
 
-				case i386.AMOVW:
-					p.As = i386.AMOVWLZX
+				case x86.AMOVW:
+					p.As = x86.AMOVWLZX
 				}
 			}
 		}
@@ -581,7 +581,7 @@
 		if REGEXT != 0 /*TypeKind(100016)*/ && v.Type == obj.TYPE_REG && v.Reg <= REGEXT && v.Reg > exregoffset {
 			return 2
 		}
-		if i386.REGARG >= 0 && v.Type == obj.TYPE_REG && v.Reg == i386.REGARG {
+		if x86.REGARG >= 0 && v.Type == obj.TYPE_REG && v.Reg == x86.REGARG {
 			return 2
 		}
 		if v.Type == p.From.Type && v.Reg == p.From.Reg {
@@ -601,7 +601,7 @@
 		return 3
 
 	case obj.ATEXT:
-		if i386.REGARG >= 0 && v.Type == obj.TYPE_REG && v.Reg == i386.REGARG {
+		if x86.REGARG >= 0 && v.Type == obj.TYPE_REG && v.Reg == x86.REGARG {
 			return 3
 		}
 		return 0
@@ -666,10 +666,10 @@
  * semantics
  */
 func copyas(a *obj.Addr, v *obj.Addr) bool {
-	if i386.REG_AL <= a.Reg && a.Reg <= i386.REG_BL {
+	if x86.REG_AL <= a.Reg && a.Reg <= x86.REG_BL {
 		gc.Fatal("use of byte register")
 	}
-	if i386.REG_AL <= v.Reg && v.Reg <= i386.REG_BL {
+	if x86.REG_AL <= v.Reg && v.Reg <= x86.REG_BL {
 		gc.Fatal("use of byte register")
 	}
 
@@ -728,7 +728,7 @@
 func copysub(a *obj.Addr, v *obj.Addr, s *obj.Addr, f int) int {
 	if copyas(a, v) {
 		reg := int(s.Reg)
-		if reg >= i386.REG_AX && reg <= i386.REG_DI || reg >= i386.REG_X0 && reg <= i386.REG_X7 {
+		if reg >= x86.REG_AX && reg <= x86.REG_DI || reg >= x86.REG_X0 && reg <= x86.REG_X7 {
 			if f != 0 {
 				a.Reg = int16(reg)
 			}
@@ -740,7 +740,7 @@
 	if regtyp(v) {
 		reg := int(v.Reg)
 		if a.Type == obj.TYPE_MEM && int(a.Reg) == reg {
-			if (s.Reg == i386.REG_BP) && a.Index != obj.TYPE_NONE {
+			if (s.Reg == x86.REG_BP) && a.Index != obj.TYPE_NONE {
 				return 1 /* can't use BP-base with index */
 			}
 			if f != 0 {
@@ -813,9 +813,9 @@
 }
 
 func smallindir(a *obj.Addr, reg *obj.Addr) bool {
-	return regtyp(reg) && a.Type == obj.TYPE_MEM && a.Reg == reg.Reg && a.Index == i386.REG_NONE && 0 <= a.Offset && a.Offset < 4096
+	return regtyp(reg) && a.Type == obj.TYPE_MEM && a.Reg == reg.Reg && a.Index == x86.REG_NONE && 0 <= a.Offset && a.Offset < 4096
 }
 
 func stackaddr(a *obj.Addr) bool {
-	return a.Type == obj.TYPE_REG && a.Reg == i386.REG_SP
+	return a.Type == obj.TYPE_REG && a.Reg == x86.REG_SP
 }
diff --git a/src/cmd/8g/prog.go b/src/cmd/8g/prog.go
index 054ac49..3cb6e51 100644
--- a/src/cmd/8g/prog.go
+++ b/src/cmd/8g/prog.go
@@ -7,16 +7,16 @@
 import (
 	"cmd/internal/gc"
 	"cmd/internal/obj"
-	i386 "cmd/internal/obj/x86"
+	"cmd/internal/obj/x86"
 )
 
 var (
-	AX               = RtoB(i386.REG_AX)
-	BX               = RtoB(i386.REG_BX)
-	CX               = RtoB(i386.REG_CX)
-	DX               = RtoB(i386.REG_DX)
-	DI               = RtoB(i386.REG_DI)
-	SI               = RtoB(i386.REG_SI)
+	AX               = RtoB(x86.REG_AX)
+	BX               = RtoB(x86.REG_BX)
+	CX               = RtoB(x86.REG_CX)
+	DX               = RtoB(x86.REG_DX)
+	DI               = RtoB(x86.REG_DI)
+	SI               = RtoB(x86.REG_SI)
 	LeftRdwr  uint32 = gc.LeftRead | gc.LeftWrite
 	RightRdwr uint32 = gc.RightRead | gc.RightWrite
 )
@@ -30,7 +30,7 @@
 // size variants of an operation even if we just use a subset.
 //
 // The table is formatted for 8-space tabs.
-var progtable = [i386.ALAST]gc.ProgInfo{
+var progtable = [x86.ALAST]gc.ProgInfo{
 	obj.ATYPE:     gc.ProgInfo{gc.Pseudo | gc.Skip, 0, 0, 0},
 	obj.ATEXT:     gc.ProgInfo{gc.Pseudo, 0, 0, 0},
 	obj.AFUNCDATA: gc.ProgInfo{gc.Pseudo, 0, 0, 0},
@@ -43,217 +43,217 @@
 
 	// NOP is an internal no-op that also stands
 	// for USED and SET annotations, not the Intel opcode.
-	obj.ANOP:        gc.ProgInfo{gc.LeftRead | gc.RightWrite, 0, 0, 0},
-	i386.AADCL:      gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry | gc.UseCarry, 0, 0, 0},
-	i386.AADCW:      gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry | gc.UseCarry, 0, 0, 0},
-	i386.AADDB:      gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.AADDL:      gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.AADDW:      gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.AADDSD:     gc.ProgInfo{gc.SizeD | gc.LeftRead | RightRdwr, 0, 0, 0},
-	i386.AADDSS:     gc.ProgInfo{gc.SizeF | gc.LeftRead | RightRdwr, 0, 0, 0},
-	i386.AANDB:      gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.AANDL:      gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.AANDW:      gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	obj.ACALL:       gc.ProgInfo{gc.RightAddr | gc.Call | gc.KillCarry, 0, 0, 0},
-	i386.ACDQ:       gc.ProgInfo{gc.OK, AX, AX | DX, 0},
-	i386.ACWD:       gc.ProgInfo{gc.OK, AX, AX | DX, 0},
-	i386.ACLD:       gc.ProgInfo{gc.OK, 0, 0, 0},
-	i386.ASTD:       gc.ProgInfo{gc.OK, 0, 0, 0},
-	i386.ACMPB:      gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
-	i386.ACMPL:      gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
-	i386.ACMPW:      gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
-	i386.ACOMISD:    gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
-	i386.ACOMISS:    gc.ProgInfo{gc.SizeF | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
-	i386.ACVTSD2SL:  gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.ACVTSD2SS:  gc.ProgInfo{gc.SizeF | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.ACVTSL2SD:  gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.ACVTSL2SS:  gc.ProgInfo{gc.SizeF | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.ACVTSS2SD:  gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.ACVTSS2SL:  gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.ACVTTSD2SL: gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.ACVTTSS2SL: gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.ADECB:      gc.ProgInfo{gc.SizeB | RightRdwr, 0, 0, 0},
-	i386.ADECL:      gc.ProgInfo{gc.SizeL | RightRdwr, 0, 0, 0},
-	i386.ADECW:      gc.ProgInfo{gc.SizeW | RightRdwr, 0, 0, 0},
-	i386.ADIVB:      gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.SetCarry, AX, AX, 0},
-	i386.ADIVL:      gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.SetCarry, AX | DX, AX | DX, 0},
-	i386.ADIVW:      gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.SetCarry, AX | DX, AX | DX, 0},
-	i386.ADIVSD:     gc.ProgInfo{gc.SizeD | gc.LeftRead | RightRdwr, 0, 0, 0},
-	i386.ADIVSS:     gc.ProgInfo{gc.SizeF | gc.LeftRead | RightRdwr, 0, 0, 0},
-	i386.AFLDCW:     gc.ProgInfo{gc.SizeW | gc.LeftAddr, 0, 0, 0},
-	i386.AFSTCW:     gc.ProgInfo{gc.SizeW | gc.RightAddr, 0, 0, 0},
-	i386.AFSTSW:     gc.ProgInfo{gc.SizeW | gc.RightAddr | gc.RightWrite, 0, 0, 0},
-	i386.AFADDD:     gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFADDDP:    gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFADDF:     gc.ProgInfo{gc.SizeF | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFCOMD:     gc.ProgInfo{gc.SizeD | gc.LeftAddr | gc.RightRead, 0, 0, 0},
-	i386.AFCOMDP:    gc.ProgInfo{gc.SizeD | gc.LeftAddr | gc.RightRead, 0, 0, 0},
-	i386.AFCOMDPP:   gc.ProgInfo{gc.SizeD | gc.LeftAddr | gc.RightRead, 0, 0, 0},
-	i386.AFCOMF:     gc.ProgInfo{gc.SizeF | gc.LeftAddr | gc.RightRead, 0, 0, 0},
-	i386.AFCOMFP:    gc.ProgInfo{gc.SizeF | gc.LeftAddr | gc.RightRead, 0, 0, 0},
-	i386.AFUCOMIP:   gc.ProgInfo{gc.SizeF | gc.LeftAddr | gc.RightRead, 0, 0, 0},
-	i386.AFCHS:      gc.ProgInfo{gc.SizeD | RightRdwr, 0, 0, 0}, // also SizeF
+	obj.ANOP:       gc.ProgInfo{gc.LeftRead | gc.RightWrite, 0, 0, 0},
+	x86.AADCL:      gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry | gc.UseCarry, 0, 0, 0},
+	x86.AADCW:      gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry | gc.UseCarry, 0, 0, 0},
+	x86.AADDB:      gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.AADDL:      gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.AADDW:      gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.AADDSD:     gc.ProgInfo{gc.SizeD | gc.LeftRead | RightRdwr, 0, 0, 0},
+	x86.AADDSS:     gc.ProgInfo{gc.SizeF | gc.LeftRead | RightRdwr, 0, 0, 0},
+	x86.AANDB:      gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.AANDL:      gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.AANDW:      gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	obj.ACALL:      gc.ProgInfo{gc.RightAddr | gc.Call | gc.KillCarry, 0, 0, 0},
+	x86.ACDQ:       gc.ProgInfo{gc.OK, AX, AX | DX, 0},
+	x86.ACWD:       gc.ProgInfo{gc.OK, AX, AX | DX, 0},
+	x86.ACLD:       gc.ProgInfo{gc.OK, 0, 0, 0},
+	x86.ASTD:       gc.ProgInfo{gc.OK, 0, 0, 0},
+	x86.ACMPB:      gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
+	x86.ACMPL:      gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
+	x86.ACMPW:      gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
+	x86.ACOMISD:    gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
+	x86.ACOMISS:    gc.ProgInfo{gc.SizeF | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
+	x86.ACVTSD2SL:  gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.ACVTSD2SS:  gc.ProgInfo{gc.SizeF | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.ACVTSL2SD:  gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.ACVTSL2SS:  gc.ProgInfo{gc.SizeF | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.ACVTSS2SD:  gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.ACVTSS2SL:  gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.ACVTTSD2SL: gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.ACVTTSS2SL: gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.ADECB:      gc.ProgInfo{gc.SizeB | RightRdwr, 0, 0, 0},
+	x86.ADECL:      gc.ProgInfo{gc.SizeL | RightRdwr, 0, 0, 0},
+	x86.ADECW:      gc.ProgInfo{gc.SizeW | RightRdwr, 0, 0, 0},
+	x86.ADIVB:      gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.SetCarry, AX, AX, 0},
+	x86.ADIVL:      gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.SetCarry, AX | DX, AX | DX, 0},
+	x86.ADIVW:      gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.SetCarry, AX | DX, AX | DX, 0},
+	x86.ADIVSD:     gc.ProgInfo{gc.SizeD | gc.LeftRead | RightRdwr, 0, 0, 0},
+	x86.ADIVSS:     gc.ProgInfo{gc.SizeF | gc.LeftRead | RightRdwr, 0, 0, 0},
+	x86.AFLDCW:     gc.ProgInfo{gc.SizeW | gc.LeftAddr, 0, 0, 0},
+	x86.AFSTCW:     gc.ProgInfo{gc.SizeW | gc.RightAddr, 0, 0, 0},
+	x86.AFSTSW:     gc.ProgInfo{gc.SizeW | gc.RightAddr | gc.RightWrite, 0, 0, 0},
+	x86.AFADDD:     gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFADDDP:    gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFADDF:     gc.ProgInfo{gc.SizeF | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFCOMD:     gc.ProgInfo{gc.SizeD | gc.LeftAddr | gc.RightRead, 0, 0, 0},
+	x86.AFCOMDP:    gc.ProgInfo{gc.SizeD | gc.LeftAddr | gc.RightRead, 0, 0, 0},
+	x86.AFCOMDPP:   gc.ProgInfo{gc.SizeD | gc.LeftAddr | gc.RightRead, 0, 0, 0},
+	x86.AFCOMF:     gc.ProgInfo{gc.SizeF | gc.LeftAddr | gc.RightRead, 0, 0, 0},
+	x86.AFCOMFP:    gc.ProgInfo{gc.SizeF | gc.LeftAddr | gc.RightRead, 0, 0, 0},
+	x86.AFUCOMIP:   gc.ProgInfo{gc.SizeF | gc.LeftAddr | gc.RightRead, 0, 0, 0},
+	x86.AFCHS:      gc.ProgInfo{gc.SizeD | RightRdwr, 0, 0, 0}, // also SizeF
 
-	i386.AFDIVDP:  gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFDIVF:   gc.ProgInfo{gc.SizeF | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFDIVD:   gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFDIVRDP: gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFDIVRF:  gc.ProgInfo{gc.SizeF | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFDIVRD:  gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFXCHD:   gc.ProgInfo{gc.SizeD | LeftRdwr | RightRdwr, 0, 0, 0},
-	i386.AFSUBD:   gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFSUBDP:  gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFSUBF:   gc.ProgInfo{gc.SizeF | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFSUBRD:  gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFSUBRDP: gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFSUBRF:  gc.ProgInfo{gc.SizeF | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFMOVD:   gc.ProgInfo{gc.SizeD | gc.LeftAddr | gc.RightWrite, 0, 0, 0},
-	i386.AFMOVF:   gc.ProgInfo{gc.SizeF | gc.LeftAddr | gc.RightWrite, 0, 0, 0},
-	i386.AFMOVL:   gc.ProgInfo{gc.SizeL | gc.LeftAddr | gc.RightWrite, 0, 0, 0},
-	i386.AFMOVW:   gc.ProgInfo{gc.SizeW | gc.LeftAddr | gc.RightWrite, 0, 0, 0},
-	i386.AFMOVV:   gc.ProgInfo{gc.SizeQ | gc.LeftAddr | gc.RightWrite, 0, 0, 0},
+	x86.AFDIVDP:  gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFDIVF:   gc.ProgInfo{gc.SizeF | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFDIVD:   gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFDIVRDP: gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFDIVRF:  gc.ProgInfo{gc.SizeF | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFDIVRD:  gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFXCHD:   gc.ProgInfo{gc.SizeD | LeftRdwr | RightRdwr, 0, 0, 0},
+	x86.AFSUBD:   gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFSUBDP:  gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFSUBF:   gc.ProgInfo{gc.SizeF | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFSUBRD:  gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFSUBRDP: gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFSUBRF:  gc.ProgInfo{gc.SizeF | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFMOVD:   gc.ProgInfo{gc.SizeD | gc.LeftAddr | gc.RightWrite, 0, 0, 0},
+	x86.AFMOVF:   gc.ProgInfo{gc.SizeF | gc.LeftAddr | gc.RightWrite, 0, 0, 0},
+	x86.AFMOVL:   gc.ProgInfo{gc.SizeL | gc.LeftAddr | gc.RightWrite, 0, 0, 0},
+	x86.AFMOVW:   gc.ProgInfo{gc.SizeW | gc.LeftAddr | gc.RightWrite, 0, 0, 0},
+	x86.AFMOVV:   gc.ProgInfo{gc.SizeQ | gc.LeftAddr | gc.RightWrite, 0, 0, 0},
 
 	// These instructions are marked as RightAddr
 	// so that the register optimizer does not try to replace the
 	// memory references with integer register references.
 	// But they do not use the previous value at the address, so
 	// we also mark them RightWrite.
-	i386.AFMOVDP:  gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightWrite | gc.RightAddr, 0, 0, 0},
-	i386.AFMOVFP:  gc.ProgInfo{gc.SizeF | gc.LeftRead | gc.RightWrite | gc.RightAddr, 0, 0, 0},
-	i386.AFMOVLP:  gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.RightAddr, 0, 0, 0},
-	i386.AFMOVWP:  gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.RightWrite | gc.RightAddr, 0, 0, 0},
-	i386.AFMOVVP:  gc.ProgInfo{gc.SizeQ | gc.LeftRead | gc.RightWrite | gc.RightAddr, 0, 0, 0},
-	i386.AFMULD:   gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFMULDP:  gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AFMULF:   gc.ProgInfo{gc.SizeF | gc.LeftAddr | RightRdwr, 0, 0, 0},
-	i386.AIDIVB:   gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.SetCarry, AX, AX, 0},
-	i386.AIDIVL:   gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.SetCarry, AX | DX, AX | DX, 0},
-	i386.AIDIVW:   gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.SetCarry, AX | DX, AX | DX, 0},
-	i386.AIMULB:   gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.SetCarry, AX, AX, 0},
-	i386.AIMULL:   gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.ImulAXDX | gc.SetCarry, 0, 0, 0},
-	i386.AIMULW:   gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.ImulAXDX | gc.SetCarry, 0, 0, 0},
-	i386.AINCB:    gc.ProgInfo{gc.SizeB | RightRdwr, 0, 0, 0},
-	i386.AINCL:    gc.ProgInfo{gc.SizeL | RightRdwr, 0, 0, 0},
-	i386.AINCW:    gc.ProgInfo{gc.SizeW | RightRdwr, 0, 0, 0},
-	i386.AJCC:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJCS:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJEQ:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJGE:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJGT:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJHI:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJLE:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJLS:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJLT:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJMI:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJNE:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJOC:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJOS:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJPC:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJPL:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
-	i386.AJPS:     gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AFMOVDP:   gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightWrite | gc.RightAddr, 0, 0, 0},
+	x86.AFMOVFP:   gc.ProgInfo{gc.SizeF | gc.LeftRead | gc.RightWrite | gc.RightAddr, 0, 0, 0},
+	x86.AFMOVLP:   gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.RightAddr, 0, 0, 0},
+	x86.AFMOVWP:   gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.RightWrite | gc.RightAddr, 0, 0, 0},
+	x86.AFMOVVP:   gc.ProgInfo{gc.SizeQ | gc.LeftRead | gc.RightWrite | gc.RightAddr, 0, 0, 0},
+	x86.AFMULD:    gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFMULDP:   gc.ProgInfo{gc.SizeD | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AFMULF:    gc.ProgInfo{gc.SizeF | gc.LeftAddr | RightRdwr, 0, 0, 0},
+	x86.AIDIVB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.SetCarry, AX, AX, 0},
+	x86.AIDIVL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.SetCarry, AX | DX, AX | DX, 0},
+	x86.AIDIVW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.SetCarry, AX | DX, AX | DX, 0},
+	x86.AIMULB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.SetCarry, AX, AX, 0},
+	x86.AIMULL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.ImulAXDX | gc.SetCarry, 0, 0, 0},
+	x86.AIMULW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.ImulAXDX | gc.SetCarry, 0, 0, 0},
+	x86.AINCB:     gc.ProgInfo{gc.SizeB | RightRdwr, 0, 0, 0},
+	x86.AINCL:     gc.ProgInfo{gc.SizeL | RightRdwr, 0, 0, 0},
+	x86.AINCW:     gc.ProgInfo{gc.SizeW | RightRdwr, 0, 0, 0},
+	x86.AJCC:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJCS:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJEQ:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJGE:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJGT:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJHI:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJLE:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJLS:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJLT:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJMI:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJNE:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJOC:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJOS:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJPC:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJPL:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
+	x86.AJPS:      gc.ProgInfo{gc.Cjmp | gc.UseCarry, 0, 0, 0},
 	obj.AJMP:      gc.ProgInfo{gc.Jump | gc.Break | gc.KillCarry, 0, 0, 0},
-	i386.ALEAL:    gc.ProgInfo{gc.LeftAddr | gc.RightWrite, 0, 0, 0},
-	i386.AMOVBLSX: gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.AMOVBLZX: gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.AMOVBWSX: gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.AMOVBWZX: gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.AMOVWLSX: gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.AMOVWLZX: gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
-	i386.AMOVB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.RightWrite | gc.Move, 0, 0, 0},
-	i386.AMOVL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Move, 0, 0, 0},
-	i386.AMOVW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.RightWrite | gc.Move, 0, 0, 0},
-	i386.AMOVSB:   gc.ProgInfo{gc.OK, DI | SI, DI | SI, 0},
-	i386.AMOVSL:   gc.ProgInfo{gc.OK, DI | SI, DI | SI, 0},
-	i386.AMOVSW:   gc.ProgInfo{gc.OK, DI | SI, DI | SI, 0},
+	x86.ALEAL:     gc.ProgInfo{gc.LeftAddr | gc.RightWrite, 0, 0, 0},
+	x86.AMOVBLSX:  gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.AMOVBLZX:  gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.AMOVBWSX:  gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.AMOVBWZX:  gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.AMOVWLSX:  gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.AMOVWLZX:  gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Conv, 0, 0, 0},
+	x86.AMOVB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.RightWrite | gc.Move, 0, 0, 0},
+	x86.AMOVL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightWrite | gc.Move, 0, 0, 0},
+	x86.AMOVW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.RightWrite | gc.Move, 0, 0, 0},
+	x86.AMOVSB:    gc.ProgInfo{gc.OK, DI | SI, DI | SI, 0},
+	x86.AMOVSL:    gc.ProgInfo{gc.OK, DI | SI, DI | SI, 0},
+	x86.AMOVSW:    gc.ProgInfo{gc.OK, DI | SI, DI | SI, 0},
 	obj.ADUFFCOPY: gc.ProgInfo{gc.OK, DI | SI, DI | SI | CX, 0},
-	i386.AMOVSD:   gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightWrite | gc.Move, 0, 0, 0},
-	i386.AMOVSS:   gc.ProgInfo{gc.SizeF | gc.LeftRead | gc.RightWrite | gc.Move, 0, 0, 0},
+	x86.AMOVSD:    gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightWrite | gc.Move, 0, 0, 0},
+	x86.AMOVSS:    gc.ProgInfo{gc.SizeF | gc.LeftRead | gc.RightWrite | gc.Move, 0, 0, 0},
 
 	// We use MOVAPD as a faster synonym for MOVSD.
-	i386.AMOVAPD:  gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightWrite | gc.Move, 0, 0, 0},
-	i386.AMULB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.SetCarry, AX, AX, 0},
-	i386.AMULL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.SetCarry, AX, AX | DX, 0},
-	i386.AMULW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.SetCarry, AX, AX | DX, 0},
-	i386.AMULSD:   gc.ProgInfo{gc.SizeD | gc.LeftRead | RightRdwr, 0, 0, 0},
-	i386.AMULSS:   gc.ProgInfo{gc.SizeF | gc.LeftRead | RightRdwr, 0, 0, 0},
-	i386.ANEGB:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.ANEGL:    gc.ProgInfo{gc.SizeL | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.ANEGW:    gc.ProgInfo{gc.SizeW | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.ANOTB:    gc.ProgInfo{gc.SizeB | RightRdwr, 0, 0, 0},
-	i386.ANOTL:    gc.ProgInfo{gc.SizeL | RightRdwr, 0, 0, 0},
-	i386.ANOTW:    gc.ProgInfo{gc.SizeW | RightRdwr, 0, 0, 0},
-	i386.AORB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.AORL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.AORW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.APOPL:    gc.ProgInfo{gc.SizeL | gc.RightWrite, 0, 0, 0},
-	i386.APUSHL:   gc.ProgInfo{gc.SizeL | gc.LeftRead, 0, 0, 0},
-	i386.ARCLB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry | gc.UseCarry, 0, 0, 0},
-	i386.ARCLL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry | gc.UseCarry, 0, 0, 0},
-	i386.ARCLW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry | gc.UseCarry, 0, 0, 0},
-	i386.ARCRB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry | gc.UseCarry, 0, 0, 0},
-	i386.ARCRL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry | gc.UseCarry, 0, 0, 0},
-	i386.ARCRW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry | gc.UseCarry, 0, 0, 0},
-	i386.AREP:     gc.ProgInfo{gc.OK, CX, CX, 0},
-	i386.AREPN:    gc.ProgInfo{gc.OK, CX, CX, 0},
+	x86.AMOVAPD:   gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightWrite | gc.Move, 0, 0, 0},
+	x86.AMULB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.SetCarry, AX, AX, 0},
+	x86.AMULL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.SetCarry, AX, AX | DX, 0},
+	x86.AMULW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.SetCarry, AX, AX | DX, 0},
+	x86.AMULSD:    gc.ProgInfo{gc.SizeD | gc.LeftRead | RightRdwr, 0, 0, 0},
+	x86.AMULSS:    gc.ProgInfo{gc.SizeF | gc.LeftRead | RightRdwr, 0, 0, 0},
+	x86.ANEGB:     gc.ProgInfo{gc.SizeB | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.ANEGL:     gc.ProgInfo{gc.SizeL | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.ANEGW:     gc.ProgInfo{gc.SizeW | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.ANOTB:     gc.ProgInfo{gc.SizeB | RightRdwr, 0, 0, 0},
+	x86.ANOTL:     gc.ProgInfo{gc.SizeL | RightRdwr, 0, 0, 0},
+	x86.ANOTW:     gc.ProgInfo{gc.SizeW | RightRdwr, 0, 0, 0},
+	x86.AORB:      gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.AORL:      gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.AORW:      gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.APOPL:     gc.ProgInfo{gc.SizeL | gc.RightWrite, 0, 0, 0},
+	x86.APUSHL:    gc.ProgInfo{gc.SizeL | gc.LeftRead, 0, 0, 0},
+	x86.ARCLB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry | gc.UseCarry, 0, 0, 0},
+	x86.ARCLL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry | gc.UseCarry, 0, 0, 0},
+	x86.ARCLW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry | gc.UseCarry, 0, 0, 0},
+	x86.ARCRB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry | gc.UseCarry, 0, 0, 0},
+	x86.ARCRL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry | gc.UseCarry, 0, 0, 0},
+	x86.ARCRW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry | gc.UseCarry, 0, 0, 0},
+	x86.AREP:      gc.ProgInfo{gc.OK, CX, CX, 0},
+	x86.AREPN:     gc.ProgInfo{gc.OK, CX, CX, 0},
 	obj.ARET:      gc.ProgInfo{gc.Break | gc.KillCarry, 0, 0, 0},
-	i386.AROLB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.AROLL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.AROLW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ARORB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ARORL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ARORW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ASAHF:    gc.ProgInfo{gc.OK, AX, AX, 0},
-	i386.ASALB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ASALL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ASALW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ASARB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ASARL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ASARW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ASBBB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.SetCarry | gc.UseCarry, 0, 0, 0},
-	i386.ASBBL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry | gc.UseCarry, 0, 0, 0},
-	i386.ASBBW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry | gc.UseCarry, 0, 0, 0},
-	i386.ASETCC:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETCS:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETEQ:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETGE:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETGT:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETHI:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETLE:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETLS:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETLT:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETMI:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETNE:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETOC:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETOS:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETPC:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETPL:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASETPS:   gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
-	i386.ASHLB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ASHLL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ASHLW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ASHRB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ASHRL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ASHRW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
-	i386.ASTOSB:   gc.ProgInfo{gc.OK, AX | DI, DI, 0},
-	i386.ASTOSL:   gc.ProgInfo{gc.OK, AX | DI, DI, 0},
-	i386.ASTOSW:   gc.ProgInfo{gc.OK, AX | DI, DI, 0},
+	x86.AROLB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.AROLL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.AROLW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ARORB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ARORL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ARORW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ASAHF:     gc.ProgInfo{gc.OK, AX, AX, 0},
+	x86.ASALB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ASALL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ASALW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ASARB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ASARL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ASARW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ASBBB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.SetCarry | gc.UseCarry, 0, 0, 0},
+	x86.ASBBL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry | gc.UseCarry, 0, 0, 0},
+	x86.ASBBW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry | gc.UseCarry, 0, 0, 0},
+	x86.ASETCC:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETCS:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETEQ:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETGE:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETGT:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETHI:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETLE:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETLS:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETLT:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETMI:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETNE:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETOC:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETOS:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETPC:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETPL:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASETPS:    gc.ProgInfo{gc.SizeB | RightRdwr | gc.UseCarry, 0, 0, 0},
+	x86.ASHLB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ASHLL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ASHLW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ASHRB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ASHRL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ASHRW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.ShiftCX | gc.SetCarry, 0, 0, 0},
+	x86.ASTOSB:    gc.ProgInfo{gc.OK, AX | DI, DI, 0},
+	x86.ASTOSL:    gc.ProgInfo{gc.OK, AX | DI, DI, 0},
+	x86.ASTOSW:    gc.ProgInfo{gc.OK, AX | DI, DI, 0},
 	obj.ADUFFZERO: gc.ProgInfo{gc.OK, AX | DI, DI, 0},
-	i386.ASUBB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.ASUBL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.ASUBW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.ASUBSD:   gc.ProgInfo{gc.SizeD | gc.LeftRead | RightRdwr, 0, 0, 0},
-	i386.ASUBSS:   gc.ProgInfo{gc.SizeF | gc.LeftRead | RightRdwr, 0, 0, 0},
-	i386.ATESTB:   gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
-	i386.ATESTL:   gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
-	i386.ATESTW:   gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
-	i386.AUCOMISD: gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightRead, 0, 0, 0},
-	i386.AUCOMISS: gc.ProgInfo{gc.SizeF | gc.LeftRead | gc.RightRead, 0, 0, 0},
-	i386.AXCHGB:   gc.ProgInfo{gc.SizeB | LeftRdwr | RightRdwr, 0, 0, 0},
-	i386.AXCHGL:   gc.ProgInfo{gc.SizeL | LeftRdwr | RightRdwr, 0, 0, 0},
-	i386.AXCHGW:   gc.ProgInfo{gc.SizeW | LeftRdwr | RightRdwr, 0, 0, 0},
-	i386.AXORB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.AXORL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
-	i386.AXORW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.ASUBB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.ASUBL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.ASUBW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.ASUBSD:    gc.ProgInfo{gc.SizeD | gc.LeftRead | RightRdwr, 0, 0, 0},
+	x86.ASUBSS:    gc.ProgInfo{gc.SizeF | gc.LeftRead | RightRdwr, 0, 0, 0},
+	x86.ATESTB:    gc.ProgInfo{gc.SizeB | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
+	x86.ATESTL:    gc.ProgInfo{gc.SizeL | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
+	x86.ATESTW:    gc.ProgInfo{gc.SizeW | gc.LeftRead | gc.RightRead | gc.SetCarry, 0, 0, 0},
+	x86.AUCOMISD:  gc.ProgInfo{gc.SizeD | gc.LeftRead | gc.RightRead, 0, 0, 0},
+	x86.AUCOMISS:  gc.ProgInfo{gc.SizeF | gc.LeftRead | gc.RightRead, 0, 0, 0},
+	x86.AXCHGB:    gc.ProgInfo{gc.SizeB | LeftRdwr | RightRdwr, 0, 0, 0},
+	x86.AXCHGL:    gc.ProgInfo{gc.SizeL | LeftRdwr | RightRdwr, 0, 0, 0},
+	x86.AXCHGW:    gc.ProgInfo{gc.SizeW | LeftRdwr | RightRdwr, 0, 0, 0},
+	x86.AXORB:     gc.ProgInfo{gc.SizeB | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.AXORL:     gc.ProgInfo{gc.SizeL | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
+	x86.AXORW:     gc.ProgInfo{gc.SizeW | gc.LeftRead | RightRdwr | gc.SetCarry, 0, 0, 0},
 }
 
 func proginfo(p *obj.Prog) (info gc.ProgInfo) {
@@ -279,13 +279,13 @@
 	if p.From.Type == obj.TYPE_MEM && p.From.Name == obj.NAME_NONE {
 		info.Regindex |= RtoB(int(p.From.Reg))
 	}
-	if p.From.Index != i386.REG_NONE {
+	if p.From.Index != x86.REG_NONE {
 		info.Regindex |= RtoB(int(p.From.Index))
 	}
 	if p.To.Type == obj.TYPE_MEM && p.To.Name == obj.NAME_NONE {
 		info.Regindex |= RtoB(int(p.To.Reg))
 	}
-	if p.To.Index != i386.REG_NONE {
+	if p.To.Index != x86.REG_NONE {
 		info.Regindex |= RtoB(int(p.To.Index))
 	}
 
diff --git a/src/cmd/8g/reg.go b/src/cmd/8g/reg.go
index 4595ad37..4749855 100644
--- a/src/cmd/8g/reg.go
+++ b/src/cmd/8g/reg.go
@@ -30,7 +30,7 @@
 
 package main
 
-import i386 "cmd/internal/obj/x86"
+import "cmd/internal/obj/x86"
 import "cmd/internal/gc"
 
 const (
@@ -62,28 +62,28 @@
 }
 
 func excludedregs() uint64 {
-	return RtoB(i386.REG_SP)
+	return RtoB(x86.REG_SP)
 }
 
 func doregbits(r int) uint64 {
 	b := uint64(0)
-	if r >= i386.REG_AX && r <= i386.REG_DI {
+	if r >= x86.REG_AX && r <= x86.REG_DI {
 		b |= RtoB(r)
-	} else if r >= i386.REG_AL && r <= i386.REG_BL {
-		b |= RtoB(r - i386.REG_AL + i386.REG_AX)
-	} else if r >= i386.REG_AH && r <= i386.REG_BH {
-		b |= RtoB(r - i386.REG_AH + i386.REG_AX)
-	} else if r >= i386.REG_X0 && r <= i386.REG_X0+7 {
+	} else if r >= x86.REG_AL && r <= x86.REG_BL {
+		b |= RtoB(r - x86.REG_AL + x86.REG_AX)
+	} else if r >= x86.REG_AH && r <= x86.REG_BH {
+		b |= RtoB(r - x86.REG_AH + x86.REG_AX)
+	} else if r >= x86.REG_X0 && r <= x86.REG_X0+7 {
 		b |= FtoB(r)
 	}
 	return b
 }
 
 func RtoB(r int) uint64 {
-	if r < i386.REG_AX || r > i386.REG_DI {
+	if r < x86.REG_AX || r > x86.REG_DI {
 		return 0
 	}
-	return 1 << uint(r-i386.REG_AX)
+	return 1 << uint(r-x86.REG_AX)
 }
 
 func BtoR(b uint64) int {
@@ -91,14 +91,14 @@
 	if b == 0 {
 		return 0
 	}
-	return gc.Bitno(b) + i386.REG_AX
+	return gc.Bitno(b) + x86.REG_AX
 }
 
 func FtoB(f int) uint64 {
-	if f < i386.REG_X0 || f > i386.REG_X7 {
+	if f < x86.REG_X0 || f > x86.REG_X7 {
 		return 0
 	}
-	return 1 << uint(f-i386.REG_X0+8)
+	return 1 << uint(f-x86.REG_X0+8)
 }
 
 func BtoF(b uint64) int {
@@ -106,5 +106,5 @@
 	if b == 0 {
 		return 0
 	}
-	return gc.Bitno(b) - 8 + i386.REG_X0
+	return gc.Bitno(b) - 8 + x86.REG_X0
 }
diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go
index 5ed4461..059391b 100644
--- a/src/cmd/dist/buildtool.go
+++ b/src/cmd/dist/buildtool.go
@@ -131,8 +131,7 @@
 			continue
 		}
 		if strings.HasPrefix(line, `import "`) || strings.HasPrefix(line, `import . "`) ||
-			inBlock && (strings.HasPrefix(line, "\t\"") || strings.HasPrefix(line, "\t. \"")) ||
-			strings.Contains(line, `i386 "cmd/internal/obj/x86"`) {
+			inBlock && (strings.HasPrefix(line, "\t\"") || strings.HasPrefix(line, "\t. \"")) {
 			lines[i] = strings.Replace(line, `"cmd/`, `"bootstrap/`, -1)
 		}
 	}
diff --git a/src/cmd/old8a/lex.go b/src/cmd/old8a/lex.go
index 43db25b..73b633b 100644
--- a/src/cmd/old8a/lex.go
+++ b/src/cmd/old8a/lex.go
@@ -35,7 +35,7 @@
 import (
 	"cmd/internal/asm"
 	"cmd/internal/obj"
-	i386 "cmd/internal/obj/x86"
+	"cmd/internal/obj/x86"
 )
 
 var (
@@ -60,7 +60,7 @@
 
 	asm.Thechar = '8'
 	asm.Thestring = "386"
-	asm.Thelinkarch = &i386.Link386
+	asm.Thelinkarch = &x86.Link386
 
 	asm.Main()
 }
@@ -90,620 +90,620 @@
 	{"SB", LSB, obj.NAME_EXTERN},
 	{"FP", LFP, obj.NAME_PARAM},
 	{"PC", LPC, obj.TYPE_BRANCH},
-	{"AL", LBREG, i386.REG_AL},
-	{"CL", LBREG, i386.REG_CL},
-	{"DL", LBREG, i386.REG_DL},
-	{"BL", LBREG, i386.REG_BL},
-	{"AH", LBREG, i386.REG_AH},
-	{"CH", LBREG, i386.REG_CH},
-	{"DH", LBREG, i386.REG_DH},
-	{"BH", LBREG, i386.REG_BH},
-	{"AX", LLREG, i386.REG_AX},
-	{"CX", LLREG, i386.REG_CX},
-	{"DX", LLREG, i386.REG_DX},
-	{"BX", LLREG, i386.REG_BX},
+	{"AL", LBREG, x86.REG_AL},
+	{"CL", LBREG, x86.REG_CL},
+	{"DL", LBREG, x86.REG_DL},
+	{"BL", LBREG, x86.REG_BL},
+	{"AH", LBREG, x86.REG_AH},
+	{"CH", LBREG, x86.REG_CH},
+	{"DH", LBREG, x86.REG_DH},
+	{"BH", LBREG, x86.REG_BH},
+	{"AX", LLREG, x86.REG_AX},
+	{"CX", LLREG, x86.REG_CX},
+	{"DX", LLREG, x86.REG_DX},
+	{"BX", LLREG, x86.REG_BX},
 	/*	"SP",		LLREG,	REG_SP,	*/
-	{"BP", LLREG, i386.REG_BP},
-	{"SI", LLREG, i386.REG_SI},
-	{"DI", LLREG, i386.REG_DI},
-	{"F0", LFREG, i386.REG_F0 + 0},
-	{"F1", LFREG, i386.REG_F0 + 1},
-	{"F2", LFREG, i386.REG_F0 + 2},
-	{"F3", LFREG, i386.REG_F0 + 3},
-	{"F4", LFREG, i386.REG_F0 + 4},
-	{"F5", LFREG, i386.REG_F0 + 5},
-	{"F6", LFREG, i386.REG_F0 + 6},
-	{"F7", LFREG, i386.REG_F0 + 7},
-	{"X0", LXREG, i386.REG_X0 + 0},
-	{"X1", LXREG, i386.REG_X0 + 1},
-	{"X2", LXREG, i386.REG_X0 + 2},
-	{"X3", LXREG, i386.REG_X0 + 3},
-	{"X4", LXREG, i386.REG_X0 + 4},
-	{"X5", LXREG, i386.REG_X0 + 5},
-	{"X6", LXREG, i386.REG_X0 + 6},
-	{"X7", LXREG, i386.REG_X0 + 7},
-	{"CS", LSREG, i386.REG_CS},
-	{"SS", LSREG, i386.REG_SS},
-	{"DS", LSREG, i386.REG_DS},
-	{"ES", LSREG, i386.REG_ES},
-	{"FS", LSREG, i386.REG_FS},
-	{"GS", LSREG, i386.REG_GS},
-	{"TLS", LSREG, i386.REG_TLS},
-	{"GDTR", LBREG, i386.REG_GDTR},
-	{"IDTR", LBREG, i386.REG_IDTR},
-	{"LDTR", LBREG, i386.REG_LDTR},
-	{"MSW", LBREG, i386.REG_MSW},
-	{"TASK", LBREG, i386.REG_TASK},
-	{"CR0", LBREG, i386.REG_CR + 0},
-	{"CR1", LBREG, i386.REG_CR + 1},
-	{"CR2", LBREG, i386.REG_CR + 2},
-	{"CR3", LBREG, i386.REG_CR + 3},
-	{"CR4", LBREG, i386.REG_CR + 4},
-	{"CR5", LBREG, i386.REG_CR + 5},
-	{"CR6", LBREG, i386.REG_CR + 6},
-	{"CR7", LBREG, i386.REG_CR + 7},
-	{"DR0", LBREG, i386.REG_DR + 0},
-	{"DR1", LBREG, i386.REG_DR + 1},
-	{"DR2", LBREG, i386.REG_DR + 2},
-	{"DR3", LBREG, i386.REG_DR + 3},
-	{"DR4", LBREG, i386.REG_DR + 4},
-	{"DR5", LBREG, i386.REG_DR + 5},
-	{"DR6", LBREG, i386.REG_DR + 6},
-	{"DR7", LBREG, i386.REG_DR + 7},
-	{"TR0", LBREG, i386.REG_TR + 0},
-	{"TR1", LBREG, i386.REG_TR + 1},
-	{"TR2", LBREG, i386.REG_TR + 2},
-	{"TR3", LBREG, i386.REG_TR + 3},
-	{"TR4", LBREG, i386.REG_TR + 4},
-	{"TR5", LBREG, i386.REG_TR + 5},
-	{"TR6", LBREG, i386.REG_TR + 6},
-	{"TR7", LBREG, i386.REG_TR + 7},
-	{"AAA", LTYPE0, i386.AAAA},
-	{"AAD", LTYPE0, i386.AAAD},
-	{"AAM", LTYPE0, i386.AAAM},
-	{"AAS", LTYPE0, i386.AAAS},
-	{"ADCB", LTYPE3, i386.AADCB},
-	{"ADCL", LTYPE3, i386.AADCL},
-	{"ADCW", LTYPE3, i386.AADCW},
-	{"ADDB", LTYPE3, i386.AADDB},
-	{"ADDL", LTYPE3, i386.AADDL},
-	{"ADDW", LTYPE3, i386.AADDW},
-	{"ADJSP", LTYPE2, i386.AADJSP},
-	{"ANDB", LTYPE3, i386.AANDB},
-	{"ANDL", LTYPE3, i386.AANDL},
-	{"ANDW", LTYPE3, i386.AANDW},
-	{"ARPL", LTYPE3, i386.AARPL},
-	{"BOUNDL", LTYPE3, i386.ABOUNDL},
-	{"BOUNDW", LTYPE3, i386.ABOUNDW},
-	{"BSFL", LTYPE3, i386.ABSFL},
-	{"BSFW", LTYPE3, i386.ABSFW},
-	{"BSRL", LTYPE3, i386.ABSRL},
-	{"BSRW", LTYPE3, i386.ABSRW},
-	{"BSWAPL", LTYPE1, i386.ABSWAPL},
-	{"BTCL", LTYPE3, i386.ABTCL},
-	{"BTCW", LTYPE3, i386.ABTCW},
-	{"BTL", LTYPE3, i386.ABTL},
-	{"BTRL", LTYPE3, i386.ABTRL},
-	{"BTRW", LTYPE3, i386.ABTRW},
-	{"BTSL", LTYPE3, i386.ABTSL},
-	{"BTSW", LTYPE3, i386.ABTSW},
-	{"BTW", LTYPE3, i386.ABTW},
-	{"BYTE", LTYPE2, i386.ABYTE},
+	{"BP", LLREG, x86.REG_BP},
+	{"SI", LLREG, x86.REG_SI},
+	{"DI", LLREG, x86.REG_DI},
+	{"F0", LFREG, x86.REG_F0 + 0},
+	{"F1", LFREG, x86.REG_F0 + 1},
+	{"F2", LFREG, x86.REG_F0 + 2},
+	{"F3", LFREG, x86.REG_F0 + 3},
+	{"F4", LFREG, x86.REG_F0 + 4},
+	{"F5", LFREG, x86.REG_F0 + 5},
+	{"F6", LFREG, x86.REG_F0 + 6},
+	{"F7", LFREG, x86.REG_F0 + 7},
+	{"X0", LXREG, x86.REG_X0 + 0},
+	{"X1", LXREG, x86.REG_X0 + 1},
+	{"X2", LXREG, x86.REG_X0 + 2},
+	{"X3", LXREG, x86.REG_X0 + 3},
+	{"X4", LXREG, x86.REG_X0 + 4},
+	{"X5", LXREG, x86.REG_X0 + 5},
+	{"X6", LXREG, x86.REG_X0 + 6},
+	{"X7", LXREG, x86.REG_X0 + 7},
+	{"CS", LSREG, x86.REG_CS},
+	{"SS", LSREG, x86.REG_SS},
+	{"DS", LSREG, x86.REG_DS},
+	{"ES", LSREG, x86.REG_ES},
+	{"FS", LSREG, x86.REG_FS},
+	{"GS", LSREG, x86.REG_GS},
+	{"TLS", LSREG, x86.REG_TLS},
+	{"GDTR", LBREG, x86.REG_GDTR},
+	{"IDTR", LBREG, x86.REG_IDTR},
+	{"LDTR", LBREG, x86.REG_LDTR},
+	{"MSW", LBREG, x86.REG_MSW},
+	{"TASK", LBREG, x86.REG_TASK},
+	{"CR0", LBREG, x86.REG_CR + 0},
+	{"CR1", LBREG, x86.REG_CR + 1},
+	{"CR2", LBREG, x86.REG_CR + 2},
+	{"CR3", LBREG, x86.REG_CR + 3},
+	{"CR4", LBREG, x86.REG_CR + 4},
+	{"CR5", LBREG, x86.REG_CR + 5},
+	{"CR6", LBREG, x86.REG_CR + 6},
+	{"CR7", LBREG, x86.REG_CR + 7},
+	{"DR0", LBREG, x86.REG_DR + 0},
+	{"DR1", LBREG, x86.REG_DR + 1},
+	{"DR2", LBREG, x86.REG_DR + 2},
+	{"DR3", LBREG, x86.REG_DR + 3},
+	{"DR4", LBREG, x86.REG_DR + 4},
+	{"DR5", LBREG, x86.REG_DR + 5},
+	{"DR6", LBREG, x86.REG_DR + 6},
+	{"DR7", LBREG, x86.REG_DR + 7},
+	{"TR0", LBREG, x86.REG_TR + 0},
+	{"TR1", LBREG, x86.REG_TR + 1},
+	{"TR2", LBREG, x86.REG_TR + 2},
+	{"TR3", LBREG, x86.REG_TR + 3},
+	{"TR4", LBREG, x86.REG_TR + 4},
+	{"TR5", LBREG, x86.REG_TR + 5},
+	{"TR6", LBREG, x86.REG_TR + 6},
+	{"TR7", LBREG, x86.REG_TR + 7},
+	{"AAA", LTYPE0, x86.AAAA},
+	{"AAD", LTYPE0, x86.AAAD},
+	{"AAM", LTYPE0, x86.AAAM},
+	{"AAS", LTYPE0, x86.AAAS},
+	{"ADCB", LTYPE3, x86.AADCB},
+	{"ADCL", LTYPE3, x86.AADCL},
+	{"ADCW", LTYPE3, x86.AADCW},
+	{"ADDB", LTYPE3, x86.AADDB},
+	{"ADDL", LTYPE3, x86.AADDL},
+	{"ADDW", LTYPE3, x86.AADDW},
+	{"ADJSP", LTYPE2, x86.AADJSP},
+	{"ANDB", LTYPE3, x86.AANDB},
+	{"ANDL", LTYPE3, x86.AANDL},
+	{"ANDW", LTYPE3, x86.AANDW},
+	{"ARPL", LTYPE3, x86.AARPL},
+	{"BOUNDL", LTYPE3, x86.ABOUNDL},
+	{"BOUNDW", LTYPE3, x86.ABOUNDW},
+	{"BSFL", LTYPE3, x86.ABSFL},
+	{"BSFW", LTYPE3, x86.ABSFW},
+	{"BSRL", LTYPE3, x86.ABSRL},
+	{"BSRW", LTYPE3, x86.ABSRW},
+	{"BSWAPL", LTYPE1, x86.ABSWAPL},
+	{"BTCL", LTYPE3, x86.ABTCL},
+	{"BTCW", LTYPE3, x86.ABTCW},
+	{"BTL", LTYPE3, x86.ABTL},
+	{"BTRL", LTYPE3, x86.ABTRL},
+	{"BTRW", LTYPE3, x86.ABTRW},
+	{"BTSL", LTYPE3, x86.ABTSL},
+	{"BTSW", LTYPE3, x86.ABTSW},
+	{"BTW", LTYPE3, x86.ABTW},
+	{"BYTE", LTYPE2, x86.ABYTE},
 	{"CALL", LTYPEC, obj.ACALL},
-	{"CLC", LTYPE0, i386.ACLC},
-	{"CLD", LTYPE0, i386.ACLD},
-	{"CLI", LTYPE0, i386.ACLI},
-	{"CLTS", LTYPE0, i386.ACLTS},
-	{"CMC", LTYPE0, i386.ACMC},
-	{"CMPB", LTYPE4, i386.ACMPB},
-	{"CMPL", LTYPE4, i386.ACMPL},
-	{"CMPW", LTYPE4, i386.ACMPW},
-	{"CMPSB", LTYPE0, i386.ACMPSB},
-	{"CMPSL", LTYPE0, i386.ACMPSL},
-	{"CMPSW", LTYPE0, i386.ACMPSW},
-	{"CMPXCHG8B", LTYPE1, i386.ACMPXCHG8B},
-	{"CMPXCHGB", LTYPE3, i386.ACMPXCHGB},
-	{"CMPXCHGL", LTYPE3, i386.ACMPXCHGL},
-	{"CMPXCHGW", LTYPE3, i386.ACMPXCHGW},
-	{"CPUID", LTYPE0, i386.ACPUID},
-	{"DAA", LTYPE0, i386.ADAA},
-	{"DAS", LTYPE0, i386.ADAS},
+	{"CLC", LTYPE0, x86.ACLC},
+	{"CLD", LTYPE0, x86.ACLD},
+	{"CLI", LTYPE0, x86.ACLI},
+	{"CLTS", LTYPE0, x86.ACLTS},
+	{"CMC", LTYPE0, x86.ACMC},
+	{"CMPB", LTYPE4, x86.ACMPB},
+	{"CMPL", LTYPE4, x86.ACMPL},
+	{"CMPW", LTYPE4, x86.ACMPW},
+	{"CMPSB", LTYPE0, x86.ACMPSB},
+	{"CMPSL", LTYPE0, x86.ACMPSL},
+	{"CMPSW", LTYPE0, x86.ACMPSW},
+	{"CMPXCHG8B", LTYPE1, x86.ACMPXCHG8B},
+	{"CMPXCHGB", LTYPE3, x86.ACMPXCHGB},
+	{"CMPXCHGL", LTYPE3, x86.ACMPXCHGL},
+	{"CMPXCHGW", LTYPE3, x86.ACMPXCHGW},
+	{"CPUID", LTYPE0, x86.ACPUID},
+	{"DAA", LTYPE0, x86.ADAA},
+	{"DAS", LTYPE0, x86.ADAS},
 	{"DATA", LTYPED, obj.ADATA},
-	{"DECB", LTYPE1, i386.ADECB},
-	{"DECL", LTYPE1, i386.ADECL},
-	{"DECW", LTYPE1, i386.ADECW},
-	{"DIVB", LTYPE2, i386.ADIVB},
-	{"DIVL", LTYPE2, i386.ADIVL},
-	{"DIVW", LTYPE2, i386.ADIVW},
+	{"DECB", LTYPE1, x86.ADECB},
+	{"DECL", LTYPE1, x86.ADECL},
+	{"DECW", LTYPE1, x86.ADECW},
+	{"DIVB", LTYPE2, x86.ADIVB},
+	{"DIVL", LTYPE2, x86.ADIVL},
+	{"DIVW", LTYPE2, x86.ADIVW},
 	{"END", LTYPE0, obj.AEND},
-	{"ENTER", LTYPE2, i386.AENTER},
+	{"ENTER", LTYPE2, x86.AENTER},
 	{"GLOBL", LTYPEG, obj.AGLOBL},
-	{"HLT", LTYPE0, i386.AHLT},
-	{"IDIVB", LTYPE2, i386.AIDIVB},
-	{"IDIVL", LTYPE2, i386.AIDIVL},
-	{"IDIVW", LTYPE2, i386.AIDIVW},
-	{"IMULB", LTYPE2, i386.AIMULB},
-	{"IMULL", LTYPEI, i386.AIMULL},
-	{"IMULW", LTYPEI, i386.AIMULW},
-	{"INB", LTYPE0, i386.AINB},
-	{"INL", LTYPE0, i386.AINL},
-	{"INW", LTYPE0, i386.AINW},
-	{"INCB", LTYPE1, i386.AINCB},
-	{"INCL", LTYPE1, i386.AINCL},
-	{"INCW", LTYPE1, i386.AINCW},
-	{"INSB", LTYPE0, i386.AINSB},
-	{"INSL", LTYPE0, i386.AINSL},
-	{"INSW", LTYPE0, i386.AINSW},
-	{"INT", LTYPE2, i386.AINT},
-	{"INTO", LTYPE0, i386.AINTO},
-	{"IRETL", LTYPE0, i386.AIRETL},
-	{"IRETW", LTYPE0, i386.AIRETW},
-	{"JOS", LTYPER, i386.AJOS},  /* overflow set (OF = 1) */
-	{"JO", LTYPER, i386.AJOS},   /* alternate */
-	{"JOC", LTYPER, i386.AJOC},  /* overflow clear (OF = 0) */
-	{"JNO", LTYPER, i386.AJOC},  /* alternate */
-	{"JCS", LTYPER, i386.AJCS},  /* carry set (CF = 1) */
-	{"JB", LTYPER, i386.AJCS},   /* alternate */
-	{"JC", LTYPER, i386.AJCS},   /* alternate */
-	{"JNAE", LTYPER, i386.AJCS}, /* alternate */
-	{"JLO", LTYPER, i386.AJCS},  /* alternate */
-	{"JCC", LTYPER, i386.AJCC},  /* carry clear (CF = 0) */
-	{"JAE", LTYPER, i386.AJCC},  /* alternate */
-	{"JNB", LTYPER, i386.AJCC},  /* alternate */
-	{"JNC", LTYPER, i386.AJCC},  /* alternate */
-	{"JHS", LTYPER, i386.AJCC},  /* alternate */
-	{"JEQ", LTYPER, i386.AJEQ},  /* equal (ZF = 1) */
-	{"JE", LTYPER, i386.AJEQ},   /* alternate */
-	{"JZ", LTYPER, i386.AJEQ},   /* alternate */
-	{"JNE", LTYPER, i386.AJNE},  /* not equal (ZF = 0) */
-	{"JNZ", LTYPER, i386.AJNE},  /* alternate */
-	{"JLS", LTYPER, i386.AJLS},  /* lower or same (unsigned) (CF = 1 || ZF = 1) */
-	{"JBE", LTYPER, i386.AJLS},  /* alternate */
-	{"JNA", LTYPER, i386.AJLS},  /* alternate */
-	{"JHI", LTYPER, i386.AJHI},  /* higher (unsigned) (CF = 0 && ZF = 0) */
-	{"JA", LTYPER, i386.AJHI},   /* alternate */
-	{"JNBE", LTYPER, i386.AJHI}, /* alternate */
-	{"JMI", LTYPER, i386.AJMI},  /* negative (minus) (SF = 1) */
-	{"JS", LTYPER, i386.AJMI},   /* alternate */
-	{"JPL", LTYPER, i386.AJPL},  /* non-negative (plus) (SF = 0) */
-	{"JNS", LTYPER, i386.AJPL},  /* alternate */
-	{"JPS", LTYPER, i386.AJPS},  /* parity set (PF = 1) */
-	{"JP", LTYPER, i386.AJPS},   /* alternate */
-	{"JPE", LTYPER, i386.AJPS},  /* alternate */
-	{"JPC", LTYPER, i386.AJPC},  /* parity clear (PF = 0) */
-	{"JNP", LTYPER, i386.AJPC},  /* alternate */
-	{"JPO", LTYPER, i386.AJPC},  /* alternate */
-	{"JLT", LTYPER, i386.AJLT},  /* less than (signed) (SF != OF) */
-	{"JL", LTYPER, i386.AJLT},   /* alternate */
-	{"JNGE", LTYPER, i386.AJLT}, /* alternate */
-	{"JGE", LTYPER, i386.AJGE},  /* greater than or equal (signed) (SF = OF) */
-	{"JNL", LTYPER, i386.AJGE},  /* alternate */
-	{"JLE", LTYPER, i386.AJLE},  /* less than or equal (signed) (ZF = 1 || SF != OF) */
-	{"JNG", LTYPER, i386.AJLE},  /* alternate */
-	{"JGT", LTYPER, i386.AJGT},  /* greater than (signed) (ZF = 0 && SF = OF) */
-	{"JG", LTYPER, i386.AJGT},   /* alternate */
-	{"JNLE", LTYPER, i386.AJGT}, /* alternate */
-	{"JCXZL", LTYPER, i386.AJCXZL},
-	{"JCXZW", LTYPER, i386.AJCXZW},
+	{"HLT", LTYPE0, x86.AHLT},
+	{"IDIVB", LTYPE2, x86.AIDIVB},
+	{"IDIVL", LTYPE2, x86.AIDIVL},
+	{"IDIVW", LTYPE2, x86.AIDIVW},
+	{"IMULB", LTYPE2, x86.AIMULB},
+	{"IMULL", LTYPEI, x86.AIMULL},
+	{"IMULW", LTYPEI, x86.AIMULW},
+	{"INB", LTYPE0, x86.AINB},
+	{"INL", LTYPE0, x86.AINL},
+	{"INW", LTYPE0, x86.AINW},
+	{"INCB", LTYPE1, x86.AINCB},
+	{"INCL", LTYPE1, x86.AINCL},
+	{"INCW", LTYPE1, x86.AINCW},
+	{"INSB", LTYPE0, x86.AINSB},
+	{"INSL", LTYPE0, x86.AINSL},
+	{"INSW", LTYPE0, x86.AINSW},
+	{"INT", LTYPE2, x86.AINT},
+	{"INTO", LTYPE0, x86.AINTO},
+	{"IRETL", LTYPE0, x86.AIRETL},
+	{"IRETW", LTYPE0, x86.AIRETW},
+	{"JOS", LTYPER, x86.AJOS},  /* overflow set (OF = 1) */
+	{"JO", LTYPER, x86.AJOS},   /* alternate */
+	{"JOC", LTYPER, x86.AJOC},  /* overflow clear (OF = 0) */
+	{"JNO", LTYPER, x86.AJOC},  /* alternate */
+	{"JCS", LTYPER, x86.AJCS},  /* carry set (CF = 1) */
+	{"JB", LTYPER, x86.AJCS},   /* alternate */
+	{"JC", LTYPER, x86.AJCS},   /* alternate */
+	{"JNAE", LTYPER, x86.AJCS}, /* alternate */
+	{"JLO", LTYPER, x86.AJCS},  /* alternate */
+	{"JCC", LTYPER, x86.AJCC},  /* carry clear (CF = 0) */
+	{"JAE", LTYPER, x86.AJCC},  /* alternate */
+	{"JNB", LTYPER, x86.AJCC},  /* alternate */
+	{"JNC", LTYPER, x86.AJCC},  /* alternate */
+	{"JHS", LTYPER, x86.AJCC},  /* alternate */
+	{"JEQ", LTYPER, x86.AJEQ},  /* equal (ZF = 1) */
+	{"JE", LTYPER, x86.AJEQ},   /* alternate */
+	{"JZ", LTYPER, x86.AJEQ},   /* alternate */
+	{"JNE", LTYPER, x86.AJNE},  /* not equal (ZF = 0) */
+	{"JNZ", LTYPER, x86.AJNE},  /* alternate */
+	{"JLS", LTYPER, x86.AJLS},  /* lower or same (unsigned) (CF = 1 || ZF = 1) */
+	{"JBE", LTYPER, x86.AJLS},  /* alternate */
+	{"JNA", LTYPER, x86.AJLS},  /* alternate */
+	{"JHI", LTYPER, x86.AJHI},  /* higher (unsigned) (CF = 0 && ZF = 0) */
+	{"JA", LTYPER, x86.AJHI},   /* alternate */
+	{"JNBE", LTYPER, x86.AJHI}, /* alternate */
+	{"JMI", LTYPER, x86.AJMI},  /* negative (minus) (SF = 1) */
+	{"JS", LTYPER, x86.AJMI},   /* alternate */
+	{"JPL", LTYPER, x86.AJPL},  /* non-negative (plus) (SF = 0) */
+	{"JNS", LTYPER, x86.AJPL},  /* alternate */
+	{"JPS", LTYPER, x86.AJPS},  /* parity set (PF = 1) */
+	{"JP", LTYPER, x86.AJPS},   /* alternate */
+	{"JPE", LTYPER, x86.AJPS},  /* alternate */
+	{"JPC", LTYPER, x86.AJPC},  /* parity clear (PF = 0) */
+	{"JNP", LTYPER, x86.AJPC},  /* alternate */
+	{"JPO", LTYPER, x86.AJPC},  /* alternate */
+	{"JLT", LTYPER, x86.AJLT},  /* less than (signed) (SF != OF) */
+	{"JL", LTYPER, x86.AJLT},   /* alternate */
+	{"JNGE", LTYPER, x86.AJLT}, /* alternate */
+	{"JGE", LTYPER, x86.AJGE},  /* greater than or equal (signed) (SF = OF) */
+	{"JNL", LTYPER, x86.AJGE},  /* alternate */
+	{"JLE", LTYPER, x86.AJLE},  /* less than or equal (signed) (ZF = 1 || SF != OF) */
+	{"JNG", LTYPER, x86.AJLE},  /* alternate */
+	{"JGT", LTYPER, x86.AJGT},  /* greater than (signed) (ZF = 0 && SF = OF) */
+	{"JG", LTYPER, x86.AJGT},   /* alternate */
+	{"JNLE", LTYPER, x86.AJGT}, /* alternate */
+	{"JCXZL", LTYPER, x86.AJCXZL},
+	{"JCXZW", LTYPER, x86.AJCXZW},
 	{"JMP", LTYPEC, obj.AJMP},
-	{"LAHF", LTYPE0, i386.ALAHF},
-	{"LARL", LTYPE3, i386.ALARL},
-	{"LARW", LTYPE3, i386.ALARW},
-	{"LEAL", LTYPE3, i386.ALEAL},
-	{"LEAW", LTYPE3, i386.ALEAW},
-	{"LEAVEL", LTYPE0, i386.ALEAVEL},
-	{"LEAVEW", LTYPE0, i386.ALEAVEW},
-	{"LOCK", LTYPE0, i386.ALOCK},
-	{"LODSB", LTYPE0, i386.ALODSB},
-	{"LODSL", LTYPE0, i386.ALODSL},
-	{"LODSW", LTYPE0, i386.ALODSW},
-	{"LONG", LTYPE2, i386.ALONG},
-	{"LOOP", LTYPER, i386.ALOOP},
-	{"LOOPEQ", LTYPER, i386.ALOOPEQ},
-	{"LOOPNE", LTYPER, i386.ALOOPNE},
-	{"LSLL", LTYPE3, i386.ALSLL},
-	{"LSLW", LTYPE3, i386.ALSLW},
-	{"MOVB", LTYPE3, i386.AMOVB},
-	{"MOVL", LTYPEM, i386.AMOVL},
-	{"MOVW", LTYPEM, i386.AMOVW},
-	{"MOVQ", LTYPEM, i386.AMOVQ},
-	{"MOVBLSX", LTYPE3, i386.AMOVBLSX},
-	{"MOVBLZX", LTYPE3, i386.AMOVBLZX},
-	{"MOVBWSX", LTYPE3, i386.AMOVBWSX},
-	{"MOVBWZX", LTYPE3, i386.AMOVBWZX},
-	{"MOVWLSX", LTYPE3, i386.AMOVWLSX},
-	{"MOVWLZX", LTYPE3, i386.AMOVWLZX},
-	{"MOVSB", LTYPE0, i386.AMOVSB},
-	{"MOVSL", LTYPE0, i386.AMOVSL},
-	{"MOVSW", LTYPE0, i386.AMOVSW},
-	{"MULB", LTYPE2, i386.AMULB},
-	{"MULL", LTYPE2, i386.AMULL},
-	{"MULW", LTYPE2, i386.AMULW},
-	{"NEGB", LTYPE1, i386.ANEGB},
-	{"NEGL", LTYPE1, i386.ANEGL},
-	{"NEGW", LTYPE1, i386.ANEGW},
+	{"LAHF", LTYPE0, x86.ALAHF},
+	{"LARL", LTYPE3, x86.ALARL},
+	{"LARW", LTYPE3, x86.ALARW},
+	{"LEAL", LTYPE3, x86.ALEAL},
+	{"LEAW", LTYPE3, x86.ALEAW},
+	{"LEAVEL", LTYPE0, x86.ALEAVEL},
+	{"LEAVEW", LTYPE0, x86.ALEAVEW},
+	{"LOCK", LTYPE0, x86.ALOCK},
+	{"LODSB", LTYPE0, x86.ALODSB},
+	{"LODSL", LTYPE0, x86.ALODSL},
+	{"LODSW", LTYPE0, x86.ALODSW},
+	{"LONG", LTYPE2, x86.ALONG},
+	{"LOOP", LTYPER, x86.ALOOP},
+	{"LOOPEQ", LTYPER, x86.ALOOPEQ},
+	{"LOOPNE", LTYPER, x86.ALOOPNE},
+	{"LSLL", LTYPE3, x86.ALSLL},
+	{"LSLW", LTYPE3, x86.ALSLW},
+	{"MOVB", LTYPE3, x86.AMOVB},
+	{"MOVL", LTYPEM, x86.AMOVL},
+	{"MOVW", LTYPEM, x86.AMOVW},
+	{"MOVQ", LTYPEM, x86.AMOVQ},
+	{"MOVBLSX", LTYPE3, x86.AMOVBLSX},
+	{"MOVBLZX", LTYPE3, x86.AMOVBLZX},
+	{"MOVBWSX", LTYPE3, x86.AMOVBWSX},
+	{"MOVBWZX", LTYPE3, x86.AMOVBWZX},
+	{"MOVWLSX", LTYPE3, x86.AMOVWLSX},
+	{"MOVWLZX", LTYPE3, x86.AMOVWLZX},
+	{"MOVSB", LTYPE0, x86.AMOVSB},
+	{"MOVSL", LTYPE0, x86.AMOVSL},
+	{"MOVSW", LTYPE0, x86.AMOVSW},
+	{"MULB", LTYPE2, x86.AMULB},
+	{"MULL", LTYPE2, x86.AMULL},
+	{"MULW", LTYPE2, x86.AMULW},
+	{"NEGB", LTYPE1, x86.ANEGB},
+	{"NEGL", LTYPE1, x86.ANEGL},
+	{"NEGW", LTYPE1, x86.ANEGW},
 	{"NOP", LTYPEN, obj.ANOP},
-	{"NOTB", LTYPE1, i386.ANOTB},
-	{"NOTL", LTYPE1, i386.ANOTL},
-	{"NOTW", LTYPE1, i386.ANOTW},
-	{"ORB", LTYPE3, i386.AORB},
-	{"ORL", LTYPE3, i386.AORL},
-	{"ORW", LTYPE3, i386.AORW},
-	{"OUTB", LTYPE0, i386.AOUTB},
-	{"OUTL", LTYPE0, i386.AOUTL},
-	{"OUTW", LTYPE0, i386.AOUTW},
-	{"OUTSB", LTYPE0, i386.AOUTSB},
-	{"OUTSL", LTYPE0, i386.AOUTSL},
-	{"OUTSW", LTYPE0, i386.AOUTSW},
-	{"PAUSE", LTYPEN, i386.APAUSE},
-	{"PINSRD", LTYPEX, i386.APINSRD},
-	{"POPAL", LTYPE0, i386.APOPAL},
-	{"POPAW", LTYPE0, i386.APOPAW},
-	{"POPFL", LTYPE0, i386.APOPFL},
-	{"POPFW", LTYPE0, i386.APOPFW},
-	{"POPL", LTYPE1, i386.APOPL},
-	{"POPW", LTYPE1, i386.APOPW},
-	{"PUSHAL", LTYPE0, i386.APUSHAL},
-	{"PUSHAW", LTYPE0, i386.APUSHAW},
-	{"PUSHFL", LTYPE0, i386.APUSHFL},
-	{"PUSHFW", LTYPE0, i386.APUSHFW},
-	{"PUSHL", LTYPE2, i386.APUSHL},
-	{"PUSHW", LTYPE2, i386.APUSHW},
-	{"RCLB", LTYPE3, i386.ARCLB},
-	{"RCLL", LTYPE3, i386.ARCLL},
-	{"RCLW", LTYPE3, i386.ARCLW},
-	{"RCRB", LTYPE3, i386.ARCRB},
-	{"RCRL", LTYPE3, i386.ARCRL},
-	{"RCRW", LTYPE3, i386.ARCRW},
-	{"RDTSC", LTYPE0, i386.ARDTSC},
-	{"REP", LTYPE0, i386.AREP},
-	{"REPN", LTYPE0, i386.AREPN},
+	{"NOTB", LTYPE1, x86.ANOTB},
+	{"NOTL", LTYPE1, x86.ANOTL},
+	{"NOTW", LTYPE1, x86.ANOTW},
+	{"ORB", LTYPE3, x86.AORB},
+	{"ORL", LTYPE3, x86.AORL},
+	{"ORW", LTYPE3, x86.AORW},
+	{"OUTB", LTYPE0, x86.AOUTB},
+	{"OUTL", LTYPE0, x86.AOUTL},
+	{"OUTW", LTYPE0, x86.AOUTW},
+	{"OUTSB", LTYPE0, x86.AOUTSB},
+	{"OUTSL", LTYPE0, x86.AOUTSL},
+	{"OUTSW", LTYPE0, x86.AOUTSW},
+	{"PAUSE", LTYPEN, x86.APAUSE},
+	{"PINSRD", LTYPEX, x86.APINSRD},
+	{"POPAL", LTYPE0, x86.APOPAL},
+	{"POPAW", LTYPE0, x86.APOPAW},
+	{"POPFL", LTYPE0, x86.APOPFL},
+	{"POPFW", LTYPE0, x86.APOPFW},
+	{"POPL", LTYPE1, x86.APOPL},
+	{"POPW", LTYPE1, x86.APOPW},
+	{"PUSHAL", LTYPE0, x86.APUSHAL},
+	{"PUSHAW", LTYPE0, x86.APUSHAW},
+	{"PUSHFL", LTYPE0, x86.APUSHFL},
+	{"PUSHFW", LTYPE0, x86.APUSHFW},
+	{"PUSHL", LTYPE2, x86.APUSHL},
+	{"PUSHW", LTYPE2, x86.APUSHW},
+	{"RCLB", LTYPE3, x86.ARCLB},
+	{"RCLL", LTYPE3, x86.ARCLL},
+	{"RCLW", LTYPE3, x86.ARCLW},
+	{"RCRB", LTYPE3, x86.ARCRB},
+	{"RCRL", LTYPE3, x86.ARCRL},
+	{"RCRW", LTYPE3, x86.ARCRW},
+	{"RDTSC", LTYPE0, x86.ARDTSC},
+	{"REP", LTYPE0, x86.AREP},
+	{"REPN", LTYPE0, x86.AREPN},
 	{"RET", LTYPE0, obj.ARET},
-	{"ROLB", LTYPE3, i386.AROLB},
-	{"ROLL", LTYPE3, i386.AROLL},
-	{"ROLW", LTYPE3, i386.AROLW},
-	{"RORB", LTYPE3, i386.ARORB},
-	{"RORL", LTYPE3, i386.ARORL},
-	{"RORW", LTYPE3, i386.ARORW},
-	{"SAHF", LTYPE0, i386.ASAHF},
-	{"SALB", LTYPE3, i386.ASALB},
-	{"SALL", LTYPE3, i386.ASALL},
-	{"SALW", LTYPE3, i386.ASALW},
-	{"SARB", LTYPE3, i386.ASARB},
-	{"SARL", LTYPE3, i386.ASARL},
-	{"SARW", LTYPE3, i386.ASARW},
-	{"SBBB", LTYPE3, i386.ASBBB},
-	{"SBBL", LTYPE3, i386.ASBBL},
-	{"SBBW", LTYPE3, i386.ASBBW},
-	{"SCASB", LTYPE0, i386.ASCASB},
-	{"SCASL", LTYPE0, i386.ASCASL},
-	{"SCASW", LTYPE0, i386.ASCASW},
-	{"SETCC", LTYPE1, i386.ASETCC}, /* see JCC etc above for condition codes */
-	{"SETCS", LTYPE1, i386.ASETCS},
-	{"SETEQ", LTYPE1, i386.ASETEQ},
-	{"SETGE", LTYPE1, i386.ASETGE},
-	{"SETGT", LTYPE1, i386.ASETGT},
-	{"SETHI", LTYPE1, i386.ASETHI},
-	{"SETLE", LTYPE1, i386.ASETLE},
-	{"SETLS", LTYPE1, i386.ASETLS},
-	{"SETLT", LTYPE1, i386.ASETLT},
-	{"SETMI", LTYPE1, i386.ASETMI},
-	{"SETNE", LTYPE1, i386.ASETNE},
-	{"SETOC", LTYPE1, i386.ASETOC},
-	{"SETOS", LTYPE1, i386.ASETOS},
-	{"SETPC", LTYPE1, i386.ASETPC},
-	{"SETPL", LTYPE1, i386.ASETPL},
-	{"SETPS", LTYPE1, i386.ASETPS},
-	{"CDQ", LTYPE0, i386.ACDQ},
-	{"CWD", LTYPE0, i386.ACWD},
-	{"SHLB", LTYPE3, i386.ASHLB},
-	{"SHLL", LTYPES, i386.ASHLL},
-	{"SHLW", LTYPES, i386.ASHLW},
-	{"SHRB", LTYPE3, i386.ASHRB},
-	{"SHRL", LTYPES, i386.ASHRL},
-	{"SHRW", LTYPES, i386.ASHRW},
-	{"STC", LTYPE0, i386.ASTC},
-	{"STD", LTYPE0, i386.ASTD},
-	{"STI", LTYPE0, i386.ASTI},
-	{"STOSB", LTYPE0, i386.ASTOSB},
-	{"STOSL", LTYPE0, i386.ASTOSL},
-	{"STOSW", LTYPE0, i386.ASTOSW},
-	{"SUBB", LTYPE3, i386.ASUBB},
-	{"SUBL", LTYPE3, i386.ASUBL},
-	{"SUBW", LTYPE3, i386.ASUBW},
-	{"SYSCALL", LTYPE0, i386.ASYSCALL},
-	{"TESTB", LTYPE3, i386.ATESTB},
-	{"TESTL", LTYPE3, i386.ATESTL},
-	{"TESTW", LTYPE3, i386.ATESTW},
+	{"ROLB", LTYPE3, x86.AROLB},
+	{"ROLL", LTYPE3, x86.AROLL},
+	{"ROLW", LTYPE3, x86.AROLW},
+	{"RORB", LTYPE3, x86.ARORB},
+	{"RORL", LTYPE3, x86.ARORL},
+	{"RORW", LTYPE3, x86.ARORW},
+	{"SAHF", LTYPE0, x86.ASAHF},
+	{"SALB", LTYPE3, x86.ASALB},
+	{"SALL", LTYPE3, x86.ASALL},
+	{"SALW", LTYPE3, x86.ASALW},
+	{"SARB", LTYPE3, x86.ASARB},
+	{"SARL", LTYPE3, x86.ASARL},
+	{"SARW", LTYPE3, x86.ASARW},
+	{"SBBB", LTYPE3, x86.ASBBB},
+	{"SBBL", LTYPE3, x86.ASBBL},
+	{"SBBW", LTYPE3, x86.ASBBW},
+	{"SCASB", LTYPE0, x86.ASCASB},
+	{"SCASL", LTYPE0, x86.ASCASL},
+	{"SCASW", LTYPE0, x86.ASCASW},
+	{"SETCC", LTYPE1, x86.ASETCC}, /* see JCC etc above for condition codes */
+	{"SETCS", LTYPE1, x86.ASETCS},
+	{"SETEQ", LTYPE1, x86.ASETEQ},
+	{"SETGE", LTYPE1, x86.ASETGE},
+	{"SETGT", LTYPE1, x86.ASETGT},
+	{"SETHI", LTYPE1, x86.ASETHI},
+	{"SETLE", LTYPE1, x86.ASETLE},
+	{"SETLS", LTYPE1, x86.ASETLS},
+	{"SETLT", LTYPE1, x86.ASETLT},
+	{"SETMI", LTYPE1, x86.ASETMI},
+	{"SETNE", LTYPE1, x86.ASETNE},
+	{"SETOC", LTYPE1, x86.ASETOC},
+	{"SETOS", LTYPE1, x86.ASETOS},
+	{"SETPC", LTYPE1, x86.ASETPC},
+	{"SETPL", LTYPE1, x86.ASETPL},
+	{"SETPS", LTYPE1, x86.ASETPS},
+	{"CDQ", LTYPE0, x86.ACDQ},
+	{"CWD", LTYPE0, x86.ACWD},
+	{"SHLB", LTYPE3, x86.ASHLB},
+	{"SHLL", LTYPES, x86.ASHLL},
+	{"SHLW", LTYPES, x86.ASHLW},
+	{"SHRB", LTYPE3, x86.ASHRB},
+	{"SHRL", LTYPES, x86.ASHRL},
+	{"SHRW", LTYPES, x86.ASHRW},
+	{"STC", LTYPE0, x86.ASTC},
+	{"STD", LTYPE0, x86.ASTD},
+	{"STI", LTYPE0, x86.ASTI},
+	{"STOSB", LTYPE0, x86.ASTOSB},
+	{"STOSL", LTYPE0, x86.ASTOSL},
+	{"STOSW", LTYPE0, x86.ASTOSW},
+	{"SUBB", LTYPE3, x86.ASUBB},
+	{"SUBL", LTYPE3, x86.ASUBL},
+	{"SUBW", LTYPE3, x86.ASUBW},
+	{"SYSCALL", LTYPE0, x86.ASYSCALL},
+	{"TESTB", LTYPE3, x86.ATESTB},
+	{"TESTL", LTYPE3, x86.ATESTL},
+	{"TESTW", LTYPE3, x86.ATESTW},
 	{"TEXT", LTYPET, obj.ATEXT},
-	{"VERR", LTYPE2, i386.AVERR},
-	{"VERW", LTYPE2, i386.AVERW},
-	{"WAIT", LTYPE0, i386.AWAIT},
-	{"WORD", LTYPE2, i386.AWORD},
-	{"XADDB", LTYPE3, i386.AXADDB},
-	{"XADDL", LTYPE3, i386.AXADDL},
-	{"XADDW", LTYPE3, i386.AXADDW},
-	{"XCHGB", LTYPE3, i386.AXCHGB},
-	{"XCHGL", LTYPE3, i386.AXCHGL},
-	{"XCHGW", LTYPE3, i386.AXCHGW},
-	{"XLAT", LTYPE2, i386.AXLAT},
-	{"XORB", LTYPE3, i386.AXORB},
-	{"XORL", LTYPE3, i386.AXORL},
-	{"XORW", LTYPE3, i386.AXORW},
-	{"CMOVLCC", LTYPE3, i386.ACMOVLCC},
-	{"CMOVLCS", LTYPE3, i386.ACMOVLCS},
-	{"CMOVLEQ", LTYPE3, i386.ACMOVLEQ},
-	{"CMOVLGE", LTYPE3, i386.ACMOVLGE},
-	{"CMOVLGT", LTYPE3, i386.ACMOVLGT},
-	{"CMOVLHI", LTYPE3, i386.ACMOVLHI},
-	{"CMOVLLE", LTYPE3, i386.ACMOVLLE},
-	{"CMOVLLS", LTYPE3, i386.ACMOVLLS},
-	{"CMOVLLT", LTYPE3, i386.ACMOVLLT},
-	{"CMOVLMI", LTYPE3, i386.ACMOVLMI},
-	{"CMOVLNE", LTYPE3, i386.ACMOVLNE},
-	{"CMOVLOC", LTYPE3, i386.ACMOVLOC},
-	{"CMOVLOS", LTYPE3, i386.ACMOVLOS},
-	{"CMOVLPC", LTYPE3, i386.ACMOVLPC},
-	{"CMOVLPL", LTYPE3, i386.ACMOVLPL},
-	{"CMOVLPS", LTYPE3, i386.ACMOVLPS},
-	{"CMOVWCC", LTYPE3, i386.ACMOVWCC},
-	{"CMOVWCS", LTYPE3, i386.ACMOVWCS},
-	{"CMOVWEQ", LTYPE3, i386.ACMOVWEQ},
-	{"CMOVWGE", LTYPE3, i386.ACMOVWGE},
-	{"CMOVWGT", LTYPE3, i386.ACMOVWGT},
-	{"CMOVWHI", LTYPE3, i386.ACMOVWHI},
-	{"CMOVWLE", LTYPE3, i386.ACMOVWLE},
-	{"CMOVWLS", LTYPE3, i386.ACMOVWLS},
-	{"CMOVWLT", LTYPE3, i386.ACMOVWLT},
-	{"CMOVWMI", LTYPE3, i386.ACMOVWMI},
-	{"CMOVWNE", LTYPE3, i386.ACMOVWNE},
-	{"CMOVWOC", LTYPE3, i386.ACMOVWOC},
-	{"CMOVWOS", LTYPE3, i386.ACMOVWOS},
-	{"CMOVWPC", LTYPE3, i386.ACMOVWPC},
-	{"CMOVWPL", LTYPE3, i386.ACMOVWPL},
-	{"CMOVWPS", LTYPE3, i386.ACMOVWPS},
-	{"FMOVB", LTYPE3, i386.AFMOVB},
-	{"FMOVBP", LTYPE3, i386.AFMOVBP},
-	{"FMOVD", LTYPE3, i386.AFMOVD},
-	{"FMOVDP", LTYPE3, i386.AFMOVDP},
-	{"FMOVF", LTYPE3, i386.AFMOVF},
-	{"FMOVFP", LTYPE3, i386.AFMOVFP},
-	{"FMOVL", LTYPE3, i386.AFMOVL},
-	{"FMOVLP", LTYPE3, i386.AFMOVLP},
-	{"FMOVV", LTYPE3, i386.AFMOVV},
-	{"FMOVVP", LTYPE3, i386.AFMOVVP},
-	{"FMOVW", LTYPE3, i386.AFMOVW},
-	{"FMOVWP", LTYPE3, i386.AFMOVWP},
-	{"FMOVX", LTYPE3, i386.AFMOVX},
-	{"FMOVXP", LTYPE3, i386.AFMOVXP},
-	{"FCMOVCC", LTYPE3, i386.AFCMOVCC},
-	{"FCMOVCS", LTYPE3, i386.AFCMOVCS},
-	{"FCMOVEQ", LTYPE3, i386.AFCMOVEQ},
-	{"FCMOVHI", LTYPE3, i386.AFCMOVHI},
-	{"FCMOVLS", LTYPE3, i386.AFCMOVLS},
-	{"FCMOVNE", LTYPE3, i386.AFCMOVNE},
-	{"FCMOVNU", LTYPE3, i386.AFCMOVNU},
-	{"FCMOVUN", LTYPE3, i386.AFCMOVUN},
-	{"FCOMB", LTYPE3, i386.AFCOMB},
-	{"FCOMBP", LTYPE3, i386.AFCOMBP},
-	{"FCOMD", LTYPE3, i386.AFCOMD},
-	{"FCOMDP", LTYPE3, i386.AFCOMDP},
-	{"FCOMDPP", LTYPE3, i386.AFCOMDPP},
-	{"FCOMF", LTYPE3, i386.AFCOMF},
-	{"FCOMFP", LTYPE3, i386.AFCOMFP},
-	{"FCOMI", LTYPE3, i386.AFCOMI},
-	{"FCOMIP", LTYPE3, i386.AFCOMIP},
-	{"FCOML", LTYPE3, i386.AFCOML},
-	{"FCOMLP", LTYPE3, i386.AFCOMLP},
-	{"FCOMW", LTYPE3, i386.AFCOMW},
-	{"FCOMWP", LTYPE3, i386.AFCOMWP},
-	{"FUCOM", LTYPE3, i386.AFUCOM},
-	{"FUCOMI", LTYPE3, i386.AFUCOMI},
-	{"FUCOMIP", LTYPE3, i386.AFUCOMIP},
-	{"FUCOMP", LTYPE3, i386.AFUCOMP},
-	{"FUCOMPP", LTYPE3, i386.AFUCOMPP},
-	{"FADDW", LTYPE3, i386.AFADDW},
-	{"FADDL", LTYPE3, i386.AFADDL},
-	{"FADDF", LTYPE3, i386.AFADDF},
-	{"FADDD", LTYPE3, i386.AFADDD},
-	{"FADDDP", LTYPE3, i386.AFADDDP},
-	{"FSUBDP", LTYPE3, i386.AFSUBDP},
-	{"FSUBW", LTYPE3, i386.AFSUBW},
-	{"FSUBL", LTYPE3, i386.AFSUBL},
-	{"FSUBF", LTYPE3, i386.AFSUBF},
-	{"FSUBD", LTYPE3, i386.AFSUBD},
-	{"FSUBRDP", LTYPE3, i386.AFSUBRDP},
-	{"FSUBRW", LTYPE3, i386.AFSUBRW},
-	{"FSUBRL", LTYPE3, i386.AFSUBRL},
-	{"FSUBRF", LTYPE3, i386.AFSUBRF},
-	{"FSUBRD", LTYPE3, i386.AFSUBRD},
-	{"FMULDP", LTYPE3, i386.AFMULDP},
-	{"FMULW", LTYPE3, i386.AFMULW},
-	{"FMULL", LTYPE3, i386.AFMULL},
-	{"FMULF", LTYPE3, i386.AFMULF},
-	{"FMULD", LTYPE3, i386.AFMULD},
-	{"FDIVDP", LTYPE3, i386.AFDIVDP},
-	{"FDIVW", LTYPE3, i386.AFDIVW},
-	{"FDIVL", LTYPE3, i386.AFDIVL},
-	{"FDIVF", LTYPE3, i386.AFDIVF},
-	{"FDIVD", LTYPE3, i386.AFDIVD},
-	{"FDIVRDP", LTYPE3, i386.AFDIVRDP},
-	{"FDIVRW", LTYPE3, i386.AFDIVRW},
-	{"FDIVRL", LTYPE3, i386.AFDIVRL},
-	{"FDIVRF", LTYPE3, i386.AFDIVRF},
-	{"FDIVRD", LTYPE3, i386.AFDIVRD},
-	{"FXCHD", LTYPE3, i386.AFXCHD},
-	{"FFREE", LTYPE1, i386.AFFREE},
-	{"FLDCW", LTYPE2, i386.AFLDCW},
-	{"FLDENV", LTYPE1, i386.AFLDENV},
-	{"FRSTOR", LTYPE2, i386.AFRSTOR},
-	{"FSAVE", LTYPE1, i386.AFSAVE},
-	{"FSTCW", LTYPE1, i386.AFSTCW},
-	{"FSTENV", LTYPE1, i386.AFSTENV},
-	{"FSTSW", LTYPE1, i386.AFSTSW},
-	{"F2XM1", LTYPE0, i386.AF2XM1},
-	{"FABS", LTYPE0, i386.AFABS},
-	{"FCHS", LTYPE0, i386.AFCHS},
-	{"FCLEX", LTYPE0, i386.AFCLEX},
-	{"FCOS", LTYPE0, i386.AFCOS},
-	{"FDECSTP", LTYPE0, i386.AFDECSTP},
-	{"FINCSTP", LTYPE0, i386.AFINCSTP},
-	{"FINIT", LTYPE0, i386.AFINIT},
-	{"FLD1", LTYPE0, i386.AFLD1},
-	{"FLDL2E", LTYPE0, i386.AFLDL2E},
-	{"FLDL2T", LTYPE0, i386.AFLDL2T},
-	{"FLDLG2", LTYPE0, i386.AFLDLG2},
-	{"FLDLN2", LTYPE0, i386.AFLDLN2},
-	{"FLDPI", LTYPE0, i386.AFLDPI},
-	{"FLDZ", LTYPE0, i386.AFLDZ},
-	{"FNOP", LTYPE0, i386.AFNOP},
-	{"FPATAN", LTYPE0, i386.AFPATAN},
-	{"FPREM", LTYPE0, i386.AFPREM},
-	{"FPREM1", LTYPE0, i386.AFPREM1},
-	{"FPTAN", LTYPE0, i386.AFPTAN},
-	{"FRNDINT", LTYPE0, i386.AFRNDINT},
-	{"FSCALE", LTYPE0, i386.AFSCALE},
-	{"FSIN", LTYPE0, i386.AFSIN},
-	{"FSINCOS", LTYPE0, i386.AFSINCOS},
-	{"FSQRT", LTYPE0, i386.AFSQRT},
-	{"FTST", LTYPE0, i386.AFTST},
-	{"FXAM", LTYPE0, i386.AFXAM},
-	{"FXTRACT", LTYPE0, i386.AFXTRACT},
-	{"FYL2X", LTYPE0, i386.AFYL2X},
-	{"FYL2XP1", LTYPE0, i386.AFYL2XP1},
-	{"LFENCE", LTYPE0, i386.ALFENCE},
-	{"MFENCE", LTYPE0, i386.AMFENCE},
-	{"SFENCE", LTYPE0, i386.ASFENCE},
-	{"EMMS", LTYPE0, i386.AEMMS},
-	{"PREFETCHT0", LTYPE2, i386.APREFETCHT0},
-	{"PREFETCHT1", LTYPE2, i386.APREFETCHT1},
-	{"PREFETCHT2", LTYPE2, i386.APREFETCHT2},
-	{"PREFETCHNTA", LTYPE2, i386.APREFETCHNTA},
+	{"VERR", LTYPE2, x86.AVERR},
+	{"VERW", LTYPE2, x86.AVERW},
+	{"WAIT", LTYPE0, x86.AWAIT},
+	{"WORD", LTYPE2, x86.AWORD},
+	{"XADDB", LTYPE3, x86.AXADDB},
+	{"XADDL", LTYPE3, x86.AXADDL},
+	{"XADDW", LTYPE3, x86.AXADDW},
+	{"XCHGB", LTYPE3, x86.AXCHGB},
+	{"XCHGL", LTYPE3, x86.AXCHGL},
+	{"XCHGW", LTYPE3, x86.AXCHGW},
+	{"XLAT", LTYPE2, x86.AXLAT},
+	{"XORB", LTYPE3, x86.AXORB},
+	{"XORL", LTYPE3, x86.AXORL},
+	{"XORW", LTYPE3, x86.AXORW},
+	{"CMOVLCC", LTYPE3, x86.ACMOVLCC},
+	{"CMOVLCS", LTYPE3, x86.ACMOVLCS},
+	{"CMOVLEQ", LTYPE3, x86.ACMOVLEQ},
+	{"CMOVLGE", LTYPE3, x86.ACMOVLGE},
+	{"CMOVLGT", LTYPE3, x86.ACMOVLGT},
+	{"CMOVLHI", LTYPE3, x86.ACMOVLHI},
+	{"CMOVLLE", LTYPE3, x86.ACMOVLLE},
+	{"CMOVLLS", LTYPE3, x86.ACMOVLLS},
+	{"CMOVLLT", LTYPE3, x86.ACMOVLLT},
+	{"CMOVLMI", LTYPE3, x86.ACMOVLMI},
+	{"CMOVLNE", LTYPE3, x86.ACMOVLNE},
+	{"CMOVLOC", LTYPE3, x86.ACMOVLOC},
+	{"CMOVLOS", LTYPE3, x86.ACMOVLOS},
+	{"CMOVLPC", LTYPE3, x86.ACMOVLPC},
+	{"CMOVLPL", LTYPE3, x86.ACMOVLPL},
+	{"CMOVLPS", LTYPE3, x86.ACMOVLPS},
+	{"CMOVWCC", LTYPE3, x86.ACMOVWCC},
+	{"CMOVWCS", LTYPE3, x86.ACMOVWCS},
+	{"CMOVWEQ", LTYPE3, x86.ACMOVWEQ},
+	{"CMOVWGE", LTYPE3, x86.ACMOVWGE},
+	{"CMOVWGT", LTYPE3, x86.ACMOVWGT},
+	{"CMOVWHI", LTYPE3, x86.ACMOVWHI},
+	{"CMOVWLE", LTYPE3, x86.ACMOVWLE},
+	{"CMOVWLS", LTYPE3, x86.ACMOVWLS},
+	{"CMOVWLT", LTYPE3, x86.ACMOVWLT},
+	{"CMOVWMI", LTYPE3, x86.ACMOVWMI},
+	{"CMOVWNE", LTYPE3, x86.ACMOVWNE},
+	{"CMOVWOC", LTYPE3, x86.ACMOVWOC},
+	{"CMOVWOS", LTYPE3, x86.ACMOVWOS},
+	{"CMOVWPC", LTYPE3, x86.ACMOVWPC},
+	{"CMOVWPL", LTYPE3, x86.ACMOVWPL},
+	{"CMOVWPS", LTYPE3, x86.ACMOVWPS},
+	{"FMOVB", LTYPE3, x86.AFMOVB},
+	{"FMOVBP", LTYPE3, x86.AFMOVBP},
+	{"FMOVD", LTYPE3, x86.AFMOVD},
+	{"FMOVDP", LTYPE3, x86.AFMOVDP},
+	{"FMOVF", LTYPE3, x86.AFMOVF},
+	{"FMOVFP", LTYPE3, x86.AFMOVFP},
+	{"FMOVL", LTYPE3, x86.AFMOVL},
+	{"FMOVLP", LTYPE3, x86.AFMOVLP},
+	{"FMOVV", LTYPE3, x86.AFMOVV},
+	{"FMOVVP", LTYPE3, x86.AFMOVVP},
+	{"FMOVW", LTYPE3, x86.AFMOVW},
+	{"FMOVWP", LTYPE3, x86.AFMOVWP},
+	{"FMOVX", LTYPE3, x86.AFMOVX},
+	{"FMOVXP", LTYPE3, x86.AFMOVXP},
+	{"FCMOVCC", LTYPE3, x86.AFCMOVCC},
+	{"FCMOVCS", LTYPE3, x86.AFCMOVCS},
+	{"FCMOVEQ", LTYPE3, x86.AFCMOVEQ},
+	{"FCMOVHI", LTYPE3, x86.AFCMOVHI},
+	{"FCMOVLS", LTYPE3, x86.AFCMOVLS},
+	{"FCMOVNE", LTYPE3, x86.AFCMOVNE},
+	{"FCMOVNU", LTYPE3, x86.AFCMOVNU},
+	{"FCMOVUN", LTYPE3, x86.AFCMOVUN},
+	{"FCOMB", LTYPE3, x86.AFCOMB},
+	{"FCOMBP", LTYPE3, x86.AFCOMBP},
+	{"FCOMD", LTYPE3, x86.AFCOMD},
+	{"FCOMDP", LTYPE3, x86.AFCOMDP},
+	{"FCOMDPP", LTYPE3, x86.AFCOMDPP},
+	{"FCOMF", LTYPE3, x86.AFCOMF},
+	{"FCOMFP", LTYPE3, x86.AFCOMFP},
+	{"FCOMI", LTYPE3, x86.AFCOMI},
+	{"FCOMIP", LTYPE3, x86.AFCOMIP},
+	{"FCOML", LTYPE3, x86.AFCOML},
+	{"FCOMLP", LTYPE3, x86.AFCOMLP},
+	{"FCOMW", LTYPE3, x86.AFCOMW},
+	{"FCOMWP", LTYPE3, x86.AFCOMWP},
+	{"FUCOM", LTYPE3, x86.AFUCOM},
+	{"FUCOMI", LTYPE3, x86.AFUCOMI},
+	{"FUCOMIP", LTYPE3, x86.AFUCOMIP},
+	{"FUCOMP", LTYPE3, x86.AFUCOMP},
+	{"FUCOMPP", LTYPE3, x86.AFUCOMPP},
+	{"FADDW", LTYPE3, x86.AFADDW},
+	{"FADDL", LTYPE3, x86.AFADDL},
+	{"FADDF", LTYPE3, x86.AFADDF},
+	{"FADDD", LTYPE3, x86.AFADDD},
+	{"FADDDP", LTYPE3, x86.AFADDDP},
+	{"FSUBDP", LTYPE3, x86.AFSUBDP},
+	{"FSUBW", LTYPE3, x86.AFSUBW},
+	{"FSUBL", LTYPE3, x86.AFSUBL},
+	{"FSUBF", LTYPE3, x86.AFSUBF},
+	{"FSUBD", LTYPE3, x86.AFSUBD},
+	{"FSUBRDP", LTYPE3, x86.AFSUBRDP},
+	{"FSUBRW", LTYPE3, x86.AFSUBRW},
+	{"FSUBRL", LTYPE3, x86.AFSUBRL},
+	{"FSUBRF", LTYPE3, x86.AFSUBRF},
+	{"FSUBRD", LTYPE3, x86.AFSUBRD},
+	{"FMULDP", LTYPE3, x86.AFMULDP},
+	{"FMULW", LTYPE3, x86.AFMULW},
+	{"FMULL", LTYPE3, x86.AFMULL},
+	{"FMULF", LTYPE3, x86.AFMULF},
+	{"FMULD", LTYPE3, x86.AFMULD},
+	{"FDIVDP", LTYPE3, x86.AFDIVDP},
+	{"FDIVW", LTYPE3, x86.AFDIVW},
+	{"FDIVL", LTYPE3, x86.AFDIVL},
+	{"FDIVF", LTYPE3, x86.AFDIVF},
+	{"FDIVD", LTYPE3, x86.AFDIVD},
+	{"FDIVRDP", LTYPE3, x86.AFDIVRDP},
+	{"FDIVRW", LTYPE3, x86.AFDIVRW},
+	{"FDIVRL", LTYPE3, x86.AFDIVRL},
+	{"FDIVRF", LTYPE3, x86.AFDIVRF},
+	{"FDIVRD", LTYPE3, x86.AFDIVRD},
+	{"FXCHD", LTYPE3, x86.AFXCHD},
+	{"FFREE", LTYPE1, x86.AFFREE},
+	{"FLDCW", LTYPE2, x86.AFLDCW},
+	{"FLDENV", LTYPE1, x86.AFLDENV},
+	{"FRSTOR", LTYPE2, x86.AFRSTOR},
+	{"FSAVE", LTYPE1, x86.AFSAVE},
+	{"FSTCW", LTYPE1, x86.AFSTCW},
+	{"FSTENV", LTYPE1, x86.AFSTENV},
+	{"FSTSW", LTYPE1, x86.AFSTSW},
+	{"F2XM1", LTYPE0, x86.AF2XM1},
+	{"FABS", LTYPE0, x86.AFABS},
+	{"FCHS", LTYPE0, x86.AFCHS},
+	{"FCLEX", LTYPE0, x86.AFCLEX},
+	{"FCOS", LTYPE0, x86.AFCOS},
+	{"FDECSTP", LTYPE0, x86.AFDECSTP},
+	{"FINCSTP", LTYPE0, x86.AFINCSTP},
+	{"FINIT", LTYPE0, x86.AFINIT},
+	{"FLD1", LTYPE0, x86.AFLD1},
+	{"FLDL2E", LTYPE0, x86.AFLDL2E},
+	{"FLDL2T", LTYPE0, x86.AFLDL2T},
+	{"FLDLG2", LTYPE0, x86.AFLDLG2},
+	{"FLDLN2", LTYPE0, x86.AFLDLN2},
+	{"FLDPI", LTYPE0, x86.AFLDPI},
+	{"FLDZ", LTYPE0, x86.AFLDZ},
+	{"FNOP", LTYPE0, x86.AFNOP},
+	{"FPATAN", LTYPE0, x86.AFPATAN},
+	{"FPREM", LTYPE0, x86.AFPREM},
+	{"FPREM1", LTYPE0, x86.AFPREM1},
+	{"FPTAN", LTYPE0, x86.AFPTAN},
+	{"FRNDINT", LTYPE0, x86.AFRNDINT},
+	{"FSCALE", LTYPE0, x86.AFSCALE},
+	{"FSIN", LTYPE0, x86.AFSIN},
+	{"FSINCOS", LTYPE0, x86.AFSINCOS},
+	{"FSQRT", LTYPE0, x86.AFSQRT},
+	{"FTST", LTYPE0, x86.AFTST},
+	{"FXAM", LTYPE0, x86.AFXAM},
+	{"FXTRACT", LTYPE0, x86.AFXTRACT},
+	{"FYL2X", LTYPE0, x86.AFYL2X},
+	{"FYL2XP1", LTYPE0, x86.AFYL2XP1},
+	{"LFENCE", LTYPE0, x86.ALFENCE},
+	{"MFENCE", LTYPE0, x86.AMFENCE},
+	{"SFENCE", LTYPE0, x86.ASFENCE},
+	{"EMMS", LTYPE0, x86.AEMMS},
+	{"PREFETCHT0", LTYPE2, x86.APREFETCHT0},
+	{"PREFETCHT1", LTYPE2, x86.APREFETCHT1},
+	{"PREFETCHT2", LTYPE2, x86.APREFETCHT2},
+	{"PREFETCHNTA", LTYPE2, x86.APREFETCHNTA},
 	{"UNDEF", LTYPE0, obj.AUNDEF},
-	{"ADDPD", LTYPE3, i386.AADDPD},
-	{"ADDPS", LTYPE3, i386.AADDPS},
-	{"ADDSD", LTYPE3, i386.AADDSD},
-	{"ADDSS", LTYPE3, i386.AADDSS},
-	{"AESENC", LTYPE3, i386.AAESENC},
-	{"ANDNPD", LTYPE3, i386.AANDNPD},
-	{"ANDNPS", LTYPE3, i386.AANDNPS},
-	{"ANDPD", LTYPE3, i386.AANDPD},
-	{"ANDPS", LTYPE3, i386.AANDPS},
-	{"CMPPD", LTYPEXC, i386.ACMPPD},
-	{"CMPPS", LTYPEXC, i386.ACMPPS},
-	{"CMPSD", LTYPEXC, i386.ACMPSD},
-	{"CMPSS", LTYPEXC, i386.ACMPSS},
-	{"COMISD", LTYPE3, i386.ACOMISD},
-	{"COMISS", LTYPE3, i386.ACOMISS},
-	{"CVTPL2PD", LTYPE3, i386.ACVTPL2PD},
-	{"CVTPL2PS", LTYPE3, i386.ACVTPL2PS},
-	{"CVTPD2PL", LTYPE3, i386.ACVTPD2PL},
-	{"CVTPD2PS", LTYPE3, i386.ACVTPD2PS},
-	{"CVTPS2PL", LTYPE3, i386.ACVTPS2PL},
-	{"CVTPS2PD", LTYPE3, i386.ACVTPS2PD},
-	{"CVTSD2SL", LTYPE3, i386.ACVTSD2SL},
-	{"CVTSD2SS", LTYPE3, i386.ACVTSD2SS},
-	{"CVTSL2SD", LTYPE3, i386.ACVTSL2SD},
-	{"CVTSL2SS", LTYPE3, i386.ACVTSL2SS},
-	{"CVTSS2SD", LTYPE3, i386.ACVTSS2SD},
-	{"CVTSS2SL", LTYPE3, i386.ACVTSS2SL},
-	{"CVTTPD2PL", LTYPE3, i386.ACVTTPD2PL},
-	{"CVTTPS2PL", LTYPE3, i386.ACVTTPS2PL},
-	{"CVTTSD2SL", LTYPE3, i386.ACVTTSD2SL},
-	{"CVTTSS2SL", LTYPE3, i386.ACVTTSS2SL},
-	{"DIVPD", LTYPE3, i386.ADIVPD},
-	{"DIVPS", LTYPE3, i386.ADIVPS},
-	{"DIVSD", LTYPE3, i386.ADIVSD},
-	{"DIVSS", LTYPE3, i386.ADIVSS},
-	{"MASKMOVOU", LTYPE3, i386.AMASKMOVOU},
-	{"MASKMOVDQU", LTYPE3, i386.AMASKMOVOU}, /* syn */
-	{"MAXPD", LTYPE3, i386.AMAXPD},
-	{"MAXPS", LTYPE3, i386.AMAXPS},
-	{"MAXSD", LTYPE3, i386.AMAXSD},
-	{"MAXSS", LTYPE3, i386.AMAXSS},
-	{"MINPD", LTYPE3, i386.AMINPD},
-	{"MINPS", LTYPE3, i386.AMINPS},
-	{"MINSD", LTYPE3, i386.AMINSD},
-	{"MINSS", LTYPE3, i386.AMINSS},
-	{"MOVAPD", LTYPE3, i386.AMOVAPD},
-	{"MOVAPS", LTYPE3, i386.AMOVAPS},
-	{"MOVO", LTYPE3, i386.AMOVO},
-	{"MOVOA", LTYPE3, i386.AMOVO}, /* syn */
-	{"MOVOU", LTYPE3, i386.AMOVOU},
-	{"MOVHLPS", LTYPE3, i386.AMOVHLPS},
-	{"MOVHPD", LTYPE3, i386.AMOVHPD},
-	{"MOVHPS", LTYPE3, i386.AMOVHPS},
-	{"MOVLHPS", LTYPE3, i386.AMOVLHPS},
-	{"MOVLPD", LTYPE3, i386.AMOVLPD},
-	{"MOVLPS", LTYPE3, i386.AMOVLPS},
-	{"MOVMSKPD", LTYPE3, i386.AMOVMSKPD},
-	{"MOVMSKPS", LTYPE3, i386.AMOVMSKPS},
-	{"MOVNTO", LTYPE3, i386.AMOVNTO},
-	{"MOVNTDQ", LTYPE3, i386.AMOVNTO}, /* syn */
-	{"MOVNTPD", LTYPE3, i386.AMOVNTPD},
-	{"MOVNTPS", LTYPE3, i386.AMOVNTPS},
-	{"MOVSD", LTYPE3, i386.AMOVSD},
-	{"MOVSS", LTYPE3, i386.AMOVSS},
-	{"MOVUPD", LTYPE3, i386.AMOVUPD},
-	{"MOVUPS", LTYPE3, i386.AMOVUPS},
-	{"MULPD", LTYPE3, i386.AMULPD},
-	{"MULPS", LTYPE3, i386.AMULPS},
-	{"MULSD", LTYPE3, i386.AMULSD},
-	{"MULSS", LTYPE3, i386.AMULSS},
-	{"ORPD", LTYPE3, i386.AORPD},
-	{"ORPS", LTYPE3, i386.AORPS},
-	{"PADDQ", LTYPE3, i386.APADDQ},
-	{"PAND", LTYPE3, i386.APAND},
-	{"PCMPEQB", LTYPE3, i386.APCMPEQB},
-	{"PMAXSW", LTYPE3, i386.APMAXSW},
-	{"PMAXUB", LTYPE3, i386.APMAXUB},
-	{"PMINSW", LTYPE3, i386.APMINSW},
-	{"PMINUB", LTYPE3, i386.APMINUB},
-	{"PMOVMSKB", LTYPE3, i386.APMOVMSKB},
-	{"PSADBW", LTYPE3, i386.APSADBW},
-	{"PSHUFB", LTYPE3, i386.APSHUFB},
-	{"PSHUFHW", LTYPEX, i386.APSHUFHW},
-	{"PSHUFL", LTYPEX, i386.APSHUFL},
-	{"PSHUFLW", LTYPEX, i386.APSHUFLW},
-	{"PSUBB", LTYPE3, i386.APSUBB},
-	{"PSUBL", LTYPE3, i386.APSUBL},
-	{"PSUBQ", LTYPE3, i386.APSUBQ},
-	{"PSUBSB", LTYPE3, i386.APSUBSB},
-	{"PSUBSW", LTYPE3, i386.APSUBSW},
-	{"PSUBUSB", LTYPE3, i386.APSUBUSB},
-	{"PSUBUSW", LTYPE3, i386.APSUBUSW},
-	{"PSUBW", LTYPE3, i386.APSUBW},
-	{"PUNPCKHQDQ", LTYPE3, i386.APUNPCKHQDQ},
-	{"PUNPCKLQDQ", LTYPE3, i386.APUNPCKLQDQ},
-	{"PXOR", LTYPE3, i386.APXOR},
-	{"RCPPS", LTYPE3, i386.ARCPPS},
-	{"RCPSS", LTYPE3, i386.ARCPSS},
-	{"RSQRTPS", LTYPE3, i386.ARSQRTPS},
-	{"RSQRTSS", LTYPE3, i386.ARSQRTSS},
-	{"SQRTPD", LTYPE3, i386.ASQRTPD},
-	{"SQRTPS", LTYPE3, i386.ASQRTPS},
-	{"SQRTSD", LTYPE3, i386.ASQRTSD},
-	{"SQRTSS", LTYPE3, i386.ASQRTSS},
-	{"SUBPD", LTYPE3, i386.ASUBPD},
-	{"SUBPS", LTYPE3, i386.ASUBPS},
-	{"SUBSD", LTYPE3, i386.ASUBSD},
-	{"SUBSS", LTYPE3, i386.ASUBSS},
-	{"UCOMISD", LTYPE3, i386.AUCOMISD},
-	{"UCOMISS", LTYPE3, i386.AUCOMISS},
-	{"UNPCKHPD", LTYPE3, i386.AUNPCKHPD},
-	{"UNPCKHPS", LTYPE3, i386.AUNPCKHPS},
-	{"UNPCKLPD", LTYPE3, i386.AUNPCKLPD},
-	{"UNPCKLPS", LTYPE3, i386.AUNPCKLPS},
-	{"XORPD", LTYPE3, i386.AXORPD},
-	{"XORPS", LTYPE3, i386.AXORPS},
+	{"ADDPD", LTYPE3, x86.AADDPD},
+	{"ADDPS", LTYPE3, x86.AADDPS},
+	{"ADDSD", LTYPE3, x86.AADDSD},
+	{"ADDSS", LTYPE3, x86.AADDSS},
+	{"AESENC", LTYPE3, x86.AAESENC},
+	{"ANDNPD", LTYPE3, x86.AANDNPD},
+	{"ANDNPS", LTYPE3, x86.AANDNPS},
+	{"ANDPD", LTYPE3, x86.AANDPD},
+	{"ANDPS", LTYPE3, x86.AANDPS},
+	{"CMPPD", LTYPEXC, x86.ACMPPD},
+	{"CMPPS", LTYPEXC, x86.ACMPPS},
+	{"CMPSD", LTYPEXC, x86.ACMPSD},
+	{"CMPSS", LTYPEXC, x86.ACMPSS},
+	{"COMISD", LTYPE3, x86.ACOMISD},
+	{"COMISS", LTYPE3, x86.ACOMISS},
+	{"CVTPL2PD", LTYPE3, x86.ACVTPL2PD},
+	{"CVTPL2PS", LTYPE3, x86.ACVTPL2PS},
+	{"CVTPD2PL", LTYPE3, x86.ACVTPD2PL},
+	{"CVTPD2PS", LTYPE3, x86.ACVTPD2PS},
+	{"CVTPS2PL", LTYPE3, x86.ACVTPS2PL},
+	{"CVTPS2PD", LTYPE3, x86.ACVTPS2PD},
+	{"CVTSD2SL", LTYPE3, x86.ACVTSD2SL},
+	{"CVTSD2SS", LTYPE3, x86.ACVTSD2SS},
+	{"CVTSL2SD", LTYPE3, x86.ACVTSL2SD},
+	{"CVTSL2SS", LTYPE3, x86.ACVTSL2SS},
+	{"CVTSS2SD", LTYPE3, x86.ACVTSS2SD},
+	{"CVTSS2SL", LTYPE3, x86.ACVTSS2SL},
+	{"CVTTPD2PL", LTYPE3, x86.ACVTTPD2PL},
+	{"CVTTPS2PL", LTYPE3, x86.ACVTTPS2PL},
+	{"CVTTSD2SL", LTYPE3, x86.ACVTTSD2SL},
+	{"CVTTSS2SL", LTYPE3, x86.ACVTTSS2SL},
+	{"DIVPD", LTYPE3, x86.ADIVPD},
+	{"DIVPS", LTYPE3, x86.ADIVPS},
+	{"DIVSD", LTYPE3, x86.ADIVSD},
+	{"DIVSS", LTYPE3, x86.ADIVSS},
+	{"MASKMOVOU", LTYPE3, x86.AMASKMOVOU},
+	{"MASKMOVDQU", LTYPE3, x86.AMASKMOVOU}, /* syn */
+	{"MAXPD", LTYPE3, x86.AMAXPD},
+	{"MAXPS", LTYPE3, x86.AMAXPS},
+	{"MAXSD", LTYPE3, x86.AMAXSD},
+	{"MAXSS", LTYPE3, x86.AMAXSS},
+	{"MINPD", LTYPE3, x86.AMINPD},
+	{"MINPS", LTYPE3, x86.AMINPS},
+	{"MINSD", LTYPE3, x86.AMINSD},
+	{"MINSS", LTYPE3, x86.AMINSS},
+	{"MOVAPD", LTYPE3, x86.AMOVAPD},
+	{"MOVAPS", LTYPE3, x86.AMOVAPS},
+	{"MOVO", LTYPE3, x86.AMOVO},
+	{"MOVOA", LTYPE3, x86.AMOVO}, /* syn */
+	{"MOVOU", LTYPE3, x86.AMOVOU},
+	{"MOVHLPS", LTYPE3, x86.AMOVHLPS},
+	{"MOVHPD", LTYPE3, x86.AMOVHPD},
+	{"MOVHPS", LTYPE3, x86.AMOVHPS},
+	{"MOVLHPS", LTYPE3, x86.AMOVLHPS},
+	{"MOVLPD", LTYPE3, x86.AMOVLPD},
+	{"MOVLPS", LTYPE3, x86.AMOVLPS},
+	{"MOVMSKPD", LTYPE3, x86.AMOVMSKPD},
+	{"MOVMSKPS", LTYPE3, x86.AMOVMSKPS},
+	{"MOVNTO", LTYPE3, x86.AMOVNTO},
+	{"MOVNTDQ", LTYPE3, x86.AMOVNTO}, /* syn */
+	{"MOVNTPD", LTYPE3, x86.AMOVNTPD},
+	{"MOVNTPS", LTYPE3, x86.AMOVNTPS},
+	{"MOVSD", LTYPE3, x86.AMOVSD},
+	{"MOVSS", LTYPE3, x86.AMOVSS},
+	{"MOVUPD", LTYPE3, x86.AMOVUPD},
+	{"MOVUPS", LTYPE3, x86.AMOVUPS},
+	{"MULPD", LTYPE3, x86.AMULPD},
+	{"MULPS", LTYPE3, x86.AMULPS},
+	{"MULSD", LTYPE3, x86.AMULSD},
+	{"MULSS", LTYPE3, x86.AMULSS},
+	{"ORPD", LTYPE3, x86.AORPD},
+	{"ORPS", LTYPE3, x86.AORPS},
+	{"PADDQ", LTYPE3, x86.APADDQ},
+	{"PAND", LTYPE3, x86.APAND},
+	{"PCMPEQB", LTYPE3, x86.APCMPEQB},
+	{"PMAXSW", LTYPE3, x86.APMAXSW},
+	{"PMAXUB", LTYPE3, x86.APMAXUB},
+	{"PMINSW", LTYPE3, x86.APMINSW},
+	{"PMINUB", LTYPE3, x86.APMINUB},
+	{"PMOVMSKB", LTYPE3, x86.APMOVMSKB},
+	{"PSADBW", LTYPE3, x86.APSADBW},
+	{"PSHUFB", LTYPE3, x86.APSHUFB},
+	{"PSHUFHW", LTYPEX, x86.APSHUFHW},
+	{"PSHUFL", LTYPEX, x86.APSHUFL},
+	{"PSHUFLW", LTYPEX, x86.APSHUFLW},
+	{"PSUBB", LTYPE3, x86.APSUBB},
+	{"PSUBL", LTYPE3, x86.APSUBL},
+	{"PSUBQ", LTYPE3, x86.APSUBQ},
+	{"PSUBSB", LTYPE3, x86.APSUBSB},
+	{"PSUBSW", LTYPE3, x86.APSUBSW},
+	{"PSUBUSB", LTYPE3, x86.APSUBUSB},
+	{"PSUBUSW", LTYPE3, x86.APSUBUSW},
+	{"PSUBW", LTYPE3, x86.APSUBW},
+	{"PUNPCKHQDQ", LTYPE3, x86.APUNPCKHQDQ},
+	{"PUNPCKLQDQ", LTYPE3, x86.APUNPCKLQDQ},
+	{"PXOR", LTYPE3, x86.APXOR},
+	{"RCPPS", LTYPE3, x86.ARCPPS},
+	{"RCPSS", LTYPE3, x86.ARCPSS},
+	{"RSQRTPS", LTYPE3, x86.ARSQRTPS},
+	{"RSQRTSS", LTYPE3, x86.ARSQRTSS},
+	{"SQRTPD", LTYPE3, x86.ASQRTPD},
+	{"SQRTPS", LTYPE3, x86.ASQRTPS},
+	{"SQRTSD", LTYPE3, x86.ASQRTSD},
+	{"SQRTSS", LTYPE3, x86.ASQRTSS},
+	{"SUBPD", LTYPE3, x86.ASUBPD},
+	{"SUBPS", LTYPE3, x86.ASUBPS},
+	{"SUBSD", LTYPE3, x86.ASUBSD},
+	{"SUBSS", LTYPE3, x86.ASUBSS},
+	{"UCOMISD", LTYPE3, x86.AUCOMISD},
+	{"UCOMISS", LTYPE3, x86.AUCOMISS},
+	{"UNPCKHPD", LTYPE3, x86.AUNPCKHPD},
+	{"UNPCKHPS", LTYPE3, x86.AUNPCKHPS},
+	{"UNPCKLPD", LTYPE3, x86.AUNPCKLPD},
+	{"UNPCKLPS", LTYPE3, x86.AUNPCKLPS},
+	{"XORPD", LTYPE3, x86.AXORPD},
+	{"XORPS", LTYPE3, x86.AXORPS},
 	{"USEFIELD", LTYPEN, obj.AUSEFIELD},
 	{"PCDATA", LTYPEPC, obj.APCDATA},
 	{"FUNCDATA", LTYPEF, obj.AFUNCDATA},
 }
 
 func cinit() {
-	nullgen.Type = i386.REG_NONE
-	nullgen.Index = i386.REG_NONE
+	nullgen.Type = x86.REG_NONE
+	nullgen.Index = x86.REG_NONE
 }
 
 func checkscale(scale int16) {