diff options
author | Justin Holewinski <jholewinski@nvidia.com> | 2014-04-09 15:39:15 +0000 |
---|---|---|
committer | Justin Holewinski <jholewinski@nvidia.com> | 2014-04-09 15:39:15 +0000 |
commit | 77f268945e4d4b777102d4a2089cb86137042883 (patch) | |
tree | fbd8740fff0620884b9c0c44a8f0e37252f4f7f8 /lib/Target/NVPTX/NVPTXISelDAGToDAG.h | |
parent | ac4c131de6a8d797dcb91398b6b315635cf22c40 (diff) | |
download | llvm-77f268945e4d4b777102d4a2089cb86137042883.tar.gz llvm-77f268945e4d4b777102d4a2089cb86137042883.tar.bz2 llvm-77f268945e4d4b777102d4a2089cb86137042883.tar.xz |
[NVPTX] Add preliminary intrinsics and codegen support for textures/surfaces
This commit adds intrinsics and codegen support for the surface read/write and texture read instructions that take an explicit sampler parameter. Codegen operates on image handles at the PTX level, but falls back to direct replacement of handles with kernel arguments if image handles are not enabled. Note that image handles are explicitly disabled for all target architectures in this change (to be enabled later).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205907 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/NVPTX/NVPTXISelDAGToDAG.h')
-rw-r--r-- | lib/Target/NVPTX/NVPTXISelDAGToDAG.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/Target/NVPTX/NVPTXISelDAGToDAG.h b/lib/Target/NVPTX/NVPTXISelDAGToDAG.h index 93ad16911b..fda4e71ec8 100644 --- a/lib/Target/NVPTX/NVPTXISelDAGToDAG.h +++ b/lib/Target/NVPTX/NVPTXISelDAGToDAG.h @@ -59,6 +59,8 @@ private: #include "NVPTXGenDAGISel.inc" SDNode *Select(SDNode *N); + SDNode *SelectIntrinsicNoChain(SDNode *N); + SDNode *SelectTexSurfHandle(SDNode *N); SDNode *SelectLoad(SDNode *N); SDNode *SelectLoadVector(SDNode *N); SDNode *SelectLDGLDUVector(SDNode *N); @@ -68,6 +70,8 @@ private: SDNode *SelectStoreRetval(SDNode *N); SDNode *SelectStoreParam(SDNode *N); SDNode *SelectAddrSpaceCast(SDNode *N); + SDNode *SelectTextureIntrinsic(SDNode *N); + SDNode *SelectSurfaceIntrinsic(SDNode *N); inline SDValue getI32Imm(unsigned Imm) { return CurDAG->getTargetConstant(Imm, MVT::i32); |