vpabs*, vperm2f128, vinsertf128 encoding errors
Comparing api.ir (Intel-style) verbose output to llvm-mc, capstone, and bfd (objdump) shows several encoding errors in DR:
Interestingly, bfd does not flag the vpabs* as invalid.
0x000055b19056d7f4 c4 e2 71 1c 41 37 vpabsb %xmm1 0x37(%rcx)[16byte] -> %xmm0
0x000055b19056d7fa c4 e2 71 1d 41 37 vpabsw %xmm1 0x37(%rcx)[16byte] -> %xmm0
0x000055b19056d800 c4 e2 71 1e 41 37 vpabsd %xmm1 0x37(%rcx)[16byte] -> %xmm0
c4 e2 71 1c 41 37
Disassembling 0xc4 0xe2 0x71 0x1c 0x41 0x37
<stdin>:1:1: warning: invalid instruction encoding
0xc4 0xe2 0x71 0x1c 0x41 0x37
^
llvm-mc: 0xc4 0xe2 0x71 0x1c 0x41 0x37
capstone:
bfd: c4 e2 71 1c 41 37 vpabsb 0x37(%rcx),%xmm0
c4 e2 71 1d 41 37
Disassembling 0xc4 0xe2 0x71 0x1d 0x41 0x37
<stdin>:1:1: warning: invalid instruction encoding
0xc4 0xe2 0x71 0x1d 0x41 0x37
^
llvm-mc: 0xc4 0xe2 0x71 0x1d 0x41 0x37
capstone:
bfd: c4 e2 71 1d 41 37 vpabsw 0x37(%rcx),%xmm0
c4 e2 71 1e 41 37
Disassembling 0xc4 0xe2 0x71 0x1e 0x41 0x37
<stdin>:1:1: warning: invalid instruction encoding
0xc4 0xe2 0x71 0x1e 0x41 0x37
^
llvm-mc: 0xc4 0xe2 0x71 0x1e 0x41 0x37
capstone:
bfd: c4 e2 71 1e 41 37 vpabsd 0x37(%rcx),%xmm0
0x000055b19056d67d c4 e2 75 1c 41 37 vpabsb %ymm1 0x37(%rcx)[32byte] -> %ymm0
0x000055b19056d683 c4 e2 75 1d 41 37 vpabsw %ymm1 0x37(%rcx)[32byte] -> %ymm0
0x000055b19056d689 c4 e2 75 1e 41 37 vpabsd %ymm1 0x37(%rcx)[32byte] -> %ymm0
c4 e2 75 1c 41 37
Disassembling 0xc4 0xe2 0x75 0x1c 0x41 0x37
<stdin>:1:1: warning: invalid instruction encoding
0xc4 0xe2 0x75 0x1c 0x41 0x37
^
llvm-mc: 0xc4 0xe2 0x75 0x1c 0x41 0x37
capstone:
bfd: c4 e2 75 1c 41 37 vpabsb 0x37(%rcx),%ymm0
c4 e2 75 1d 41 37
Disassembling 0xc4 0xe2 0x75 0x1d 0x41 0x37
<stdin>:1:1: warning: invalid instruction encoding
0xc4 0xe2 0x75 0x1d 0x41 0x37
^
llvm-mc: 0xc4 0xe2 0x75 0x1d 0x41 0x37
capstone:
bfd: c4 e2 75 1d 41 37 vpabsw 0x37(%rcx),%ymm0
c4 e2 75 1e 41 37
Disassembling 0xc4 0xe2 0x75 0x1e 0x41 0x37
<stdin>:1:1: warning: invalid instruction encoding
0xc4 0xe2 0x75 0x1e 0x41 0x37
^
llvm-mc: 0xc4 0xe2 0x75 0x1e 0x41 0x37
capstone:
bfd: c4 e2 75 1e 41 37 vpabsd 0x37(%rcx),%ymm0
0x000055b19056d4c6 c4 e3 71 06 41 37 25 vperm2f128 %xmm1 0x37(%rcx)[16byte] $0x25 -> %xmm0
0x000055b19056d4cd c4 e3 71 18 41 37 25 vinsertf128 %xmm1 0x37(%rcx)[16byte] $0x25 -> %xmm0
c4 e3 71 06 41 37 25
Disassembling 0xc4 0xe3 0x71 0x06 0x41 0x37 0x25
<stdin>:1:1: warning: invalid instruction encoding
0xc4 0xe3 0x71 0x06 0x41 0x37 0x25
^
<stdin>:1:21: warning: invalid instruction encoding
0xc4 0xe3 0x71 0x06 0x41 0x37 0x25
^
<stdin>:1:31: warning: invalid instruction encoding
0xc4 0xe3 0x71 0x06 0x41 0x37 0x25
^
llvm-mc: 0xc4 0xe3 0x71 0x06 0x41 0x37 0x25
capstone:
bfd: c4 e3 71 06 (bad)
c4 e3 71 18 41 37 25
Disassembling 0xc4 0xe3 0x71 0x18 0x41 0x37 0x25
<stdin>:1:1: warning: invalid instruction encoding
0xc4 0xe3 0x71 0x18 0x41 0x37 0x25
^
<stdin>:1:21: warning: invalid instruction encoding
0xc4 0xe3 0x71 0x18 0x41 0x37 0x25
^
<stdin>:1:31: warning: invalid instruction encoding
0xc4 0xe3 0x71 0x18 0x41 0x37 0x25
^
llvm-mc: 0xc4 0xe3 0x71 0x18 0x41 0x37 0x25
capstone:
bfd: c4 e3 71 18 (bad)