]> Cypherpunks repositories - gostls13.git/commitdiff
obj/x86: re-organize code to make codegen easier
authorisharipo <iskander.sharipov@intel.com>
Fri, 13 Oct 2017 12:37:16 +0000 (15:37 +0300)
committerIlya Tocar <ilya.tocar@intel.com>
Thu, 26 Oct 2017 21:13:40 +0000 (21:13 +0000)
1. Move AXXX constants (A-enumeration) from "a.out.go" to "aenum.go"
2. Move VEX-encoded optabs from "asm6.go" to "vex_optabs.go"

Also run "go generate" over aenum.go. This explains diff in "anames.go".

Initialization of opindex is split into 2 loops:
one for `vexOptab`, second for `optab`.

Rationale:
when VEX instructions are generated with current structure,
asm6.go is modified, which can lead to merge conflicts and
larger diffs than desired. Same for a.out.go.

This change makes x86avxgen usage possible:
https://go-review.googlesource.com/c/arch/+/66972

Change-Id: Id9eefcf5ccf0a89440e5d01bcb80926a8163b41d
Reviewed-on: https://go-review.googlesource.com/70630
Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
src/cmd/internal/obj/x86/a.out.go
src/cmd/internal/obj/x86/aenum.go [new file with mode: 0644]
src/cmd/internal/obj/x86/anames.go
src/cmd/internal/obj/x86/asm6.go
src/cmd/internal/obj/x86/vex_optabs.go [new file with mode: 0644]

index 5babeea36c0e8bc5e89b2949e1f18ef450e4983d..37997899315f8aaffa3bf1aef73be658764aa861 100644 (file)
@@ -32,852 +32,11 @@ package x86
 
 import "cmd/internal/obj"
 
-//go:generate go run ../stringer.go -i $GOFILE -o anames.go -p x86
-
 const (
        /* mark flags */
        DONE = 1 << iota
 )
 
-/*
- *     amd64
- */
-const (
-       AAAA = obj.ABaseAMD64 + obj.A_ARCHSPECIFIC + iota
-       AAAD
-       AAAM
-       AAAS
-       AADCB
-       AADCL
-       AADCW
-       AADDB
-       AADDL
-       AADDW
-       AADJSP
-       AANDB
-       AANDL
-       AANDW
-       AARPL
-       ABOUNDL
-       ABOUNDW
-       ABSFL
-       ABSFW
-       ABSRL
-       ABSRW
-       ABTL
-       ABTW
-       ABTCL
-       ABTCW
-       ABTRL
-       ABTRW
-       ABTSL
-       ABTSW
-       ABYTE
-       ACLC
-       ACLD
-       ACLFLUSH
-       ACLI
-       ACLTS
-       ACMC
-       ACMPB
-       ACMPL
-       ACMPW
-       ACMPSB
-       ACMPSL
-       ACMPSW
-       ADAA
-       ADAS
-       ADECB
-       ADECL
-       ADECQ
-       ADECW
-       ADIVB
-       ADIVL
-       ADIVW
-       AENTER
-       AHADDPD
-       AHADDPS
-       AHLT
-       AHSUBPD
-       AHSUBPS
-       AIDIVB
-       AIDIVL
-       AIDIVW
-       AIMULB
-       AIMULL
-       AIMULW
-       AINB
-       AINL
-       AINW
-       AINCB
-       AINCL
-       AINCQ
-       AINCW
-       AINSB
-       AINSL
-       AINSERTPS
-       AINSW
-       AINT
-       AINTO
-       AIRETL
-       AIRETW
-       AJCC // >= unsigned
-       AJCS // < unsigned
-       AJCXZL
-       AJEQ // == (zero)
-       AJGE // >= signed
-       AJGT // > signed
-       AJHI // > unsigned
-       AJLE // <= signed
-       AJLS // <= unsigned
-       AJLT // < signed
-       AJMI // sign bit set (negative)
-       AJNE // != (nonzero)
-       AJOC // overflow clear
-       AJOS // overflow set
-       AJPC // parity clear
-       AJPL // sign bit clear (positive)
-       AJPS // parity set
-       ALAHF
-       ALARL
-       ALARW
-       ALEAL
-       ALEAW
-       ALEAVEL
-       ALEAVEW
-       ALOCK
-       ALODSB
-       ALODSL
-       ALODSW
-       ALONG
-       ALOOP
-       ALOOPEQ
-       ALOOPNE
-       ALSLL
-       ALSLW
-       AMOVB
-       AMOVL
-       AMOVW
-       AMOVBLSX
-       AMOVBLZX
-       AMOVBQSX
-       AMOVBQZX
-       AMOVBWSX
-       AMOVBWZX
-       AMOVWLSX
-       AMOVWLZX
-       AMOVWQSX
-       AMOVWQZX
-       AMOVSB
-       AMOVSL
-       AMOVSW
-       AMPSADBW
-       AMULB
-       AMULL
-       AMULW
-       ANEGB
-       ANEGL
-       ANEGW
-       ANOTB
-       ANOTL
-       ANOTW
-       AORB
-       AORL
-       AORW
-       AOUTB
-       AOUTL
-       AOUTW
-       AOUTSB
-       AOUTSL
-       AOUTSW
-       APABSB
-       APABSD
-       APABSW
-       APAUSE
-       APOPAL
-       APOPAW
-       APOPCNTW
-       APOPCNTL
-       APOPCNTQ
-       APOPFL
-       APOPFW
-       APOPL
-       APOPW
-       APUSHAL
-       APUSHAW
-       APUSHFL
-       APUSHFW
-       APUSHL
-       APUSHW
-       ARCLB
-       ARCLL
-       ARCLW
-       ARCRB
-       ARCRL
-       ARCRW
-       AREP
-       AREPN
-       AROLB
-       AROLL
-       AROLW
-       ARORB
-       ARORL
-       ARORW
-       ASAHF
-       ASALB
-       ASALL
-       ASALW
-       ASARB
-       ASARL
-       ASARW
-       ASBBB
-       ASBBL
-       ASBBW
-       ASCASB
-       ASCASL
-       ASCASW
-       ASETCC
-       ASETCS
-       ASETEQ
-       ASETGE
-       ASETGT
-       ASETHI
-       ASETLE
-       ASETLS
-       ASETLT
-       ASETMI
-       ASETNE
-       ASETOC
-       ASETOS
-       ASETPC
-       ASETPL
-       ASETPS
-       ACDQ
-       ACWD
-       ASHLB
-       ASHLL
-       ASHLW
-       ASHRB
-       ASHRL
-       ASHRW
-       ASTC
-       ASTD
-       ASTI
-       ASTOSB
-       ASTOSL
-       ASTOSW
-       ASUBB
-       ASUBL
-       ASUBW
-       ASYSCALL
-       ATESTB
-       ATESTL
-       ATESTW
-       AVERR
-       AVERW
-       AWAIT
-       AWORD
-       AXCHGB
-       AXCHGL
-       AXCHGW
-       AXLAT
-       AXORB
-       AXORL
-       AXORW
-
-       AFMOVB
-       AFMOVBP
-       AFMOVD
-       AFMOVDP
-       AFMOVF
-       AFMOVFP
-       AFMOVL
-       AFMOVLP
-       AFMOVV
-       AFMOVVP
-       AFMOVW
-       AFMOVWP
-       AFMOVX
-       AFMOVXP
-
-       AFCOMD
-       AFCOMDP
-       AFCOMDPP
-       AFCOMF
-       AFCOMFP
-       AFCOML
-       AFCOMLP
-       AFCOMW
-       AFCOMWP
-       AFUCOM
-       AFUCOMP
-       AFUCOMPP
-
-       AFADDDP
-       AFADDW
-       AFADDL
-       AFADDF
-       AFADDD
-
-       AFMULDP
-       AFMULW
-       AFMULL
-       AFMULF
-       AFMULD
-
-       AFSUBDP
-       AFSUBW
-       AFSUBL
-       AFSUBF
-       AFSUBD
-
-       AFSUBRDP
-       AFSUBRW
-       AFSUBRL
-       AFSUBRF
-       AFSUBRD
-
-       AFDIVDP
-       AFDIVW
-       AFDIVL
-       AFDIVF
-       AFDIVD
-
-       AFDIVRDP
-       AFDIVRW
-       AFDIVRL
-       AFDIVRF
-       AFDIVRD
-
-       AFXCHD
-       AFFREE
-
-       AFLDCW
-       AFLDENV
-       AFRSTOR
-       AFSAVE
-       AFSTCW
-       AFSTENV
-       AFSTSW
-
-       AF2XM1
-       AFABS
-       AFCHS
-       AFCLEX
-       AFCOS
-       AFDECSTP
-       AFINCSTP
-       AFINIT
-       AFLD1
-       AFLDL2E
-       AFLDL2T
-       AFLDLG2
-       AFLDLN2
-       AFLDPI
-       AFLDZ
-       AFNOP
-       AFPATAN
-       AFPREM
-       AFPREM1
-       AFPTAN
-       AFRNDINT
-       AFSCALE
-       AFSIN
-       AFSINCOS
-       AFSQRT
-       AFTST
-       AFXAM
-       AFXTRACT
-       AFYL2X
-       AFYL2XP1
-
-       // extra 32-bit operations
-       ACMPXCHGB
-       ACMPXCHGL
-       ACMPXCHGW
-       ACMPXCHG8B
-       ACPUID
-       AINVD
-       AINVLPG
-       ALFENCE
-       AMFENCE
-       AMOVNTIL
-       ARDMSR
-       ARDPMC
-       ARDTSC
-       ARSM
-       ASFENCE
-       ASYSRET
-       AWBINVD
-       AWRMSR
-       AXADDB
-       AXADDL
-       AXADDW
-
-       // conditional move
-       ACMOVLCC
-       ACMOVLCS
-       ACMOVLEQ
-       ACMOVLGE
-       ACMOVLGT
-       ACMOVLHI
-       ACMOVLLE
-       ACMOVLLS
-       ACMOVLLT
-       ACMOVLMI
-       ACMOVLNE
-       ACMOVLOC
-       ACMOVLOS
-       ACMOVLPC
-       ACMOVLPL
-       ACMOVLPS
-       ACMOVQCC
-       ACMOVQCS
-       ACMOVQEQ
-       ACMOVQGE
-       ACMOVQGT
-       ACMOVQHI
-       ACMOVQLE
-       ACMOVQLS
-       ACMOVQLT
-       ACMOVQMI
-       ACMOVQNE
-       ACMOVQOC
-       ACMOVQOS
-       ACMOVQPC
-       ACMOVQPL
-       ACMOVQPS
-       ACMOVWCC
-       ACMOVWCS
-       ACMOVWEQ
-       ACMOVWGE
-       ACMOVWGT
-       ACMOVWHI
-       ACMOVWLE
-       ACMOVWLS
-       ACMOVWLT
-       ACMOVWMI
-       ACMOVWNE
-       ACMOVWOC
-       ACMOVWOS
-       ACMOVWPC
-       ACMOVWPL
-       ACMOVWPS
-
-       // 64-bit
-       AADCQ
-       AADDQ
-       AANDQ
-       ABSFQ
-       ABSRQ
-       ABTCQ
-       ABTQ
-       ABTRQ
-       ABTSQ
-       ACMPQ
-       ACMPSQ
-       ACMPXCHGQ
-       ACQO
-       ADIVQ
-       AIDIVQ
-       AIMULQ
-       AIRETQ
-       AJCXZQ
-       ALEAQ
-       ALEAVEQ
-       ALODSQ
-       AMOVQ
-       AMOVLQSX
-       AMOVLQZX
-       AMOVNTIQ
-       AMOVSQ
-       AMULQ
-       ANEGQ
-       ANOTQ
-       AORQ
-       APOPFQ
-       APOPQ
-       APUSHFQ
-       APUSHQ
-       ARCLQ
-       ARCRQ
-       AROLQ
-       ARORQ
-       AQUAD
-       ASALQ
-       ASARQ
-       ASBBQ
-       ASCASQ
-       ASHLQ
-       ASHRQ
-       ASTOSQ
-       ASUBQ
-       ATESTQ
-       AXADDQ
-       AXCHGQ
-       AXORQ
-       AXGETBV
-
-       // media
-       AADDPD
-       AADDPS
-       AADDSD
-       AADDSS
-       AADDSUBPD
-       AADDSUBPS
-       AANDNL
-       AANDNQ
-       AANDNPD
-       AANDNPS
-       AANDPD
-       AANDPS
-       ABEXTRL
-       ABEXTRQ
-       ABLENDPD
-       ABLENDPS
-       ABLSIL
-       ABLSIQ
-       ABLSMSKL
-       ABLSMSKQ
-       ABLSRL
-       ABLSRQ
-       ABZHIL
-       ABZHIQ
-       ACMPPD
-       ACMPPS
-       ACMPSD
-       ACMPSS
-       ACOMISD
-       ACOMISS
-       ACVTPD2PL
-       ACVTPD2PS
-       ACVTPL2PD
-       ACVTPL2PS
-       ACVTPS2PD
-       ACVTPS2PL
-       ACVTSD2SL
-       ACVTSD2SQ
-       ACVTSD2SS
-       ACVTSL2SD
-       ACVTSL2SS
-       ACVTSQ2SD
-       ACVTSQ2SS
-       ACVTSS2SD
-       ACVTSS2SL
-       ACVTSS2SQ
-       ACVTTPD2PL
-       ACVTTPS2PL
-       ACVTTSD2SL
-       ACVTTSD2SQ
-       ACVTTSS2SL
-       ACVTTSS2SQ
-       ADIVPD
-       ADIVPS
-       ADIVSD
-       ADIVSS
-       ADPPD
-       ADPPS
-       AEMMS
-       AEXTRACTPS
-       AFXRSTOR
-       AFXRSTOR64
-       AFXSAVE
-       AFXSAVE64
-       ALDDQU
-       ALDMXCSR
-       AMASKMOVOU
-       AMASKMOVQ
-       AMAXPD
-       AMAXPS
-       AMAXSD
-       AMAXSS
-       AMINPD
-       AMINPS
-       AMINSD
-       AMINSS
-       AMOVAPD
-       AMOVAPS
-       AMOVOU
-       AMOVHLPS
-       AMOVHPD
-       AMOVHPS
-       AMOVLHPS
-       AMOVLPD
-       AMOVLPS
-       AMOVMSKPD
-       AMOVMSKPS
-       AMOVNTO
-       AMOVNTDQA
-       AMOVNTPD
-       AMOVNTPS
-       AMOVNTQ
-       AMOVO
-       AMOVQOZX
-       AMOVSD
-       AMOVSS
-       AMOVUPD
-       AMOVUPS
-       AMULPD
-       AMULPS
-       AMULSD
-       AMULSS
-       AMULXL
-       AMULXQ
-       AORPD
-       AORPS
-       APACKSSLW
-       APACKSSWB
-       APACKUSDW
-       APACKUSWB
-       APADDB
-       APADDL
-       APADDQ
-       APADDSB
-       APADDSW
-       APADDUSB
-       APADDUSW
-       APADDW
-       APALIGNR
-       APAND
-       APANDN
-       APAVGB
-       APAVGW
-       APBLENDW
-       APCMPEQB
-       APCMPEQL
-       APCMPEQQ
-       APCMPEQW
-       APCMPGTB
-       APCMPGTL
-       APCMPGTQ
-       APCMPGTW
-       APCMPISTRI
-       APCMPISTRM
-       APDEPL
-       APDEPQ
-       APEXTL
-       APEXTQ
-       APEXTRB
-       APEXTRD
-       APEXTRQ
-       APEXTRW
-       APHADDD
-       APHADDSW
-       APHADDW
-       APHMINPOSUW
-       APHSUBD
-       APHSUBSW
-       APHSUBW
-       APINSRB
-       APINSRD
-       APINSRQ
-       APINSRW
-       APMADDUBSW
-       APMADDWL
-       APMAXSB
-       APMAXSD
-       APMAXSW
-       APMAXUB
-       APMAXUD
-       APMAXUW
-       APMINSB
-       APMINSD
-       APMINSW
-       APMINUB
-       APMINUD
-       APMINUW
-       APMOVMSKB
-       APMOVSXBD
-       APMOVSXBQ
-       APMOVSXBW
-       APMOVSXDQ
-       APMOVSXWD
-       APMOVSXWQ
-       APMOVZXBD
-       APMOVZXBQ
-       APMOVZXBW
-       APMOVZXDQ
-       APMOVZXWD
-       APMOVZXWQ
-       APMULDQ
-       APMULHRSW
-       APMULHUW
-       APMULHW
-       APMULLD
-       APMULLW
-       APMULULQ
-       APOR
-       APSADBW
-       APSHUFB
-       APSHUFHW
-       APSHUFL
-       APSHUFLW
-       APSHUFW
-       APSIGNB
-       APSIGND
-       APSIGNW
-       APSLLL
-       APSLLO
-       APSLLQ
-       APSLLW
-       APSRAL
-       APSRAW
-       APSRLL
-       APSRLO
-       APSRLQ
-       APSRLW
-       APSUBB
-       APSUBL
-       APSUBQ
-       APSUBSB
-       APSUBSW
-       APSUBUSB
-       APSUBUSW
-       APSUBW
-       APTEST
-       APUNPCKHBW
-       APUNPCKHLQ
-       APUNPCKHQDQ
-       APUNPCKHWL
-       APUNPCKLBW
-       APUNPCKLLQ
-       APUNPCKLQDQ
-       APUNPCKLWL
-       APXOR
-       ARCPPS
-       ARCPSS
-       ARSQRTPS
-       ARSQRTSS
-       ASARXL
-       ASARXQ
-       ASHLXL
-       ASHLXQ
-       ASHRXL
-       ASHRXQ
-       ASHUFPD
-       ASHUFPS
-       ASQRTPD
-       ASQRTPS
-       ASQRTSD
-       ASQRTSS
-       ASTMXCSR
-       ASUBPD
-       ASUBPS
-       ASUBSD
-       ASUBSS
-       AUCOMISD
-       AUCOMISS
-       AUNPCKHPD
-       AUNPCKHPS
-       AUNPCKLPD
-       AUNPCKLPS
-       AXORPD
-       AXORPS
-       APCMPESTRI
-       APCMPESTRM
-
-       ARETFW
-       ARETFL
-       ARETFQ
-       ASWAPGS
-
-       ACRC32B
-       ACRC32Q
-       AIMUL3Q
-
-       APREFETCHT0
-       APREFETCHT1
-       APREFETCHT2
-       APREFETCHNTA
-
-       AMOVQL
-       ABSWAPL
-       ABSWAPQ
-
-       AAESENC
-       AAESENCLAST
-       AAESDEC
-       AAESDECLAST
-       AAESIMC
-       AAESKEYGENASSIST
-
-       AROUNDPS
-       AROUNDSS
-       AROUNDPD
-       AROUNDSD
-       AMOVDDUP
-       AMOVSHDUP
-       AMOVSLDUP
-
-       APSHUFD
-       APCLMULQDQ
-
-       AVZEROUPPER
-       AVMOVDQU
-       AVMOVNTDQ
-       AVMOVDQA
-       AVPCMPEQB
-       AVPXOR
-       AVPMOVMSKB
-       AVPAND
-       AVPTEST
-       AVPBROADCASTB
-       AVPSHUFB
-       AVPSHUFD
-       AVPERM2F128
-       AVPALIGNR
-       AVPADDQ
-       AVPADDD
-       AVPSRLDQ
-       AVPSLLDQ
-       AVPSRLQ
-       AVPSLLQ
-       AVPSRLD
-       AVPSLLD
-       AVPOR
-       AVPBLENDD
-       AVINSERTI128
-       AVPERM2I128
-       ARORXL
-       ARORXQ
-       AVADDSD
-       AVBROADCASTSS
-       AVBROADCASTSD
-       AVFMADD213SD
-       AVFMADD231SD
-       AVFNMADD213SD
-       AVFNMADD231SD
-       AVMOVDDUP
-       AVMOVSHDUP
-       AVMOVSLDUP
-       AVSUBSD
-
-       // from 386
-       AJCXZW
-       AFCMOVCC
-       AFCMOVCS
-       AFCMOVEQ
-       AFCMOVHI
-       AFCMOVLS
-       AFCMOVNE
-       AFCMOVNU
-       AFCMOVUN
-       AFCOMI
-       AFCOMIP
-       AFUCOMI
-       AFUCOMIP
-
-       // TSX
-       AXACQUIRE
-       AXRELEASE
-       AXBEGIN
-       AXEND
-       AXABORT
-       AXTEST
-
-       ALAST
-)
-
 const (
        REG_NONE = 0
 )
diff --git a/src/cmd/internal/obj/x86/aenum.go b/src/cmd/internal/obj/x86/aenum.go
new file mode 100644 (file)
index 0000000..c02e1aa
--- /dev/null
@@ -0,0 +1,837 @@
+// Code generated by x86avxgen. DO NOT EDIT.
+
+package x86
+
+import "cmd/internal/obj"
+
+//go:generate go run ../stringer.go -i $GOFILE -o anames.go -p x86
+
+const (
+       AAAA = obj.ABaseAMD64 + obj.A_ARCHSPECIFIC + iota
+       AAAD
+       AAAM
+       AAAS
+       AADCB
+       AADCL
+       AADCW
+       AADDB
+       AADDL
+       AADDW
+       AADJSP
+       AANDB
+       AANDL
+       AANDW
+       AARPL
+       ABOUNDL
+       ABOUNDW
+       ABSFL
+       ABSFW
+       ABSRL
+       ABSRW
+       ABTL
+       ABTW
+       ABTCL
+       ABTCW
+       ABTRL
+       ABTRW
+       ABTSL
+       ABTSW
+       ABYTE
+       ACLC
+       ACLD
+       ACLFLUSH
+       ACLI
+       ACLTS
+       ACMC
+       ACMPB
+       ACMPL
+       ACMPW
+       ACMPSB
+       ACMPSL
+       ACMPSW
+       ADAA
+       ADAS
+       ADECB
+       ADECL
+       ADECQ
+       ADECW
+       ADIVB
+       ADIVL
+       ADIVW
+       AENTER
+       AHADDPD
+       AHADDPS
+       AHLT
+       AHSUBPD
+       AHSUBPS
+       AIDIVB
+       AIDIVL
+       AIDIVW
+       AIMULB
+       AIMULL
+       AIMULW
+       AINB
+       AINL
+       AINW
+       AINCB
+       AINCL
+       AINCQ
+       AINCW
+       AINSB
+       AINSL
+       AINSERTPS
+       AINSW
+       AINT
+       AINTO
+       AIRETL
+       AIRETW
+       AJCC // >= unsigned
+       AJCS // < unsigned
+       AJCXZL
+       AJEQ // == (zero)
+       AJGE // >= signed
+       AJGT // > signed
+       AJHI // > unsigned
+       AJLE // <= signed
+       AJLS // <= unsigned
+       AJLT // < signed
+       AJMI // sign bit set (negative)
+       AJNE // != (nonzero)
+       AJOC // overflow clear
+       AJOS // overflow set
+       AJPC // parity clear
+       AJPL // sign bit clear (positive)
+       AJPS // parity set
+       ALAHF
+       ALARL
+       ALARW
+       ALEAL
+       ALEAW
+       ALEAVEL
+       ALEAVEW
+       ALOCK
+       ALODSB
+       ALODSL
+       ALODSW
+       ALONG
+       ALOOP
+       ALOOPEQ
+       ALOOPNE
+       ALSLL
+       ALSLW
+       AMOVB
+       AMOVL
+       AMOVW
+       AMOVBLSX
+       AMOVBLZX
+       AMOVBQSX
+       AMOVBQZX
+       AMOVBWSX
+       AMOVBWZX
+       AMOVWLSX
+       AMOVWLZX
+       AMOVWQSX
+       AMOVWQZX
+       AMOVSB
+       AMOVSL
+       AMOVSW
+       AMPSADBW
+       AMULB
+       AMULL
+       AMULW
+       ANEGB
+       ANEGL
+       ANEGW
+       ANOTB
+       ANOTL
+       ANOTW
+       AORB
+       AORL
+       AORW
+       AOUTB
+       AOUTL
+       AOUTW
+       AOUTSB
+       AOUTSL
+       AOUTSW
+       APABSB
+       APABSD
+       APABSW
+       APAUSE
+       APOPAL
+       APOPAW
+       APOPCNTW
+       APOPCNTL
+       APOPCNTQ
+       APOPFL
+       APOPFW
+       APOPL
+       APOPW
+       APUSHAL
+       APUSHAW
+       APUSHFL
+       APUSHFW
+       APUSHL
+       APUSHW
+       ARCLB
+       ARCLL
+       ARCLW
+       ARCRB
+       ARCRL
+       ARCRW
+       AREP
+       AREPN
+       AROLB
+       AROLL
+       AROLW
+       ARORB
+       ARORL
+       ARORW
+       ASAHF
+       ASALB
+       ASALL
+       ASALW
+       ASARB
+       ASARL
+       ASARW
+       ASBBB
+       ASBBL
+       ASBBW
+       ASCASB
+       ASCASL
+       ASCASW
+       ASETCC
+       ASETCS
+       ASETEQ
+       ASETGE
+       ASETGT
+       ASETHI
+       ASETLE
+       ASETLS
+       ASETLT
+       ASETMI
+       ASETNE
+       ASETOC
+       ASETOS
+       ASETPC
+       ASETPL
+       ASETPS
+       ACDQ
+       ACWD
+       ASHLB
+       ASHLL
+       ASHLW
+       ASHRB
+       ASHRL
+       ASHRW
+       ASTC
+       ASTD
+       ASTI
+       ASTOSB
+       ASTOSL
+       ASTOSW
+       ASUBB
+       ASUBL
+       ASUBW
+       ASYSCALL
+       ATESTB
+       ATESTL
+       ATESTW
+       AVERR
+       AVERW
+       AWAIT
+       AWORD
+       AXCHGB
+       AXCHGL
+       AXCHGW
+       AXLAT
+       AXORB
+       AXORL
+       AXORW
+
+       AFMOVB
+       AFMOVBP
+       AFMOVD
+       AFMOVDP
+       AFMOVF
+       AFMOVFP
+       AFMOVL
+       AFMOVLP
+       AFMOVV
+       AFMOVVP
+       AFMOVW
+       AFMOVWP
+       AFMOVX
+       AFMOVXP
+
+       AFCOMD
+       AFCOMDP
+       AFCOMDPP
+       AFCOMF
+       AFCOMFP
+       AFCOML
+       AFCOMLP
+       AFCOMW
+       AFCOMWP
+       AFUCOM
+       AFUCOMP
+       AFUCOMPP
+
+       AFADDDP
+       AFADDW
+       AFADDL
+       AFADDF
+       AFADDD
+
+       AFMULDP
+       AFMULW
+       AFMULL
+       AFMULF
+       AFMULD
+
+       AFSUBDP
+       AFSUBW
+       AFSUBL
+       AFSUBF
+       AFSUBD
+
+       AFSUBRDP
+       AFSUBRW
+       AFSUBRL
+       AFSUBRF
+       AFSUBRD
+
+       AFDIVDP
+       AFDIVW
+       AFDIVL
+       AFDIVF
+       AFDIVD
+
+       AFDIVRDP
+       AFDIVRW
+       AFDIVRL
+       AFDIVRF
+       AFDIVRD
+
+       AFXCHD
+       AFFREE
+
+       AFLDCW
+       AFLDENV
+       AFRSTOR
+       AFSAVE
+       AFSTCW
+       AFSTENV
+       AFSTSW
+
+       AF2XM1
+       AFABS
+       AFCHS
+       AFCLEX
+       AFCOS
+       AFDECSTP
+       AFINCSTP
+       AFINIT
+       AFLD1
+       AFLDL2E
+       AFLDL2T
+       AFLDLG2
+       AFLDLN2
+       AFLDPI
+       AFLDZ
+       AFNOP
+       AFPATAN
+       AFPREM
+       AFPREM1
+       AFPTAN
+       AFRNDINT
+       AFSCALE
+       AFSIN
+       AFSINCOS
+       AFSQRT
+       AFTST
+       AFXAM
+       AFXTRACT
+       AFYL2X
+       AFYL2XP1
+
+       ACMPXCHGB
+       ACMPXCHGL
+       ACMPXCHGW
+       ACMPXCHG8B
+       ACPUID
+       AINVD
+       AINVLPG
+       ALFENCE
+       AMFENCE
+       AMOVNTIL
+       ARDMSR
+       ARDPMC
+       ARDTSC
+       ARSM
+       ASFENCE
+       ASYSRET
+       AWBINVD
+       AWRMSR
+       AXADDB
+       AXADDL
+       AXADDW
+
+       ACMOVLCC
+       ACMOVLCS
+       ACMOVLEQ
+       ACMOVLGE
+       ACMOVLGT
+       ACMOVLHI
+       ACMOVLLE
+       ACMOVLLS
+       ACMOVLLT
+       ACMOVLMI
+       ACMOVLNE
+       ACMOVLOC
+       ACMOVLOS
+       ACMOVLPC
+       ACMOVLPL
+       ACMOVLPS
+       ACMOVQCC
+       ACMOVQCS
+       ACMOVQEQ
+       ACMOVQGE
+       ACMOVQGT
+       ACMOVQHI
+       ACMOVQLE
+       ACMOVQLS
+       ACMOVQLT
+       ACMOVQMI
+       ACMOVQNE
+       ACMOVQOC
+       ACMOVQOS
+       ACMOVQPC
+       ACMOVQPL
+       ACMOVQPS
+       ACMOVWCC
+       ACMOVWCS
+       ACMOVWEQ
+       ACMOVWGE
+       ACMOVWGT
+       ACMOVWHI
+       ACMOVWLE
+       ACMOVWLS
+       ACMOVWLT
+       ACMOVWMI
+       ACMOVWNE
+       ACMOVWOC
+       ACMOVWOS
+       ACMOVWPC
+       ACMOVWPL
+       ACMOVWPS
+
+       AADCQ
+       AADDQ
+       AANDQ
+       ABSFQ
+       ABSRQ
+       ABTCQ
+       ABTQ
+       ABTRQ
+       ABTSQ
+       ACMPQ
+       ACMPSQ
+       ACMPXCHGQ
+       ACQO
+       ADIVQ
+       AIDIVQ
+       AIMULQ
+       AIRETQ
+       AJCXZQ
+       ALEAQ
+       ALEAVEQ
+       ALODSQ
+       AMOVQ
+       AMOVLQSX
+       AMOVLQZX
+       AMOVNTIQ
+       AMOVSQ
+       AMULQ
+       ANEGQ
+       ANOTQ
+       AORQ
+       APOPFQ
+       APOPQ
+       APUSHFQ
+       APUSHQ
+       ARCLQ
+       ARCRQ
+       AROLQ
+       ARORQ
+       AQUAD
+       ASALQ
+       ASARQ
+       ASBBQ
+       ASCASQ
+       ASHLQ
+       ASHRQ
+       ASTOSQ
+       ASUBQ
+       ATESTQ
+       AXADDQ
+       AXCHGQ
+       AXORQ
+       AXGETBV
+
+       AADDPD
+       AADDPS
+       AADDSD
+       AADDSS
+       AADDSUBPD
+       AADDSUBPS
+       AANDNL
+       AANDNQ
+       AANDNPD
+       AANDNPS
+       AANDPD
+       AANDPS
+       ABEXTRL
+       ABEXTRQ
+       ABLENDPD
+       ABLENDPS
+       ABLSIL
+       ABLSIQ
+       ABLSMSKL
+       ABLSMSKQ
+       ABLSRL
+       ABLSRQ
+       ABZHIL
+       ABZHIQ
+       ACMPPD
+       ACMPPS
+       ACMPSD
+       ACMPSS
+       ACOMISD
+       ACOMISS
+       ACVTPD2PL
+       ACVTPD2PS
+       ACVTPL2PD
+       ACVTPL2PS
+       ACVTPS2PD
+       ACVTPS2PL
+       ACVTSD2SL
+       ACVTSD2SQ
+       ACVTSD2SS
+       ACVTSL2SD
+       ACVTSL2SS
+       ACVTSQ2SD
+       ACVTSQ2SS
+       ACVTSS2SD
+       ACVTSS2SL
+       ACVTSS2SQ
+       ACVTTPD2PL
+       ACVTTPS2PL
+       ACVTTSD2SL
+       ACVTTSD2SQ
+       ACVTTSS2SL
+       ACVTTSS2SQ
+       ADIVPD
+       ADIVPS
+       ADIVSD
+       ADIVSS
+       ADPPD
+       ADPPS
+       AEMMS
+       AEXTRACTPS
+       AFXRSTOR
+       AFXRSTOR64
+       AFXSAVE
+       AFXSAVE64
+       ALDDQU
+       ALDMXCSR
+       AMASKMOVOU
+       AMASKMOVQ
+       AMAXPD
+       AMAXPS
+       AMAXSD
+       AMAXSS
+       AMINPD
+       AMINPS
+       AMINSD
+       AMINSS
+       AMOVAPD
+       AMOVAPS
+       AMOVOU
+       AMOVHLPS
+       AMOVHPD
+       AMOVHPS
+       AMOVLHPS
+       AMOVLPD
+       AMOVLPS
+       AMOVMSKPD
+       AMOVMSKPS
+       AMOVNTO
+       AMOVNTDQA
+       AMOVNTPD
+       AMOVNTPS
+       AMOVNTQ
+       AMOVO
+       AMOVQOZX
+       AMOVSD
+       AMOVSS
+       AMOVUPD
+       AMOVUPS
+       AMULPD
+       AMULPS
+       AMULSD
+       AMULSS
+       AMULXL
+       AMULXQ
+       AORPD
+       AORPS
+       APACKSSLW
+       APACKSSWB
+       APACKUSDW
+       APACKUSWB
+       APADDB
+       APADDL
+       APADDQ
+       APADDSB
+       APADDSW
+       APADDUSB
+       APADDUSW
+       APADDW
+       APALIGNR
+       APAND
+       APANDN
+       APAVGB
+       APAVGW
+       APBLENDW
+       APCMPEQB
+       APCMPEQL
+       APCMPEQQ
+       APCMPEQW
+       APCMPGTB
+       APCMPGTL
+       APCMPGTQ
+       APCMPGTW
+       APCMPISTRI
+       APCMPISTRM
+       APDEPL
+       APDEPQ
+       APEXTL
+       APEXTQ
+       APEXTRB
+       APEXTRD
+       APEXTRQ
+       APEXTRW
+       APHADDD
+       APHADDSW
+       APHADDW
+       APHMINPOSUW
+       APHSUBD
+       APHSUBSW
+       APHSUBW
+       APINSRB
+       APINSRD
+       APINSRQ
+       APINSRW
+       APMADDUBSW
+       APMADDWL
+       APMAXSB
+       APMAXSD
+       APMAXSW
+       APMAXUB
+       APMAXUD
+       APMAXUW
+       APMINSB
+       APMINSD
+       APMINSW
+       APMINUB
+       APMINUD
+       APMINUW
+       APMOVMSKB
+       APMOVSXBD
+       APMOVSXBQ
+       APMOVSXBW
+       APMOVSXDQ
+       APMOVSXWD
+       APMOVSXWQ
+       APMOVZXBD
+       APMOVZXBQ
+       APMOVZXBW
+       APMOVZXDQ
+       APMOVZXWD
+       APMOVZXWQ
+       APMULDQ
+       APMULHRSW
+       APMULHUW
+       APMULHW
+       APMULLD
+       APMULLW
+       APMULULQ
+       APOR
+       APSADBW
+       APSHUFB
+       APSHUFHW
+       APSHUFL
+       APSHUFLW
+       APSHUFW
+       APSIGNB
+       APSIGND
+       APSIGNW
+       APSLLL
+       APSLLO
+       APSLLQ
+       APSLLW
+       APSRAL
+       APSRAW
+       APSRLL
+       APSRLO
+       APSRLQ
+       APSRLW
+       APSUBB
+       APSUBL
+       APSUBQ
+       APSUBSB
+       APSUBSW
+       APSUBUSB
+       APSUBUSW
+       APSUBW
+       APTEST
+       APUNPCKHBW
+       APUNPCKHLQ
+       APUNPCKHQDQ
+       APUNPCKHWL
+       APUNPCKLBW
+       APUNPCKLLQ
+       APUNPCKLQDQ
+       APUNPCKLWL
+       APXOR
+       ARCPPS
+       ARCPSS
+       ARSQRTPS
+       ARSQRTSS
+       ASARXL
+       ASARXQ
+       ASHLXL
+       ASHLXQ
+       ASHRXL
+       ASHRXQ
+       ASHUFPD
+       ASHUFPS
+       ASQRTPD
+       ASQRTPS
+       ASQRTSD
+       ASQRTSS
+       ASTMXCSR
+       ASUBPD
+       ASUBPS
+       ASUBSD
+       ASUBSS
+       AUCOMISD
+       AUCOMISS
+       AUNPCKHPD
+       AUNPCKHPS
+       AUNPCKLPD
+       AUNPCKLPS
+       AXORPD
+       AXORPS
+       APCMPESTRI
+       APCMPESTRM
+
+       ARETFW
+       ARETFL
+       ARETFQ
+       ASWAPGS
+
+       ACRC32B
+       ACRC32Q
+       AIMUL3Q
+
+       APREFETCHT0
+       APREFETCHT1
+       APREFETCHT2
+       APREFETCHNTA
+
+       AMOVQL
+       ABSWAPL
+       ABSWAPQ
+
+       AAESENC
+       AAESENCLAST
+       AAESDEC
+       AAESDECLAST
+       AAESIMC
+       AAESKEYGENASSIST
+
+       AROUNDPS
+       AROUNDSS
+       AROUNDPD
+       AROUNDSD
+       AMOVDDUP
+       AMOVSHDUP
+       AMOVSLDUP
+
+       APSHUFD
+       APCLMULQDQ
+
+       AVZEROUPPER
+       AVMOVDQU
+       AVMOVNTDQ
+       AVMOVDQA
+       AVPCMPEQB
+       AVPXOR
+       AVPMOVMSKB
+       AVPAND
+       AVPTEST
+       AVPBROADCASTB
+       AVPSHUFB
+       AVPSHUFD
+       AVPERM2F128
+       AVPALIGNR
+       AVPADDQ
+       AVPADDD
+       AVPSRLDQ
+       AVPSLLDQ
+       AVPSRLQ
+       AVPSLLQ
+       AVPSRLD
+       AVPSLLD
+       AVPOR
+       AVPBLENDD
+       AVINSERTI128
+       AVPERM2I128
+       ARORXL
+       ARORXQ
+       AVADDSD
+       AVBROADCASTSS
+       AVBROADCASTSD
+       AVFMADD213SD
+       AVFMADD231SD
+       AVFNMADD213SD
+       AVFNMADD231SD
+       AVMOVDDUP
+       AVMOVSHDUP
+       AVMOVSLDUP
+       AVSUBSD
+
+       AJCXZW
+       AFCMOVCC
+       AFCMOVCS
+       AFCMOVEQ
+       AFCMOVHI
+       AFCMOVLS
+       AFCMOVNE
+       AFCMOVNU
+       AFCMOVUN
+       AFCOMI
+       AFCOMIP
+       AFUCOMI
+       AFUCOMIP
+
+       AXACQUIRE
+       AXRELEASE
+       AXBEGIN
+       AXEND
+       AXABORT
+       AXTEST
+
+       ALAST
+)
index 272dab66b16ff85c69f9522d1a016f12b3caf722..c12729fcab0cf309d49bf1d586f4f5290ebf6a1a 100644 (file)
@@ -1,4 +1,4 @@
-// Generated by stringer -i a.out.go -o anames.go -p x86
+// Generated by stringer -i aenum.go -o anames.go -p x86
 // Do not edit.
 
 package x86
index 56106955d2a5fa083661ba6c3fa0488f81006116..e0c03ea5b67881fc4cc0021c1c6bd1d4d96d9b9b 100644 (file)
@@ -1683,67 +1683,8 @@ var optab =
        {AMOVSHDUP, yxm, Pf3, [23]uint8{0x16}},
        {AMOVSLDUP, yxm, Pf3, [23]uint8{0x12}},
 
-       {AANDNL, yvex_r3, Pvex, [23]uint8{VEX_NDS_LZ_0F38_W0, 0xF2}},
-       {AANDNQ, yvex_r3, Pvex, [23]uint8{VEX_NDS_LZ_0F38_W1, 0xF2}},
-       {ABEXTRL, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_0F38_W0, 0xF7}},
-       {ABEXTRQ, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_0F38_W1, 0xF7}},
        {ABLENDPD, yxshuf, Pq, [23]uint8{0x3a, 0x0d, 0}},
        {ABLENDPS, yxshuf, Pq, [23]uint8{0x3a, 0x0c, 0}},
-       {ABZHIL, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_0F38_W0, 0xF5}},
-       {ABZHIQ, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_0F38_W1, 0xF5}},
-       {AMULXL, yvex_r3, Pvex, [23]uint8{VEX_NDD_LZ_F2_0F38_W0, 0xF6}},
-       {AMULXQ, yvex_r3, Pvex, [23]uint8{VEX_NDD_LZ_F2_0F38_W1, 0xF6}},
-       {APDEPL, yvex_r3, Pvex, [23]uint8{VEX_NDS_LZ_F2_0F38_W0, 0xF5}},
-       {APDEPQ, yvex_r3, Pvex, [23]uint8{VEX_NDS_LZ_F2_0F38_W1, 0xF5}},
-       {APEXTL, yvex_r3, Pvex, [23]uint8{VEX_NDS_LZ_F3_0F38_W0, 0xF5}},
-       {APEXTQ, yvex_r3, Pvex, [23]uint8{VEX_NDS_LZ_F3_0F38_W1, 0xF5}},
-       {ASARXL, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_F3_0F38_W0, 0xF7}},
-       {ASARXQ, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_F3_0F38_W1, 0xF7}},
-       {ASHLXL, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_66_0F38_W0, 0xF7}},
-       {ASHLXQ, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_66_0F38_W1, 0xF7}},
-       {ASHRXL, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_F2_0F38_W0, 0xF7}},
-       {ASHRXQ, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_F2_0F38_W1, 0xF7}},
-
-       {AVZEROUPPER, ynone, Px, [23]uint8{0xc5, 0xf8, 0x77}},
-       {AVMOVDQU, yvex_vmovdqa, Pvex, [23]uint8{VEX_NOVSR_128_F3_0F_WIG, 0x6F, VEX_NOVSR_128_F3_0F_WIG, 0x7F, VEX_NOVSR_256_F3_0F_WIG, 0x6F, VEX_NOVSR_256_F3_0F_WIG, 0x7F}},
-       {AVMOVDQA, yvex_vmovdqa, Pvex, [23]uint8{VEX_NOVSR_128_66_0F_WIG, 0x6F, VEX_NOVSR_128_66_0F_WIG, 0x7F, VEX_NOVSR_256_66_0F_WIG, 0x6F, VEX_NOVSR_256_66_0F_WIG, 0x7F}},
-       {AVMOVNTDQ, yvex_vmovntdq, Pvex, [23]uint8{VEX_NOVSR_128_66_0F_WIG, 0xE7, VEX_NOVSR_256_66_0F_WIG, 0xE7}},
-       {AVPCMPEQB, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0x74, VEX_NDS_256_66_0F_WIG, 0x74}},
-       {AVPXOR, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0xEF, VEX_NDS_256_66_0F_WIG, 0xEF}},
-       {AVPMOVMSKB, yvex_xyr2, Pvex, [23]uint8{VEX_NOVSR_128_66_0F_WIG, 0xD7, VEX_NOVSR_256_66_0F_WIG, 0xD7}},
-       {AVPAND, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0xDB, VEX_NDS_256_66_0F_WIG, 0xDB}},
-       {AVPBROADCASTB, yvex_vpbroadcast, Pvex, [23]uint8{VEX_NOVSR_128_66_0F38_W0, 0x78, VEX_NOVSR_256_66_0F38_W0, 0x78}},
-       {AVPTEST, yvex_xy2, Pvex, [23]uint8{VEX_NOVSR_128_66_0F38_WIG, 0x17, VEX_NOVSR_256_66_0F38_WIG, 0x17}},
-       {AVPSHUFB, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F38_WIG, 0x00, VEX_NDS_256_66_0F38_WIG, 0x00}},
-       {AVPSHUFD, yvex_xyi3, Pvex, [23]uint8{VEX_NOVSR_128_66_0F_WIG, 0x70, VEX_NOVSR_256_66_0F_WIG, 0x70, VEX_NOVSR_128_66_0F_WIG, 0x70, VEX_NOVSR_256_66_0F_WIG, 0x70}},
-       {AVPOR, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0xeb, VEX_NDS_256_66_0F_WIG, 0xeb}},
-       {AVPADDQ, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0xd4, VEX_NDS_256_66_0F_WIG, 0xd4}},
-       {AVPADDD, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0xfe, VEX_NDS_256_66_0F_WIG, 0xfe}},
-       {AVADDSD, yvex_x3, Pvex, [23]uint8{VEX_NDS_128_F2_0F_WIG, 0x58}},
-       {AVSUBSD, yvex_x3, Pvex, [23]uint8{VEX_NDS_128_F2_0F_WIG, 0x5c}},
-       {AVFMADD213SD, yvex_x3, Pvex, [23]uint8{VEX_DDS_LIG_66_0F38_W1, 0xa9}},
-       {AVFMADD231SD, yvex_x3, Pvex, [23]uint8{VEX_DDS_LIG_66_0F38_W1, 0xb9}},
-       {AVFNMADD213SD, yvex_x3, Pvex, [23]uint8{VEX_DDS_LIG_66_0F38_W1, 0xad}},
-       {AVFNMADD231SD, yvex_x3, Pvex, [23]uint8{VEX_DDS_LIG_66_0F38_W1, 0xbd}},
-       {AVPSLLD, yvex_shift, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0x72, 0xf0, VEX_NDS_256_66_0F_WIG, 0x72, 0xf0, VEX_NDD_128_66_0F_WIG, 0xf2, VEX_NDD_256_66_0F_WIG, 0xf2}},
-       {AVPSLLQ, yvex_shift, Pvex, [23]uint8{VEX_NDD_128_66_0F_WIG, 0x73, 0xf0, VEX_NDD_256_66_0F_WIG, 0x73, 0xf0, VEX_NDS_128_66_0F_WIG, 0xf3, VEX_NDS_256_66_0F_WIG, 0xf3}},
-       {AVPSRLD, yvex_shift, Pvex, [23]uint8{VEX_NDD_128_66_0F_WIG, 0x72, 0xd0, VEX_NDD_256_66_0F_WIG, 0x72, 0xd0, VEX_NDD_128_66_0F_WIG, 0xd2, VEX_NDD_256_66_0F_WIG, 0xd2}},
-       {AVPSRLQ, yvex_shift, Pvex, [23]uint8{VEX_NDD_128_66_0F_WIG, 0x73, 0xd0, VEX_NDD_256_66_0F_WIG, 0x73, 0xd0, VEX_NDS_128_66_0F_WIG, 0xd3, VEX_NDS_256_66_0F_WIG, 0xd3}},
-       {AVPSRLDQ, yvex_shift_dq, Pvex, [23]uint8{VEX_NDD_128_66_0F_WIG, 0x73, 0xd8, VEX_NDD_256_66_0F_WIG, 0x73, 0xd8}},
-       {AVPSLLDQ, yvex_shift_dq, Pvex, [23]uint8{VEX_NDD_128_66_0F_WIG, 0x73, 0xf8, VEX_NDD_256_66_0F_WIG, 0x73, 0xf8}},
-       {AVPERM2F128, yvex_yyi4, Pvex, [23]uint8{VEX_NDS_256_66_0F3A_W0, 0x06}},
-       {AVPALIGNR, yvex_yyi4, Pvex, [23]uint8{VEX_NDS_256_66_0F3A_WIG, 0x0f}},
-       {AVPBLENDD, yvex_yyi4, Pvex, [23]uint8{VEX_NDS_256_66_0F3A_WIG, 0x02}},
-       {AVINSERTI128, yvex_xyi4, Pvex, [23]uint8{VEX_NDS_256_66_0F3A_WIG, 0x38}},
-       {AVPERM2I128, yvex_yyi4, Pvex, [23]uint8{VEX_NDS_256_66_0F3A_WIG, 0x46}},
-       {ARORXL, yvex_ri3, Pvex, [23]uint8{VEX_NOVSR_LZ_F2_0F3A_W0, 0xf0}},
-       {ARORXQ, yvex_ri3, Pvex, [23]uint8{VEX_NOVSR_LZ_F2_0F3A_W1, 0xf0}},
-       {AVBROADCASTSD, yvex_vpbroadcast_sd, Pvex, [23]uint8{VEX_NOVSR_256_66_0F38_W0, 0x19}},
-       {AVBROADCASTSS, yvex_vpbroadcast, Pvex, [23]uint8{VEX_NOVSR_128_66_0F38_W0, 0x18, VEX_NOVSR_256_66_0F38_W0, 0x18}},
-       {AVMOVDDUP, yvex_xy2, Pvex, [23]uint8{VEX_NOVSR_128_F2_0F_WIG, 0x12, VEX_NOVSR_256_F2_0F_WIG, 0x12}},
-       {AVMOVSHDUP, yvex_xy2, Pvex, [23]uint8{VEX_NOVSR_128_F3_0F_WIG, 0x16, VEX_NOVSR_256_F3_0F_WIG, 0x16}},
-       {AVMOVSLDUP, yvex_xy2, Pvex, [23]uint8{VEX_NOVSR_128_F3_0F_WIG, 0x12, VEX_NOVSR_256_F3_0F_WIG, 0x12}},
-
        {AXACQUIRE, ynone, Px, [23]uint8{0xf2}},
        {AXRELEASE, ynone, Px, [23]uint8{0xf3}},
        {AXBEGIN, yxbegin, Px, [23]uint8{0xc7, 0xf8}},
@@ -2032,6 +1973,13 @@ func instinit(ctxt *obj.Link) {
                deferreturn = ctxt.Lookup("runtime.deferreturn")
        }
 
+       for i := range vexOptab {
+               c := vexOptab[i].as
+               if opindex[c&obj.AMask] != nil {
+                       ctxt.Diag("phase error in vexOptab: %d (%v)", i, c)
+               }
+               opindex[c&obj.AMask] = &vexOptab[i]
+       }
        for i := 1; optab[i].as != 0; i++ {
                c := optab[i].as
                if opindex[c&obj.AMask] != nil {
diff --git a/src/cmd/internal/obj/x86/vex_optabs.go b/src/cmd/internal/obj/x86/vex_optabs.go
new file mode 100644 (file)
index 0000000..b4f5922
--- /dev/null
@@ -0,0 +1,61 @@
+package x86
+
+var vexOptab = []Optab{
+       {AANDNL, yvex_r3, Pvex, [23]uint8{VEX_NDS_LZ_0F38_W0, 0xF2}},
+       {AANDNQ, yvex_r3, Pvex, [23]uint8{VEX_NDS_LZ_0F38_W1, 0xF2}},
+       {ABEXTRL, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_0F38_W0, 0xF7}},
+       {ABEXTRQ, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_0F38_W1, 0xF7}},
+       {ABZHIL, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_0F38_W0, 0xF5}},
+       {ABZHIQ, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_0F38_W1, 0xF5}},
+       {AMULXL, yvex_r3, Pvex, [23]uint8{VEX_NDD_LZ_F2_0F38_W0, 0xF6}},
+       {AMULXQ, yvex_r3, Pvex, [23]uint8{VEX_NDD_LZ_F2_0F38_W1, 0xF6}},
+       {APDEPL, yvex_r3, Pvex, [23]uint8{VEX_NDS_LZ_F2_0F38_W0, 0xF5}},
+       {APDEPQ, yvex_r3, Pvex, [23]uint8{VEX_NDS_LZ_F2_0F38_W1, 0xF5}},
+       {APEXTL, yvex_r3, Pvex, [23]uint8{VEX_NDS_LZ_F3_0F38_W0, 0xF5}},
+       {APEXTQ, yvex_r3, Pvex, [23]uint8{VEX_NDS_LZ_F3_0F38_W1, 0xF5}},
+       {ASARXL, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_F3_0F38_W0, 0xF7}},
+       {ASARXQ, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_F3_0F38_W1, 0xF7}},
+       {ASHLXL, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_66_0F38_W0, 0xF7}},
+       {ASHLXQ, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_66_0F38_W1, 0xF7}},
+       {ASHRXL, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_F2_0F38_W0, 0xF7}},
+       {ASHRXQ, yvex_vmr3, Pvex, [23]uint8{VEX_NDS_LZ_F2_0F38_W1, 0xF7}},
+       {AVZEROUPPER, ynone, Px, [23]uint8{0xc5, 0xf8, 0x77}},
+       {AVMOVDQU, yvex_vmovdqa, Pvex, [23]uint8{VEX_NOVSR_128_F3_0F_WIG, 0x6F, VEX_NOVSR_128_F3_0F_WIG, 0x7F, VEX_NOVSR_256_F3_0F_WIG, 0x6F, VEX_NOVSR_256_F3_0F_WIG, 0x7F}},
+       {AVMOVDQA, yvex_vmovdqa, Pvex, [23]uint8{VEX_NOVSR_128_66_0F_WIG, 0x6F, VEX_NOVSR_128_66_0F_WIG, 0x7F, VEX_NOVSR_256_66_0F_WIG, 0x6F, VEX_NOVSR_256_66_0F_WIG, 0x7F}},
+       {AVMOVNTDQ, yvex_vmovntdq, Pvex, [23]uint8{VEX_NOVSR_128_66_0F_WIG, 0xE7, VEX_NOVSR_256_66_0F_WIG, 0xE7}},
+       {AVPCMPEQB, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0x74, VEX_NDS_256_66_0F_WIG, 0x74}},
+       {AVPXOR, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0xEF, VEX_NDS_256_66_0F_WIG, 0xEF}},
+       {AVPMOVMSKB, yvex_xyr2, Pvex, [23]uint8{VEX_NOVSR_128_66_0F_WIG, 0xD7, VEX_NOVSR_256_66_0F_WIG, 0xD7}},
+       {AVPAND, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0xDB, VEX_NDS_256_66_0F_WIG, 0xDB}},
+       {AVPBROADCASTB, yvex_vpbroadcast, Pvex, [23]uint8{VEX_NOVSR_128_66_0F38_W0, 0x78, VEX_NOVSR_256_66_0F38_W0, 0x78}},
+       {AVPTEST, yvex_xy2, Pvex, [23]uint8{VEX_NOVSR_128_66_0F38_WIG, 0x17, VEX_NOVSR_256_66_0F38_WIG, 0x17}},
+       {AVPSHUFB, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F38_WIG, 0x00, VEX_NDS_256_66_0F38_WIG, 0x00}},
+       {AVPSHUFD, yvex_xyi3, Pvex, [23]uint8{VEX_NOVSR_128_66_0F_WIG, 0x70, VEX_NOVSR_256_66_0F_WIG, 0x70, VEX_NOVSR_128_66_0F_WIG, 0x70, VEX_NOVSR_256_66_0F_WIG, 0x70}},
+       {AVPOR, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0xeb, VEX_NDS_256_66_0F_WIG, 0xeb}},
+       {AVPADDQ, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0xd4, VEX_NDS_256_66_0F_WIG, 0xd4}},
+       {AVPADDD, yvex_xy3, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0xfe, VEX_NDS_256_66_0F_WIG, 0xfe}},
+       {AVADDSD, yvex_x3, Pvex, [23]uint8{VEX_NDS_128_F2_0F_WIG, 0x58}},
+       {AVSUBSD, yvex_x3, Pvex, [23]uint8{VEX_NDS_128_F2_0F_WIG, 0x5c}},
+       {AVFMADD213SD, yvex_x3, Pvex, [23]uint8{VEX_DDS_LIG_66_0F38_W1, 0xa9}},
+       {AVFMADD231SD, yvex_x3, Pvex, [23]uint8{VEX_DDS_LIG_66_0F38_W1, 0xb9}},
+       {AVFNMADD213SD, yvex_x3, Pvex, [23]uint8{VEX_DDS_LIG_66_0F38_W1, 0xad}},
+       {AVFNMADD231SD, yvex_x3, Pvex, [23]uint8{VEX_DDS_LIG_66_0F38_W1, 0xbd}},
+       {AVPSLLD, yvex_shift, Pvex, [23]uint8{VEX_NDS_128_66_0F_WIG, 0x72, 0xf0, VEX_NDS_256_66_0F_WIG, 0x72, 0xf0, VEX_NDD_128_66_0F_WIG, 0xf2, VEX_NDD_256_66_0F_WIG, 0xf2}},
+       {AVPSLLQ, yvex_shift, Pvex, [23]uint8{VEX_NDD_128_66_0F_WIG, 0x73, 0xf0, VEX_NDD_256_66_0F_WIG, 0x73, 0xf0, VEX_NDS_128_66_0F_WIG, 0xf3, VEX_NDS_256_66_0F_WIG, 0xf3}},
+       {AVPSRLD, yvex_shift, Pvex, [23]uint8{VEX_NDD_128_66_0F_WIG, 0x72, 0xd0, VEX_NDD_256_66_0F_WIG, 0x72, 0xd0, VEX_NDD_128_66_0F_WIG, 0xd2, VEX_NDD_256_66_0F_WIG, 0xd2}},
+       {AVPSRLQ, yvex_shift, Pvex, [23]uint8{VEX_NDD_128_66_0F_WIG, 0x73, 0xd0, VEX_NDD_256_66_0F_WIG, 0x73, 0xd0, VEX_NDS_128_66_0F_WIG, 0xd3, VEX_NDS_256_66_0F_WIG, 0xd3}},
+       {AVPSRLDQ, yvex_shift_dq, Pvex, [23]uint8{VEX_NDD_128_66_0F_WIG, 0x73, 0xd8, VEX_NDD_256_66_0F_WIG, 0x73, 0xd8}},
+       {AVPSLLDQ, yvex_shift_dq, Pvex, [23]uint8{VEX_NDD_128_66_0F_WIG, 0x73, 0xf8, VEX_NDD_256_66_0F_WIG, 0x73, 0xf8}},
+       {AVPERM2F128, yvex_yyi4, Pvex, [23]uint8{VEX_NDS_256_66_0F3A_W0, 0x06}},
+       {AVPALIGNR, yvex_yyi4, Pvex, [23]uint8{VEX_NDS_256_66_0F3A_WIG, 0x0f}},
+       {AVPBLENDD, yvex_yyi4, Pvex, [23]uint8{VEX_NDS_256_66_0F3A_WIG, 0x02}},
+       {AVINSERTI128, yvex_xyi4, Pvex, [23]uint8{VEX_NDS_256_66_0F3A_WIG, 0x38}},
+       {AVPERM2I128, yvex_yyi4, Pvex, [23]uint8{VEX_NDS_256_66_0F3A_WIG, 0x46}},
+       {ARORXL, yvex_ri3, Pvex, [23]uint8{VEX_NOVSR_LZ_F2_0F3A_W0, 0xf0}},
+       {ARORXQ, yvex_ri3, Pvex, [23]uint8{VEX_NOVSR_LZ_F2_0F3A_W1, 0xf0}},
+       {AVBROADCASTSD, yvex_vpbroadcast_sd, Pvex, [23]uint8{VEX_NOVSR_256_66_0F38_W0, 0x19}},
+       {AVBROADCASTSS, yvex_vpbroadcast, Pvex, [23]uint8{VEX_NOVSR_128_66_0F38_W0, 0x18, VEX_NOVSR_256_66_0F38_W0, 0x18}},
+       {AVMOVDDUP, yvex_xy2, Pvex, [23]uint8{VEX_NOVSR_128_F2_0F_WIG, 0x12, VEX_NOVSR_256_F2_0F_WIG, 0x12}},
+       {AVMOVSHDUP, yvex_xy2, Pvex, [23]uint8{VEX_NOVSR_128_F3_0F_WIG, 0x16, VEX_NOVSR_256_F3_0F_WIG, 0x16}},
+       {AVMOVSLDUP, yvex_xy2, Pvex, [23]uint8{VEX_NOVSR_128_F3_0F_WIG, 0x12, VEX_NOVSR_256_F3_0F_WIG, 0x12}},
+}