[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