llvm-project/llvm/lib/Target/NVPTX
Justin Lebar 7cdbce5946 [NVPTX] Run NVVMReflect at the beginning of IR passes.
Summary:
Currently the NVVMReflect pass is run at the beginning of our backend
passes.  But really, it should be run as early as possible, as it's
simply resolving an "if" statement in code.  So copy it into
TargetMachine::addEarlyAsPossiblePasses.

We still run it at the beginning of the backend passes, since it's
needed for correctness when lowering to nvptx.

(Specifically, NVVMReflect changes each call to the __nvvm_reflect
function or llvm.nvvm.reflect intrinsic into an integer constant, based
on the pass's configuration.  Clearly we miss many optimization
opportunities if we perform this transformation at the beginning of
codegen.)

Reviewers: rnk

Subscribers: tra, llvm-commits, jholewinski

Differential Revision: http://reviews.llvm.org/D18616

llvm-svn: 267765
2016-04-27 19:13:37 +00:00
..
InstPrinter Remove autoconf support 2016-01-26 21:29:08 +00:00
MCTargetDesc Remove autoconf support 2016-01-26 21:29:08 +00:00
TargetInfo Remove autoconf support 2016-01-26 21:29:08 +00:00
CMakeLists.txt [NVPTX] Adds a new address space inference pass. 2016-03-20 20:59:20 +00:00
LLVMBuild.txt
ManagedStringPool.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
NVPTX.h [NVPTX] Make NVVMReflect a function pass. 2016-03-30 20:40:11 +00:00
NVPTX.td
NVPTXAllocaHoisting.cpp
NVPTXAllocaHoisting.h
NVPTXAsmPrinter.cpp IR: Introduce ConstantAggregate, NFC 2016-04-05 21:10:45 +00:00
NVPTXAsmPrinter.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
NVPTXAssignValidGlobalNames.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
NVPTXFavorNonGenericAddrSpaces.cpp Add optimization bisect opt-in calls for NVPTX passes 2016-04-26 23:44:31 +00:00
NVPTXFrameLowering.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
NVPTXFrameLowering.h Change eliminateCallFramePseudoInstr() to return an iterator 2016-03-31 18:33:38 +00:00
NVPTXGenericToNVVM.cpp IR: Introduce ConstantAggregate, NFC 2016-04-05 21:10:45 +00:00
NVPTXISelDAGToDAG.cpp [NVPTX] Handle ldg created from sign-/zero-extended load 2016-04-05 12:38:01 +00:00
NVPTXISelDAGToDAG.h Don't put classes in headers into anonymous namespaces. 2016-01-27 19:29:42 +00:00
NVPTXISelLowering.cpp [CodeGen] Add getBuildVector and getSplatBuildVector helpers. NFCI. 2016-04-26 21:15:30 +00:00
NVPTXISelLowering.h [NVPTX] Use different, convergent MIs for convergent calls. 2016-03-01 19:24:03 +00:00
NVPTXImageOptimizer.cpp Add optimization bisect opt-in calls for NVPTX passes 2016-04-26 23:44:31 +00:00
NVPTXInferAddressSpaces.cpp Add optimization bisect opt-in calls for NVPTX passes 2016-04-26 23:44:31 +00:00
NVPTXInstrFormats.td
NVPTXInstrInfo.cpp CodeGen: TII: Take MachineInstr& in predicate API, NFC 2016-02-23 02:46:52 +00:00
NVPTXInstrInfo.h [NVPTX] Remove dead code. 2015-10-15 14:45:41 +00:00
NVPTXInstrInfo.td [NVPTX] Set ctlz_zero_undef to Expand so LegalizeDAG will convert it to ctlz. Remove the now unneccessary isel patterns. NFC 2016-04-23 02:49:29 +00:00
NVPTXIntrinsics.td [NVPTX] Annotate some instructions as hasSideEffects = 0. 2016-04-01 01:09:05 +00:00
NVPTXLowerAggrCopies.cpp NVPTX: Remove implicit ilist iterator conversions, NFC 2015-10-20 00:54:09 +00:00
NVPTXLowerAggrCopies.h
NVPTXLowerAlloca.cpp Add optimization bisect opt-in calls for NVPTX passes 2016-04-26 23:44:31 +00:00
NVPTXLowerKernelArgs.cpp Put space after pointer type in test. NFC. 2016-01-23 05:47:34 +00:00
NVPTXMCExpr.cpp MC: Add target hook to control symbol quoting 2015-06-09 00:31:39 +00:00
NVPTXMCExpr.h Fix pr24486. 2015-10-05 12:07:05 +00:00
NVPTXMachineFunctionInfo.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
NVPTXPeephole.cpp Add optimization bisect opt-in calls for NVPTX passes 2016-04-26 23:44:31 +00:00
NVPTXPrologEpilogPass.cpp MachineBasicBlock: Factor out common code into isReturnBlock() 2015-09-25 21:25:19 +00:00
NVPTXRegisterInfo.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
NVPTXRegisterInfo.h
NVPTXRegisterInfo.td Add NVPTXPeephole pass to reduce unnecessary address cast 2015-06-24 20:20:16 +00:00
NVPTXReplaceImageHandles.cpp Cosmetic cleanups - NFC 2015-07-08 16:33:21 +00:00
NVPTXSection.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
NVPTXSubtarget.cpp Revert r247692: Replace Triple with a new TargetTuple in MCTargetDesc/* and related. NFC. 2015-09-15 16:17:27 +00:00
NVPTXSubtarget.h Rename TargetSelectionDAGInfo into SelectionDAGTargetInfo and move it to CodeGen/ 2016-01-27 16:32:26 +00:00
NVPTXTargetMachine.cpp [NVPTX] Run NVVMReflect at the beginning of IR passes. 2016-04-27 19:13:37 +00:00
NVPTXTargetMachine.h [NVPTX] Run NVVMReflect at the beginning of IR passes. 2016-04-27 19:13:37 +00:00
NVPTXTargetObjectFile.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
NVPTXTargetTransformInfo.cpp [TTI] Make the cost APIs in TargetTransformInfo consistently use 'int' 2015-08-05 18:08:10 +00:00
NVPTXTargetTransformInfo.h [NVPTX] Set NVPTXTTI::getInliningThresholdMultiplier to 5. 2016-04-15 01:38:50 +00:00
NVPTXUtilities.cpp NVPTX: Remove implicit ilist iterator conversions, NFC 2015-10-20 00:54:09 +00:00
NVPTXUtilities.h [NVPTX] Remove dead code. 2015-10-15 14:45:41 +00:00
NVPTXVector.td Start replacing vector_extract/vector_insert with extractelt/insertelt 2015-12-11 19:20:16 +00:00
NVVMReflect.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
cl_common_defines.h