mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-20 14:29:27 +00:00
R600/SI: add folding helper
Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176100 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
749428f852
commit
c018ecac2f
@ -65,6 +65,10 @@ public:
|
||||
SDValue LowerMinMax(SDValue Op, SelectionDAG &DAG) const;
|
||||
virtual const char* getTargetNodeName(unsigned Opcode) const;
|
||||
|
||||
virtual SDNode *PostISelFolding(MachineSDNode *N, SelectionDAG &DAG) const {
|
||||
return N;
|
||||
}
|
||||
|
||||
// Functions defined in AMDILISelLowering.cpp
|
||||
public:
|
||||
|
||||
|
@ -43,6 +43,7 @@ public:
|
||||
|
||||
SDNode *Select(SDNode *N);
|
||||
virtual const char *getPassName() const;
|
||||
virtual void PostprocessISelDAG();
|
||||
|
||||
private:
|
||||
inline SDValue getSmallIPtrImm(unsigned Imm);
|
||||
@ -575,3 +576,21 @@ bool AMDGPUDAGToDAGISel::SelectADDRIndirect(SDValue Addr, SDValue &Base,
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void AMDGPUDAGToDAGISel::PostprocessISelDAG() {
|
||||
|
||||
// Go over all selected nodes and try to fold them a bit more
|
||||
const AMDGPUTargetLowering& Lowering = ((const AMDGPUTargetLowering&)TLI);
|
||||
for (SelectionDAG::allnodes_iterator I = CurDAG->allnodes_begin(),
|
||||
E = CurDAG->allnodes_end(); I != E; ++I) {
|
||||
|
||||
MachineSDNode *Node = dyn_cast<MachineSDNode>(I);
|
||||
if (!Node)
|
||||
continue;
|
||||
|
||||
SDNode *ResNode = Lowering.PostISelFolding(Node, *CurDAG);
|
||||
if (ResNode != Node)
|
||||
ReplaceUses(Node, ResNode);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -357,3 +357,9 @@ SDValue SITargetLowering::PerformDAGCombine(SDNode *N,
|
||||
}
|
||||
return SDValue();
|
||||
}
|
||||
|
||||
SDNode *SITargetLowering::PostISelFolding(MachineSDNode *Node,
|
||||
SelectionDAG &DAG) const {
|
||||
// TODO: Implement immediate folding
|
||||
return Node;
|
||||
}
|
||||
|
@ -41,6 +41,7 @@ public:
|
||||
virtual EVT getSetCCResultType(EVT VT) const;
|
||||
virtual SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const;
|
||||
virtual SDValue PerformDAGCombine(SDNode *N, DAGCombinerInfo &DCI) const;
|
||||
virtual SDNode *PostISelFolding(MachineSDNode *N, SelectionDAG &DAG) const;
|
||||
};
|
||||
|
||||
} // End namespace llvm
|
||||
|
Loading…
x
Reference in New Issue
Block a user