[llvm] 181e806 - [RISCV][GISel] Handle FP instructions in the default case of register bank selection. NFC
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 15 23:21:24 PST 2023
Author: Craig Topper
Date: 2023-11-15T23:17:08-08:00
New Revision: 181e8065ed56a3c3c3686c091e901e3481321840
URL: https://github.com/llvm/llvm-project/commit/181e8065ed56a3c3c3686c091e901e3481321840
DIFF: https://github.com/llvm/llvm-project/commit/181e8065ed56a3c3c3686c091e901e3481321840.diff
LOG: [RISCV][GISel] Handle FP instructions in the default case of register bank selection. NFC
Use isPreISelGenericFloatingPointOpcode to to indicate when to use
an FP ValueMapping.
Added:
Modified:
llvm/lib/Target/RISCV/GISel/RISCVRegisterBankInfo.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/GISel/RISCVRegisterBankInfo.cpp b/llvm/lib/Target/RISCV/GISel/RISCVRegisterBankInfo.cpp
index c53dabfd240759f..6d77e2b7edd9010 100644
--- a/llvm/lib/Target/RISCV/GISel/RISCVRegisterBankInfo.cpp
+++ b/llvm/lib/Target/RISCV/GISel/RISCVRegisterBankInfo.cpp
@@ -329,19 +329,6 @@ RISCVRegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
OpdsMapping[2] = GPRValueMapping;
OpdsMapping[3] = GPRValueMapping;
break;
- case TargetOpcode::G_FMA: {
- LLT Ty = MRI.getType(MI.getOperand(0).getReg());
- std::fill_n(OpdsMapping.begin(), 4, getFPValueMapping(Ty.getSizeInBits()));
- break;
- }
- case TargetOpcode::G_FPEXT:
- case TargetOpcode::G_FPTRUNC: {
- LLT ToTy = MRI.getType(MI.getOperand(0).getReg());
- LLT FromTy = MRI.getType(MI.getOperand(1).getReg());
- OpdsMapping[0] = getFPValueMapping(ToTy.getSizeInBits());
- OpdsMapping[1] = getFPValueMapping(FromTy.getSizeInBits());
- break;
- }
case TargetOpcode::G_FPTOSI:
case TargetOpcode::G_FPTOUI: {
LLT Ty = MRI.getType(MI.getOperand(1).getReg());
@@ -356,11 +343,6 @@ RISCVRegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
OpdsMapping[1] = GPRValueMapping;
break;
}
- case TargetOpcode::G_FCONSTANT: {
- LLT Ty = MRI.getType(MI.getOperand(0).getReg());
- OpdsMapping[0] = getFPValueMapping(Ty.getSizeInBits());
- break;
- }
case TargetOpcode::G_FCMP: {
LLT Ty = MRI.getType(MI.getOperand(2).getReg());
@@ -375,9 +357,16 @@ RISCVRegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
// By default map all scalars to GPR.
for (unsigned Idx = 0; Idx < NumOperands; ++Idx) {
auto &MO = MI.getOperand(Idx);
- if (!MO.isReg())
+ if (!MO.isReg() || !MO.getReg())
+ continue;
+ LLT Ty = MRI.getType(MO.getReg());
+ if (!Ty.isValid())
continue;
- OpdsMapping[Idx] = GPRValueMapping;
+
+ if (isPreISelGenericFloatingPointOpcode(Opc))
+ OpdsMapping[Idx] = getFPValueMapping(Ty.getSizeInBits());
+ else
+ OpdsMapping[Idx] = GPRValueMapping;
}
break;
}
More information about the llvm-commits
mailing list