[llvm] [X86][MC] Support encoding of EGPR for APX (PR #71909)
Shengchen Kan via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 12 21:01:20 PST 2023
================
@@ -184,18 +233,23 @@ class X86OpcodePrefixHelper {
}
X86OpcodePrefixHelper(const MCRegisterInfo &MRI)
- : W(0), R(0), X(0), B(0), VEX_4V(0), VEX_L(0), VEX_PP(0), VEX_5M(0),
- EVEX_R2(0), EVEX_z(0), EVEX_L2(0), EVEX_b(0), EVEX_V2(0), EVEX_aaa(0),
- MRI(MRI) {}
+ : W(0), R(0), X(0), B(0), M(0), R2(0), X2(0), B2(0), VEX_4V(0), VEX_L(0),
+ VEX_PP(0), VEX_5M(0), EVEX_z(0), EVEX_L2(0), EVEX_b(0), EVEX_V2(0),
+ EVEX_aaa(0), MRI(MRI) {}
void setLowerBound(PrefixKind K) { Kind = K; }
PrefixKind determineOptimalKind() {
switch (Kind) {
case None:
- Kind = (W | R | X | B) ? REX : None;
+ // Not M bit here by intention b/c
+ // 1. No guarantee that REX2 is supported by arch w/o explict EGPR
+ // 2. REX2 is longer than 0FH
+ Kind = (R2 | X2 | B2) ? REX2 : (W | R | X | B) ? REX : None;
break;
case REX:
+ Kind = (R2 | X2 | B2) ? REX2 : REX;
----------------
KanRobert wrote:
Done
https://github.com/llvm/llvm-project/pull/71909
More information about the llvm-commits
mailing list