1
0
mirror of https://github.com/golang/go synced 2024-11-23 20:40:07 -07:00

cmd/asm: add amd64 PDEP, PEXT, and related integer VEX instructions

Requested off-list.
Trivial to add and more importantly trivial to test.

ANDNL
ANDNQ
BEXTRL
BEXTRQ
BZHIL
BZHIQ
MULXL
MULXQ
PDEPL
PDEPQ
PEXTL
PEXTQ
SARXL
SARXQ
SHRXL
SHRXQ

Change-Id: I3d46a0f653b81dd003ff6d2a394d8ce96a573b63
Reviewed-on: https://go-review.googlesource.com/18857
Reviewed-by: Rob Pike <r@golang.org>
This commit is contained in:
Russ Cox 2016-01-24 00:44:23 -05:00
parent 863d9b66f8
commit 0bae38e094
4 changed files with 238 additions and 156 deletions

View File

@ -370,22 +370,22 @@ TEXT asmtest(SB),7,$0
ANDB (R11), DL // 412213 ANDB (R11), DL // 412213
ANDB (BX), R11 // 44221b ANDB (BX), R11 // 44221b
ANDB (R11), R11 // 45221b ANDB (R11), R11 // 45221b
//TODO: ANDNL (BX), R9D, DX // c4e230f213 ANDNL (BX), R9, DX // c4e230f213
//TODO: ANDNL (R11), R9D, DX // c4c230f213 ANDNL (R11), R9, DX // c4c230f213
//TODO: ANDNL DX, R9D, DX // c4e230f2d2 ANDNL DX, R9, DX // c4e230f2d2
//TODO: ANDNL R11, R9D, DX // c4c230f2d3 ANDNL R11, R9, DX // c4c230f2d3
//TODO: ANDNL (BX), R9D, R11 // c46230f21b ANDNL (BX), R9, R11 // c46230f21b
//TODO: ANDNL (R11), R9D, R11 // c44230f21b ANDNL (R11), R9, R11 // c44230f21b
//TODO: ANDNL DX, R9D, R11 // c46230f2da ANDNL DX, R9, R11 // c46230f2da
//TODO: ANDNL R11, R9D, R11 // c44230f2db ANDNL R11, R9, R11 // c44230f2db
//TODO: ANDNQ (BX), R14, DX // c4e288f213 ANDNQ (BX), R14, DX // c4e288f213
//TODO: ANDNQ (R11), R14, DX // c4c288f213 ANDNQ (R11), R14, DX // c4c288f213
//TODO: ANDNQ DX, R14, DX // c4e288f2d2 ANDNQ DX, R14, DX // c4e288f2d2
//TODO: ANDNQ R11, R14, DX // c4c288f2d3 ANDNQ R11, R14, DX // c4c288f2d3
//TODO: ANDNQ (BX), R14, R11 // c46288f21b ANDNQ (BX), R14, R11 // c46288f21b
//TODO: ANDNQ (R11), R14, R11 // c44288f21b ANDNQ (R11), R14, R11 // c44288f21b
//TODO: ANDNQ DX, R14, R11 // c46288f2da ANDNQ DX, R14, R11 // c46288f2da
//TODO: ANDNQ R11, R14, R11 // c44288f2db ANDNQ R11, R14, R11 // c44288f2db
ANDNPD (BX), X2 // 660f5513 ANDNPD (BX), X2 // 660f5513
ANDNPD (R11), X2 // 66410f5513 ANDNPD (R11), X2 // 66410f5513
ANDNPD X2, X2 // 660f55d2 ANDNPD X2, X2 // 660f55d2
@ -418,22 +418,22 @@ TEXT asmtest(SB),7,$0
//TODO: ANDPS (R11), X11 // 450f541b //TODO: ANDPS (R11), X11 // 450f541b
//TODO: ANDPS X2, X11 // 440f54da //TODO: ANDPS X2, X11 // 440f54da
//TODO: ANDPS X11, X11 // 450f54db //TODO: ANDPS X11, X11 // 450f54db
//TODO: BEXTRL R9D, (BX), DX // c4e230f713 BEXTRL R9, (BX), DX // c4e230f713
//TODO: BEXTRL R9D, (R11), DX // c4c230f713 BEXTRL R9, (R11), DX // c4c230f713
//TODO: BEXTRL R9D, DX, DX // c4e230f7d2 BEXTRL R9, DX, DX // c4e230f7d2
//TODO: BEXTRL R9D, R11, DX // c4c230f7d3 BEXTRL R9, R11, DX // c4c230f7d3
//TODO: BEXTRL R9D, (BX), R11 // c46230f71b BEXTRL R9, (BX), R11 // c46230f71b
//TODO: BEXTRL R9D, (R11), R11 // c44230f71b BEXTRL R9, (R11), R11 // c44230f71b
//TODO: BEXTRL R9D, DX, R11 // c46230f7da BEXTRL R9, DX, R11 // c46230f7da
//TODO: BEXTRL R9D, R11, R11 // c44230f7db BEXTRL R9, R11, R11 // c44230f7db
//TODO: BEXTRQ R14, (BX), DX // c4e288f713 BEXTRQ R14, (BX), DX // c4e288f713
//TODO: BEXTRQ R14, (R11), DX // c4c288f713 BEXTRQ R14, (R11), DX // c4c288f713
//TODO: BEXTRQ R14, DX, DX // c4e288f7d2 BEXTRQ R14, DX, DX // c4e288f7d2
//TODO: BEXTRQ R14, R11, DX // c4c288f7d3 BEXTRQ R14, R11, DX // c4c288f7d3
//TODO: BEXTRQ R14, (BX), R11 // c46288f71b BEXTRQ R14, (BX), R11 // c46288f71b
//TODO: BEXTRQ R14, (R11), R11 // c44288f71b BEXTRQ R14, (R11), R11 // c44288f71b
//TODO: BEXTRQ R14, DX, R11 // c46288f7da BEXTRQ R14, DX, R11 // c46288f7da
//TODO: BEXTRQ R14, R11, R11 // c44288f7db BEXTRQ R14, R11, R11 // c44288f7db
//TODO: BLENDPD $7, (BX), X2 // 660f3a0d1307 //TODO: BLENDPD $7, (BX), X2 // 660f3a0d1307
//TODO: BLENDPD $7, (R11), X2 // 66410f3a0d1307 //TODO: BLENDPD $7, (R11), X2 // 66410f3a0d1307
//TODO: BLENDPD $7, X2, X2 // 660f3a0dd207 //TODO: BLENDPD $7, X2, X2 // 660f3a0dd207
@ -466,26 +466,26 @@ TEXT asmtest(SB),7,$0
//TODO: BLENDVPS XMM0, (R11), X11 // 66450f38141b //TODO: BLENDVPS XMM0, (R11), X11 // 66450f38141b
//TODO: BLENDVPS XMM0, X2, X11 // 66440f3814da //TODO: BLENDVPS XMM0, X2, X11 // 66440f3814da
//TODO: BLENDVPS XMM0, X11, X11 // 66450f3814db //TODO: BLENDVPS XMM0, X11, X11 // 66450f3814db
//TODO: BLSIL (BX), R9D // c4e230f31b //TODO: BLSIL (BX), R9 // c4e230f31b
//TODO: BLSIL (R11), R9D // c4c230f31b //TODO: BLSIL (R11), R9 // c4c230f31b
//TODO: BLSIL DX, R9D // c4e230f3da //TODO: BLSIL DX, R9 // c4e230f3da
//TODO: BLSIL R11, R9D // c4c230f3db //TODO: BLSIL R11, R9 // c4c230f3db
//TODO: BLSIQ (BX), R14 // c4e288f31b //TODO: BLSIQ (BX), R14 // c4e288f31b
//TODO: BLSIQ (R11), R14 // c4c288f31b //TODO: BLSIQ (R11), R14 // c4c288f31b
//TODO: BLSIQ DX, R14 // c4e288f3da //TODO: BLSIQ DX, R14 // c4e288f3da
//TODO: BLSIQ R11, R14 // c4c288f3db //TODO: BLSIQ R11, R14 // c4c288f3db
//TODO: BLSMSKL (BX), R9D // c4e230f313 //TODO: BLSMSKL (BX), R9 // c4e230f313
//TODO: BLSMSKL (R11), R9D // c4c230f313 //TODO: BLSMSKL (R11), R9 // c4c230f313
//TODO: BLSMSKL DX, R9D // c4e230f3d2 //TODO: BLSMSKL DX, R9 // c4e230f3d2
//TODO: BLSMSKL R11, R9D // c4c230f3d3 //TODO: BLSMSKL R11, R9 // c4c230f3d3
//TODO: BLSMSKQ (BX), R14 // c4e288f313 //TODO: BLSMSKQ (BX), R14 // c4e288f313
//TODO: BLSMSKQ (R11), R14 // c4c288f313 //TODO: BLSMSKQ (R11), R14 // c4c288f313
//TODO: BLSMSKQ DX, R14 // c4e288f3d2 //TODO: BLSMSKQ DX, R14 // c4e288f3d2
//TODO: BLSMSKQ R11, R14 // c4c288f3d3 //TODO: BLSMSKQ R11, R14 // c4c288f3d3
//TODO: BLSRL (BX), R9D // c4e230f30b //TODO: BLSRL (BX), R9 // c4e230f30b
//TODO: BLSRL (R11), R9D // c4c230f30b //TODO: BLSRL (R11), R9 // c4c230f30b
//TODO: BLSRL DX, R9D // c4e230f3ca //TODO: BLSRL DX, R9 // c4e230f3ca
//TODO: BLSRL R11, R9D // c4c230f3cb //TODO: BLSRL R11, R9 // c4c230f3cb
//TODO: BLSRQ (BX), R14 // c4e288f30b //TODO: BLSRQ (BX), R14 // c4e288f30b
//TODO: BLSRQ (R11), R14 // c4c288f30b //TODO: BLSRQ (R11), R14 // c4c288f30b
//TODO: BLSRQ DX, R14 // c4e288f3ca //TODO: BLSRQ DX, R14 // c4e288f3ca
@ -736,22 +736,22 @@ TEXT asmtest(SB),7,$0
BTSQ R11, DX // 4c0fabda BTSQ R11, DX // 4c0fabda
BTSQ DX, R11 // 490fabd3 BTSQ DX, R11 // 490fabd3
BTSQ R11, R11 // 4d0fabdb BTSQ R11, R11 // 4d0fabdb
//TODO: BZHIL R9D, (BX), DX // c4e230f513 BZHIL R9, (BX), DX // c4e230f513
//TODO: BZHIL R9D, (R11), DX // c4c230f513 BZHIL R9, (R11), DX // c4c230f513
//TODO: BZHIL R9D, DX, DX // c4e230f5d2 BZHIL R9, DX, DX // c4e230f5d2
//TODO: BZHIL R9D, R11, DX // c4c230f5d3 BZHIL R9, R11, DX // c4c230f5d3
//TODO: BZHIL R9D, (BX), R11 // c46230f51b BZHIL R9, (BX), R11 // c46230f51b
//TODO: BZHIL R9D, (R11), R11 // c44230f51b BZHIL R9, (R11), R11 // c44230f51b
//TODO: BZHIL R9D, DX, R11 // c46230f5da BZHIL R9, DX, R11 // c46230f5da
//TODO: BZHIL R9D, R11, R11 // c44230f5db BZHIL R9, R11, R11 // c44230f5db
//TODO: BZHIQ R14, (BX), DX // c4e288f513 BZHIQ R14, (BX), DX // c4e288f513
//TODO: BZHIQ R14, (R11), DX // c4c288f513 BZHIQ R14, (R11), DX // c4c288f513
//TODO: BZHIQ R14, DX, DX // c4e288f5d2 BZHIQ R14, DX, DX // c4e288f5d2
//TODO: BZHIQ R14, R11, DX // c4c288f5d3 BZHIQ R14, R11, DX // c4c288f5d3
//TODO: BZHIQ R14, (BX), R11 // c46288f51b BZHIQ R14, (BX), R11 // c46288f51b
//TODO: BZHIQ R14, (R11), R11 // c44288f51b BZHIQ R14, (R11), R11 // c44288f51b
//TODO: BZHIQ R14, DX, R11 // c46288f5da BZHIQ R14, DX, R11 // c46288f5da
//TODO: BZHIQ R14, R11, R11 // c44288f5db BZHIQ R14, R11, R11 // c44288f5db
//TODO: CALLQ* (BX) // ff13 //TODO: CALLQ* (BX) // ff13
//TODO: CALLQ* (R11) // 41ff13 //TODO: CALLQ* (R11) // 41ff13
//TODO: CALLQ* DX // ffd2 //TODO: CALLQ* DX // ffd2
@ -2911,22 +2911,22 @@ TEXT asmtest(SB),7,$0
MULSS (R11), X11 // f3450f591b MULSS (R11), X11 // f3450f591b
MULSS X2, X11 // f3440f59da MULSS X2, X11 // f3440f59da
MULSS X11, X11 // f3450f59db MULSS X11, X11 // f3450f59db
//TODO: MULXL (BX), R9D, DX // c4e233f613 MULXL (BX), R9, DX // c4e233f613
//TODO: MULXL (R11), R9D, DX // c4c233f613 MULXL (R11), R9, DX // c4c233f613
//TODO: MULXL DX, R9D, DX // c4e233f6d2 MULXL DX, R9, DX // c4e233f6d2
//TODO: MULXL R11, R9D, DX // c4c233f6d3 MULXL R11, R9, DX // c4c233f6d3
//TODO: MULXL (BX), R9D, R11 // c46233f61b MULXL (BX), R9, R11 // c46233f61b
//TODO: MULXL (R11), R9D, R11 // c44233f61b MULXL (R11), R9, R11 // c44233f61b
//TODO: MULXL DX, R9D, R11 // c46233f6da MULXL DX, R9, R11 // c46233f6da
//TODO: MULXL R11, R9D, R11 // c44233f6db MULXL R11, R9, R11 // c44233f6db
//TODO: MULXQ (BX), R14, DX // c4e28bf613 MULXQ (BX), R14, DX // c4e28bf613
//TODO: MULXQ (R11), R14, DX // c4c28bf613 MULXQ (R11), R14, DX // c4c28bf613
//TODO: MULXQ DX, R14, DX // c4e28bf6d2 MULXQ DX, R14, DX // c4e28bf6d2
//TODO: MULXQ R11, R14, DX // c4c28bf6d3 MULXQ R11, R14, DX // c4c28bf6d3
//TODO: MULXQ (BX), R14, R11 // c4628bf61b MULXQ (BX), R14, R11 // c4628bf61b
//TODO: MULXQ (R11), R14, R11 // c4428bf61b MULXQ (R11), R14, R11 // c4428bf61b
//TODO: MULXQ DX, R14, R11 // c4628bf6da MULXQ DX, R14, R11 // c4628bf6da
//TODO: MULXQ R11, R14, R11 // c4428bf6db MULXQ R11, R14, R11 // c4428bf6db
//TODO: MWAIT // 0f01c9 //TODO: MWAIT // 0f01c9
NEGW (BX) // 66f71b NEGW (BX) // 66f71b
NEGW (R11) // 6641f71b NEGW (R11) // 6641f71b
@ -3553,38 +3553,38 @@ TEXT asmtest(SB),7,$0
//TODO: PCMPISTRM $7, (R11), X11 // 66450f3a621b07 //TODO: PCMPISTRM $7, (R11), X11 // 66450f3a621b07
//TODO: PCMPISTRM $7, X2, X11 // 66440f3a62da07 //TODO: PCMPISTRM $7, X2, X11 // 66440f3a62da07
//TODO: PCMPISTRM $7, X11, X11 // 66450f3a62db07 //TODO: PCMPISTRM $7, X11, X11 // 66450f3a62db07
//TODO: PDEPL (BX), R9D, DX // c4e233f513 PDEPL (BX), R9, DX // c4e233f513
//TODO: PDEPL (R11), R9D, DX // c4c233f513 PDEPL (R11), R9, DX // c4c233f513
//TODO: PDEPL DX, R9D, DX // c4e233f5d2 PDEPL DX, R9, DX // c4e233f5d2
//TODO: PDEPL R11, R9D, DX // c4c233f5d3 PDEPL R11, R9, DX // c4c233f5d3
//TODO: PDEPL (BX), R9D, R11 // c46233f51b PDEPL (BX), R9, R11 // c46233f51b
//TODO: PDEPL (R11), R9D, R11 // c44233f51b PDEPL (R11), R9, R11 // c44233f51b
//TODO: PDEPL DX, R9D, R11 // c46233f5da PDEPL DX, R9, R11 // c46233f5da
//TODO: PDEPL R11, R9D, R11 // c44233f5db PDEPL R11, R9, R11 // c44233f5db
//TODO: PDEPQ (BX), R14, DX // c4e28bf513 PDEPQ (BX), R14, DX // c4e28bf513
//TODO: PDEPQ (R11), R14, DX // c4c28bf513 PDEPQ (R11), R14, DX // c4c28bf513
//TODO: PDEPQ DX, R14, DX // c4e28bf5d2 PDEPQ DX, R14, DX // c4e28bf5d2
//TODO: PDEPQ R11, R14, DX // c4c28bf5d3 PDEPQ R11, R14, DX // c4c28bf5d3
//TODO: PDEPQ (BX), R14, R11 // c4628bf51b PDEPQ (BX), R14, R11 // c4628bf51b
//TODO: PDEPQ (R11), R14, R11 // c4428bf51b PDEPQ (R11), R14, R11 // c4428bf51b
//TODO: PDEPQ DX, R14, R11 // c4628bf5da PDEPQ DX, R14, R11 // c4628bf5da
//TODO: PDEPQ R11, R14, R11 // c4428bf5db PDEPQ R11, R14, R11 // c4428bf5db
//TODO: PEXTL (BX), R9D, DX // c4e232f513 PEXTL (BX), R9, DX // c4e232f513
//TODO: PEXTL (R11), R9D, DX // c4c232f513 PEXTL (R11), R9, DX // c4c232f513
//TODO: PEXTL DX, R9D, DX // c4e232f5d2 PEXTL DX, R9, DX // c4e232f5d2
//TODO: PEXTL R11, R9D, DX // c4c232f5d3 PEXTL R11, R9, DX // c4c232f5d3
//TODO: PEXTL (BX), R9D, R11 // c46232f51b PEXTL (BX), R9, R11 // c46232f51b
//TODO: PEXTL (R11), R9D, R11 // c44232f51b PEXTL (R11), R9, R11 // c44232f51b
//TODO: PEXTL DX, R9D, R11 // c46232f5da PEXTL DX, R9, R11 // c46232f5da
//TODO: PEXTL R11, R9D, R11 // c44232f5db PEXTL R11, R9, R11 // c44232f5db
//TODO: PEXTQ (BX), R14, DX // c4e28af513 PEXTQ (BX), R14, DX // c4e28af513
//TODO: PEXTQ (R11), R14, DX // c4c28af513 PEXTQ (R11), R14, DX // c4c28af513
//TODO: PEXTQ DX, R14, DX // c4e28af5d2 PEXTQ DX, R14, DX // c4e28af5d2
//TODO: PEXTQ R11, R14, DX // c4c28af5d3 PEXTQ R11, R14, DX // c4c28af5d3
//TODO: PEXTQ (BX), R14, R11 // c4628af51b PEXTQ (BX), R14, R11 // c4628af51b
//TODO: PEXTQ (R11), R14, R11 // c4428af51b PEXTQ (R11), R14, R11 // c4428af51b
//TODO: PEXTQ DX, R14, R11 // c4628af5da PEXTQ DX, R14, R11 // c4628af5da
//TODO: PEXTQ R11, R14, R11 // c4428af5db PEXTQ R11, R14, R11 // c4428af5db
PEXTRB $7, X2, (BX) // 660f3a141307 PEXTRB $7, X2, (BX) // 660f3a141307
PEXTRB $7, X11, (BX) // 66440f3a141b07 PEXTRB $7, X11, (BX) // 66440f3a141b07
PEXTRB $7, X2, (R11) // 66410f3a141307 PEXTRB $7, X2, (R11) // 66410f3a141307
@ -5122,22 +5122,22 @@ TEXT asmtest(SB),7,$0
SARB $7, (R11) // 41c03b07 SARB $7, (R11) // 41c03b07
SARB $7, DL // c0fa07 SARB $7, DL // c0fa07
SARB $7, R11 // 41c0fb07 SARB $7, R11 // 41c0fb07
//TODO: SARXL R9D, (BX), DX // c4e232f713 SARXL R9, (BX), DX // c4e232f713
//TODO: SARXL R9D, (R11), DX // c4c232f713 SARXL R9, (R11), DX // c4c232f713
//TODO: SARXL R9D, DX, DX // c4e232f7d2 SARXL R9, DX, DX // c4e232f7d2
//TODO: SARXL R9D, R11, DX // c4c232f7d3 SARXL R9, R11, DX // c4c232f7d3
//TODO: SARXL R9D, (BX), R11 // c46232f71b SARXL R9, (BX), R11 // c46232f71b
//TODO: SARXL R9D, (R11), R11 // c44232f71b SARXL R9, (R11), R11 // c44232f71b
//TODO: SARXL R9D, DX, R11 // c46232f7da SARXL R9, DX, R11 // c46232f7da
//TODO: SARXL R9D, R11, R11 // c44232f7db SARXL R9, R11, R11 // c44232f7db
//TODO: SARXQ R14, (BX), DX // c4e28af713 SARXQ R14, (BX), DX // c4e28af713
//TODO: SARXQ R14, (R11), DX // c4c28af713 SARXQ R14, (R11), DX // c4c28af713
//TODO: SARXQ R14, DX, DX // c4e28af7d2 SARXQ R14, DX, DX // c4e28af7d2
//TODO: SARXQ R14, R11, DX // c4c28af7d3 SARXQ R14, R11, DX // c4c28af7d3
//TODO: SARXQ R14, (BX), R11 // c4628af71b SARXQ R14, (BX), R11 // c4628af71b
//TODO: SARXQ R14, (R11), R11 // c4428af71b SARXQ R14, (R11), R11 // c4428af71b
//TODO: SARXQ R14, DX, R11 // c4628af7da SARXQ R14, DX, R11 // c4628af7da
//TODO: SARXQ R14, R11, R11 // c4428af7db SARXQ R14, R11, R11 // c4428af7db
SBBB $7, AL // 1c07 SBBB $7, AL // 1c07
SBBW $61731, AX // 661d23f1 SBBW $61731, AX // 661d23f1
SBBL $4045620583, AX // 1d674523f1 SBBL $4045620583, AX // 1d674523f1
@ -5385,22 +5385,22 @@ TEXT asmtest(SB),7,$0
SHLQ $7, R11, DX // 4c0fa4da07 SHLQ $7, R11, DX // 4c0fa4da07
SHLQ $7, DX, R11 // 490fa4d307 SHLQ $7, DX, R11 // 490fa4d307
SHLQ $7, R11, R11 // 4d0fa4db07 SHLQ $7, R11, R11 // 4d0fa4db07
//TODO: SHLXL R9D, (BX), DX // c4e231f713 SHLXL R9, (BX), DX // c4e231f713
//TODO: SHLXL R9D, (R11), DX // c4c231f713 SHLXL R9, (R11), DX // c4c231f713
//TODO: SHLXL R9D, DX, DX // c4e231f7d2 SHLXL R9, DX, DX // c4e231f7d2
//TODO: SHLXL R9D, R11, DX // c4c231f7d3 SHLXL R9, R11, DX // c4c231f7d3
//TODO: SHLXL R9D, (BX), R11 // c46231f71b SHLXL R9, (BX), R11 // c46231f71b
//TODO: SHLXL R9D, (R11), R11 // c44231f71b SHLXL R9, (R11), R11 // c44231f71b
//TODO: SHLXL R9D, DX, R11 // c46231f7da SHLXL R9, DX, R11 // c46231f7da
//TODO: SHLXL R9D, R11, R11 // c44231f7db SHLXL R9, R11, R11 // c44231f7db
//TODO: SHLXQ R14, (BX), DX // c4e289f713 SHLXQ R14, (BX), DX // c4e289f713
//TODO: SHLXQ R14, (R11), DX // c4c289f713 SHLXQ R14, (R11), DX // c4c289f713
//TODO: SHLXQ R14, DX, DX // c4e289f7d2 SHLXQ R14, DX, DX // c4e289f7d2
//TODO: SHLXQ R14, R11, DX // c4c289f7d3 SHLXQ R14, R11, DX // c4c289f7d3
//TODO: SHLXQ R14, (BX), R11 // c46289f71b SHLXQ R14, (BX), R11 // c46289f71b
//TODO: SHLXQ R14, (R11), R11 // c44289f71b SHLXQ R14, (R11), R11 // c44289f71b
//TODO: SHLXQ R14, DX, R11 // c46289f7da SHLXQ R14, DX, R11 // c46289f7da
//TODO: SHLXQ R14, R11, R11 // c44289f7db SHLXQ R14, R11, R11 // c44289f7db
SHRW $1, (BX) // 66d12b SHRW $1, (BX) // 66d12b
SHRW $1, (R11) // 6641d12b SHRW $1, (R11) // 6641d12b
SHRW $1, DX // 66d1ea SHRW $1, DX // 66d1ea
@ -5497,22 +5497,22 @@ TEXT asmtest(SB),7,$0
SHRQ $7, R11, DX // 4c0facda07 SHRQ $7, R11, DX // 4c0facda07
SHRQ $7, DX, R11 // 490facd307 SHRQ $7, DX, R11 // 490facd307
SHRQ $7, R11, R11 // 4d0facdb07 SHRQ $7, R11, R11 // 4d0facdb07
//TODO: SHRXL R9D, (BX), DX // c4e233f713 SHRXL R9, (BX), DX // c4e233f713
//TODO: SHRXL R9D, (R11), DX // c4c233f713 SHRXL R9, (R11), DX // c4c233f713
//TODO: SHRXL R9D, DX, DX // c4e233f7d2 SHRXL R9, DX, DX // c4e233f7d2
//TODO: SHRXL R9D, R11, DX // c4c233f7d3 SHRXL R9, R11, DX // c4c233f7d3
//TODO: SHRXL R9D, (BX), R11 // c46233f71b SHRXL R9, (BX), R11 // c46233f71b
//TODO: SHRXL R9D, (R11), R11 // c44233f71b SHRXL R9, (R11), R11 // c44233f71b
//TODO: SHRXL R9D, DX, R11 // c46233f7da SHRXL R9, DX, R11 // c46233f7da
//TODO: SHRXL R9D, R11, R11 // c44233f7db SHRXL R9, R11, R11 // c44233f7db
//TODO: SHRXQ R14, (BX), DX // c4e28bf713 SHRXQ R14, (BX), DX // c4e28bf713
//TODO: SHRXQ R14, (R11), DX // c4c28bf713 SHRXQ R14, (R11), DX // c4c28bf713
//TODO: SHRXQ R14, DX, DX // c4e28bf7d2 SHRXQ R14, DX, DX // c4e28bf7d2
//TODO: SHRXQ R14, R11, DX // c4c28bf7d3 SHRXQ R14, R11, DX // c4c28bf7d3
//TODO: SHRXQ R14, (BX), R11 // c4628bf71b SHRXQ R14, (BX), R11 // c4628bf71b
//TODO: SHRXQ R14, (R11), R11 // c4428bf71b SHRXQ R14, (R11), R11 // c4428bf71b
//TODO: SHRXQ R14, DX, R11 // c4628bf7da SHRXQ R14, DX, R11 // c4628bf7da
//TODO: SHRXQ R14, R11, R11 // c4428bf7db SHRXQ R14, R11, R11 // c4428bf7db
SHUFPD $7, (BX), X2 // 660fc61307 SHUFPD $7, (BX), X2 // 660fc61307
SHUFPD $7, (R11), X2 // 66410fc61307 SHUFPD $7, (R11), X2 // 66410fc61307
SHUFPD $7, X2, X2 // 660fc6d207 SHUFPD $7, X2, X2 // 660fc6d207

View File

@ -510,10 +510,22 @@ const (
AADDPS AADDPS
AADDSD AADDSD
AADDSS AADDSS
AANDNL
AANDNQ
AANDNPD AANDNPD
AANDNPS AANDNPS
AANDPD AANDPD
AANDPS AANDPS
ABEXTRL
ABEXTRQ
ABLSIL
ABLSIQ
ABLSMSKL
ABLSMSKQ
ABLSRL
ABLSRQ
ABZHIL
ABZHIQ
ACMPPD ACMPPD
ACMPPS ACMPPS
ACMPSD ACMPSD
@ -588,6 +600,8 @@ const (
AMULPS AMULPS
AMULSD AMULSD
AMULSS AMULSS
AMULXL
AMULXQ
AORPD AORPD
AORPS AORPS
APACKSSLW APACKSSLW
@ -618,6 +632,10 @@ const (
APCMPGTB APCMPGTB
APCMPGTL APCMPGTL
APCMPGTW APCMPGTW
APDEPL
APDEPQ
APEXTL
APEXTQ
APEXTRB APEXTRB
APEXTRD APEXTRD
APEXTRQ APEXTRQ
@ -714,6 +732,12 @@ const (
ARCPSS ARCPSS
ARSQRTPS ARSQRTPS
ARSQRTSS ARSQRTSS
ASARXL
ASARXQ
ASHLXL
ASHLXQ
ASHRXL
ASHRXQ
ASHUFPD ASHUFPD
ASHUFPS ASHUFPS
ASQRTPD ASQRTPD

View File

@ -459,10 +459,22 @@ var Anames = []string{
"ADDPS", "ADDPS",
"ADDSD", "ADDSD",
"ADDSS", "ADDSS",
"ANDNL",
"ANDNQ",
"ANDNPD", "ANDNPD",
"ANDNPS", "ANDNPS",
"ANDPD", "ANDPD",
"ANDPS", "ANDPS",
"BEXTRL",
"BEXTRQ",
"BLSIL",
"BLSIQ",
"BLSMSKL",
"BLSMSKQ",
"BLSRL",
"BLSRQ",
"BZHIL",
"BZHIQ",
"CMPPD", "CMPPD",
"CMPPS", "CMPPS",
"CMPSD", "CMPSD",
@ -537,6 +549,8 @@ var Anames = []string{
"MULPS", "MULPS",
"MULSD", "MULSD",
"MULSS", "MULSS",
"MULXL",
"MULXQ",
"ORPD", "ORPD",
"ORPS", "ORPS",
"PACKSSLW", "PACKSSLW",
@ -567,6 +581,10 @@ var Anames = []string{
"PCMPGTB", "PCMPGTB",
"PCMPGTL", "PCMPGTL",
"PCMPGTW", "PCMPGTW",
"PDEPL",
"PDEPQ",
"PEXTL",
"PEXTQ",
"PEXTRB", "PEXTRB",
"PEXTRD", "PEXTRD",
"PEXTRQ", "PEXTRQ",
@ -663,6 +681,12 @@ var Anames = []string{
"RCPSS", "RCPSS",
"RSQRTPS", "RSQRTPS",
"RSQRTSS", "RSQRTSS",
"SARXL",
"SARXQ",
"SHLXL",
"SHLXQ",
"SHRXL",
"SHRXQ",
"SHUFPD", "SHUFPD",
"SHUFPS", "SHUFPS",
"SQRTPD", "SQRTPD",

View File

@ -207,6 +207,7 @@ const (
Zbyte Zbyte
Zvex_rm_v_r Zvex_rm_v_r
Zvex_r_v_rm Zvex_r_v_rm
Zvex_v_rm_r
Zmax Zmax
) )
@ -850,6 +851,16 @@ var yvex_xy3 = []ytab{
{Yym, Yyr, Yyr, Zvex_rm_v_r, 2}, {Yym, Yyr, Yyr, Zvex_rm_v_r, 2},
} }
var yvex_r3 = []ytab{
{Yml, Yrl, Yrl, Zvex_rm_v_r, 2},
{Yml, Yrl, Yrl, Zvex_rm_v_r, 2},
}
var yvex_vmr3 = []ytab{
{Yrl, Yml, Yrl, Zvex_v_rm_r, 2},
{Yrl, Yml, Yrl, Zvex_v_rm_r, 2},
}
var yvex_xy2 = []ytab{ var yvex_xy2 = []ytab{
{Yxm, Ynone, Yxr, Zvex_rm_v_r, 2}, {Yxm, Ynone, Yxr, Zvex_rm_v_r, 2},
{Yym, Ynone, Yyr, Zvex_rm_v_r, 2}, {Yym, Ynone, Yyr, Zvex_rm_v_r, 2},
@ -1669,6 +1680,25 @@ var optab =
{APSHUFD, yxshuf, Pq, [23]uint8{0x70, 0}}, {APSHUFD, yxshuf, Pq, [23]uint8{0x70, 0}},
{APCLMULQDQ, yxshuf, Pq, [23]uint8{0x3a, 0x44, 0}}, {APCLMULQDQ, yxshuf, Pq, [23]uint8{0x3a, 0x44, 0}},
{AANDNL, yvex_r3, Pvex, [23]uint8{VEX_LZ_0F38_W0, 0xF2}},
{AANDNQ, yvex_r3, Pvex, [23]uint8{VEX_LZ_0F38_W1, 0xF2}},
{ABEXTRL, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_0F38_W0, 0xF7}},
{ABEXTRQ, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_0F38_W1, 0xF7}},
{ABZHIL, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_0F38_W0, 0xF5}},
{ABZHIQ, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_0F38_W1, 0xF5}},
{AMULXL, yvex_r3, Pvex, [23]uint8{VEX_LZ_F2_0F38_W0, 0xF6}},
{AMULXQ, yvex_r3, Pvex, [23]uint8{VEX_LZ_F2_0F38_W1, 0xF6}},
{APDEPL, yvex_r3, Pvex, [23]uint8{VEX_LZ_F2_0F38_W0, 0xF5}},
{APDEPQ, yvex_r3, Pvex, [23]uint8{VEX_LZ_F2_0F38_W1, 0xF5}},
{APEXTL, yvex_r3, Pvex, [23]uint8{VEX_LZ_F3_0F38_W0, 0xF5}},
{APEXTQ, yvex_r3, Pvex, [23]uint8{VEX_LZ_F3_0F38_W1, 0xF5}},
{ASARXL, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_F3_0F38_W0, 0xF7}},
{ASARXQ, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_F3_0F38_W1, 0xF7}},
{ASHLXL, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_66_0F38_W0, 0xF7}},
{ASHLXQ, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_66_0F38_W1, 0xF7}},
{ASHRXL, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_F2_0F38_W0, 0xF7}},
{ASHRXQ, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_F2_0F38_W1, 0xF7}},
{AVZEROUPPER, ynone, Px, [23]uint8{0xc5, 0xf8, 0x77}}, {AVZEROUPPER, ynone, Px, [23]uint8{0xc5, 0xf8, 0x77}},
{AVMOVDQU, yvex_vmovdqa, Pvex, [23]uint8{VEX_128_F3_0F_WIG, 0x6F, VEX_128_F3_0F_WIG, 0x7F, VEX_256_F3_0F_WIG, 0x6F, VEX_256_F3_0F_WIG, 0x7F}}, {AVMOVDQU, yvex_vmovdqa, Pvex, [23]uint8{VEX_128_F3_0F_WIG, 0x6F, VEX_128_F3_0F_WIG, 0x7F, VEX_256_F3_0F_WIG, 0x6F, VEX_256_F3_0F_WIG, 0x7F}},
{AVMOVDQA, yvex_vmovdqa, Pvex, [23]uint8{VEX_128_66_0F_WIG, 0x6F, VEX_128_66_0F_WIG, 0x7F, VEX_256_66_0F_WIG, 0x6F, VEX_256_66_0F_WIG, 0x7F}}, {AVMOVDQA, yvex_vmovdqa, Pvex, [23]uint8{VEX_128_66_0F_WIG, 0x6F, VEX_128_66_0F_WIG, 0x7F, VEX_256_66_0F_WIG, 0x6F, VEX_256_66_0F_WIG, 0x7F}},
@ -3542,6 +3572,10 @@ func doasm(ctxt *obj.Link, p *obj.Prog) {
asmvex(ctxt, &p.From, p.From3, &p.To, o.op[z], o.op[z+1]) asmvex(ctxt, &p.From, p.From3, &p.To, o.op[z], o.op[z+1])
asmand(ctxt, p, &p.From, &p.To) asmand(ctxt, p, &p.From, &p.To)
case Zvex_v_rm_r:
asmvex(ctxt, p.From3, &p.From, &p.To, o.op[z], o.op[z+1])
asmand(ctxt, p, p.From3, &p.To)
case Zvex_r_v_rm: case Zvex_r_v_rm:
asmvex(ctxt, &p.To, p.From3, &p.From, o.op[z], o.op[z+1]) asmvex(ctxt, &p.To, p.From3, &p.From, o.op[z], o.op[z+1])
asmand(ctxt, p, &p.To, &p.From) asmand(ctxt, p, &p.To, &p.From)