llvm-project/llvm/lib/Target/NVPTX
Artem Belevich d7ebcfb291 [NVPTX] Improve lowering of byval args of device functions.
Avoid unnecessary spills of such vars to local space on SASS level and
pointer space conversion.

Instead, make a local copy with appropriate addrspacecasts and let
LLVM optimize them away when possible.

This allows loading value of the argument using [symbol+offset]
instead of converting argument to general space pointer and using it
for indexing (which also implicitly converts param space pointer to
local space one on SASS level and triggers copying of argument into
local space in the process).

This reduces call overhead, uses less registers and reduces overall
SASS size by 2-4%.

Differential Review: http://reviews.llvm.org/D21421

llvm-svn: 273313
2016-06-21 20:30:26 +00:00
..
InstPrinter Remove autoconf support 2016-01-26 21:29:08 +00:00
MCTargetDesc Delete Reloc::Default. 2016-05-18 22:04:49 +00:00
TargetInfo Remove autoconf support 2016-01-26 21:29:08 +00:00
CMakeLists.txt [NVPTX] Added NVVMIntrRange pass 2016-05-26 17:02:56 +00:00
LLVMBuild.txt
ManagedStringPool.h
NVPTX.h [NVPTX] Added NVVMIntrRange pass 2016-05-26 17:02:56 +00:00
NVPTX.td
NVPTXAllocaHoisting.cpp
NVPTXAllocaHoisting.h
NVPTXAsmPrinter.cpp Apply most suggestions of clang-tidy's performance-unnecessary-value-param 2016-06-08 19:09:22 +00:00
NVPTXAsmPrinter.h Apply most suggestions of clang-tidy's performance-unnecessary-value-param 2016-06-08 19:09:22 +00:00
NVPTXAssignValidGlobalNames.cpp
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] Improve lowering of byval args of device functions. 2016-06-21 20:30:26 +00:00
NVPTXISelDAGToDAG.h Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
NVPTXISelLowering.cpp [NVPTX] Improve lowering of byval args of device functions. 2016-06-21 20:30:26 +00:00
NVPTXISelLowering.h Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +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 Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
NVPTXInstrInfo.h Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
NVPTXInstrInfo.td [NVPTX] Fix sign/zero-extending ldg/ldu instruction selection 2016-05-02 18:12:02 +00:00
NVPTXIntrinsics.td [NVPTX] Add intrinsics for shfl instructions. 2016-06-09 20:04:08 +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 [NVPTX] Improve lowering of byval args of device functions. 2016-06-21 20:30:26 +00:00
NVPTXMCExpr.cpp Apply most suggestions of clang-tidy's performance-unnecessary-value-param 2016-06-08 19:09:22 +00:00
NVPTXMCExpr.h Apply most suggestions of clang-tidy's performance-unnecessary-value-param 2016-06-08 19:09:22 +00:00
NVPTXMachineFunctionInfo.h
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
NVPTXRegisterInfo.h
NVPTXRegisterInfo.td
NVPTXReplaceImageHandles.cpp
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] Added NVVMIntrRange pass 2016-05-26 17:02:56 +00:00
NVPTXTargetMachine.h Delete Reloc::Default. 2016-05-18 22:04:49 +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 Apply most suggestions of clang-tidy's performance-unnecessary-value-param 2016-06-08 19:09:22 +00:00
NVPTXUtilities.h Apply most suggestions of clang-tidy's performance-unnecessary-value-param 2016-06-08 19:09:22 +00:00
NVPTXVector.td Start replacing vector_extract/vector_insert with extractelt/insertelt 2015-12-11 19:20:16 +00:00
NVVMIntrRange.cpp Init member structs in constructor. 2016-05-26 17:29:20 +00:00
NVVMReflect.cpp [NVPTX] Don't (incorrectly) say that the NVVMReflect pass preserves all analyses. 2016-05-25 23:12:38 +00:00
cl_common_defines.h