diff options
| author | Christian Konig <christian.koenig@amd.com> | 2013-02-16 11:28:30 +0000 | 
|---|---|---|
| committer | Christian Konig <christian.koenig@amd.com> | 2013-02-16 11:28:30 +0000 | 
| commit | a881179ffe789ca25c987da3da63c1e7363aa7cf (patch) | |
| tree | 136ad9b4b654100f5f1ea38662988aa991c63ce3 /llvm/lib/Target/R600/SIISelLowering.cpp | |
| parent | c756cb9901e4455da9d1fcf0a619dd4fe008e205 (diff) | |
| download | bcm5719-llvm-a881179ffe789ca25c987da3da63c1e7363aa7cf.tar.gz bcm5719-llvm-a881179ffe789ca25c987da3da63c1e7363aa7cf.zip | |
R600/SI: nuke SReg_1 v3
It's completely unnecessary and can be replace with proper
SReg_64 handling instead.
This actually fixes a piglit test on SI.
v2: use correct register class in addRegisterClass,
    set special classes as not allocatable
v3: revert setting special classes as not allocateable
This is a candidate for the stable branch.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175355
Diffstat (limited to 'llvm/lib/Target/R600/SIISelLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/R600/SIISelLowering.cpp | 40 | 
1 files changed, 1 insertions, 39 deletions
| diff --git a/llvm/lib/Target/R600/SIISelLowering.cpp b/llvm/lib/Target/R600/SIISelLowering.cpp index 9a8ce803fd3..40858901430 100644 --- a/llvm/lib/Target/R600/SIISelLowering.cpp +++ b/llvm/lib/Target/R600/SIISelLowering.cpp @@ -31,8 +31,7 @@ SITargetLowering::SITargetLowering(TargetMachine &TM) :    addRegisterClass(MVT::f32, &AMDGPU::VReg_32RegClass);    addRegisterClass(MVT::i32, &AMDGPU::VReg_32RegClass);    addRegisterClass(MVT::i64, &AMDGPU::SReg_64RegClass); -  addRegisterClass(MVT::i1, &AMDGPU::SCCRegRegClass); -  addRegisterClass(MVT::i1, &AMDGPU::VCCRegRegClass); +  addRegisterClass(MVT::i1, &AMDGPU::SReg_64RegClass);    addRegisterClass(MVT::v1i32, &AMDGPU::VReg_32RegClass);    addRegisterClass(MVT::v2i32, &AMDGPU::VReg_64RegClass); @@ -42,8 +41,6 @@ SITargetLowering::SITargetLowering(TargetMachine &TM) :    computeRegisterProperties(); -  setOperationAction(ISD::AND, MVT::i1, Custom); -    setOperationAction(ISD::ADD, MVT::i64, Legal);    setOperationAction(ISD::ADD, MVT::i32, Legal); @@ -202,7 +199,6 @@ SDValue SITargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {    case ISD::BRCOND: return LowerBRCOND(Op, DAG);    case ISD::LOAD: return LowerLOAD(Op, DAG);    case ISD::SELECT_CC: return LowerSELECT_CC(Op, DAG); -  case ISD::AND: return Loweri1ContextSwitch(Op, DAG, ISD::AND);    case ISD::INTRINSIC_WO_CHAIN: {      unsigned IntrinsicID =                           cast<ConstantSDNode>(Op.getOperand(0))->getZExtValue(); @@ -219,30 +215,6 @@ SDValue SITargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {    return SDValue();  } -/// \brief The function is for lowering i1 operations on the -/// VCC register. -/// -/// In the VALU context, VCC is a one bit register, but in the -/// SALU context the VCC is a 64-bit register (1-bit per thread).  Since only -/// the SALU can perform operations on the VCC register, we need to promote -/// the operand types from i1 to i64 in order for tablegen to be able to match -/// this operation to the correct SALU instruction.  We do this promotion by -/// wrapping the operands in a CopyToReg node. -/// -SDValue SITargetLowering::Loweri1ContextSwitch(SDValue Op, -                                               SelectionDAG &DAG, -                                               unsigned VCCNode) const { -  DebugLoc DL = Op.getDebugLoc(); - -  SDValue OpNode = DAG.getNode(VCCNode, DL, MVT::i64, -                               DAG.getNode(SIISD::VCC_BITCAST, DL, MVT::i64, -                                           Op.getOperand(0)), -                               DAG.getNode(SIISD::VCC_BITCAST, DL, MVT::i64, -                                           Op.getOperand(1))); - -  return DAG.getNode(SIISD::VCC_BITCAST, DL, MVT::i1, OpNode); -} -  /// \brief Helper function for LowerBRCOND  static SDNode *findUser(SDValue Value, unsigned Opcode) { @@ -446,13 +418,3 @@ SDValue SITargetLowering::PerformDAGCombine(SDNode *N,    }    return SDValue();  } - -#define NODE_NAME_CASE(node) case SIISD::node: return #node; - -const char* SITargetLowering::getTargetNodeName(unsigned Opcode) const { -  switch (Opcode) { -  default: return AMDGPUTargetLowering::getTargetNodeName(Opcode); -  NODE_NAME_CASE(VCC_AND) -  NODE_NAME_CASE(VCC_BITCAST) -  } -} | 

