Commit b80b4a23 authored by isharipo's avatar isharipo Committed by Brad Fitzpatrick

cmd/internal/obj/x86: add missing legacy insts

Minimizes the amount of "TODO" stuff in test suite
of cmd/asm/internal/asm/testdata/amd64enc.s.

Some instructions were already implemented, but
test cases for them were commented-out.

Does not enable MMX instructions, calls/jumps and some
segment registers instructions.

-- Affected instructions --
BLENDVPD, BLENDVPS
BSWAPW
CBW
CDQE
CLAC
CLFLUSHOPT
CMPXCHG16B
CRC32B, CRC32L, CRC32W
CWDE
FBLD
FBSTP
FCMOVB
FCMOVBE
FCMOVE
FCMOVNB
FCMOVNBE
FCMOVU
FCOMI
FCOMIP
IMUL3L, IMUL3Q, IMUL3W
ICEBP, INT
INVPCID
LARQ
LGDT, LIDT, LLDT
LMSW
LTR
LZCNTL, LZCNTQ, LZCNTW
MONITOR
MOVBELL, MOVBEQQ, MOVBEWW
MOVBQZX
MOVQ
MOVSWW, MOVZWW
MWAIT
NOPL, NOPW
PBLENDVB
PEXTRW
RDPKRU
RDRANDL, RDRANDQ, RDRANDW
RDSEEDL, RDSEEDQ, RDSEEDW
RDTSCP
SAHF
SGDT, SIDT
SLDTL, SLDTQ, SLDTW
SMSWL, SMSWQ, SMSWW
STAC
STRL, STRQ, STRW
SYSENTER, SYSENTER64
SYSEXIT, SYSEXIT64
SHA256RNDS2
TZCNTL, TZCNTQ, TZCNTW
UD1, UD2
WRPKRU
XRSTOR, XRSTOR64
XRSTORS, XRSTORS64
XSAVE, XSAVE64
XSAVEC, XSAVEC64
XSAVEOPT, XSAVEOPT64
XSAVES, XSAVES64
XSETBV

Fixes #6739

Change-Id: I8b125d9a5ea39bb4b9da7e66a63a16f609cef376
Reviewed-on: https://go-review.googlesource.com/97235
Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarKeith Randall <khr@golang.org>
parent c55505ba
...@@ -235,5 +235,63 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0 ...@@ -235,5 +235,63 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
VPGATHERQQ Y0, 512(R13)(Y1*1), Y2 // c4c2fd91940d00020000 VPGATHERQQ Y0, 512(R13)(Y1*1), Y2 // c4c2fd91940d00020000
// Test low-8 register for /is4 "hr" operand. // Test low-8 register for /is4 "hr" operand.
VPBLENDVB X0, (BX), X1, X2 // c4e3714c1300 VPBLENDVB X0, (BX), X1, X2 // c4e3714c1300
// <XMM0>/Yxr0 tests.
SHA256RNDS2 X0, (BX), X2 // 0f38cb13
SHA256RNDS2 X0, (R11), X2 // 410f38cb13
SHA256RNDS2 X0, X2, X2 // 0f38cbd2
SHA256RNDS2 X0, X11, X2 // 410f38cbd3
SHA256RNDS2 X0, (BX), X11 // 440f38cb1b
SHA256RNDS2 X0, (R11), X11 // 450f38cb1b
SHA256RNDS2 X0, X2, X11 // 440f38cbda
SHA256RNDS2 X0, X11, X11 // 450f38cbdb
// Rest SHA instructions tests.
SHA1MSG1 (BX), X2 // 0f38c913
SHA1MSG1 (R11), X2 // 410f38c913
SHA1MSG1 X2, X2 // 0f38c9d2
SHA1MSG1 X11, X2 // 410f38c9d3
SHA1MSG1 (BX), X11 // 440f38c91b
SHA1MSG1 (R11), X11 // 450f38c91b
SHA1MSG1 X2, X11 // 440f38c9da
SHA1MSG1 X11, X11 // 450f38c9db
SHA1MSG2 (BX), X2 // 0f38ca13
SHA1MSG2 (R11), X2 // 410f38ca13
SHA1MSG2 X2, X2 // 0f38cad2
SHA1MSG2 X11, X2 // 410f38cad3
SHA1MSG2 (BX), X11 // 440f38ca1b
SHA1MSG2 (R11), X11 // 450f38ca1b
SHA1MSG2 X2, X11 // 440f38cada
SHA1MSG2 X11, X11 // 450f38cadb
SHA1NEXTE (BX), X2 // 0f38c813
SHA1NEXTE (R11), X2 // 410f38c813
SHA1NEXTE X2, X2 // 0f38c8d2
SHA1NEXTE X11, X2 // 410f38c8d3
SHA1NEXTE (BX), X11 // 440f38c81b
SHA1NEXTE (R11), X11 // 450f38c81b
SHA1NEXTE X2, X11 // 440f38c8da
SHA1NEXTE X11, X11 // 450f38c8db
SHA1RNDS4 $0, (BX), X2 // 0f3acc1300
SHA1RNDS4 $0, (R11), X2 // 410f3acc1300
SHA1RNDS4 $1, X2, X2 // 0f3accd201
SHA1RNDS4 $1, X11, X2 // 410f3accd301
SHA1RNDS4 $2, (BX), X11 // 440f3acc1b02
SHA1RNDS4 $2, (R11), X11 // 450f3acc1b02
SHA1RNDS4 $3, X2, X11 // 440f3accda03
SHA1RNDS4 $3, X11, X11 // 450f3accdb03
SHA256MSG1 (BX), X2 // 0f38cc13
SHA256MSG1 (R11), X2 // 410f38cc13
SHA256MSG1 X2, X2 // 0f38ccd2
SHA256MSG1 X11, X2 // 410f38ccd3
SHA256MSG1 (BX), X11 // 440f38cc1b
SHA256MSG1 (R11), X11 // 450f38cc1b
SHA256MSG1 X2, X11 // 440f38ccda
SHA256MSG1 X11, X11 // 450f38ccdb
SHA256MSG2 (BX), X2 // 0f38cd13
SHA256MSG2 (R11), X2 // 410f38cd13
SHA256MSG2 X2, X2 // 0f38cdd2
SHA256MSG2 X11, X2 // 410f38cdd3
SHA256MSG2 (BX), X11 // 440f38cd1b
SHA256MSG2 (R11), X11 // 450f38cd1b
SHA256MSG2 X2, X11 // 440f38cdda
SHA256MSG2 X11, X11 // 450f38cddb
// End of tests. // End of tests.
RET RET
...@@ -32,4 +32,6 @@ TEXT errors(SB),$0 ...@@ -32,4 +32,6 @@ TEXT errors(SB),$0
VPGATHERDQ X2, 664(X2*8), X7 // ERROR "mask, index, and destination registers should be distinct" VPGATHERDQ X2, 664(X2*8), X7 // ERROR "mask, index, and destination registers should be distinct"
VPGATHERDQ X2, 664(X7*8), X2 // ERROR "mask, index, and destination registers should be distinct" VPGATHERDQ X2, 664(X7*8), X2 // ERROR "mask, index, and destination registers should be distinct"
VPGATHERDQ X7, 664(X2*8), X2 // ERROR "mask, index, and destination registers should be distinct" VPGATHERDQ X7, 664(X2*8), X2 // ERROR "mask, index, and destination registers should be distinct"
// Non-X0 for Yxr0 should produce an error
BLENDVPD X1, (BX), X2 // ERROR "invalid instruction"
RET RET
...@@ -51,6 +51,8 @@ const ( ...@@ -51,6 +51,8 @@ const (
ABEXTRQ ABEXTRQ
ABLENDPD ABLENDPD
ABLENDPS ABLENDPS
ABLENDVPD
ABLENDVPS
ABLSIL ABLSIL
ABLSIQ ABLSIQ
ABLSMSKL ABLSMSKL
...@@ -67,6 +69,7 @@ const ( ...@@ -67,6 +69,7 @@ const (
ABSRW ABSRW
ABSWAPL ABSWAPL
ABSWAPQ ABSWAPQ
ABSWAPW
ABTCL ABTCL
ABTCQ ABTCQ
ABTCW ABTCW
...@@ -82,10 +85,14 @@ const ( ...@@ -82,10 +85,14 @@ const (
ABYTE ABYTE
ABZHIL ABZHIL
ABZHIQ ABZHIQ
ACBW
ACDQ ACDQ
ACDQE
ACLAC
ACLC ACLC
ACLD ACLD
ACLFLUSH ACLFLUSH
ACLFLUSHOPT
ACLI ACLI
ACLTS ACLTS
ACMC ACMC
...@@ -149,6 +156,7 @@ const ( ...@@ -149,6 +156,7 @@ const (
ACMPSS ACMPSS
ACMPSW ACMPSW
ACMPW ACMPW
ACMPXCHG16B
ACMPXCHG8B ACMPXCHG8B
ACMPXCHGB ACMPXCHGB
ACMPXCHGL ACMPXCHGL
...@@ -159,7 +167,9 @@ const ( ...@@ -159,7 +167,9 @@ const (
ACPUID ACPUID
ACQO ACQO
ACRC32B ACRC32B
ACRC32L
ACRC32Q ACRC32Q
ACRC32W
ACVTPD2PL ACVTPD2PL
ACVTPD2PS ACVTPD2PS
ACVTPL2PD ACVTPL2PD
...@@ -183,6 +193,7 @@ const ( ...@@ -183,6 +193,7 @@ const (
ACVTTSS2SL ACVTTSS2SL
ACVTTSS2SQ ACVTTSS2SQ
ACWD ACWD
ACWDE
ADAA ADAA
ADAS ADAS
ADECB ADECB
...@@ -209,15 +220,23 @@ const ( ...@@ -209,15 +220,23 @@ const (
AFADDF AFADDF
AFADDL AFADDL
AFADDW AFADDW
AFBLD
AFBSTP
AFCHS AFCHS
AFCLEX AFCLEX
AFCMOVB
AFCMOVBE
AFCMOVCC AFCMOVCC
AFCMOVCS AFCMOVCS
AFCMOVE
AFCMOVEQ AFCMOVEQ
AFCMOVHI AFCMOVHI
AFCMOVLS AFCMOVLS
AFCMOVNB
AFCMOVNBE
AFCMOVNE AFCMOVNE
AFCMOVNU AFCMOVNU
AFCMOVU
AFCMOVUN AFCMOVUN
AFCOMD AFCOMD
AFCOMDP AFCOMDP
...@@ -318,11 +337,14 @@ const ( ...@@ -318,11 +337,14 @@ const (
AHLT AHLT
AHSUBPD AHSUBPD
AHSUBPS AHSUBPS
AICEBP
AIDIVB AIDIVB
AIDIVL AIDIVL
AIDIVQ AIDIVQ
AIDIVW AIDIVW
AIMUL3L
AIMUL3Q AIMUL3Q
AIMUL3W
AIMULB AIMULB
AIMULL AIMULL
AIMULQ AIMULQ
...@@ -341,6 +363,7 @@ const ( ...@@ -341,6 +363,7 @@ const (
AINTO AINTO
AINVD AINVD
AINVLPG AINVLPG
AINVPCID
AINW AINW
AIRETL AIRETL
AIRETQ AIRETQ
...@@ -366,6 +389,7 @@ const ( ...@@ -366,6 +389,7 @@ const (
AJPS // parity set AJPS // parity set
ALAHF ALAHF
ALARL ALARL
ALARQ
ALARW ALARW
ALDDQU ALDDQU
ALDMXCSR ALDMXCSR
...@@ -376,6 +400,16 @@ const ( ...@@ -376,6 +400,16 @@ const (
ALEAVEW ALEAVEW
ALEAW ALEAW
ALFENCE ALFENCE
ALFSL
ALFSQ
ALFSW
ALGDT
ALGSL
ALGSQ
ALGSW
ALIDT
ALLDT
ALMSW
ALOCK ALOCK
ALODSB ALODSB
ALODSL ALODSL
...@@ -386,7 +420,15 @@ const ( ...@@ -386,7 +420,15 @@ const (
ALOOPEQ ALOOPEQ
ALOOPNE ALOOPNE
ALSLL ALSLL
ALSLQ
ALSLW ALSLW
ALSSL
ALSSQ
ALSSW
ALTR
ALZCNTL
ALZCNTQ
ALZCNTW
AMASKMOVOU AMASKMOVOU
AMASKMOVQ AMASKMOVQ
AMAXPD AMAXPD
...@@ -398,9 +440,13 @@ const ( ...@@ -398,9 +440,13 @@ const (
AMINPS AMINPS
AMINSD AMINSD
AMINSS AMINSS
AMONITOR
AMOVAPD AMOVAPD
AMOVAPS AMOVAPS
AMOVB AMOVB
AMOVBELL
AMOVBEQQ
AMOVBEWW
AMOVBLSX AMOVBLSX
AMOVBLZX AMOVBLZX
AMOVBQSX AMOVBQSX
...@@ -439,6 +485,7 @@ const ( ...@@ -439,6 +485,7 @@ const (
AMOVSQ AMOVSQ
AMOVSS AMOVSS
AMOVSW AMOVSW
AMOVSWW
AMOVUPD AMOVUPD
AMOVUPS AMOVUPS
AMOVW AMOVW
...@@ -446,6 +493,7 @@ const ( ...@@ -446,6 +493,7 @@ const (
AMOVWLZX AMOVWLZX
AMOVWQSX AMOVWQSX
AMOVWQZX AMOVWQZX
AMOVZWW
AMPSADBW AMPSADBW
AMULB AMULB
AMULL AMULL
...@@ -457,10 +505,13 @@ const ( ...@@ -457,10 +505,13 @@ const (
AMULW AMULW
AMULXL AMULXL
AMULXQ AMULXQ
AMWAIT
ANEGB ANEGB
ANEGL ANEGL
ANEGQ ANEGQ
ANEGW ANEGW
ANOPL
ANOPW
ANOTB ANOTB
ANOTL ANOTL
ANOTQ ANOTQ
...@@ -498,6 +549,7 @@ const ( ...@@ -498,6 +549,7 @@ const (
APAUSE APAUSE
APAVGB APAVGB
APAVGW APAVGW
APBLENDVB
APBLENDW APBLENDW
APCLMULQDQ APCLMULQDQ
APCMPEQB APCMPEQB
...@@ -638,9 +690,21 @@ const ( ...@@ -638,9 +690,21 @@ const (
ARCRL ARCRL
ARCRQ ARCRQ
ARCRW ARCRW
ARDFSBASEL
ARDFSBASEQ
ARDGSBASEL
ARDGSBASEQ
ARDMSR ARDMSR
ARDPKRU
ARDPMC ARDPMC
ARDRANDL
ARDRANDQ
ARDRANDW
ARDSEEDL
ARDSEEDQ
ARDSEEDW
ARDTSC ARDTSC
ARDTSCP
AREP AREP
AREPN AREPN
ARETFL ARETFL
...@@ -699,6 +763,14 @@ const ( ...@@ -699,6 +763,14 @@ const (
ASETPL ASETPL
ASETPS ASETPS
ASFENCE ASFENCE
ASGDT
ASHA1MSG1
ASHA1MSG2
ASHA1NEXTE
ASHA1RNDS4
ASHA256MSG1
ASHA256MSG2
ASHA256RNDS2
ASHLB ASHLB
ASHLL ASHLL
ASHLQ ASHLQ
...@@ -713,10 +785,18 @@ const ( ...@@ -713,10 +785,18 @@ const (
ASHRXQ ASHRXQ
ASHUFPD ASHUFPD
ASHUFPS ASHUFPS
ASIDT
ASLDTL
ASLDTQ
ASLDTW
ASMSWL
ASMSWQ
ASMSWW
ASQRTPD ASQRTPD
ASQRTPS ASQRTPS
ASQRTSD ASQRTSD
ASQRTSS ASQRTSS
ASTAC
ASTC ASTC
ASTD ASTD
ASTI ASTI
...@@ -725,6 +805,9 @@ const ( ...@@ -725,6 +805,9 @@ const (
ASTOSL ASTOSL
ASTOSQ ASTOSQ
ASTOSW ASTOSW
ASTRL
ASTRQ
ASTRW
ASUBB ASUBB
ASUBL ASUBL
ASUBPD ASUBPD
...@@ -735,13 +818,22 @@ const ( ...@@ -735,13 +818,22 @@ const (
ASUBW ASUBW
ASWAPGS ASWAPGS
ASYSCALL ASYSCALL
ASYSENTER
ASYSENTER64
ASYSEXIT
ASYSEXIT64
ASYSRET ASYSRET
ATESTB ATESTB
ATESTL ATESTL
ATESTQ ATESTQ
ATESTW ATESTW
ATZCNTL
ATZCNTQ
ATZCNTW
AUCOMISD AUCOMISD
AUCOMISS AUCOMISS
AUD1
AUD2
AUNPCKHPD AUNPCKHPD
AUNPCKHPS AUNPCKHPS
AUNPCKLPD AUNPCKLPD
...@@ -1109,7 +1201,12 @@ const ( ...@@ -1109,7 +1201,12 @@ const (
AWAIT AWAIT
AWBINVD AWBINVD
AWORD AWORD
AWRFSBASEL
AWRFSBASEQ
AWRGSBASEL
AWRGSBASEQ
AWRMSR AWRMSR
AWRPKRU
AXABORT AXABORT
AXACQUIRE AXACQUIRE
AXADDB AXADDB
...@@ -1131,6 +1228,19 @@ const ( ...@@ -1131,6 +1228,19 @@ const (
AXORQ AXORQ
AXORW AXORW
AXRELEASE AXRELEASE
AXRSTOR
AXRSTOR64
AXRSTORS
AXRSTORS64
AXSAVE
AXSAVE64
AXSAVEC
AXSAVEC64
AXSAVEOPT
AXSAVEOPT64
AXSAVES
AXSAVES64
AXSETBV
AXTEST AXTEST
ALAST ALAST
) )
...@@ -50,6 +50,8 @@ var Anames = []string{ ...@@ -50,6 +50,8 @@ var Anames = []string{
"BEXTRQ", "BEXTRQ",
"BLENDPD", "BLENDPD",
"BLENDPS", "BLENDPS",
"BLENDVPD",
"BLENDVPS",
"BLSIL", "BLSIL",
"BLSIQ", "BLSIQ",
"BLSMSKL", "BLSMSKL",
...@@ -66,6 +68,7 @@ var Anames = []string{ ...@@ -66,6 +68,7 @@ var Anames = []string{
"BSRW", "BSRW",
"BSWAPL", "BSWAPL",
"BSWAPQ", "BSWAPQ",
"BSWAPW",
"BTCL", "BTCL",
"BTCQ", "BTCQ",
"BTCW", "BTCW",
...@@ -81,10 +84,14 @@ var Anames = []string{ ...@@ -81,10 +84,14 @@ var Anames = []string{
"BYTE", "BYTE",
"BZHIL", "BZHIL",
"BZHIQ", "BZHIQ",
"CBW",
"CDQ", "CDQ",
"CDQE",
"CLAC",
"CLC", "CLC",
"CLD", "CLD",
"CLFLUSH", "CLFLUSH",
"CLFLUSHOPT",
"CLI", "CLI",
"CLTS", "CLTS",
"CMC", "CMC",
...@@ -148,6 +155,7 @@ var Anames = []string{ ...@@ -148,6 +155,7 @@ var Anames = []string{
"CMPSS", "CMPSS",
"CMPSW", "CMPSW",
"CMPW", "CMPW",
"CMPXCHG16B",
"CMPXCHG8B", "CMPXCHG8B",
"CMPXCHGB", "CMPXCHGB",
"CMPXCHGL", "CMPXCHGL",
...@@ -158,7 +166,9 @@ var Anames = []string{ ...@@ -158,7 +166,9 @@ var Anames = []string{
"CPUID", "CPUID",
"CQO", "CQO",
"CRC32B", "CRC32B",
"CRC32L",
"CRC32Q", "CRC32Q",
"CRC32W",
"CVTPD2PL", "CVTPD2PL",
"CVTPD2PS", "CVTPD2PS",
"CVTPL2PD", "CVTPL2PD",
...@@ -182,6 +192,7 @@ var Anames = []string{ ...@@ -182,6 +192,7 @@ var Anames = []string{
"CVTTSS2SL", "CVTTSS2SL",
"CVTTSS2SQ", "CVTTSS2SQ",
"CWD", "CWD",
"CWDE",
"DAA", "DAA",
"DAS", "DAS",
"DECB", "DECB",
...@@ -208,15 +219,23 @@ var Anames = []string{ ...@@ -208,15 +219,23 @@ var Anames = []string{
"FADDF", "FADDF",
"FADDL", "FADDL",
"FADDW", "FADDW",
"FBLD",
"FBSTP",
"FCHS", "FCHS",
"FCLEX", "FCLEX",
"FCMOVB",
"FCMOVBE",
"FCMOVCC", "FCMOVCC",
"FCMOVCS", "FCMOVCS",
"FCMOVE",
"FCMOVEQ", "FCMOVEQ",
"FCMOVHI", "FCMOVHI",
"FCMOVLS", "FCMOVLS",
"FCMOVNB",
"FCMOVNBE",
"FCMOVNE", "FCMOVNE",
"FCMOVNU", "FCMOVNU",
"FCMOVU",
"FCMOVUN", "FCMOVUN",
"FCOMD", "FCOMD",
"FCOMDP", "FCOMDP",
...@@ -317,11 +336,14 @@ var Anames = []string{ ...@@ -317,11 +336,14 @@ var Anames = []string{
"HLT", "HLT",
"HSUBPD", "HSUBPD",
"HSUBPS", "HSUBPS",
"ICEBP",
"IDIVB", "IDIVB",
"IDIVL", "IDIVL",
"IDIVQ", "IDIVQ",
"IDIVW", "IDIVW",
"IMUL3L",
"IMUL3Q", "IMUL3Q",
"IMUL3W",
"IMULB", "IMULB",
"IMULL", "IMULL",
"IMULQ", "IMULQ",
...@@ -340,6 +362,7 @@ var Anames = []string{ ...@@ -340,6 +362,7 @@ var Anames = []string{
"INTO", "INTO",
"INVD", "INVD",
"INVLPG", "INVLPG",
"INVPCID",
"INW", "INW",
"IRETL", "IRETL",
"IRETQ", "IRETQ",
...@@ -365,6 +388,7 @@ var Anames = []string{ ...@@ -365,6 +388,7 @@ var Anames = []string{
"JPS", "JPS",
"LAHF", "LAHF",
"LARL", "LARL",
"LARQ",
"LARW", "LARW",
"LDDQU", "LDDQU",
"LDMXCSR", "LDMXCSR",
...@@ -375,6 +399,16 @@ var Anames = []string{ ...@@ -375,6 +399,16 @@ var Anames = []string{
"LEAVEW", "LEAVEW",
"LEAW", "LEAW",
"LFENCE", "LFENCE",
"LFSL",
"LFSQ",
"LFSW",
"LGDT",
"LGSL",
"LGSQ",
"LGSW",
"LIDT",
"LLDT",
"LMSW",
"LOCK", "LOCK",
"LODSB", "LODSB",
"LODSL", "LODSL",
...@@ -385,7 +419,15 @@ var Anames = []string{ ...@@ -385,7 +419,15 @@ var Anames = []string{
"LOOPEQ", "LOOPEQ",
"LOOPNE", "LOOPNE",
"LSLL", "LSLL",
"LSLQ",
"LSLW", "LSLW",
"LSSL",
"LSSQ",
"LSSW",
"LTR",
"LZCNTL",
"LZCNTQ",
"LZCNTW",
"MASKMOVOU", "MASKMOVOU",
"MASKMOVQ", "MASKMOVQ",
"MAXPD", "MAXPD",
...@@ -397,9 +439,13 @@ var Anames = []string{ ...@@ -397,9 +439,13 @@ var Anames = []string{
"MINPS", "MINPS",
"MINSD", "MINSD",
"MINSS", "MINSS",
"MONITOR",
"MOVAPD", "MOVAPD",
"MOVAPS", "MOVAPS",
"MOVB", "MOVB",
"MOVBELL",
"MOVBEQQ",
"MOVBEWW",
"MOVBLSX", "MOVBLSX",
"MOVBLZX", "MOVBLZX",
"MOVBQSX", "MOVBQSX",
...@@ -438,6 +484,7 @@ var Anames = []string{ ...@@ -438,6 +484,7 @@ var Anames = []string{
"MOVSQ", "MOVSQ",
"MOVSS", "MOVSS",
"MOVSW", "MOVSW",
"MOVSWW",
"MOVUPD", "MOVUPD",
"MOVUPS", "MOVUPS",
"MOVW", "MOVW",
...@@ -445,6 +492,7 @@ var Anames = []string{ ...@@ -445,6 +492,7 @@ var Anames = []string{
"MOVWLZX", "MOVWLZX",
"MOVWQSX", "MOVWQSX",
"MOVWQZX", "MOVWQZX",
"MOVZWW",
"MPSADBW", "MPSADBW",
"MULB", "MULB",
"MULL", "MULL",
...@@ -456,10 +504,13 @@ var Anames = []string{ ...@@ -456,10 +504,13 @@ var Anames = []string{
"MULW", "MULW",
"MULXL", "MULXL",
"MULXQ", "MULXQ",
"MWAIT",
"NEGB", "NEGB",
"NEGL", "NEGL",
"NEGQ", "NEGQ",
"NEGW", "NEGW",
"NOPL",
"NOPW",
"NOTB", "NOTB",
"NOTL", "NOTL",
"NOTQ", "NOTQ",
...@@ -497,6 +548,7 @@ var Anames = []string{ ...@@ -497,6 +548,7 @@ var Anames = []string{
"PAUSE", "PAUSE",
"PAVGB", "PAVGB",
"PAVGW", "PAVGW",
"PBLENDVB",
"PBLENDW", "PBLENDW",
"PCLMULQDQ", "PCLMULQDQ",
"PCMPEQB", "PCMPEQB",
...@@ -637,9 +689,21 @@ var Anames = []string{ ...@@ -637,9 +689,21 @@ var Anames = []string{
"RCRL", "RCRL",
"RCRQ", "RCRQ",
"RCRW", "RCRW",
"RDFSBASEL",
"RDFSBASEQ",
"RDGSBASEL",
"RDGSBASEQ",
"RDMSR", "RDMSR",
"RDPKRU",
"RDPMC", "RDPMC",
"RDRANDL",
"RDRANDQ",
"RDRANDW",
"RDSEEDL",
"RDSEEDQ",
"RDSEEDW",
"RDTSC", "RDTSC",
"RDTSCP",
"REP", "REP",
"REPN", "REPN",
"RETFL", "RETFL",
...@@ -698,6 +762,14 @@ var Anames = []string{ ...@@ -698,6 +762,14 @@ var Anames = []string{
"SETPL", "SETPL",
"SETPS", "SETPS",
"SFENCE", "SFENCE",
"SGDT",
"SHA1MSG1",
"SHA1MSG2",
"SHA1NEXTE",
"SHA1RNDS4",
"SHA256MSG1",
"SHA256MSG2",
"SHA256RNDS2",
"SHLB", "SHLB",
"SHLL", "SHLL",
"SHLQ", "SHLQ",
...@@ -712,10 +784,18 @@ var Anames = []string{ ...@@ -712,10 +784,18 @@ var Anames = []string{
"SHRXQ", "SHRXQ",
"SHUFPD", "SHUFPD",
"SHUFPS", "SHUFPS",
"SIDT",
"SLDTL",
"SLDTQ",
"SLDTW",
"SMSWL",
"SMSWQ",
"SMSWW",
"SQRTPD", "SQRTPD",
"SQRTPS", "SQRTPS",
"SQRTSD", "SQRTSD",
"SQRTSS", "SQRTSS",
"STAC",
"STC", "STC",
"STD", "STD",
"STI", "STI",
...@@ -724,6 +804,9 @@ var Anames = []string{ ...@@ -724,6 +804,9 @@ var Anames = []string{
"STOSL", "STOSL",
"STOSQ", "STOSQ",
"STOSW", "STOSW",
"STRL",
"STRQ",
"STRW",
"SUBB", "SUBB",
"SUBL", "SUBL",
"SUBPD", "SUBPD",
...@@ -734,13 +817,22 @@ var Anames = []string{ ...@@ -734,13 +817,22 @@ var Anames = []string{
"SUBW", "SUBW",
"SWAPGS", "SWAPGS",
"SYSCALL", "SYSCALL",
"SYSENTER",
"SYSENTER64",
"SYSEXIT",
"SYSEXIT64",
"SYSRET", "SYSRET",
"TESTB", "TESTB",
"TESTL", "TESTL",
"TESTQ", "TESTQ",
"TESTW", "TESTW",
"TZCNTL",
"TZCNTQ",
"TZCNTW",
"UCOMISD", "UCOMISD",
"UCOMISS", "UCOMISS",
"UD1",
"UD2",
"UNPCKHPD", "UNPCKHPD",
"UNPCKHPS", "UNPCKHPS",
"UNPCKLPD", "UNPCKLPD",
...@@ -1108,7 +1200,12 @@ var Anames = []string{ ...@@ -1108,7 +1200,12 @@ var Anames = []string{
"WAIT", "WAIT",
"WBINVD", "WBINVD",
"WORD", "WORD",
"WRFSBASEL",
"WRFSBASEQ",
"WRGSBASEL",
"WRGSBASEQ",
"WRMSR", "WRMSR",
"WRPKRU",
"XABORT", "XABORT",
"XACQUIRE", "XACQUIRE",
"XADDB", "XADDB",
...@@ -1130,6 +1227,19 @@ var Anames = []string{ ...@@ -1130,6 +1227,19 @@ var Anames = []string{
"XORQ", "XORQ",
"XORW", "XORW",
"XRELEASE", "XRELEASE",
"XRSTOR",
"XRSTOR64",
"XRSTORS",
"XRSTORS64",
"XSAVE",
"XSAVE64",
"XSAVEC",
"XSAVEC64",
"XSAVEOPT",
"XSAVEOPT64",
"XSAVES",
"XSAVES64",
"XSETBV",
"XTEST", "XTEST",
"LAST", "LAST",
} }
This diff is collapsed.
...@@ -1186,54 +1186,87 @@ func stacksplit(ctxt *obj.Link, cursym *obj.LSym, p *obj.Prog, newprog obj.ProgA ...@@ -1186,54 +1186,87 @@ func stacksplit(ctxt *obj.Link, cursym *obj.LSym, p *obj.Prog, newprog obj.ProgA
} }
var unaryDst = map[obj.As]bool{ var unaryDst = map[obj.As]bool{
ABSWAPL: true, ABSWAPL: true,
ABSWAPQ: true, ABSWAPQ: true,
ACLFLUSH: true, ABSWAPW: true,
ACMPXCHG8B: true, ACLFLUSH: true,
ADECB: true, ACLFLUSHOPT: true,
ADECL: true, ACMPXCHG16B: true,
ADECQ: true, ACMPXCHG8B: true,
ADECW: true, ADECB: true,
AINCB: true, ADECL: true,
AINCL: true, ADECQ: true,
AINCQ: true, ADECW: true,
AINCW: true, AFBSTP: true,
ANEGB: true, AFFREE: true,
ANEGL: true, AFLDENV: true,
ANEGQ: true, AFSAVE: true,
ANEGW: true, AFSTCW: true,
ANOTB: true, AFSTENV: true,
ANOTL: true, AFSTSW: true,
ANOTQ: true, AFXSAVE64: true,
ANOTW: true, AFXSAVE: true,
APOPL: true, AINCB: true,
APOPQ: true, AINCL: true,
APOPW: true, AINCQ: true,
ASETCC: true, AINCW: true,
ASETCS: true, ANEGB: true,
ASETEQ: true, ANEGL: true,
ASETGE: true, ANEGQ: true,
ASETGT: true, ANEGW: true,
ASETHI: true, ANOTB: true,
ASETLE: true, ANOTL: true,
ASETLS: true, ANOTQ: true,
ASETLT: true, ANOTW: true,
ASETMI: true, APOPL: true,
ASETNE: true, APOPQ: true,
ASETOC: true, APOPW: true,
ASETOS: true, ARDFSBASEL: true,
ASETPC: true, ARDFSBASEQ: true,
ASETPL: true, ARDGSBASEL: true,
ASETPS: true, ARDGSBASEQ: true,
AFFREE: true, ARDRANDL: true,
AFLDENV: true, ARDRANDQ: true,
AFSAVE: true, ARDRANDW: true,
AFSTCW: true, ARDSEEDL: true,
AFSTENV: true, ARDSEEDQ: true,
AFSTSW: true, ARDSEEDW: true,
AFXSAVE: true, ASETCC: true,
AFXSAVE64: true, ASETCS: true,
ASTMXCSR: true, ASETEQ: true,
ASETGE: true,
ASETGT: true,
ASETHI: true,
ASETLE: true,
ASETLS: true,
ASETLT: true,
ASETMI: true,
ASETNE: true,
ASETOC: true,
ASETOS: true,
ASETPC: true,
ASETPL: true,
ASETPS: true,
ASGDT: true,
ASIDT: true,
ASLDTL: true,
ASLDTQ: true,
ASLDTW: true,
ASMSWL: true,
ASMSWQ: true,
ASMSWW: true,
ASTMXCSR: true,
ASTRL: true,
ASTRQ: true,
ASTRW: true,
AXSAVE64: true,
AXSAVE: true,
AXSAVEC64: true,
AXSAVEC: true,
AXSAVEOPT64: true,
AXSAVEOPT: true,
AXSAVES64: true,
AXSAVES: true,
} }
var Linkamd64 = obj.LinkArch{ var Linkamd64 = obj.LinkArch{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment