1
0
mirror of https://github.com/golang/go synced 2024-11-20 10:04:45 -07:00

cmd/asm: add most SSE4 missing instructions

Instructions added:
  INSERTPS immb, r/m, xmm
  MPSADBW immb, r/m, xmm
  BLENDPD immb, r/m, xmm
  BLENDPS immb, r/m, xmm
  DPPD immb, r/m, xmm
  DPPS immb, r/m, xmm
  MOVNTDQA r/m, xmm
  PACKUSDW r/m, xmm
  PBLENDW immb, r/m, xmm
  PCMPEQQ r/m, xmm
  PCMPGTQ r/m, xmm
  PCMPISTRI immb, r/m, xmm
  PCMPISTRM immb, r/m, xmm
  PMAXSB r/m, xmm
  PMAXSD r/m, xmm
  PMAXUD r/m, xmm
  PMAXUW r/m, xmm
  PMINSB r/m, xmm
  PMINSD r/m, xmm
  PMINUD r/m, xmm
  PMINUW r/m, xmm
  PTEST r/m, xmm
  PCMPESTRM immb, r/m, xmm

Note: only 'optab' table is extended.

`EXTRACTPS immb, xmm, r/m` is not included in this
change due to new ytab set 'yextractps'. This should simplify
code review.

4-operand instructions are a subject of upcoming changes that
make 4-th (and so on) operands explicit.
Related TODO note in asm6.go:
"dont't hide 4op, some version have xmm version".

Part of the mission to add missing amd64 SSE4 instructions to Go asm.

Change-Id: I71716df14a8a5332e866dd0f0d52d43d7714872f
Reviewed-on: https://go-review.googlesource.com/57470
Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ilya Tocar <ilya.tocar@intel.com>
This commit is contained in:
isharipo 2017-08-21 12:12:41 +03:00 committed by Ilya Tocar
parent b15e8babc8
commit 50f1f639a4
4 changed files with 254 additions and 180 deletions

View File

@ -436,22 +436,22 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
BEXTRQ R14, (R11), R11 // c44288f71b BEXTRQ R14, (R11), R11 // c44288f71b
BEXTRQ R14, DX, R11 // c46288f7da BEXTRQ R14, DX, R11 // c46288f7da
BEXTRQ R14, R11, R11 // c44288f7db BEXTRQ R14, R11, R11 // c44288f7db
//TODO: BLENDPD $7, (BX), X2 // 660f3a0d1307 BLENDPD $7, (BX), X2 // 660f3a0d1307
//TODO: BLENDPD $7, (R11), X2 // 66410f3a0d1307 BLENDPD $7, (R11), X2 // 66410f3a0d1307
//TODO: BLENDPD $7, X2, X2 // 660f3a0dd207 BLENDPD $7, X2, X2 // 660f3a0dd207
//TODO: BLENDPD $7, X11, X2 // 66410f3a0dd307 BLENDPD $7, X11, X2 // 66410f3a0dd307
//TODO: BLENDPD $7, (BX), X11 // 66440f3a0d1b07 BLENDPD $7, (BX), X11 // 66440f3a0d1b07
//TODO: BLENDPD $7, (R11), X11 // 66450f3a0d1b07 BLENDPD $7, (R11), X11 // 66450f3a0d1b07
//TODO: BLENDPD $7, X2, X11 // 66440f3a0dda07 BLENDPD $7, X2, X11 // 66440f3a0dda07
//TODO: BLENDPD $7, X11, X11 // 66450f3a0ddb07 BLENDPD $7, X11, X11 // 66450f3a0ddb07
//TODO: BLENDPS $7, (BX), X2 // 660f3a0c1307 BLENDPS $7, (BX), X2 // 660f3a0c1307
//TODO: BLENDPS $7, (R11), X2 // 66410f3a0c1307 BLENDPS $7, (R11), X2 // 66410f3a0c1307
//TODO: BLENDPS $7, X2, X2 // 660f3a0cd207 BLENDPS $7, X2, X2 // 660f3a0cd207
//TODO: BLENDPS $7, X11, X2 // 66410f3a0cd307 BLENDPS $7, X11, X2 // 66410f3a0cd307
//TODO: BLENDPS $7, (BX), X11 // 66440f3a0c1b07 BLENDPS $7, (BX), X11 // 66440f3a0c1b07
//TODO: BLENDPS $7, (R11), X11 // 66450f3a0c1b07 BLENDPS $7, (R11), X11 // 66450f3a0c1b07
//TODO: BLENDPS $7, X2, X11 // 66440f3a0cda07 BLENDPS $7, X2, X11 // 66440f3a0cda07
//TODO: BLENDPS $7, X11, X11 // 66450f3a0cdb07 BLENDPS $7, X11, X11 // 66450f3a0cdb07
//TODO: BLENDVPD XMM0, (BX), X2 // 660f381513 //TODO: BLENDVPD XMM0, (BX), X2 // 660f381513
//TODO: BLENDVPD XMM0, (R11), X2 // 66410f381513 //TODO: BLENDVPD XMM0, (R11), X2 // 66410f381513
//TODO: BLENDVPD XMM0, X2, X2 // 660f3815d2 //TODO: BLENDVPD XMM0, X2, X2 // 660f3815d2
@ -1622,22 +1622,22 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
DIVSS (R11), X11 // f3450f5e1b DIVSS (R11), X11 // f3450f5e1b
DIVSS X2, X11 // f3440f5eda DIVSS X2, X11 // f3440f5eda
DIVSS X11, X11 // f3450f5edb DIVSS X11, X11 // f3450f5edb
//TODO: DPPD $7, (BX), X2 // 660f3a411307 DPPD $7, (BX), X2 // 660f3a411307
//TODO: DPPD $7, (R11), X2 // 66410f3a411307 DPPD $7, (R11), X2 // 66410f3a411307
//TODO: DPPD $7, X2, X2 // 660f3a41d207 DPPD $7, X2, X2 // 660f3a41d207
//TODO: DPPD $7, X11, X2 // 66410f3a41d307 DPPD $7, X11, X2 // 66410f3a41d307
//TODO: DPPD $7, (BX), X11 // 66440f3a411b07 DPPD $7, (BX), X11 // 66440f3a411b07
//TODO: DPPD $7, (R11), X11 // 66450f3a411b07 DPPD $7, (R11), X11 // 66450f3a411b07
//TODO: DPPD $7, X2, X11 // 66440f3a41da07 DPPD $7, X2, X11 // 66440f3a41da07
//TODO: DPPD $7, X11, X11 // 66450f3a41db07 DPPD $7, X11, X11 // 66450f3a41db07
//TODO: DPPS $7, (BX), X2 // 660f3a401307 DPPS $7, (BX), X2 // 660f3a401307
//TODO: DPPS $7, (R11), X2 // 66410f3a401307 DPPS $7, (R11), X2 // 66410f3a401307
//TODO: DPPS $7, X2, X2 // 660f3a40d207 DPPS $7, X2, X2 // 660f3a40d207
//TODO: DPPS $7, X11, X2 // 66410f3a40d307 DPPS $7, X11, X2 // 66410f3a40d307
//TODO: DPPS $7, (BX), X11 // 66440f3a401b07 DPPS $7, (BX), X11 // 66440f3a401b07
//TODO: DPPS $7, (R11), X11 // 66450f3a401b07 DPPS $7, (R11), X11 // 66450f3a401b07
//TODO: DPPS $7, X2, X11 // 66440f3a40da07 DPPS $7, X2, X11 // 66440f3a40da07
//TODO: DPPS $7, X11, X11 // 66450f3a40db07 DPPS $7, X11, X11 // 66450f3a40db07
EMMS // 0f77 EMMS // 0f77
//TODO: ENTERQ $0x12, $0xf123 // c823f112 //TODO: ENTERQ $0x12, $0xf123 // c823f112
//TODO: EXTRACTPS $7, X2, (BX) // 660f3a171307 //TODO: EXTRACTPS $7, X2, (BX) // 660f3a171307
@ -2042,14 +2042,14 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
INCB R11 // 41fec3 INCB R11 // 41fec3
INSB // 6c INSB // 6c
INSL // 6d INSL // 6d
//TODO: INSERTPS $7, (BX), X2 // 660f3a211307 INSERTPS $7, (BX), X2 // 660f3a211307
//TODO: INSERTPS $7, (R11), X2 // 66410f3a211307 INSERTPS $7, (R11), X2 // 66410f3a211307
//TODO: INSERTPS $7, X2, X2 // 660f3a21d207 INSERTPS $7, X2, X2 // 660f3a21d207
//TODO: INSERTPS $7, X11, X2 // 66410f3a21d307 INSERTPS $7, X11, X2 // 66410f3a21d307
//TODO: INSERTPS $7, (BX), X11 // 66440f3a211b07 INSERTPS $7, (BX), X11 // 66440f3a211b07
//TODO: INSERTPS $7, (R11), X11 // 66450f3a211b07 INSERTPS $7, (R11), X11 // 66450f3a211b07
//TODO: INSERTPS $7, X2, X11 // 66440f3a21da07 INSERTPS $7, X2, X11 // 66440f3a21da07
//TODO: INSERTPS $7, X11, X11 // 66450f3a21db07 INSERTPS $7, X11, X11 // 66450f3a21db07
INSW // 666d INSW // 666d
//TODO: INT $3 // cc //TODO: INT $3 // cc
INT $7 // cd07 INT $7 // cd07
@ -2641,10 +2641,10 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
MOVNTO X11, (BX) // 66440fe71b MOVNTO X11, (BX) // 66440fe71b
MOVNTO X2, (R11) // 66410fe713 MOVNTO X2, (R11) // 66410fe713
MOVNTO X11, (R11) // 66450fe71b MOVNTO X11, (R11) // 66450fe71b
//TODO: MOVNTDQA (BX), X2 // 660f382a13 MOVNTDQA (BX), X2 // 660f382a13
//TODO: MOVNTDQA (R11), X2 // 66410f382a13 MOVNTDQA (R11), X2 // 66410f382a13
//TODO: MOVNTDQA (BX), X11 // 66440f382a1b MOVNTDQA (BX), X11 // 66440f382a1b
//TODO: MOVNTDQA (R11), X11 // 66450f382a1b MOVNTDQA (R11), X11 // 66450f382a1b
MOVNTIL DX, (BX) // 0fc313 MOVNTIL DX, (BX) // 0fc313
MOVNTIL R11, (BX) // 440fc31b MOVNTIL R11, (BX) // 440fc31b
MOVNTIL DX, (R11) // 410fc313 MOVNTIL DX, (R11) // 410fc313
@ -2857,14 +2857,14 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
//TODO: MOVBQZX (R11), R11 // 4d0fb61b //TODO: MOVBQZX (R11), R11 // 4d0fb61b
//TODO: MOVBQZX DL, R11 // 4c0fb6da //TODO: MOVBQZX DL, R11 // 4c0fb6da
//TODO: MOVBQZX R11, R11 // 4d0fb6db //TODO: MOVBQZX R11, R11 // 4d0fb6db
//TODO: MPSADBW $7, (BX), X2 // 660f3a421307 MPSADBW $7, (BX), X2 // 660f3a421307
//TODO: MPSADBW $7, (R11), X2 // 66410f3a421307 MPSADBW $7, (R11), X2 // 66410f3a421307
//TODO: MPSADBW $7, X2, X2 // 660f3a42d207 MPSADBW $7, X2, X2 // 660f3a42d207
//TODO: MPSADBW $7, X11, X2 // 66410f3a42d307 MPSADBW $7, X11, X2 // 66410f3a42d307
//TODO: MPSADBW $7, (BX), X11 // 66440f3a421b07 MPSADBW $7, (BX), X11 // 66440f3a421b07
//TODO: MPSADBW $7, (R11), X11 // 66450f3a421b07 MPSADBW $7, (R11), X11 // 66450f3a421b07
//TODO: MPSADBW $7, X2, X11 // 66440f3a42da07 MPSADBW $7, X2, X11 // 66440f3a42da07
//TODO: MPSADBW $7, X11, X11 // 66450f3a42db07 MPSADBW $7, X11, X11 // 66450f3a42db07
MULW (BX) // 66f723 MULW (BX) // 66f723
MULW (R11) // 6641f723 MULW (R11) // 6641f723
MULW DX // 66f7e2 MULW DX // 66f7e2
@ -3155,14 +3155,14 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
PACKSSWB (R11), X11 // 66450f631b PACKSSWB (R11), X11 // 66450f631b
PACKSSWB X2, X11 // 66440f63da PACKSSWB X2, X11 // 66440f63da
PACKSSWB X11, X11 // 66450f63db PACKSSWB X11, X11 // 66450f63db
//TODO: PACKUSDW (BX), X2 // 660f382b13 PACKUSDW (BX), X2 // 660f382b13
//TODO: PACKUSDW (R11), X2 // 66410f382b13 PACKUSDW (R11), X2 // 66410f382b13
//TODO: PACKUSDW X2, X2 // 660f382bd2 PACKUSDW X2, X2 // 660f382bd2
//TODO: PACKUSDW X11, X2 // 66410f382bd3 PACKUSDW X11, X2 // 66410f382bd3
//TODO: PACKUSDW (BX), X11 // 66440f382b1b PACKUSDW (BX), X11 // 66440f382b1b
//TODO: PACKUSDW (R11), X11 // 66450f382b1b PACKUSDW (R11), X11 // 66450f382b1b
//TODO: PACKUSDW X2, X11 // 66440f382bda PACKUSDW X2, X11 // 66440f382bda
//TODO: PACKUSDW X11, X11 // 66450f382bdb PACKUSDW X11, X11 // 66450f382bdb
PACKUSWB (BX), M2 // 0f6713 PACKUSWB (BX), M2 // 0f6713
PACKUSWB (R11), M2 // 410f6713 PACKUSWB (R11), M2 // 410f6713
PACKUSWB M2, M2 // 0f67d2 PACKUSWB M2, M2 // 0f67d2
@ -3395,14 +3395,14 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
//TODO: PBLENDVB XMM0, (R11), X11 // 66450f38101b //TODO: PBLENDVB XMM0, (R11), X11 // 66450f38101b
//TODO: PBLENDVB XMM0, X2, X11 // 66440f3810da //TODO: PBLENDVB XMM0, X2, X11 // 66440f3810da
//TODO: PBLENDVB XMM0, X11, X11 // 66450f3810db //TODO: PBLENDVB XMM0, X11, X11 // 66450f3810db
//TODO: PBLENDW $7, (BX), X2 // 660f3a0e1307 PBLENDW $7, (BX), X2 // 660f3a0e1307
//TODO: PBLENDW $7, (R11), X2 // 66410f3a0e1307 PBLENDW $7, (R11), X2 // 66410f3a0e1307
//TODO: PBLENDW $7, X2, X2 // 660f3a0ed207 PBLENDW $7, X2, X2 // 660f3a0ed207
//TODO: PBLENDW $7, X11, X2 // 66410f3a0ed307 PBLENDW $7, X11, X2 // 66410f3a0ed307
//TODO: PBLENDW $7, (BX), X11 // 66440f3a0e1b07 PBLENDW $7, (BX), X11 // 66440f3a0e1b07
//TODO: PBLENDW $7, (R11), X11 // 66450f3a0e1b07 PBLENDW $7, (R11), X11 // 66450f3a0e1b07
//TODO: PBLENDW $7, X2, X11 // 66440f3a0eda07 PBLENDW $7, X2, X11 // 66440f3a0eda07
//TODO: PBLENDW $7, X11, X11 // 66450f3a0edb07 PBLENDW $7, X11, X11 // 66450f3a0edb07
PCLMULQDQ $7, (BX), X2 // 660f3a441307 PCLMULQDQ $7, (BX), X2 // 660f3a441307
PCLMULQDQ $7, (R11), X2 // 66410f3a441307 PCLMULQDQ $7, (R11), X2 // 66410f3a441307
PCLMULQDQ $7, X2, X2 // 660f3a44d207 PCLMULQDQ $7, X2, X2 // 660f3a44d207
@ -3443,14 +3443,14 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
PCMPEQL (R11), X11 // 66450f761b PCMPEQL (R11), X11 // 66450f761b
PCMPEQL X2, X11 // 66440f76da PCMPEQL X2, X11 // 66440f76da
PCMPEQL X11, X11 // 66450f76db PCMPEQL X11, X11 // 66450f76db
//TODO: PCMPEQQ (BX), X2 // 660f382913 PCMPEQQ (BX), X2 // 660f382913
//TODO: PCMPEQQ (R11), X2 // 66410f382913 PCMPEQQ (R11), X2 // 66410f382913
//TODO: PCMPEQQ X2, X2 // 660f3829d2 PCMPEQQ X2, X2 // 660f3829d2
//TODO: PCMPEQQ X11, X2 // 66410f3829d3 PCMPEQQ X11, X2 // 66410f3829d3
//TODO: PCMPEQQ (BX), X11 // 66440f38291b PCMPEQQ (BX), X11 // 66440f38291b
//TODO: PCMPEQQ (R11), X11 // 66450f38291b PCMPEQQ (R11), X11 // 66450f38291b
//TODO: PCMPEQQ X2, X11 // 66440f3829da PCMPEQQ X2, X11 // 66440f3829da
//TODO: PCMPEQQ X11, X11 // 66450f3829db PCMPEQQ X11, X11 // 66450f3829db
PCMPEQW (BX), M2 // 0f7513 PCMPEQW (BX), M2 // 0f7513
PCMPEQW (R11), M2 // 410f7513 PCMPEQW (R11), M2 // 410f7513
PCMPEQW M2, M2 // 0f75d2 PCMPEQW M2, M2 // 0f75d2
@ -3475,14 +3475,14 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
PCMPESTRI $7, (R11), X11 // 66450f3a611b07 PCMPESTRI $7, (R11), X11 // 66450f3a611b07
PCMPESTRI $7, X2, X11 // 66440f3a61da07 PCMPESTRI $7, X2, X11 // 66440f3a61da07
PCMPESTRI $7, X11, X11 // 66450f3a61db07 PCMPESTRI $7, X11, X11 // 66450f3a61db07
//TODO: PCMPESTRM $7, (BX), X2 // 660f3a601307 PCMPESTRM $7, (BX), X2 // 660f3a601307
//TODO: PCMPESTRM $7, (R11), X2 // 66410f3a601307 PCMPESTRM $7, (R11), X2 // 66410f3a601307
//TODO: PCMPESTRM $7, X2, X2 // 660f3a60d207 PCMPESTRM $7, X2, X2 // 660f3a60d207
//TODO: PCMPESTRM $7, X11, X2 // 66410f3a60d307 PCMPESTRM $7, X11, X2 // 66410f3a60d307
//TODO: PCMPESTRM $7, (BX), X11 // 66440f3a601b07 PCMPESTRM $7, (BX), X11 // 66440f3a601b07
//TODO: PCMPESTRM $7, (R11), X11 // 66450f3a601b07 PCMPESTRM $7, (R11), X11 // 66450f3a601b07
//TODO: PCMPESTRM $7, X2, X11 // 66440f3a60da07 PCMPESTRM $7, X2, X11 // 66440f3a60da07
//TODO: PCMPESTRM $7, X11, X11 // 66450f3a60db07 PCMPESTRM $7, X11, X11 // 66450f3a60db07
PCMPGTB (BX), M2 // 0f6413 PCMPGTB (BX), M2 // 0f6413
PCMPGTB (R11), M2 // 410f6413 PCMPGTB (R11), M2 // 410f6413
PCMPGTB M2, M2 // 0f64d2 PCMPGTB M2, M2 // 0f64d2
@ -3515,14 +3515,14 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
PCMPGTL (R11), X11 // 66450f661b PCMPGTL (R11), X11 // 66450f661b
PCMPGTL X2, X11 // 66440f66da PCMPGTL X2, X11 // 66440f66da
PCMPGTL X11, X11 // 66450f66db PCMPGTL X11, X11 // 66450f66db
//TODO: PCMPGTQ (BX), X2 // 660f383713 PCMPGTQ (BX), X2 // 660f383713
//TODO: PCMPGTQ (R11), X2 // 66410f383713 PCMPGTQ (R11), X2 // 66410f383713
//TODO: PCMPGTQ X2, X2 // 660f3837d2 PCMPGTQ X2, X2 // 660f3837d2
//TODO: PCMPGTQ X11, X2 // 66410f3837d3 PCMPGTQ X11, X2 // 66410f3837d3
//TODO: PCMPGTQ (BX), X11 // 66440f38371b PCMPGTQ (BX), X11 // 66440f38371b
//TODO: PCMPGTQ (R11), X11 // 66450f38371b PCMPGTQ (R11), X11 // 66450f38371b
//TODO: PCMPGTQ X2, X11 // 66440f3837da PCMPGTQ X2, X11 // 66440f3837da
//TODO: PCMPGTQ X11, X11 // 66450f3837db PCMPGTQ X11, X11 // 66450f3837db
PCMPGTW (BX), M2 // 0f6513 PCMPGTW (BX), M2 // 0f6513
PCMPGTW (R11), M2 // 410f6513 PCMPGTW (R11), M2 // 410f6513
PCMPGTW M2, M2 // 0f65d2 PCMPGTW M2, M2 // 0f65d2
@ -3539,22 +3539,22 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
PCMPGTW (R11), X11 // 66450f651b PCMPGTW (R11), X11 // 66450f651b
PCMPGTW X2, X11 // 66440f65da PCMPGTW X2, X11 // 66440f65da
PCMPGTW X11, X11 // 66450f65db PCMPGTW X11, X11 // 66450f65db
//TODO: PCMPISTRI $7, (BX), X2 // 660f3a631307 PCMPISTRI $7, (BX), X2 // 660f3a631307
//TODO: PCMPISTRI $7, (R11), X2 // 66410f3a631307 PCMPISTRI $7, (R11), X2 // 66410f3a631307
//TODO: PCMPISTRI $7, X2, X2 // 660f3a63d207 PCMPISTRI $7, X2, X2 // 660f3a63d207
//TODO: PCMPISTRI $7, X11, X2 // 66410f3a63d307 PCMPISTRI $7, X11, X2 // 66410f3a63d307
//TODO: PCMPISTRI $7, (BX), X11 // 66440f3a631b07 PCMPISTRI $7, (BX), X11 // 66440f3a631b07
//TODO: PCMPISTRI $7, (R11), X11 // 66450f3a631b07 PCMPISTRI $7, (R11), X11 // 66450f3a631b07
//TODO: PCMPISTRI $7, X2, X11 // 66440f3a63da07 PCMPISTRI $7, X2, X11 // 66440f3a63da07
//TODO: PCMPISTRI $7, X11, X11 // 66450f3a63db07 PCMPISTRI $7, X11, X11 // 66450f3a63db07
//TODO: PCMPISTRM $7, (BX), X2 // 660f3a621307 PCMPISTRM $7, (BX), X2 // 660f3a621307
//TODO: PCMPISTRM $7, (R11), X2 // 66410f3a621307 PCMPISTRM $7, (R11), X2 // 66410f3a621307
//TODO: PCMPISTRM $7, X2, X2 // 660f3a62d207 PCMPISTRM $7, X2, X2 // 660f3a62d207
//TODO: PCMPISTRM $7, X11, X2 // 66410f3a62d307 PCMPISTRM $7, X11, X2 // 66410f3a62d307
//TODO: PCMPISTRM $7, (BX), X11 // 66440f3a621b07 PCMPISTRM $7, (BX), X11 // 66440f3a621b07
//TODO: PCMPISTRM $7, (R11), X11 // 66450f3a621b07 PCMPISTRM $7, (R11), X11 // 66450f3a621b07
//TODO: PCMPISTRM $7, X2, X11 // 66440f3a62da07 PCMPISTRM $7, X2, X11 // 66440f3a62da07
//TODO: PCMPISTRM $7, X11, X11 // 66450f3a62db07 PCMPISTRM $7, X11, X11 // 66450f3a62db07
PDEPL (BX), R9, DX // c4e233f513 PDEPL (BX), R9, DX // c4e233f513
PDEPL (R11), R9, DX // c4c233f513 PDEPL (R11), R9, DX // c4c233f513
PDEPL DX, R9, DX // c4e233f5d2 PDEPL DX, R9, DX // c4e233f5d2
@ -3799,22 +3799,22 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
PMADDWL (R11), X11 // 66450ff51b PMADDWL (R11), X11 // 66450ff51b
PMADDWL X2, X11 // 66440ff5da PMADDWL X2, X11 // 66440ff5da
PMADDWL X11, X11 // 66450ff5db PMADDWL X11, X11 // 66450ff5db
//TODO: PMAXSB (BX), X2 // 660f383c13 PMAXSB (BX), X2 // 660f383c13
//TODO: PMAXSB (R11), X2 // 66410f383c13 PMAXSB (R11), X2 // 66410f383c13
//TODO: PMAXSB X2, X2 // 660f383cd2 PMAXSB X2, X2 // 660f383cd2
//TODO: PMAXSB X11, X2 // 66410f383cd3 PMAXSB X11, X2 // 66410f383cd3
//TODO: PMAXSB (BX), X11 // 66440f383c1b PMAXSB (BX), X11 // 66440f383c1b
//TODO: PMAXSB (R11), X11 // 66450f383c1b PMAXSB (R11), X11 // 66450f383c1b
//TODO: PMAXSB X2, X11 // 66440f383cda PMAXSB X2, X11 // 66440f383cda
//TODO: PMAXSB X11, X11 // 66450f383cdb PMAXSB X11, X11 // 66450f383cdb
//TODO: PMAXSD (BX), X2 // 660f383d13 PMAXSD (BX), X2 // 660f383d13
//TODO: PMAXSD (R11), X2 // 66410f383d13 PMAXSD (R11), X2 // 66410f383d13
//TODO: PMAXSD X2, X2 // 660f383dd2 PMAXSD X2, X2 // 660f383dd2
//TODO: PMAXSD X11, X2 // 66410f383dd3 PMAXSD X11, X2 // 66410f383dd3
//TODO: PMAXSD (BX), X11 // 66440f383d1b PMAXSD (BX), X11 // 66440f383d1b
//TODO: PMAXSD (R11), X11 // 66450f383d1b PMAXSD (R11), X11 // 66450f383d1b
//TODO: PMAXSD X2, X11 // 66440f383dda PMAXSD X2, X11 // 66440f383dda
//TODO: PMAXSD X11, X11 // 66450f383ddb PMAXSD X11, X11 // 66450f383ddb
//TODO: PMAXSW (BX), M2 // 0fee13 //TODO: PMAXSW (BX), M2 // 0fee13
//TODO: PMAXSW (R11), M2 // 410fee13 //TODO: PMAXSW (R11), M2 // 410fee13
//TODO: PMAXSW M2, M2 // 0feed2 //TODO: PMAXSW M2, M2 // 0feed2
@ -3847,38 +3847,38 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
PMAXUB (R11), X11 // 66450fde1b PMAXUB (R11), X11 // 66450fde1b
PMAXUB X2, X11 // 66440fdeda PMAXUB X2, X11 // 66440fdeda
PMAXUB X11, X11 // 66450fdedb PMAXUB X11, X11 // 66450fdedb
//TODO: PMAXUD (BX), X2 // 660f383f13 PMAXUD (BX), X2 // 660f383f13
//TODO: PMAXUD (R11), X2 // 66410f383f13 PMAXUD (R11), X2 // 66410f383f13
//TODO: PMAXUD X2, X2 // 660f383fd2 PMAXUD X2, X2 // 660f383fd2
//TODO: PMAXUD X11, X2 // 66410f383fd3 PMAXUD X11, X2 // 66410f383fd3
//TODO: PMAXUD (BX), X11 // 66440f383f1b PMAXUD (BX), X11 // 66440f383f1b
//TODO: PMAXUD (R11), X11 // 66450f383f1b PMAXUD (R11), X11 // 66450f383f1b
//TODO: PMAXUD X2, X11 // 66440f383fda PMAXUD X2, X11 // 66440f383fda
//TODO: PMAXUD X11, X11 // 66450f383fdb PMAXUD X11, X11 // 66450f383fdb
//TODO: PMAXUW (BX), X2 // 660f383e13 PMAXUW (BX), X2 // 660f383e13
//TODO: PMAXUW (R11), X2 // 66410f383e13 PMAXUW (R11), X2 // 66410f383e13
//TODO: PMAXUW X2, X2 // 660f383ed2 PMAXUW X2, X2 // 660f383ed2
//TODO: PMAXUW X11, X2 // 66410f383ed3 PMAXUW X11, X2 // 66410f383ed3
//TODO: PMAXUW (BX), X11 // 66440f383e1b PMAXUW (BX), X11 // 66440f383e1b
//TODO: PMAXUW (R11), X11 // 66450f383e1b PMAXUW (R11), X11 // 66450f383e1b
//TODO: PMAXUW X2, X11 // 66440f383eda PMAXUW X2, X11 // 66440f383eda
//TODO: PMAXUW X11, X11 // 66450f383edb PMAXUW X11, X11 // 66450f383edb
//TODO: PMINSB (BX), X2 // 660f383813 PMINSB (BX), X2 // 660f383813
//TODO: PMINSB (R11), X2 // 66410f383813 PMINSB (R11), X2 // 66410f383813
//TODO: PMINSB X2, X2 // 660f3838d2 PMINSB X2, X2 // 660f3838d2
//TODO: PMINSB X11, X2 // 66410f3838d3 PMINSB X11, X2 // 66410f3838d3
//TODO: PMINSB (BX), X11 // 66440f38381b PMINSB (BX), X11 // 66440f38381b
//TODO: PMINSB (R11), X11 // 66450f38381b PMINSB (R11), X11 // 66450f38381b
//TODO: PMINSB X2, X11 // 66440f3838da PMINSB X2, X11 // 66440f3838da
//TODO: PMINSB X11, X11 // 66450f3838db PMINSB X11, X11 // 66450f3838db
//TODO: PMINSD (BX), X2 // 660f383913 PMINSD (BX), X2 // 660f383913
//TODO: PMINSD (R11), X2 // 66410f383913 PMINSD (R11), X2 // 66410f383913
//TODO: PMINSD X2, X2 // 660f3839d2 PMINSD X2, X2 // 660f3839d2
//TODO: PMINSD X11, X2 // 66410f3839d3 PMINSD X11, X2 // 66410f3839d3
//TODO: PMINSD (BX), X11 // 66440f38391b PMINSD (BX), X11 // 66440f38391b
//TODO: PMINSD (R11), X11 // 66450f38391b PMINSD (R11), X11 // 66450f38391b
//TODO: PMINSD X2, X11 // 66440f3839da PMINSD X2, X11 // 66440f3839da
//TODO: PMINSD X11, X11 // 66450f3839db PMINSD X11, X11 // 66450f3839db
//TODO: PMINSW (BX), M2 // 0fea13 //TODO: PMINSW (BX), M2 // 0fea13
//TODO: PMINSW (R11), M2 // 410fea13 //TODO: PMINSW (R11), M2 // 410fea13
//TODO: PMINSW M2, M2 // 0fead2 //TODO: PMINSW M2, M2 // 0fead2
@ -3911,22 +3911,22 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
PMINUB (R11), X11 // 66450fda1b PMINUB (R11), X11 // 66450fda1b
PMINUB X2, X11 // 66440fdada PMINUB X2, X11 // 66440fdada
PMINUB X11, X11 // 66450fdadb PMINUB X11, X11 // 66450fdadb
//TODO: PMINUD (BX), X2 // 660f383b13 PMINUD (BX), X2 // 660f383b13
//TODO: PMINUD (R11), X2 // 66410f383b13 PMINUD (R11), X2 // 66410f383b13
//TODO: PMINUD X2, X2 // 660f383bd2 PMINUD X2, X2 // 660f383bd2
//TODO: PMINUD X11, X2 // 66410f383bd3 PMINUD X11, X2 // 66410f383bd3
//TODO: PMINUD (BX), X11 // 66440f383b1b PMINUD (BX), X11 // 66440f383b1b
//TODO: PMINUD (R11), X11 // 66450f383b1b PMINUD (R11), X11 // 66450f383b1b
//TODO: PMINUD X2, X11 // 66440f383bda PMINUD X2, X11 // 66440f383bda
//TODO: PMINUD X11, X11 // 66450f383bdb PMINUD X11, X11 // 66450f383bdb
//TODO: PMINUW (BX), X2 // 660f383a13 PMINUW (BX), X2 // 660f383a13
//TODO: PMINUW (R11), X2 // 66410f383a13 PMINUW (R11), X2 // 66410f383a13
//TODO: PMINUW X2, X2 // 660f383ad2 PMINUW X2, X2 // 660f383ad2
//TODO: PMINUW X11, X2 // 66410f383ad3 PMINUW X11, X2 // 66410f383ad3
//TODO: PMINUW (BX), X11 // 66440f383a1b PMINUW (BX), X11 // 66440f383a1b
//TODO: PMINUW (R11), X11 // 66450f383a1b PMINUW (R11), X11 // 66450f383a1b
//TODO: PMINUW X2, X11 // 66440f383ada PMINUW X2, X11 // 66440f383ada
//TODO: PMINUW X11, X11 // 66450f383adb PMINUW X11, X11 // 66450f383adb
PMOVMSKB M2, DX // 0fd7d2 PMOVMSKB M2, DX // 0fd7d2
PMOVMSKB M3, DX // 0fd7d3 PMOVMSKB M3, DX // 0fd7d3
PMOVMSKB M2, R11 // 440fd7da PMOVMSKB M2, R11 // 440fd7da
@ -4615,14 +4615,14 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
PSUBW (R11), X11 // 66450ff91b PSUBW (R11), X11 // 66450ff91b
PSUBW X2, X11 // 66440ff9da PSUBW X2, X11 // 66440ff9da
PSUBW X11, X11 // 66450ff9db PSUBW X11, X11 // 66450ff9db
//TODO: PTEST (BX), X2 // 660f381713 PTEST (BX), X2 // 660f381713
//TODO: PTEST (R11), X2 // 66410f381713 PTEST (R11), X2 // 66410f381713
//TODO: PTEST X2, X2 // 660f3817d2 PTEST X2, X2 // 660f3817d2
//TODO: PTEST X11, X2 // 66410f3817d3 PTEST X11, X2 // 66410f3817d3
//TODO: PTEST (BX), X11 // 66440f38171b PTEST (BX), X11 // 66440f38171b
//TODO: PTEST (R11), X11 // 66450f38171b PTEST (R11), X11 // 66450f38171b
//TODO: PTEST X2, X11 // 66440f3817da PTEST X2, X11 // 66440f3817da
//TODO: PTEST X11, X11 // 66450f3817db PTEST X11, X11 // 66450f3817db
PUNPCKHBW (BX), M2 // 0f6813 PUNPCKHBW (BX), M2 // 0f6813
PUNPCKHBW (R11), M2 // 410f6813 PUNPCKHBW (R11), M2 // 410f6813
PUNPCKHBW M2, M2 // 0f68d2 PUNPCKHBW M2, M2 // 0f68d2

View File

@ -116,6 +116,7 @@ const (
AINCW AINCW
AINSB AINSB
AINSL AINSL
AINSERTPS
AINSW AINSW
AINT AINT
AINTO AINTO
@ -171,6 +172,7 @@ const (
AMOVSB AMOVSB
AMOVSL AMOVSL
AMOVSW AMOVSW
AMPSADBW
AMULB AMULB
AMULL AMULL
AMULW AMULW
@ -530,6 +532,8 @@ const (
AANDPS AANDPS
ABEXTRL ABEXTRL
ABEXTRQ ABEXTRQ
ABLENDPD
ABLENDPS
ABLSIL ABLSIL
ABLSIQ ABLSIQ
ABLSMSKL ABLSMSKL
@ -570,6 +574,8 @@ const (
ADIVPS ADIVPS
ADIVSD ADIVSD
ADIVSS ADIVSS
ADPPD
ADPPS
AEMMS AEMMS
AFXRSTOR AFXRSTOR
AFXRSTOR64 AFXRSTOR64
@ -599,6 +605,7 @@ const (
AMOVMSKPD AMOVMSKPD
AMOVMSKPS AMOVMSKPS
AMOVNTO AMOVNTO
AMOVNTDQA
AMOVNTPD AMOVNTPD
AMOVNTPS AMOVNTPS
AMOVNTQ AMOVNTQ
@ -618,6 +625,7 @@ const (
AORPS AORPS
APACKSSLW APACKSSLW
APACKSSWB APACKSSWB
APACKUSDW
APACKUSWB APACKUSWB
APADDB APADDB
APADDL APADDL
@ -632,12 +640,17 @@ const (
APANDN APANDN
APAVGB APAVGB
APAVGW APAVGW
APBLENDW
APCMPEQB APCMPEQB
APCMPEQL APCMPEQL
APCMPEQQ
APCMPEQW APCMPEQW
APCMPGTB APCMPGTB
APCMPGTL APCMPGTL
APCMPGTQ
APCMPGTW APCMPGTW
APCMPISTRI
APCMPISTRM
APDEPL APDEPL
APDEPQ APDEPQ
APEXTL APEXTL
@ -659,10 +672,18 @@ const (
APINSRW APINSRW
APMADDUBSW APMADDUBSW
APMADDWL APMADDWL
APMAXSB
APMAXSD
APMAXSW APMAXSW
APMAXUB APMAXUB
APMAXUD
APMAXUW
APMINSB
APMINSD
APMINSW APMINSW
APMINUB APMINUB
APMINUD
APMINUW
APMOVMSKB APMOVMSKB
APMOVSXBD APMOVSXBD
APMOVSXBQ APMOVSXBQ
@ -711,6 +732,7 @@ const (
APSUBUSB APSUBUSB
APSUBUSW APSUBUSW
APSUBW APSUBW
APTEST
APUNPCKHBW APUNPCKHBW
APUNPCKHLQ APUNPCKHLQ
APUNPCKHQDQ APUNPCKHQDQ
@ -750,6 +772,7 @@ const (
AXORPD AXORPD
AXORPS AXORPS
APCMPESTRI APCMPESTRI
APCMPESTRM
ARETFW ARETFW
ARETFL ARETFL

View File

@ -78,6 +78,7 @@ var Anames = []string{
"INCW", "INCW",
"INSB", "INSB",
"INSL", "INSL",
"INSERTPS",
"INSW", "INSW",
"INT", "INT",
"INTO", "INTO",
@ -133,6 +134,7 @@ var Anames = []string{
"MOVSB", "MOVSB",
"MOVSL", "MOVSL",
"MOVSW", "MOVSW",
"MPSADBW",
"MULB", "MULB",
"MULL", "MULL",
"MULW", "MULW",
@ -473,6 +475,8 @@ var Anames = []string{
"ANDPS", "ANDPS",
"BEXTRL", "BEXTRL",
"BEXTRQ", "BEXTRQ",
"BLENDPD",
"BLENDPS",
"BLSIL", "BLSIL",
"BLSIQ", "BLSIQ",
"BLSMSKL", "BLSMSKL",
@ -513,6 +517,8 @@ var Anames = []string{
"DIVPS", "DIVPS",
"DIVSD", "DIVSD",
"DIVSS", "DIVSS",
"DPPD",
"DPPS",
"EMMS", "EMMS",
"FXRSTOR", "FXRSTOR",
"FXRSTOR64", "FXRSTOR64",
@ -542,6 +548,7 @@ var Anames = []string{
"MOVMSKPD", "MOVMSKPD",
"MOVMSKPS", "MOVMSKPS",
"MOVNTO", "MOVNTO",
"MOVNTDQA",
"MOVNTPD", "MOVNTPD",
"MOVNTPS", "MOVNTPS",
"MOVNTQ", "MOVNTQ",
@ -561,6 +568,7 @@ var Anames = []string{
"ORPS", "ORPS",
"PACKSSLW", "PACKSSLW",
"PACKSSWB", "PACKSSWB",
"PACKUSDW",
"PACKUSWB", "PACKUSWB",
"PADDB", "PADDB",
"PADDL", "PADDL",
@ -575,12 +583,17 @@ var Anames = []string{
"PANDN", "PANDN",
"PAVGB", "PAVGB",
"PAVGW", "PAVGW",
"PBLENDW",
"PCMPEQB", "PCMPEQB",
"PCMPEQL", "PCMPEQL",
"PCMPEQQ",
"PCMPEQW", "PCMPEQW",
"PCMPGTB", "PCMPGTB",
"PCMPGTL", "PCMPGTL",
"PCMPGTQ",
"PCMPGTW", "PCMPGTW",
"PCMPISTRI",
"PCMPISTRM",
"PDEPL", "PDEPL",
"PDEPQ", "PDEPQ",
"PEXTL", "PEXTL",
@ -602,10 +615,18 @@ var Anames = []string{
"PINSRW", "PINSRW",
"PMADDUBSW", "PMADDUBSW",
"PMADDWL", "PMADDWL",
"PMAXSB",
"PMAXSD",
"PMAXSW", "PMAXSW",
"PMAXUB", "PMAXUB",
"PMAXUD",
"PMAXUW",
"PMINSB",
"PMINSD",
"PMINSW", "PMINSW",
"PMINUB", "PMINUB",
"PMINUD",
"PMINUW",
"PMOVMSKB", "PMOVMSKB",
"PMOVSXBD", "PMOVSXBD",
"PMOVSXBQ", "PMOVSXBQ",
@ -654,6 +675,7 @@ var Anames = []string{
"PSUBUSB", "PSUBUSB",
"PSUBUSW", "PSUBUSW",
"PSUBW", "PSUBW",
"PTEST",
"PUNPCKHBW", "PUNPCKHBW",
"PUNPCKHLQ", "PUNPCKHLQ",
"PUNPCKHQDQ", "PUNPCKHQDQ",
@ -693,6 +715,7 @@ var Anames = []string{
"XORPD", "XORPD",
"XORPS", "XORPS",
"PCMPESTRI", "PCMPESTRI",
"PCMPESTRM",
"RETFW", "RETFW",
"RETFL", "RETFL",
"RETFQ", "RETFQ",

View File

@ -733,6 +733,11 @@ var ymshufb = []ytab{
{Yxm, Ynone, Yxr, Zm2_r, 2}, {Yxm, Ynone, Yxr, Zm2_r, 2},
} }
// It should never have more than 1 entry,
// because some optab entries you opcode secuences that
// are longer than 2 bytes (zoffset=2 here),
// ROUNDPD and ROUNDPS and recently added BLENDPD,
// to name a few.
var yxshuf = []ytab{ var yxshuf = []ytab{
{Yu8, Yxm, Yxr, Zibm_r, 2}, {Yu8, Yxm, Yxr, Zibm_r, 2},
} }
@ -1107,6 +1112,8 @@ var optab =
{ADIVSD, yxm, Pf2, [23]uint8{0x5e}}, {ADIVSD, yxm, Pf2, [23]uint8{0x5e}},
{ADIVSS, yxm, Pf3, [23]uint8{0x5e}}, {ADIVSS, yxm, Pf3, [23]uint8{0x5e}},
{ADIVW, ydivl, Pe, [23]uint8{0xf7, 06}}, {ADIVW, ydivl, Pe, [23]uint8{0xf7, 06}},
{ADPPD, yxshuf, Pq, [23]uint8{0x3a, 0x41, 0}},
{ADPPS, yxshuf, Pq, [23]uint8{0x3a, 0x40, 0}},
{AEMMS, ynone, Pm, [23]uint8{0x77}}, {AEMMS, ynone, Pm, [23]uint8{0x77}},
{AENTER, nil, 0, [23]uint8{}}, /* botch */ {AENTER, nil, 0, [23]uint8{}}, /* botch */
{AFXRSTOR, ysvrs, Pm, [23]uint8{0xae, 01, 0xae, 01}}, {AFXRSTOR, ysvrs, Pm, [23]uint8{0xae, 01, 0xae, 01}},
@ -1131,6 +1138,7 @@ var optab =
{AINL, yin, Px, [23]uint8{0xe5, 0xed}}, {AINL, yin, Px, [23]uint8{0xe5, 0xed}},
{AINSB, ynone, Pb, [23]uint8{0x6c}}, {AINSB, ynone, Pb, [23]uint8{0x6c}},
{AINSL, ynone, Px, [23]uint8{0x6d}}, {AINSL, ynone, Px, [23]uint8{0x6d}},
{AINSERTPS, yxshuf, Pq, [23]uint8{0x3a, 0x21, 0}},
{AINSW, ynone, Pe, [23]uint8{0x6d}}, {AINSW, ynone, Pe, [23]uint8{0x6d}},
{AINT, yint, Px, [23]uint8{0xcd}}, {AINT, yint, Px, [23]uint8{0xcd}},
{AINTO, ynone, P32, [23]uint8{0xce}}, {AINTO, ynone, P32, [23]uint8{0xce}},
@ -1217,6 +1225,7 @@ var optab =
{AMOVMSKPD, yxrrl, Pq, [23]uint8{0x50}}, {AMOVMSKPD, yxrrl, Pq, [23]uint8{0x50}},
{AMOVMSKPS, yxrrl, Pm, [23]uint8{0x50}}, {AMOVMSKPS, yxrrl, Pm, [23]uint8{0x50}},
{AMOVNTO, yxr_ml, Pe, [23]uint8{0xe7}}, {AMOVNTO, yxr_ml, Pe, [23]uint8{0xe7}},
{AMOVNTDQA, ylddqu, Pq4, [23]uint8{0x2a}},
{AMOVNTPD, yxr_ml, Pe, [23]uint8{0x2b}}, {AMOVNTPD, yxr_ml, Pe, [23]uint8{0x2b}},
{AMOVNTPS, yxr_ml, Pm, [23]uint8{0x2b}}, {AMOVNTPS, yxr_ml, Pm, [23]uint8{0x2b}},
{AMOVNTQ, ymr_ml, Pm, [23]uint8{0xe7}}, {AMOVNTQ, ymr_ml, Pm, [23]uint8{0xe7}},
@ -1235,6 +1244,7 @@ var optab =
{AMOVWLZX, yml_rl, Pm, [23]uint8{0xb7}}, {AMOVWLZX, yml_rl, Pm, [23]uint8{0xb7}},
{AMOVWQSX, yml_rl, Pw, [23]uint8{0x0f, 0xbf}}, {AMOVWQSX, yml_rl, Pw, [23]uint8{0x0f, 0xbf}},
{AMOVWQZX, yml_rl, Pw, [23]uint8{0x0f, 0xb7}}, {AMOVWQZX, yml_rl, Pw, [23]uint8{0x0f, 0xb7}},
{AMPSADBW, yxshuf, Pq, [23]uint8{0x3a, 0x42, 0}},
{AMULB, ydivb, Pb, [23]uint8{0xf6, 04}}, {AMULB, ydivb, Pb, [23]uint8{0xf6, 04}},
{AMULL, ydivl, Px, [23]uint8{0xf7, 04}}, {AMULL, ydivl, Px, [23]uint8{0xf7, 04}},
{AMULPD, yxm, Pe, [23]uint8{0x59}}, {AMULPD, yxm, Pe, [23]uint8{0x59}},
@ -1269,6 +1279,7 @@ var optab =
{APABSW, yxm_q4, Pq4, [23]uint8{0x1d}}, {APABSW, yxm_q4, Pq4, [23]uint8{0x1d}},
{APACKSSLW, ymm, Py1, [23]uint8{0x6b, Pe, 0x6b}}, {APACKSSLW, ymm, Py1, [23]uint8{0x6b, Pe, 0x6b}},
{APACKSSWB, ymm, Py1, [23]uint8{0x63, Pe, 0x63}}, {APACKSSWB, ymm, Py1, [23]uint8{0x63, Pe, 0x63}},
{APACKUSDW, yxm_q4, Pq4, [23]uint8{0x2b}},
{APACKUSWB, ymm, Py1, [23]uint8{0x67, Pe, 0x67}}, {APACKUSWB, ymm, Py1, [23]uint8{0x67, Pe, 0x67}},
{APADDB, ymm, Py1, [23]uint8{0xfc, Pe, 0xfc}}, {APADDB, ymm, Py1, [23]uint8{0xfc, Pe, 0xfc}},
{APADDL, ymm, Py1, [23]uint8{0xfe, Pe, 0xfe}}, {APADDL, ymm, Py1, [23]uint8{0xfe, Pe, 0xfe}},
@ -1284,12 +1295,17 @@ var optab =
{APAUSE, ynone, Px, [23]uint8{0xf3, 0x90}}, {APAUSE, ynone, Px, [23]uint8{0xf3, 0x90}},
{APAVGB, ymm, Py1, [23]uint8{0xe0, Pe, 0xe0}}, {APAVGB, ymm, Py1, [23]uint8{0xe0, Pe, 0xe0}},
{APAVGW, ymm, Py1, [23]uint8{0xe3, Pe, 0xe3}}, {APAVGW, ymm, Py1, [23]uint8{0xe3, Pe, 0xe3}},
{APBLENDW, yxshuf, Pq, [23]uint8{0x3a, 0x0e, 0}},
{APCMPEQB, ymm, Py1, [23]uint8{0x74, Pe, 0x74}}, {APCMPEQB, ymm, Py1, [23]uint8{0x74, Pe, 0x74}},
{APCMPEQL, ymm, Py1, [23]uint8{0x76, Pe, 0x76}}, {APCMPEQL, ymm, Py1, [23]uint8{0x76, Pe, 0x76}},
{APCMPEQQ, yxm_q4, Pq4, [23]uint8{0x29}},
{APCMPEQW, ymm, Py1, [23]uint8{0x75, Pe, 0x75}}, {APCMPEQW, ymm, Py1, [23]uint8{0x75, Pe, 0x75}},
{APCMPGTB, ymm, Py1, [23]uint8{0x64, Pe, 0x64}}, {APCMPGTB, ymm, Py1, [23]uint8{0x64, Pe, 0x64}},
{APCMPGTL, ymm, Py1, [23]uint8{0x66, Pe, 0x66}}, {APCMPGTL, ymm, Py1, [23]uint8{0x66, Pe, 0x66}},
{APCMPGTQ, yxm_q4, Pq4, [23]uint8{0x37}},
{APCMPGTW, ymm, Py1, [23]uint8{0x65, Pe, 0x65}}, {APCMPGTW, ymm, Py1, [23]uint8{0x65, Pe, 0x65}},
{APCMPISTRI, yxshuf, Pq, [23]uint8{0x3a, 0x63, 0}},
{APCMPISTRM, yxshuf, Pq, [23]uint8{0x3a, 0x62, 0}},
{APEXTRW, yextrw, Pq, [23]uint8{0xc5, 00}}, {APEXTRW, yextrw, Pq, [23]uint8{0xc5, 00}},
{APEXTRB, yextr, Pq, [23]uint8{0x3a, 0x14, 00}}, {APEXTRB, yextr, Pq, [23]uint8{0x3a, 0x14, 00}},
{APEXTRD, yextr, Pq, [23]uint8{0x3a, 0x16, 00}}, {APEXTRD, yextr, Pq, [23]uint8{0x3a, 0x16, 00}},
@ -1307,10 +1323,18 @@ var optab =
{APINSRQ, yinsr, Pq3, [23]uint8{0x3a, 0x22, 00}}, {APINSRQ, yinsr, Pq3, [23]uint8{0x3a, 0x22, 00}},
{APMADDUBSW, yxm_q4, Pq4, [23]uint8{0x04}}, {APMADDUBSW, yxm_q4, Pq4, [23]uint8{0x04}},
{APMADDWL, ymm, Py1, [23]uint8{0xf5, Pe, 0xf5}}, {APMADDWL, ymm, Py1, [23]uint8{0xf5, Pe, 0xf5}},
{APMAXSB, yxm_q4, Pq4, [23]uint8{0x3c}},
{APMAXSD, yxm_q4, Pq4, [23]uint8{0x3d}},
{APMAXSW, yxm, Pe, [23]uint8{0xee}}, {APMAXSW, yxm, Pe, [23]uint8{0xee}},
{APMAXUB, yxm, Pe, [23]uint8{0xde}}, {APMAXUB, yxm, Pe, [23]uint8{0xde}},
{APMAXUD, yxm_q4, Pq4, [23]uint8{0x3f}},
{APMAXUW, yxm_q4, Pq4, [23]uint8{0x3e}},
{APMINSB, yxm_q4, Pq4, [23]uint8{0x38}},
{APMINSD, yxm_q4, Pq4, [23]uint8{0x39}},
{APMINSW, yxm, Pe, [23]uint8{0xea}}, {APMINSW, yxm, Pe, [23]uint8{0xea}},
{APMINUB, yxm, Pe, [23]uint8{0xda}}, {APMINUB, yxm, Pe, [23]uint8{0xda}},
{APMINUD, yxm_q4, Pq4, [23]uint8{0x3b}},
{APMINUW, yxm_q4, Pq4, [23]uint8{0x3a}},
{APMOVMSKB, ymskb, Px, [23]uint8{Pe, 0xd7, 0xd7}}, {APMOVMSKB, ymskb, Px, [23]uint8{Pe, 0xd7, 0xd7}},
{APMOVSXBD, yxm_q4, Pq4, [23]uint8{0x21}}, {APMOVSXBD, yxm_q4, Pq4, [23]uint8{0x21}},
{APMOVSXBQ, yxm_q4, Pq4, [23]uint8{0x22}}, {APMOVSXBQ, yxm_q4, Pq4, [23]uint8{0x22}},
@ -1370,6 +1394,7 @@ var optab =
{APSUBUSB, yxm, Pe, [23]uint8{0xd8}}, {APSUBUSB, yxm, Pe, [23]uint8{0xd8}},
{APSUBUSW, yxm, Pe, [23]uint8{0xd9}}, {APSUBUSW, yxm, Pe, [23]uint8{0xd9}},
{APSUBW, yxm, Pe, [23]uint8{0xf9}}, {APSUBW, yxm, Pe, [23]uint8{0xf9}},
{APTEST, yxm_q4, Pq4, [23]uint8{0x17}},
{APUNPCKHBW, ymm, Py1, [23]uint8{0x68, Pe, 0x68}}, {APUNPCKHBW, ymm, Py1, [23]uint8{0x68, Pe, 0x68}},
{APUNPCKHLQ, ymm, Py1, [23]uint8{0x6a, Pe, 0x6a}}, {APUNPCKHLQ, ymm, Py1, [23]uint8{0x6a, Pe, 0x6a}},
{APUNPCKHQDQ, yxm, Pe, [23]uint8{0x6d}}, {APUNPCKHQDQ, yxm, Pe, [23]uint8{0x6d}},
@ -1656,6 +1681,7 @@ 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}},
{APCMPESTRI, yxshuf, Pq, [23]uint8{0x3a, 0x61, 0}}, {APCMPESTRI, yxshuf, Pq, [23]uint8{0x3a, 0x61, 0}},
{APCMPESTRM, yxshuf, Pq, [23]uint8{0x3a, 0x60, 0}},
{AMOVDDUP, yxm, Pf2, [23]uint8{0x12}}, {AMOVDDUP, yxm, Pf2, [23]uint8{0x12}},
{AMOVSHDUP, yxm, Pf3, [23]uint8{0x16}}, {AMOVSHDUP, yxm, Pf3, [23]uint8{0x16}},
{AMOVSLDUP, yxm, Pf3, [23]uint8{0x12}}, {AMOVSLDUP, yxm, Pf3, [23]uint8{0x12}},
@ -1664,6 +1690,8 @@ var optab =
{AANDNQ, yvex_r3, Pvex, [23]uint8{VEX_LZ_0F38_W1, 0xF2}}, {AANDNQ, yvex_r3, Pvex, [23]uint8{VEX_LZ_0F38_W1, 0xF2}},
{ABEXTRL, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_0F38_W0, 0xF7}}, {ABEXTRL, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_0F38_W0, 0xF7}},
{ABEXTRQ, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_0F38_W1, 0xF7}}, {ABEXTRQ, yvex_vmr3, Pvex, [23]uint8{VEX_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_LZ_0F38_W0, 0xF5}}, {ABZHIL, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_0F38_W0, 0xF5}},
{ABZHIQ, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_0F38_W1, 0xF5}}, {ABZHIQ, yvex_vmr3, Pvex, [23]uint8{VEX_LZ_0F38_W1, 0xF5}},
{AMULXL, yvex_r3, Pvex, [23]uint8{VEX_LZ_F2_0F38_W0, 0xF6}}, {AMULXL, yvex_r3, Pvex, [23]uint8{VEX_LZ_F2_0F38_W0, 0xF6}},