llvm-project/llvm/lib/Target/NVPTX
Tomas Matheson a9968c0a33 [NFC][CodeGen] Tidy up TargetRegisterInfo stack realignment functions
Currently needsStackRealignment returns false if canRealignStack returns false.
This means that the behavior of needsStackRealignment does not correspond to
it's name and description; a function might need stack realignment, but if it
is not possible then this function returns false. Furthermore,
needsStackRealignment is not virtual and therefore some backends have made use
of canRealignStack to indicate whether a function needs stack realignment.

This patch attempts to clarify the situation by separating them and introducing
new names:

 - shouldRealignStack - true if there is any reason the stack should be
   realigned

 - canRealignStack - true if we are still able to realign the stack (e.g. we
   can still reserve/have reserved a frame pointer)

 - hasStackRealignment = shouldRealignStack && canRealignStack (not target
   customisable)

Targets can now override shouldRealignStack to indicate that stack realignment
is required.

This change will make it easier in a future change to handle the case where we
need to realign the stack but can't do so (for example when the register
allocator creates an aligned spill after the frame pointer has been
eliminated).

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

Change-Id: Ib9a4d21728bf9d08a545b4365418d3ffe1af4d87
2021-03-30 17:31:39 +01:00
..
MCTargetDesc [AsmWriter] Factor out mnemonic generation to accessible getMnemonic. 2020-11-17 09:47:38 +00:00
TargetInfo llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
CMakeLists.txt llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
ManagedStringPool.h
NVPTX.h [NewPM][NVPTX] Port NVPTX opt passes 2021-01-07 15:12:35 -08:00
NVPTX.td [CUDA, NVPTX] Allow targeting sm_86 GPUs. 2021-02-09 11:01:10 -08:00
NVPTXAllocaHoisting.cpp
NVPTXAllocaHoisting.h
NVPTXAsmPrinter.cpp Do not construct std::string from nullptr 2020-11-05 15:23:26 -08:00
NVPTXAsmPrinter.h
NVPTXAssignValidGlobalNames.cpp
NVPTXFrameLowering.cpp [SVE] Return StackOffset for TargetFrameLowering::getFrameIndexReference. 2020-11-05 11:02:18 +00:00
NVPTXFrameLowering.h [SVE] Return StackOffset for TargetFrameLowering::getFrameIndexReference. 2020-11-05 11:02:18 +00:00
NVPTXGenericToNVVM.cpp
NVPTXISelDAGToDAG.cpp [llvm] Use the default value of drop_begin (NFC) 2021-01-18 10:16:36 -08:00
NVPTXISelDAGToDAG.h
NVPTXISelLowering.cpp [llvm][nvptx] add atomicity to counter in ISelLowering 2021-01-19 10:20:20 +01:00
NVPTXISelLowering.h [llvm][nvptx] add atomicity to counter in ISelLowering 2021-01-19 10:20:20 +01:00
NVPTXImageOptimizer.cpp
NVPTXInstrFormats.td [NVPTX] [TableGen] Use new features of TableGen to simplify and clarify. 2020-11-06 09:20:19 -05:00
NVPTXInstrInfo.cpp
NVPTXInstrInfo.h
NVPTXInstrInfo.td [NVPTX] [TableGen] Use new features of TableGen to simplify and clarify. 2020-11-06 09:20:19 -05:00
NVPTXIntrinsics.td [TableGen] Continue cleaning up .td files 2021-01-01 10:21:02 -05:00
NVPTXLowerAggrCopies.cpp
NVPTXLowerAggrCopies.h
NVPTXLowerAlloca.cpp
NVPTXLowerArgs.cpp [NVPTX] Fix warning, remove extra ";" [NFC] 2021-03-19 09:26:14 +01:00
NVPTXMCExpr.cpp
NVPTXMCExpr.h
NVPTXMachineFunctionInfo.h
NVPTXPeephole.cpp
NVPTXPrologEpilogPass.cpp [NFC][CodeGen] Tidy up TargetRegisterInfo stack realignment functions 2021-03-30 17:31:39 +01:00
NVPTXProxyRegErasure.cpp
NVPTXRegisterInfo.cpp
NVPTXRegisterInfo.h
NVPTXRegisterInfo.td [NVPTX] [TableGen] Use new features of TableGen to simplify and clarify. 2020-11-06 09:20:19 -05:00
NVPTXReplaceImageHandles.cpp
NVPTXSubtarget.cpp
NVPTXSubtarget.h
NVPTXTargetMachine.cpp [NVPTX][NewPM] Re-enable NVVMReflectPass 2021-02-08 13:58:17 -08:00
NVPTXTargetMachine.h [NewPM][NVPTX] Port NVPTX opt passes 2021-01-07 15:12:35 -08:00
NVPTXTargetObjectFile.h
NVPTXTargetTransformInfo.cpp
NVPTXTargetTransformInfo.h [TTI] Return a TypeSize from getRegisterBitWidth. 2021-03-24 14:45:13 +00:00
NVPTXUtilities.cpp
NVPTXUtilities.h
NVVMIntrRange.cpp [NewPM][NVPTX] Port NVPTX opt passes 2021-01-07 15:12:35 -08:00
NVVMReflect.cpp [NewPM][NVPTX] Port NVPTX opt passes 2021-01-07 15:12:35 -08:00
cl_common_defines.h