summaryrefslogtreecommitdiff
path: root/lib/Target/TGSI/TGSIISelLowering.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/TGSI/TGSIISelLowering.cpp')
-rw-r--r--lib/Target/TGSI/TGSIISelLowering.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/Target/TGSI/TGSIISelLowering.cpp b/lib/Target/TGSI/TGSIISelLowering.cpp
index 28d448528e8..2728164cf1c 100644
--- a/lib/Target/TGSI/TGSIISelLowering.cpp
+++ b/lib/Target/TGSI/TGSIISelLowering.cpp
@@ -269,6 +269,33 @@ LowerOperation(SDValue op, SelectionDAG &dag) const {
cast<ConstantSDNode>(op.getOperand(0))->getZExtValue();
EVT VT = op.getValueType();
switch(IntrinsicID) {
+ case Intrinsic::tgsi_read_blockid_x:
+ return CreateLiveInRegister(dag, &TGSI::IRegsRegClass,
+ TGSI_BLOCK_ID(x), VT);
+ case Intrinsic::tgsi_read_blockid_y:
+ return CreateLiveInRegister(dag, &TGSI::IRegsRegClass,
+ TGSI_BLOCK_ID(y), VT);
+ case Intrinsic::tgsi_read_blockid_z:
+ return CreateLiveInRegister(dag, &TGSI::IRegsRegClass,
+ TGSI_BLOCK_ID(z), VT);
+ case Intrinsic::tgsi_read_blocksize_x:
+ return CreateLiveInRegister(dag, &TGSI::IRegsRegClass,
+ TGSI_BLOCK_SIZE(x), VT);
+ case Intrinsic::tgsi_read_blocksize_y:
+ return CreateLiveInRegister(dag, &TGSI::IRegsRegClass,
+ TGSI_BLOCK_SIZE(y), VT);
+ case Intrinsic::tgsi_read_blocksize_z:
+ return CreateLiveInRegister(dag, &TGSI::IRegsRegClass,
+ TGSI_BLOCK_SIZE(z), VT);
+ case Intrinsic::tgsi_read_gridsize_x:
+ return CreateLiveInRegister(dag, &TGSI::IRegsRegClass,
+ TGSI_GRID_SIZE(x), VT);
+ case Intrinsic::tgsi_read_gridsize_y:
+ return CreateLiveInRegister(dag, &TGSI::IRegsRegClass,
+ TGSI_GRID_SIZE(y), VT);
+ case Intrinsic::tgsi_read_gridsize_z:
+ return CreateLiveInRegister(dag, &TGSI::IRegsRegClass,
+ TGSI_GRID_SIZE(z), VT);
case Intrinsic::tgsi_read_threadid_x:
return CreateLiveInRegister(dag, &TGSI::IRegsRegClass,
TGSI_THREAD_ID(x), VT);