diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-07-28 00:32:02 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-07-28 00:32:02 +0000 |
commit | fe267759929db1b54f1221ad7167c9d857d1136c (patch) | |
tree | 6e54dcd26651ceff968d92cfa88a9bc6488e4c02 /llvm/lib | |
parent | 242fde1b36fe3d431a157b3a559af13a29f97d00 (diff) | |
download | bcm5719-llvm-fe267759929db1b54f1221ad7167c9d857d1136c.tar.gz bcm5719-llvm-fe267759929db1b54f1221ad7167c9d857d1136c.zip |
AMDGPU: Remove analyzeImmediate
This no longer uses the more complicated classification
of constants.
llvm-svn: 276945
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp | 17 | ||||
-rw-r--r-- | llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 28 | ||||
-rw-r--r-- | llvm/lib/Target/AMDGPU/SIISelLowering.h | 1 |
3 files changed, 12 insertions, 34 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp index 23c9352ce27..fb09007de90 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp @@ -67,7 +67,7 @@ public: void PostprocessISelDAG() override; private: - bool isInlineImmediate(SDNode *N) const; + bool isInlineImmediate(const SDNode *N) const; bool FoldOperand(SDValue &Src, SDValue &Sel, SDValue &Neg, SDValue &Abs, const R600InstrInfo *TII); bool FoldOperands(unsigned, const R600InstrInfo *, std::vector<SDValue> &); @@ -175,10 +175,17 @@ bool AMDGPUDAGToDAGISel::runOnMachineFunction(MachineFunction &MF) { AMDGPUDAGToDAGISel::~AMDGPUDAGToDAGISel() { } -bool AMDGPUDAGToDAGISel::isInlineImmediate(SDNode *N) const { - const SITargetLowering *TL - = static_cast<const SITargetLowering *>(getTargetLowering()); - return TL->analyzeImmediate(N) == 0; +bool AMDGPUDAGToDAGISel::isInlineImmediate(const SDNode *N) const { + const SIInstrInfo *TII + = static_cast<const SISubtarget *>(Subtarget)->getInstrInfo(); + + if (const ConstantSDNode *C = dyn_cast<ConstantSDNode>(N)) + return TII->isInlineConstant(C->getAPIntValue()); + + if (const ConstantFPSDNode *C = dyn_cast<ConstantFPSDNode>(N)) + return TII->isInlineConstant(C->getValueAPF().bitcastToAPInt()); + + return false; } /// \brief Determine the register class for \p OpNo diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp index 7e6d212f730..1b9a3f276bc 100644 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -3377,34 +3377,6 @@ SDValue SITargetLowering::PerformDAGCombine(SDNode *N, return AMDGPUTargetLowering::PerformDAGCombine(N, DCI); } -/// \brief Analyze the possible immediate value Op -/// -/// Returns -1 if it isn't an immediate, 0 if it's and inline immediate -/// and the immediate value if it's a literal immediate -int32_t SITargetLowering::analyzeImmediate(const SDNode *N) const { - const SIInstrInfo *TII = getSubtarget()->getInstrInfo(); - - if (const ConstantSDNode *Node = dyn_cast<ConstantSDNode>(N)) { - if (TII->isInlineConstant(Node->getAPIntValue())) - return 0; - - uint64_t Val = Node->getZExtValue(); - return isUInt<32>(Val) ? Val : -1; - } - - if (const ConstantFPSDNode *Node = dyn_cast<ConstantFPSDNode>(N)) { - if (TII->isInlineConstant(Node->getValueAPF().bitcastToAPInt())) - return 0; - - if (Node->getValueType(0) == MVT::f32) - return FloatToBits(Node->getValueAPF().convertToFloat()); - - return -1; - } - - return -1; -} - /// \brief Helper function for adjustWritemask static unsigned SubIdx2Lane(unsigned Idx) { switch (Idx) { diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.h b/llvm/lib/Target/AMDGPU/SIISelLowering.h index 1d349faa592..41cffb7a8cc 100644 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.h +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.h @@ -141,7 +141,6 @@ public: void AdjustInstrPostInstrSelection(MachineInstr &MI, SDNode *Node) const override; - int32_t analyzeImmediate(const SDNode *N) const; SDValue CreateLiveInRegister(SelectionDAG &DAG, const TargetRegisterClass *RC, unsigned Reg, EVT VT) const override; void legalizeTargetIndependentNode(SDNode *Node, SelectionDAG &DAG) const; |