llvm-project/llvm/lib/Target/NVPTX
Justin Lebar 46624a822d [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

llvm-svn: 292694
2017-01-21 01:00:32 +00:00
..
InstPrinter [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
MCTargetDesc [NVPTX] Remove string constants from NVPTXBaseInfo.h. 2016-12-14 22:32:44 +00:00
TargetInfo Move the global variables representing each Target behind accessor function 2016-10-09 23:00:34 +00:00
CMakeLists.txt [NVPTX] Remove NVPTXFavorNonGenericAddrSpaces pass. 2016-10-31 21:51:42 +00:00
LLVMBuild.txt
ManagedStringPool.h [NVPTX] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-09 22:16:51 +00:00
NVPTX.h [NVPTX] Let there be One True Way to set NVVMReflect params. 2017-01-15 16:54:35 +00:00
NVPTX.td
NVPTXAllocaHoisting.cpp
NVPTXAllocaHoisting.h
NVPTXAsmPrinter.cpp [NVPTX] Support global variables of integer type larger than i64. 2017-01-18 00:29:53 +00:00
NVPTXAsmPrinter.h [NVPTX] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-09 22:16:51 +00:00
NVPTXAssignValidGlobalNames.cpp
NVPTXFrameLowering.cpp
NVPTXFrameLowering.h
NVPTXGenericToNVVM.cpp
NVPTXISelDAGToDAG.cpp [NVPTX] Move getDivF32Level, usePrecSqrtF32, and useF32FTZ into out of DAGToDAG and into TargetLowering. 2017-01-21 01:00:14 +00:00
NVPTXISelDAGToDAG.h [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXISelLowering.cpp [NVPTX] Move getDivF32Level, usePrecSqrtF32, and useF32FTZ into out of DAGToDAG and into TargetLowering. 2017-01-21 01:00:14 +00:00
NVPTXISelLowering.h [NVPTX] Move getDivF32Level, usePrecSqrtF32, and useF32FTZ into out of DAGToDAG and into TargetLowering. 2017-01-21 01:00:14 +00:00
NVPTXImageOptimizer.cpp
NVPTXInferAddressSpaces.cpp
NVPTXInstrFormats.td
NVPTXInstrInfo.cpp [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXInstrInfo.h [NVPTX] Remove dead code. 2016-12-14 23:20:40 +00:00
NVPTXInstrInfo.td [NVPTX] Standardize asm printer on "foo \tbar". 2017-01-18 00:09:36 +00:00
NVPTXIntrinsics.td [NVPTX] Auto-upgrade some NVPTX intrinsics to LLVM target-generic code. 2017-01-21 01:00:32 +00:00
NVPTXLowerAggrCopies.cpp
NVPTXLowerAggrCopies.h
NVPTXLowerAlloca.cpp [NVPTX] Remove NVPTXFavorNonGenericAddrSpaces pass. 2016-10-31 21:51:42 +00:00
NVPTXLowerArgs.cpp [NVPTX] Remove NVPTXFavorNonGenericAddrSpaces pass. 2016-10-31 21:51:42 +00:00
NVPTXMCExpr.cpp [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXMCExpr.h [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXMachineFunctionInfo.h
NVPTXPeephole.cpp [CodeGen] Rename MachineInstrBuilder::addOperand. NFC 2017-01-13 09:58:52 +00:00
NVPTXPrologEpilogPass.cpp
NVPTXRegisterInfo.cpp [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXRegisterInfo.h
NVPTXRegisterInfo.td [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXReplaceImageHandles.cpp
NVPTXSection.h [NVPTX] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-09 22:16:51 +00:00
NVPTXSubtarget.cpp [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXSubtarget.h [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXTargetMachine.cpp [NVPTX] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-09 22:16:51 +00:00
NVPTXTargetMachine.h
NVPTXTargetObjectFile.h [NVPTX] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-09 22:16:51 +00:00
NVPTXTargetTransformInfo.cpp [X86] updating TTI costs for arithmetic instructions on X86\SLM arch. 2017-01-11 08:23:37 +00:00
NVPTXTargetTransformInfo.h [X86] updating TTI costs for arithmetic instructions on X86\SLM arch. 2017-01-11 08:23:37 +00:00
NVPTXUtilities.cpp [NVPTX] Remove dead code. 2016-12-14 23:20:40 +00:00
NVPTXUtilities.h [NVPTX] Remove dead #defines from NVPTXUtilities.h. 2016-12-15 00:45:06 +00:00
NVPTXVector.td
NVVMIntrRange.cpp [NVVMIntrRange] Only set range metadata if none is already present 2016-12-22 00:51:59 +00:00
NVVMReflect.cpp [NVPTX] Let there be One True Way to set NVVMReflect params. 2017-01-15 16:54:35 +00:00
cl_common_defines.h