mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 00:32:55 +00:00
R600: Change operation action from Custom to Expand for BR_CC
Reviewed-by: Christian König <christian.koenig@amd.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176698 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9c6b0b0cce
commit
d416505906
@ -50,8 +50,8 @@ R600TargetLowering::R600TargetLowering(TargetMachine &TM) :
|
||||
setOperationAction(ISD::UREM, MVT::v4i32, Expand);
|
||||
setOperationAction(ISD::SETCC, MVT::v4i32, Expand);
|
||||
|
||||
setOperationAction(ISD::BR_CC, MVT::i32, Custom);
|
||||
setOperationAction(ISD::BR_CC, MVT::f32, Custom);
|
||||
setOperationAction(ISD::BR_CC, MVT::i32, Expand);
|
||||
setOperationAction(ISD::BR_CC, MVT::f32, Expand);
|
||||
|
||||
setOperationAction(ISD::FSUB, MVT::f32, Expand);
|
||||
|
||||
@ -312,7 +312,6 @@ using namespace llvm::AMDGPUIntrinsic;
|
||||
SDValue R600TargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
|
||||
switch (Op.getOpcode()) {
|
||||
default: return AMDGPUTargetLowering::LowerOperation(Op, DAG);
|
||||
case ISD::BR_CC: return LowerBR_CC(Op, DAG);
|
||||
case ISD::ROTL: return LowerROTL(Op, DAG);
|
||||
case ISD::SELECT_CC: return LowerSELECT_CC(Op, DAG);
|
||||
case ISD::SELECT: return LowerSELECT(Op, DAG);
|
||||
@ -475,44 +474,6 @@ SDValue R600TargetLowering::LowerFPTOUINT(SDValue Op, SelectionDAG &DAG) const {
|
||||
);
|
||||
}
|
||||
|
||||
SDValue R600TargetLowering::LowerBR_CC(SDValue Op, SelectionDAG &DAG) const {
|
||||
SDValue Chain = Op.getOperand(0);
|
||||
SDValue CC = Op.getOperand(1);
|
||||
SDValue LHS = Op.getOperand(2);
|
||||
SDValue RHS = Op.getOperand(3);
|
||||
SDValue JumpT = Op.getOperand(4);
|
||||
SDValue CmpValue;
|
||||
SDValue Result;
|
||||
|
||||
if (LHS.getValueType() == MVT::i32) {
|
||||
CmpValue = DAG.getNode(
|
||||
ISD::SELECT_CC,
|
||||
Op.getDebugLoc(),
|
||||
MVT::i32,
|
||||
LHS, RHS,
|
||||
DAG.getConstant(-1, MVT::i32),
|
||||
DAG.getConstant(0, MVT::i32),
|
||||
CC);
|
||||
} else if (LHS.getValueType() == MVT::f32) {
|
||||
CmpValue = DAG.getNode(
|
||||
ISD::SELECT_CC,
|
||||
Op.getDebugLoc(),
|
||||
MVT::f32,
|
||||
LHS, RHS,
|
||||
DAG.getConstantFP(1.0f, MVT::f32),
|
||||
DAG.getConstantFP(0.0f, MVT::f32),
|
||||
CC);
|
||||
} else {
|
||||
assert(0 && "Not valid type for br_cc");
|
||||
}
|
||||
Result = DAG.getNode(
|
||||
AMDGPUISD::BRANCH_COND,
|
||||
CmpValue.getDebugLoc(),
|
||||
MVT::Other, Chain,
|
||||
JumpT, CmpValue);
|
||||
return Result;
|
||||
}
|
||||
|
||||
SDValue R600TargetLowering::LowerImplicitParameter(SelectionDAG &DAG, EVT VT,
|
||||
DebugLoc DL,
|
||||
unsigned DwordOffset) const {
|
||||
|
@ -52,8 +52,6 @@ private:
|
||||
void lowerImplicitParameter(MachineInstr *MI, MachineBasicBlock &BB,
|
||||
MachineRegisterInfo & MRI, unsigned dword_offset) const;
|
||||
|
||||
SDValue LowerBR_CC(SDValue Op, SelectionDAG &DAG) const;
|
||||
|
||||
/// \brief Lower ROTL opcode to BITALIGN
|
||||
SDValue LowerROTL(SDValue Op, SelectionDAG &DAG) const;
|
||||
|
||||
|
@ -15,10 +15,11 @@ entry:
|
||||
}
|
||||
|
||||
; This test checks that a setcc node with f32 operands is lowered to a
|
||||
; SET* instruction.
|
||||
; SET*_DX10 instruction. Previously we were lowering this to:
|
||||
; SET* + FP_TO_SINT
|
||||
|
||||
; CHECK: @fcmp_br
|
||||
; CHECK: SET{{[N]*}}E T{{[0-9]+\.[XYZW], [a-zA-Z0-9, .]+}}(5.0
|
||||
; CHECK: SET{{[N]*}}E_DX10 T{{[0-9]+\.[XYZW], [a-zA-Z0-9, .]+}}(5.0
|
||||
|
||||
define void @fcmp_br(i32 addrspace(1)* %out, float %in) {
|
||||
entry:
|
||||
|
Loading…
x
Reference in New Issue
Block a user