Conflicts: src/gallium/drivers/radeon/R600ISelLowering.cpp --- src/gallium/drivers/radeon/R600ISelLowering.cpp | 13 +++++++++++++ src/gallium/drivers/radeon/R600ISelLowering.h | 2 ++ 2 files changed, 15 insertions(+)
diff --git a/src/gallium/drivers/radeon/R600ISelLowering.cpp b/src/gallium/drivers/radeon/R600ISelLowering.cpp index 5642ee8..599a758 100644 --- a/src/gallium/drivers/radeon/R600ISelLowering.cpp +++ b/src/gallium/drivers/radeon/R600ISelLowering.cpp @@ -48,10 +48,23 @@ R600TargetLowering::R600TargetLowering(TargetMachine &TM) : setOperationAction(ISD::SETCC, MVT::i32, Custom); setOperationAction(ISD::SETCC, MVT::f32, Custom); + setOperationAction(ISD::SETCC, MVT::v4i32, Expand); setOperationAction(ISD::FP_TO_UINT, MVT::i1, Custom); + + setOperationAction(ISD::SELECT, MVT::v4f32, Expand); + setOperationAction(ISD::SELECT, MVT::v4i32, Expand); + + setOperationAction(ISD::VSELECT, MVT::v4f32, Expand); + setOperationAction(ISD::VSELECT, MVT::v4i32, Expand); setSchedulingPreference(Sched::VLIW); } +EVT R600TargetLowering::getSetCCResultType(EVT VT) const +{ + if (!VT.isVector()) return MVT::i32; + return VT.changeVectorElementTypeToInteger(); +} + MachineBasicBlock * R600TargetLowering::EmitInstrWithCustomInserter( MachineInstr * MI, MachineBasicBlock * BB) const { diff --git a/src/gallium/drivers/radeon/R600ISelLowering.h b/src/gallium/drivers/radeon/R600ISelLowering.h index 49ea272..b090946 100644 --- a/src/gallium/drivers/radeon/R600ISelLowering.h +++ b/src/gallium/drivers/radeon/R600ISelLowering.h @@ -30,6 +30,8 @@ public: void ReplaceNodeResults(SDNode * N, SmallVectorImpl<SDValue> &Results, SelectionDAG &DAG) const; + + EVT getSetCCResultType(EVT VT) const; private: const R600InstrInfo * TII; -- 1.7.11.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev