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

View File

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

View File

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

View File

@ -207,6 +207,7 @@ const (
Zbyte
Zvex_rm_v_r
Zvex_r_v_rm
Zvex_v_rm_r
Zmax
)
@ -850,6 +851,16 @@ var yvex_xy3 = []ytab{
{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{
{Yxm, Ynone, Yxr, 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}},
{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}},
{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}},
@ -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])
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:
asmvex(ctxt, &p.To, p.From3, &p.From, o.op[z], o.op[z+1])
asmand(ctxt, p, &p.To, &p.From)