diff options
author | Shengchen Kan <shengchen.kan@intel.com> | 2023-11-22 10:26:23 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-22 10:26:23 +0800 |
commit | 42d484082cd190400e0e493a8d679762ce0efbba (patch) | |
tree | a28c7544984d74280f24ba1e1a6d5a6744353267 /llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp | |
parent | 331111277a3e80aedd1a6877524feadfbcb41a88 (diff) | |
download | llvm-42d484082cd190400e0e493a8d679762ce0efbba.zip llvm-42d484082cd190400e0e493a8d679762ce0efbba.tar.gz llvm-42d484082cd190400e0e493a8d679762ce0efbba.tar.bz2 |
[X86][MC] Support encoding/decoding for JMPABS (#72835)
JMPABS is a 64-bit only ISA extension, and acts as a near-direct branch
with an absolute target. The 64-bit immediate operand is treated an as
absolute effective address, which is subject to canonicality checks. It
is in legacy map 0 and requires REX2 prefix with `REX2.M0=0` and
`REX2.W=0`. All other REX2 payload bits are ignored.
blog: https://kanrobert.github.io/rfc/All-about-APX-JMPABS/
This patch
1. Extends `ExplicitVEXPrefix` to `ExplicitOpPrefix` for instrcutions
requires explicit `REX2` or `EVEX`
2. Adds `ATTR_REX2` and `IC_64BIT_REX2` to put `JMPABS` , `MOV EAX,
moffs32` in different tables to avoid opcode conflict
NOTE:
1. `ExplicitREX2Prefix` can be reused by the following PUSHP/POPP
instructions.
2. `ExplicitEVEXPrefix` will be used by the instructions promoted to
EVEX space for EGPR.
Diffstat (limited to 'llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp')
0 files changed, 0 insertions, 0 deletions