]> granicus.if.org Git - llvm/commit
[NVPTX] Add lowering of i128 params.
authorArtem Belevich <tra@google.com>
Thu, 20 Jul 2017 21:16:03 +0000 (21:16 +0000)
committerArtem Belevich <tra@google.com>
Thu, 20 Jul 2017 21:16:03 +0000 (21:16 +0000)
commit1ef19969090ee640cd907ce2d20946ac07deedcd
tree8b34b27ba1cc314c4fb14b1fe71f5b6c66244d9f
parent524fde4af11053268939a91ac4ca1fbd52f1f23c
[NVPTX] Add lowering of i128 params.

The patch adds support of i128 params lowering. The changes are quite trivial to
support i128 as a "special case" of integer type. With this patch, we lower i128
params the same way as aggregates of size 16 bytes: .param .b8 _ [16].

Currently, NVPTX can't deal with the 128 bit integers:
* in some cases because of failed assertions like
  ValVTs.size() == OutVals.size() && "Bad return value decomposition"
* in other cases emitting PTX with .i128 or .u128 types (which are not valid [1])
  [1] http://docs.nvidia.com/cuda/parallel-thread-execution/index.html#fundamental-types

Differential Revision: https://reviews.llvm.org/D34555
Patch by: Denys Zariaiev (denys.zariaiev@gmail.com)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308675 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/NVPTX/NVPTXAsmPrinter.cpp
lib/Target/NVPTX/NVPTXISelLowering.cpp
lib/Target/NVPTX/NVPTXTargetMachine.cpp
test/CodeGen/NVPTX/i128-global.ll [new file with mode: 0644]
test/CodeGen/NVPTX/i128-param.ll [new file with mode: 0644]
test/CodeGen/NVPTX/i128-retval.ll [new file with mode: 0644]