[llvm] 025c158 - [X86][MC] Move encoding optimization for VCMP to X86::optimizeInstFromVEX3ToVEX2, NFCI
Shengchen Kan via llvm-commits
llvm-commits at lists.llvm.org
Thu May 18 03:34:22 PDT 2023
Author: Shengchen Kan
Date: 2023-05-18T18:30:54+08:00
New Revision: 025c1587a29b8320306a79d35029d69382d63364
URL: https://github.com/llvm/llvm-project/commit/025c1587a29b8320306a79d35029d69382d63364
DIFF: https://github.com/llvm/llvm-project/commit/025c1587a29b8320306a79d35029d69382d63364.diff
LOG: [X86][MC] Move encoding optimization for VCMP to X86::optimizeInstFromVEX3ToVEX2, NFCI
This is a follow-up for c13ed1cc7578
Added:
Modified:
llvm/lib/Target/X86/MCTargetDesc/X86EncodingOptimization.cpp
llvm/lib/Target/X86/X86MCInstLower.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86EncodingOptimization.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86EncodingOptimization.cpp
index 6b44356eb862..b398bf0b4ba5 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86EncodingOptimization.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86EncodingOptimization.cpp
@@ -47,6 +47,25 @@ bool X86::optimizeInstFromVEX3ToVEX2(MCInst &MI, const MCInstrDesc &Desc) {
OpIdx1 = 1;
OpIdx2 = 2;
break;
+ }
+ case X86::VCMPPDrri:
+ case X86::VCMPPDYrri:
+ case X86::VCMPPSrri:
+ case X86::VCMPPSYrri:
+ case X86::VCMPSDrr:
+ case X86::VCMPSSrr: {
+ switch (MI.getOperand(3).getImm() & 0x7) {
+ default:
+ return false;
+ case 0x00: // EQUAL
+ case 0x03: // UNORDERED
+ case 0x04: // NOT EQUAL
+ case 0x07: // ORDERED
+ OpIdx1 = 1;
+ OpIdx2 = 2;
+ break;
+ }
+ break;
}
// Commute operands to get a smaller encoding by using VEX.R instead of
// VEX.B if one of the registers is extended, but other isn't.
diff --git a/llvm/lib/Target/X86/X86MCInstLower.cpp b/llvm/lib/Target/X86/X86MCInstLower.cpp
index db5bf151847d..7bb05c42f760 100644
--- a/llvm/lib/Target/X86/X86MCInstLower.cpp
+++ b/llvm/lib/Target/X86/X86MCInstLower.cpp
@@ -584,29 +584,6 @@ void X86MCInstLower::Lower(const MachineInstr *MI, MCInst &OutMI) const {
SimplifyShortImmForm(OutMI, NewOpc);
break;
}
- case X86::VCMPPDrri:
- case X86::VCMPPDYrri:
- case X86::VCMPPSrri:
- case X86::VCMPPSYrri:
- case X86::VCMPSDrr:
- case X86::VCMPSSrr: {
- // Swap the operands if it will enable a 2 byte VEX encoding.
- // FIXME: Change the immediate to improve opportunities?
- if (!X86II::isX86_64ExtendedReg(OutMI.getOperand(1).getReg()) &&
- X86II::isX86_64ExtendedReg(OutMI.getOperand(2).getReg())) {
- unsigned Imm = MI->getOperand(3).getImm() & 0x7;
- switch (Imm) {
- default: break;
- case 0x00: // EQUAL
- case 0x03: // UNORDERED
- case 0x04: // NOT EQUAL
- case 0x07: // ORDERED
- std::swap(OutMI.getOperand(1), OutMI.getOperand(2));
- break;
- }
- }
- break;
- }
case X86::MASKMOVDQU:
case X86::VMASKMOVDQU:
if (In64BitMode)
More information about the llvm-commits
mailing list