diff options
author | Hans de Goede <hdegoede@redhat.com> | 2016-03-31 11:35:52 +0200 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2016-06-28 11:53:42 +0200 |
commit | 9240d3d02673bb71915a12055d78dd06d2416762 (patch) | |
tree | e55795c310a153b44ede32fc47537362d132db8b | |
parent | fa11d9e574262dcd6967e9b0b0b33c790c505944 (diff) |
TGSI: Implement read blockid / blocksize / gridsize intrinsics
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
-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); |