diff options
Diffstat (limited to 'lib/Target/TGSI/TGSIISelLowering.cpp')
-rw-r--r-- | lib/Target/TGSI/TGSIISelLowering.cpp | 27 |
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); |