[llvm] [X86][MC] Compress APX Promoted instrs from evex to legacy encoding to save code size. (PR #77065)
Phoebe Wang via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 5 06:02:18 PST 2024
================
@@ -269,28 +299,33 @@ bool EvexToVexInstPass::runOnMachineFunction(MachineFunction &MF) {
"X86EvexToVex128CompressTable is not sorted!");
assert(llvm::is_sorted(X86EvexToVex256CompressTable) &&
"X86EvexToVex256CompressTable is not sorted!");
+ assert(llvm::is_sorted(X86EvexToLegacyCompressTable) &&
+ "X86EvexToLegacyCompressTable is not sorted!");
TableChecked.store(true, std::memory_order_relaxed);
}
#endif
const X86Subtarget &ST = MF.getSubtarget<X86Subtarget>();
- if (!ST.hasAVX512())
+ if (!ST.hasAVX512() && !ST.hasEGPR())
return false;
bool Changed = false;
/// Go over all basic blocks in function and replace
- /// EVEX encoded instrs by VEX encoding when possible.
+ /// EVEX encoded instrs by VEX/Legacy encoding when possible.
for (MachineBasicBlock &MBB : MF) {
// Traverse the basic block.
- for (MachineInstr &MI : MBB)
+ for (MachineInstr &MI : MBB) {
Changed |= CompressEvexToVexImpl(MI, ST);
+ Changed |= CompressEVEX2LegacyImpl(MI, ST);
----------------
phoebewang wrote:
This can simplify to
```
if (CompressEvexToVexImpl(MI, ST) || CompressEVEX2LegacyImpl(MI, ST))
Changed = true;
```
Because if one instruction can be compressed to VEX, it cannot be compressed to legacy anymore.
https://github.com/llvm/llvm-project/pull/77065
More information about the llvm-commits
mailing list