diff --git a/lib/Target/R600/SIISelLowering.cpp b/lib/Target/R600/SIISelLowering.cpp index fd1e3a69bd1..47376b40286 100644 --- a/lib/Target/R600/SIISelLowering.cpp +++ b/lib/Target/R600/SIISelLowering.cpp @@ -104,6 +104,8 @@ SITargetLowering::SITargetLowering(TargetMachine &TM) : setOperationAction(ISD::STORE, MVT::v4i32, Custom); setOperationAction(ISD::SELECT, MVT::i64, Custom); + setOperationAction(ISD::SELECT, MVT::f64, Promote); + AddPromotedToType(ISD::SELECT, MVT::f64, MVT::i64); setOperationAction(ISD::SELECT_CC, MVT::f32, Custom); setOperationAction(ISD::SELECT_CC, MVT::i32, Custom); diff --git a/lib/Target/R600/SIInstructions.td b/lib/Target/R600/SIInstructions.td index eb10541b6f2..8ec29713e07 100644 --- a/lib/Target/R600/SIInstructions.td +++ b/lib/Target/R600/SIInstructions.td @@ -904,18 +904,6 @@ def : Pat < (EXTRACT_SUBREG $val, sub0) >; -//use two V_CNDMASK_B32_e64 instructions for f64 -def : Pat < - (f64 (select i1:$src2, f64:$src1, f64:$src0)), - (INSERT_SUBREG (INSERT_SUBREG (f64 (IMPLICIT_DEF)), - (V_CNDMASK_B32_e64 (EXTRACT_SUBREG $src0, sub0), - (EXTRACT_SUBREG $src1, sub0), - $src2), sub0), - (V_CNDMASK_B32_e64 (EXTRACT_SUBREG $src0, sub1), - (EXTRACT_SUBREG $src1, sub1), - $src2), sub1) ->; - def V_READLANE_B32 : VOP2 < 0x00000001, (outs SReg_32:$vdst),