]> granicus.if.org Git - llvm/commit
[NVPTX] Auto-upgrade some NVPTX intrinsics to LLVM target-generic code.
authorJustin Lebar <jlebar@google.com>
Sat, 21 Jan 2017 01:00:32 +0000 (01:00 +0000)
committerJustin Lebar <jlebar@google.com>
Sat, 21 Jan 2017 01:00:32 +0000 (01:00 +0000)
commite5aefeb9b8ae12ad5afbd06f512785ad5b0e906b
treec4172c16b628ff8943e23a91a03b4f16217535ef
parente1e85941e9e9e6f7148f2efd7e5cb626ad0eb2a2
[NVPTX] Auto-upgrade some NVPTX intrinsics to LLVM target-generic code.

Summary:
Specifically, we upgrade llvm.nvvm.:

 * brev{32,64}
 * clz.{i,ll}
 * popc.{i,ll}
 * abs.{i,ll}
 * {min,max}.{i,ll,u,ull}
 * h2f

These either map directly to an existing LLVM target-generic
intrinsic or map to a simple LLVM target-generic idiom.

In all cases, we check that the code we generate is lowered to PTX as we
expect.

These builtins don't need to be backfilled in clang: They're not
accessible to user code from nvcc.

Reviewers: tra

Subscribers: majnemer, cfe-commits, llvm-commits, jholewinski

Differential Revision: https://reviews.llvm.org/D28793

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292694 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/IR/IntrinsicsNVVM.td
lib/IR/AutoUpgrade.cpp
lib/Target/NVPTX/NVPTXIntrinsics.td
test/Assembler/auto_upgrade_nvvm_intrinsics.ll [new file with mode: 0644]