diff --git a/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp b/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp --- a/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp +++ b/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp @@ -67,32 +67,20 @@ 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 @@ /// Get the EEW for a load or store instruction. Return None if MI is not /// a load or store which ignores SEW. static Optional 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; } }