]> granicus.if.org Git - llvm/commitdiff
[GISel]: Add a getConstantFPVRegVal utility
authorAditya Nandakumar <aditya_nandakumar@apple.com>
Fri, 12 May 2017 22:54:52 +0000 (22:54 +0000)
committerAditya Nandakumar <aditya_nandakumar@apple.com>
Fri, 12 May 2017 22:54:52 +0000 (22:54 +0000)
This might be useful across various GISel Passes

https://reviews.llvm.org/D33051

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302964 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/GlobalISel/Utils.h
lib/CodeGen/GlobalISel/Utils.cpp

index 92bc9736141a180af8de0fc4f9db1bbf6f826bc6..69d507069808213adfe082e9edfa11e2b4f88f7d 100644 (file)
@@ -30,6 +30,7 @@ class TargetInstrInfo;
 class TargetPassConfig;
 class TargetRegisterInfo;
 class Twine;
+class ConstantFP;
 
 /// Try to constrain Reg so that it is usable by argument OpIdx of the
 /// provided MCInstrDesc \p II. If this fails, create a new virtual
@@ -62,6 +63,8 @@ void reportGISelFailure(MachineFunction &MF, const TargetPassConfig &TPC,
 
 Optional<int64_t> getConstantVRegVal(unsigned VReg,
                                      const MachineRegisterInfo &MRI);
+const ConstantFP* getConstantFPVRegVal(unsigned VReg,
+                                       const MachineRegisterInfo &MRI);
 
 } // End namespace llvm.
 #endif
index 3c93f8123b0d14afb4a0bd5567c4f71c00adac11..254bdf10d804f345410a9328111cf1f3aa890c0d 100644 (file)
@@ -110,3 +110,11 @@ Optional<int64_t> llvm::getConstantVRegVal(unsigned VReg,
 
   return None;
 }
+
+const llvm::ConstantFP* llvm::getConstantFPVRegVal(unsigned VReg,
+                                       const MachineRegisterInfo &MRI) {
+  MachineInstr *MI = MRI.getVRegDef(VReg);
+  if (TargetOpcode::G_FCONSTANT != MI->getOpcode())
+    return nullptr;
+  return MI->getOperand(1).getFPImm();
+}