teak-llvm/llvm/lib/Target/Lanai
Jay Foad e0f0d0e55c [MachineScheduler] Allow clustering mem ops with complex addresses
The generic BaseMemOpClusterMutation calls into TargetInstrInfo to
analyze the address of each load/store instruction, and again to decide
whether two instructions should be clustered. Previously this had to
represent each address as a single base operand plus a constant byte
offset. This patch extends it to support any number of base operands.

The old target hook getMemOperandWithOffset is now a convenience
function for callers that are only prepared to handle a single base
operand. It calls the new more general target hook
getMemOperandsWithOffset.

The only requirements for the base operands returned by
getMemOperandsWithOffset are:
- they can be sorted by MemOpInfo::Compare, such that clusterable ops
  get sorted next to each other, and
- shouldClusterMemOps knows what they mean.

One simple follow-on is to enable clustering of AMDGPU FLAT instructions
with both vaddr and saddr (base register + offset register). I've left
a FIXME in the code for this case.

Differential Revision: https://reviews.llvm.org/D71655
2020-01-22 14:28:24 +00:00
..
AsmParser CMake: Make most target symbols hidden by default 2020-01-14 19:46:52 -08:00
Disassembler CMake: Make most target symbols hidden by default 2020-01-14 19:46:52 -08:00
MCTargetDesc CMake: Make most target symbols hidden by default 2020-01-14 19:46:52 -08:00
TargetInfo CMake: Make most target symbols hidden by default 2020-01-14 19:46:52 -08:00
CMakeLists.txt [Lanai] Move InstPrinter files to MCTargetDesc. NFC 2019-05-11 01:25:58 +00:00
Lanai.h Include what you use in Lanai.h 2019-06-03 17:02:15 +00:00
Lanai.td
LanaiAluCode.h
LanaiAsmPrinter.cpp Update spelling of {analyze,insert,remove}Branch in strings and comments 2020-01-21 10:15:38 -06:00
LanaiCallingConv.td
LanaiCondCode.h
LanaiDelaySlotFiller.cpp [NFC] Test commit, fix some comment spelling. 2019-08-20 05:21:27 +00:00
LanaiFrameLowering.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
LanaiFrameLowering.h [Alignment][NFC] Use Align for TargetFrameLowering/Subtarget 2019-10-17 07:49:39 +00:00
LanaiInstrFormats.td
LanaiInstrInfo.cpp [MachineScheduler] Allow clustering mem ops with complex addresses 2020-01-22 14:28:24 +00:00
LanaiInstrInfo.h [MachineScheduler] Allow clustering mem ops with complex addresses 2020-01-22 14:28:24 +00:00
LanaiInstrInfo.td
LanaiISelDAGToDAG.cpp Include what you use in LanaiISelDAGToDAG.cpp 2019-06-03 17:01:57 +00:00
LanaiISelLowering.cpp CodeGen: Use LLT instead of EVT in getRegisterByName 2020-01-09 17:37:52 -05:00
LanaiISelLowering.h CodeGen: Use LLT instead of EVT in getRegisterByName 2020-01-09 17:37:52 -05:00
LanaiMachineFunctionInfo.cpp
LanaiMachineFunctionInfo.h
LanaiMCInstLower.cpp
LanaiMCInstLower.h
LanaiMemAluCombiner.cpp Include what you use in LanaiMemAluCombiner.cpp 2019-06-03 17:02:02 +00:00
LanaiRegisterInfo.cpp [TargetRegisterInfo] Default trackLivenessAfterRegAlloc() to true 2020-01-19 14:20:37 -08:00
LanaiRegisterInfo.h [TargetRegisterInfo] Default trackLivenessAfterRegAlloc() to true 2020-01-19 14:20:37 -08:00
LanaiRegisterInfo.td
LanaiSchedule.td
LanaiSelectionDAGInfo.cpp
LanaiSelectionDAGInfo.h
LanaiSubtarget.cpp
LanaiSubtarget.h
LanaiTargetMachine.cpp CMake: Make most target symbols hidden by default 2020-01-14 19:46:52 -08:00
LanaiTargetMachine.h
LanaiTargetObjectFile.cpp Revert "Honor -fuse-init-array when os is not specified on x86" 2019-12-17 07:36:59 -08:00
LanaiTargetObjectFile.h
LanaiTargetTransformInfo.h Rename TTI::getIntImmCost for instructions and intrinsics 2019-12-11 18:00:20 -08:00
LLVMBuild.txt [Lanai] Move InstPrinter files to MCTargetDesc. NFC 2019-05-11 01:25:58 +00:00