[llvm] ea1a2aa - [RISCV] Map pseudos to their BaseInstr to reduce cases
via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 27 01:50:51 PDT 2022
Author: wangpc
Date: 2022-10-27T16:50:15+08:00
New Revision: ea1a2aaa9ad39fb79de2de7d753374bc0a44e7ba
URL: https://github.com/llvm/llvm-project/commit/ea1a2aaa9ad39fb79de2de7d753374bc0a44e7ba
DIFF: https://github.com/llvm/llvm-project/commit/ea1a2aaa9ad39fb79de2de7d753374bc0a44e7ba.diff
LOG: [RISCV] Map pseudos to their BaseInstr to reduce cases
There are a lot of cases for pseudos of the same instruction, here
we just use existed mapping table to map pseudos to real instructions
to reduce cases.
Reviewed By: kito-cheng
Differential Revision: https://reviews.llvm.org/D128271
Added:
Modified:
llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp b/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp
index b0341620e788..9b903462728a 100644
--- a/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp
+++ b/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp
@@ -67,32 +67,20 @@ static bool isVLPreservingConfig(const MachineInstr &MI) {
return RISCV::X0 == MI.getOperand(0).getReg();
}
+static uint16_t getRVVMCOpcode(uint16_t RVVPseudoOpcode) {
+ const RISCVVPseudosTable::PseudoInfo *RVV =
+ RISCVVPseudosTable::getPseudoInfo(RVVPseudoOpcode);
+ if (!RVV)
+ return 0;
+ return RVV->BaseInstr;
+}
+
static bool isScalarMoveInstr(const MachineInstr &MI) {
- switch (MI.getOpcode()) {
+ switch (getRVVMCOpcode(MI.getOpcode())) {
default:
return false;
- case RISCV::PseudoVMV_S_X_M1:
- case RISCV::PseudoVMV_S_X_M2:
- case RISCV::PseudoVMV_S_X_M4:
- case RISCV::PseudoVMV_S_X_M8:
- case RISCV::PseudoVMV_S_X_MF2:
- case RISCV::PseudoVMV_S_X_MF4:
- case RISCV::PseudoVMV_S_X_MF8:
- case RISCV::PseudoVFMV_S_F16_M1:
- case RISCV::PseudoVFMV_S_F16_M2:
- case RISCV::PseudoVFMV_S_F16_M4:
- case RISCV::PseudoVFMV_S_F16_M8:
- case RISCV::PseudoVFMV_S_F16_MF2:
- case RISCV::PseudoVFMV_S_F16_MF4:
- case RISCV::PseudoVFMV_S_F32_M1:
- case RISCV::PseudoVFMV_S_F32_M2:
- case RISCV::PseudoVFMV_S_F32_M4:
- case RISCV::PseudoVFMV_S_F32_M8:
- case RISCV::PseudoVFMV_S_F32_MF2:
- case RISCV::PseudoVFMV_S_F64_M1:
- case RISCV::PseudoVFMV_S_F64_M2:
- case RISCV::PseudoVFMV_S_F64_M4:
- case RISCV::PseudoVFMV_S_F64_M8:
+ case RISCV::VMV_S_X:
+ case RISCV::VFMV_S_F:
return true;
}
}
@@ -100,188 +88,28 @@ static bool isScalarMoveInstr(const MachineInstr &MI) {
/// Get the EEW for a load or store instruction. Return None if MI is not
/// a load or store which ignores SEW.
static Optional<unsigned> getEEWForLoadStore(const MachineInstr &MI) {
- switch (MI.getOpcode()) {
+ switch (getRVVMCOpcode(MI.getOpcode())) {
default:
return None;
- case RISCV::PseudoVLE8_V_M1:
- case RISCV::PseudoVLE8_V_M1_MASK:
- case RISCV::PseudoVLE8_V_M2:
- case RISCV::PseudoVLE8_V_M2_MASK:
- case RISCV::PseudoVLE8_V_M4:
- case RISCV::PseudoVLE8_V_M4_MASK:
- case RISCV::PseudoVLE8_V_M8:
- case RISCV::PseudoVLE8_V_M8_MASK:
- case RISCV::PseudoVLE8_V_MF2:
- case RISCV::PseudoVLE8_V_MF2_MASK:
- case RISCV::PseudoVLE8_V_MF4:
- case RISCV::PseudoVLE8_V_MF4_MASK:
- case RISCV::PseudoVLE8_V_MF8:
- case RISCV::PseudoVLE8_V_MF8_MASK:
- case RISCV::PseudoVLSE8_V_M1:
- case RISCV::PseudoVLSE8_V_M1_MASK:
- case RISCV::PseudoVLSE8_V_M2:
- case RISCV::PseudoVLSE8_V_M2_MASK:
- case RISCV::PseudoVLSE8_V_M4:
- case RISCV::PseudoVLSE8_V_M4_MASK:
- case RISCV::PseudoVLSE8_V_M8:
- case RISCV::PseudoVLSE8_V_M8_MASK:
- case RISCV::PseudoVLSE8_V_MF2:
- case RISCV::PseudoVLSE8_V_MF2_MASK:
- case RISCV::PseudoVLSE8_V_MF4:
- case RISCV::PseudoVLSE8_V_MF4_MASK:
- case RISCV::PseudoVLSE8_V_MF8:
- case RISCV::PseudoVLSE8_V_MF8_MASK:
- case RISCV::PseudoVSE8_V_M1:
- case RISCV::PseudoVSE8_V_M1_MASK:
- case RISCV::PseudoVSE8_V_M2:
- case RISCV::PseudoVSE8_V_M2_MASK:
- case RISCV::PseudoVSE8_V_M4:
- case RISCV::PseudoVSE8_V_M4_MASK:
- case RISCV::PseudoVSE8_V_M8:
- case RISCV::PseudoVSE8_V_M8_MASK:
- case RISCV::PseudoVSE8_V_MF2:
- case RISCV::PseudoVSE8_V_MF2_MASK:
- case RISCV::PseudoVSE8_V_MF4:
- case RISCV::PseudoVSE8_V_MF4_MASK:
- case RISCV::PseudoVSE8_V_MF8:
- case RISCV::PseudoVSE8_V_MF8_MASK:
- case RISCV::PseudoVSSE8_V_M1:
- case RISCV::PseudoVSSE8_V_M1_MASK:
- case RISCV::PseudoVSSE8_V_M2:
- case RISCV::PseudoVSSE8_V_M2_MASK:
- case RISCV::PseudoVSSE8_V_M4:
- case RISCV::PseudoVSSE8_V_M4_MASK:
- case RISCV::PseudoVSSE8_V_M8:
- case RISCV::PseudoVSSE8_V_M8_MASK:
- case RISCV::PseudoVSSE8_V_MF2:
- case RISCV::PseudoVSSE8_V_MF2_MASK:
- case RISCV::PseudoVSSE8_V_MF4:
- case RISCV::PseudoVSSE8_V_MF4_MASK:
- case RISCV::PseudoVSSE8_V_MF8:
- case RISCV::PseudoVSSE8_V_MF8_MASK:
+ case RISCV::VLE8_V:
+ case RISCV::VLSE8_V:
+ case RISCV::VSE8_V:
+ case RISCV::VSSE8_V:
return 8;
- case RISCV::PseudoVLE16_V_M1:
- case RISCV::PseudoVLE16_V_M1_MASK:
- case RISCV::PseudoVLE16_V_M2:
- case RISCV::PseudoVLE16_V_M2_MASK:
- case RISCV::PseudoVLE16_V_M4:
- case RISCV::PseudoVLE16_V_M4_MASK:
- case RISCV::PseudoVLE16_V_M8:
- case RISCV::PseudoVLE16_V_M8_MASK:
- case RISCV::PseudoVLE16_V_MF2:
- case RISCV::PseudoVLE16_V_MF2_MASK:
- case RISCV::PseudoVLE16_V_MF4:
- case RISCV::PseudoVLE16_V_MF4_MASK:
- case RISCV::PseudoVLSE16_V_M1:
- case RISCV::PseudoVLSE16_V_M1_MASK:
- case RISCV::PseudoVLSE16_V_M2:
- case RISCV::PseudoVLSE16_V_M2_MASK:
- case RISCV::PseudoVLSE16_V_M4:
- case RISCV::PseudoVLSE16_V_M4_MASK:
- case RISCV::PseudoVLSE16_V_M8:
- case RISCV::PseudoVLSE16_V_M8_MASK:
- case RISCV::PseudoVLSE16_V_MF2:
- case RISCV::PseudoVLSE16_V_MF2_MASK:
- case RISCV::PseudoVLSE16_V_MF4:
- case RISCV::PseudoVLSE16_V_MF4_MASK:
- case RISCV::PseudoVSE16_V_M1:
- case RISCV::PseudoVSE16_V_M1_MASK:
- case RISCV::PseudoVSE16_V_M2:
- case RISCV::PseudoVSE16_V_M2_MASK:
- case RISCV::PseudoVSE16_V_M4:
- case RISCV::PseudoVSE16_V_M4_MASK:
- case RISCV::PseudoVSE16_V_M8:
- case RISCV::PseudoVSE16_V_M8_MASK:
- case RISCV::PseudoVSE16_V_MF2:
- case RISCV::PseudoVSE16_V_MF2_MASK:
- case RISCV::PseudoVSE16_V_MF4:
- case RISCV::PseudoVSE16_V_MF4_MASK:
- case RISCV::PseudoVSSE16_V_M1:
- case RISCV::PseudoVSSE16_V_M1_MASK:
- case RISCV::PseudoVSSE16_V_M2:
- case RISCV::PseudoVSSE16_V_M2_MASK:
- case RISCV::PseudoVSSE16_V_M4:
- case RISCV::PseudoVSSE16_V_M4_MASK:
- case RISCV::PseudoVSSE16_V_M8:
- case RISCV::PseudoVSSE16_V_M8_MASK:
- case RISCV::PseudoVSSE16_V_MF2:
- case RISCV::PseudoVSSE16_V_MF2_MASK:
- case RISCV::PseudoVSSE16_V_MF4:
- case RISCV::PseudoVSSE16_V_MF4_MASK:
+ case RISCV::VLE16_V:
+ case RISCV::VLSE16_V:
+ case RISCV::VSE16_V:
+ case RISCV::VSSE16_V:
return 16;
- case RISCV::PseudoVLE32_V_M1:
- case RISCV::PseudoVLE32_V_M1_MASK:
- case RISCV::PseudoVLE32_V_M2:
- case RISCV::PseudoVLE32_V_M2_MASK:
- case RISCV::PseudoVLE32_V_M4:
- case RISCV::PseudoVLE32_V_M4_MASK:
- case RISCV::PseudoVLE32_V_M8:
- case RISCV::PseudoVLE32_V_M8_MASK:
- case RISCV::PseudoVLE32_V_MF2:
- case RISCV::PseudoVLE32_V_MF2_MASK:
- case RISCV::PseudoVLSE32_V_M1:
- case RISCV::PseudoVLSE32_V_M1_MASK:
- case RISCV::PseudoVLSE32_V_M2:
- case RISCV::PseudoVLSE32_V_M2_MASK:
- case RISCV::PseudoVLSE32_V_M4:
- case RISCV::PseudoVLSE32_V_M4_MASK:
- case RISCV::PseudoVLSE32_V_M8:
- case RISCV::PseudoVLSE32_V_M8_MASK:
- case RISCV::PseudoVLSE32_V_MF2:
- case RISCV::PseudoVLSE32_V_MF2_MASK:
- case RISCV::PseudoVSE32_V_M1:
- case RISCV::PseudoVSE32_V_M1_MASK:
- case RISCV::PseudoVSE32_V_M2:
- case RISCV::PseudoVSE32_V_M2_MASK:
- case RISCV::PseudoVSE32_V_M4:
- case RISCV::PseudoVSE32_V_M4_MASK:
- case RISCV::PseudoVSE32_V_M8:
- case RISCV::PseudoVSE32_V_M8_MASK:
- case RISCV::PseudoVSE32_V_MF2:
- case RISCV::PseudoVSE32_V_MF2_MASK:
- case RISCV::PseudoVSSE32_V_M1:
- case RISCV::PseudoVSSE32_V_M1_MASK:
- case RISCV::PseudoVSSE32_V_M2:
- case RISCV::PseudoVSSE32_V_M2_MASK:
- case RISCV::PseudoVSSE32_V_M4:
- case RISCV::PseudoVSSE32_V_M4_MASK:
- case RISCV::PseudoVSSE32_V_M8:
- case RISCV::PseudoVSSE32_V_M8_MASK:
- case RISCV::PseudoVSSE32_V_MF2:
- case RISCV::PseudoVSSE32_V_MF2_MASK:
+ case RISCV::VLE32_V:
+ case RISCV::VLSE32_V:
+ case RISCV::VSE32_V:
+ case RISCV::VSSE32_V:
return 32;
- case RISCV::PseudoVLE64_V_M1:
- case RISCV::PseudoVLE64_V_M1_MASK:
- case RISCV::PseudoVLE64_V_M2:
- case RISCV::PseudoVLE64_V_M2_MASK:
- case RISCV::PseudoVLE64_V_M4:
- case RISCV::PseudoVLE64_V_M4_MASK:
- case RISCV::PseudoVLE64_V_M8:
- case RISCV::PseudoVLE64_V_M8_MASK:
- case RISCV::PseudoVLSE64_V_M1:
- case RISCV::PseudoVLSE64_V_M1_MASK:
- case RISCV::PseudoVLSE64_V_M2:
- case RISCV::PseudoVLSE64_V_M2_MASK:
- case RISCV::PseudoVLSE64_V_M4:
- case RISCV::PseudoVLSE64_V_M4_MASK:
- case RISCV::PseudoVLSE64_V_M8:
- case RISCV::PseudoVLSE64_V_M8_MASK:
- case RISCV::PseudoVSE64_V_M1:
- case RISCV::PseudoVSE64_V_M1_MASK:
- case RISCV::PseudoVSE64_V_M2:
- case RISCV::PseudoVSE64_V_M2_MASK:
- case RISCV::PseudoVSE64_V_M4:
- case RISCV::PseudoVSE64_V_M4_MASK:
- case RISCV::PseudoVSE64_V_M8:
- case RISCV::PseudoVSE64_V_M8_MASK:
- case RISCV::PseudoVSSE64_V_M1:
- case RISCV::PseudoVSSE64_V_M1_MASK:
- case RISCV::PseudoVSSE64_V_M2:
- case RISCV::PseudoVSSE64_V_M2_MASK:
- case RISCV::PseudoVSSE64_V_M4:
- case RISCV::PseudoVSSE64_V_M4_MASK:
- case RISCV::PseudoVSSE64_V_M8:
- case RISCV::PseudoVSSE64_V_M8_MASK:
+ case RISCV::VLE64_V:
+ case RISCV::VLSE64_V:
+ case RISCV::VSE64_V:
+ case RISCV::VSSE64_V:
return 64;
}
}
More information about the llvm-commits
mailing list