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,
SmallVectorImplSDValue 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