1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00
llvm-mirror/lib/CodeGen/SelectionDAG
Alex Richardson cd979516f8 [NFC] Change SelectionDAG::getMemBasePlusOffset() to use int64_t
Summary:
This change is preparatory work to use this helper functions in more places.
Currently the function only allows positive offsets, but there are cases
where we want to subtract an offset from an existing pointer.

The motivation for this change is our out-of-tree CHERI backend
(https://github.com/CTSRD-CHERI/llvm-project). We use a separate register
type to store pointers (128-bit capabilities, which are effectively
unforgeable and monotonic fat pointers). These capabilities permit a
reduced set of operations and therefore use a separate ValueType (iFATPTR).
to represent pointers implemented as capabilities.
Therefore, we need to avoid using ISD::ADD for our patterns that operate
on pointers and need to use a function that chooses ISD::ADD or a new
ISD::PTRADD opcode depending on the value type.

We originally added a new DAG.getPointerAdd() function, but after this
patch series we can modify the implementation of getMemBasePlusOffset()
instead. Avoiding direct uses of ISD::ADD for pointer types will
significantly reduce the amount of assertion/instruction selection
failures for us in future upstream merges.

Reviewers: spatel

Reviewed By: spatel

Subscribers: merge_guards_bot, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71204
2019-12-13 21:40:03 +00:00
..
CMakeLists.txt [cmake] Explicitly mark libraries defined in lib/ as "Component Libraries" 2019-11-21 10:48:08 -08:00
DAGCombiner.cpp [DAGCombiner] fold shift-trunc-shift to shift-mask-trunc (2nd try) 2019-12-13 14:03:54 -05:00
FastISel.cpp Add support for lowering 32-bit/64-bit pointers 2019-12-04 11:39:03 -08:00
FunctionLoweringInfo.cpp [AArch64][SVE] Allocate locals that are scalable vectors. 2019-11-13 09:45:24 +00:00
InstrEmitter.cpp [DebugInfo] Remove some users of DBG_VALUEs IsIndirect field 2019-10-15 10:46:24 +00:00
InstrEmitter.h [SelectionDAG] Enhance the simplification of copyto from implicit-def. 2019-05-27 18:26:29 +00:00
LegalizeDAG.cpp [NFC] Use EVT instead of bool for getSetCCInverse() 2019-12-13 12:22:03 +00:00
LegalizeFloatTypes.cpp [LegalizeTypes] Remove unnecessary if before calling ReplaceValueWith on the chain in SoftenFloatRes_LOAD. 2019-12-13 00:14:41 -08:00
LegalizeIntegerTypes.cpp [LegalizeTypes] Bugfixes for big-endian targets when handling BITCASTs 2019-12-10 11:22:35 +01:00
LegalizeTypes.cpp [LegalizeTypes] Remove manual worklist management from SoftenFloatRes_FP_EXTEND. 2019-12-10 22:33:31 -08:00
LegalizeTypes.h [LegalizeTypes] Remove manual worklist management from SoftenFloatRes_FP_EXTEND. 2019-12-10 22:33:31 -08:00
LegalizeTypesGeneric.cpp [SelectionDAG] Enable lowering unordered atomics loads w/LoadSDNode (and stores w/StoreSDNode) by default 2019-10-29 12:46:24 -07:00
LegalizeVectorOps.cpp [FPEnv] Constrained FCmp intrinsics 2019-12-07 11:28:39 +01:00
LegalizeVectorTypes.cpp [LegalizeTypes] Bugfixes for big-endian targets when handling BITCASTs 2019-12-10 11:22:35 +01:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ResourcePriorityQueue.cpp Implementation of asm-goto support in LLVM 2019-02-08 20:48:56 +00:00
ScheduleDAGFast.cpp Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 2019-08-01 23:27:28 +00:00
ScheduleDAGRRList.cpp [ScheduleDAG] When a node is cloned, add an edge between the nodes. 2019-10-04 19:51:40 +00:00
ScheduleDAGSDNodes.cpp Recommit "Add a heap alloc site marker field to the ExtraInfo in MachineInstrs" 2019-10-28 16:59:32 -07:00
ScheduleDAGSDNodes.h Prune Analysis includes from SelectionDAG.h 2019-10-19 01:07:48 +00:00
ScheduleDAGVLIW.cpp Prune Analysis includes from SelectionDAG.h 2019-10-19 01:07:48 +00:00
SDNodeDbgValue.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SelectionDAG.cpp [NFC] Change SelectionDAG::getMemBasePlusOffset() to use int64_t 2019-12-13 21:40:03 +00:00
SelectionDAGAddressAnalysis.cpp Prune a LegacyDivergenceAnalysis and MachineLoopInfo include each 2019-10-19 01:31:09 +00:00
SelectionDAGBuilder.cpp [DebugInfo] Prevent invalid fragments at ISel from dropping debug info 2019-12-12 12:28:39 +00:00
SelectionDAGBuilder.h [IR] Redefine Freeze instruction 2019-11-12 10:49:00 +09:00
SelectionDAGDumper.cpp [FPEnv] Constrained FCmp intrinsics 2019-12-07 11:28:39 +01:00
SelectionDAGISel.cpp [IR] Split out target specific intrinsic enums into separate headers 2019-12-11 18:02:14 -08:00
SelectionDAGPrinter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SelectionDAGTargetInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
StatepointLowering.cpp [SVE][CodeGen] Scalable vector MVT size queries 2019-11-18 12:30:59 +00:00
StatepointLowering.h [FastISel] Fix crash for gc.relocate lowring 2019-04-05 05:41:08 +00:00
TargetLowering.cpp [NFC] Use EVT instead of bool for getSetCCInverse() 2019-12-13 12:22:03 +00:00