aboutsummaryrefslogtreecommitdiff
path: root/gdb/source.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2024-12-02 12:58:33 +0800
committerHaochen Jiang <haochen.jiang@intel.com>2024-12-05 09:57:59 +0800
commit4c0a6e603743ca0c85f9ceb9913d646f0c961986 (patch)
tree37799a7269037d2b00183076c7709c7c1288ec34 /gdb/source.c
parente998ba604f8b1498c8ad43f2c19fee097b6131ef (diff)
downloadbinutils-4c0a6e603743ca0c85f9ceb9913d646f0c961986.zip
binutils-4c0a6e603743ca0c85f9ceb9913d646f0c961986.tar.gz
binutils-4c0a6e603743ca0c85f9ceb9913d646f0c961986.tar.bz2
x86: Eliminate unnecessary {evex} prefixes
For several instructions including vps{l,r}l{d,q,w,dq} and vpsra{d,w}, their VEX part do not have the following version: vpsrlw $0x1f,(%r15,%rcx,4),%xmm0 Thus, {evex} prefix should not be inserted when their second operand is memory, while we still need them for register as second operand. Add a new macro %ME to solve this problem. For vpsraq, there is no VEX version, so the {evex} prefix should always be eliminated. gas/ChangeLog: PR binutils/32403 * testsuite/gas/i386/i386.exp: Run new test. * testsuite/gas/i386/x86-64.exp: Ditto. * testsuite/gas/i386/evex-only.d: New test. * testsuite/gas/i386/evex-only.s: Ditto. * testsuite/gas/i386/x86-64-evex-only.d: Ditto. * testsuite/gas/i386/x86-64-evex-only.s: Ditto. opcodes/ChangeLog: PR binutils/32403 * i386-dis-evex-reg.h: Use %ME instead of %XE for vps{l,r}l{w,dq} and vpsraw. Split table for vpsra{d,q}. * i386-dis-evex-w.h: Use %ME instead of %XE for vps{l,r}l{d,q} and vpsrad. Eliminate vpsraq {evex} prefix. * i386-dis-evex.h: Split table for vpsra{d,q}. * i386-dis.c: (EVEX_W_0F72_R_4): New. (EVEX_W_0FE2): Ditto. (struct dis386): Add comment for %ME. (putop): Handle %ME. Co-authored-by: Haochen Jiang <haochen.jiang@intel.com> Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Diffstat (limited to 'gdb/source.c')
0 files changed, 0 insertions, 0 deletions