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 [NVPTX] Enable the load-store vectorizer on nvptx. 2016-07-20 22:11:36 +00:00
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 [NVPTX] Added intrinsics for atom.gen.{sys|cta}.* instructions. 2016-09-28 17:25:38 +00:00
NVPTXAllocaHoisting.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
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 MachineFunction: Return reference for getFrameInfo(); NFC 2016-07-28 18:40:00 +00:00
NVPTXFrameLowering.h Change eliminateCallFramePseudoInstr() to return an iterator 2016-03-31 18:33:38 +00:00
NVPTXGenericToNVVM.cpp CodeGen: Remove MachineFunctionAnalysis => Enable (Machine)ModulePasses 2016-08-24 01:52:46 +00:00
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 Add optimization bisect opt-in calls for NVPTX passes 2016-04-26 23:44:31 +00:00
NVPTXInferAddressSpaces.cpp [NVPTX] Switch nvptx-use-infer-addrspace to true. 2016-08-19 20:46:45 +00:00
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 Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
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 MachineFunction: Return reference for getFrameInfo(); NFC 2016-07-28 18:40:00 +00:00
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 Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
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 Delete Reloc::Default. 2016-05-18 22:04:49 +00:00
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