llvm-project/llvm/lib/Target/Hexagon
David Greene 2e6f6b4dad [System Model] [TTI] Update cache and prefetch TTI interfaces
Re-apply 9fdfb045ae8b/r365676 with fixes for PPC and Hexagon.  This involved
moving defaults from TargetTransformInfoImplBase to MCSubtargetInfo.

Rework the TTI cache and software prefetching APIs to prepare for the
introduction of a general system model.  Changes include:

- Marking existing interfaces const and/or override as appropriate
- Adding comments
- Adding BasicTTIImpl interfaces that delegate to a subtarget
  implementation
- Moving the default TargetTransformInfoImplBase implementation to a default
  MCSubtarget implementation

Only a handful of targets use these interfaces currently: AArch64, Hexagon, PPC
and SystemZ.  AArch64 already has a custom subtarget implementation, so its
custom TTI implementation is migrated to use the new facilities in BasicTTIImpl
to invoke its custom subtarget implementation.  The custom TTI implementations
continue to exist for the other targets with this change.  They are not moved
over to subtarget-based implementations.

The end goal is to have the default subtarget implementation defer to the system
model defined by the target.  With this change, the default MCSubtargetInfo
implementation essentially returns the defaults TargetTransformInfoImplBase used
to return.  Existing users of TTI defaults will hit the defaults now in
MCSubtargetInfo.  Targets that define their own custom TTI implementations won't
use the BasicTTIImpl implementations that route to the subtarget.

Once system models are in place for the targets that use these interfaces, their
custom TTI implementations can be removed.

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

llvm-svn: 374205
2019-10-09 19:51:48 +00:00
..
AsmParser HexagonAsmParser::ParseDirectiveFalign - silence static analyzer dyn_cast<MCConstantExpr> null dereference warning. NFCI. 2019-09-26 10:35:19 +00:00
Disassembler Revert CMake: Make most target symbols hidden by default 2019-06-11 03:21:13 +00:00
MCTargetDesc [Alignment][NFC] Remove unneeded llvm:: scoping on Align types 2019-09-27 12:54:21 +00:00
TargetInfo Revert CMake: Make most target symbols hidden by default 2019-06-11 03:21:13 +00:00
BitTracker.cpp Use MCRegister in MCRegisterInfo's interfaces 2019-08-02 20:23:00 +00:00
BitTracker.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CMakeLists.txt [Hexagon] Remove support for V4 2018-10-19 17:31:11 +00:00
Hexagon.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Hexagon.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonAsmPrinter.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonAsmPrinter.h Include what you use in HexagonAsmPrinter.h 2019-06-03 11:41:18 +00:00
HexagonBitSimplify.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonBitTracker.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonBitTracker.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonBlockRanges.cpp Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 2019-08-01 23:27:28 +00:00
HexagonBlockRanges.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonBranchRelaxation.cpp [Alignment][NFC] Remove unneeded llvm:: scoping on Align types 2019-09-27 12:54:21 +00:00
HexagonCFGOptimizer.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonCallingConv.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonCommonGEP.cpp [Hexagon] Remove indeterministic traversal order 2019-04-16 16:05:07 +00:00
HexagonConstExtenders.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonConstPropagation.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonCopyToCombine.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonDepArch.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepArch.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepDecoders.inc [Hexagon] Rename textually included file from .h to .inc 2019-01-31 21:58:42 +00:00
HexagonDepIICHVX.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepIICScalar.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepITypes.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepITypes.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepInstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepInstrInfo.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepMapAsm2Intrin.td Reapply r372285 "GlobalISel: Don't materialize immarg arguments to intrinsics" 2019-09-19 16:26:14 +00:00
HexagonDepMappings.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonDepOperands.td Reapply r372285 "GlobalISel: Don't materialize immarg arguments to intrinsics" 2019-09-19 16:26:14 +00:00
HexagonDepTimingClasses.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonEarlyIfConv.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonExpandCondsets.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonFixupHwLoops.cpp [Alignment][NFC] Remove unneeded llvm:: scoping on Align types 2019-09-27 12:54:21 +00:00
HexagonFrameLowering.cpp [Alignment][NFC] Remove unneeded llvm:: scoping on Align types 2019-09-27 12:54:21 +00:00
HexagonFrameLowering.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonGenExtract.cpp [Hexagon] Improve generated code for test-if-bit-clear 2019-08-26 19:08:08 +00:00
HexagonGenInsert.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonGenMux.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonGenPredicate.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonHardwareLoops.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonHazardRecognizer.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonHazardRecognizer.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonIICHVX.td [Hexagon] Avoid creating 5-instruction packets with vgather pseudos 2019-03-06 17:43:50 +00:00
HexagonIICScalar.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonISelDAGToDAG.cpp [Hexagon] Don't dereference dyn_cast<ConstantFPSDNode> result. NFCI. 2019-09-22 12:38:21 +00:00
HexagonISelDAGToDAG.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonISelDAGToDAGHVX.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonISelLowering.cpp TLI: Remove DAG argument from getRegisterByName 2019-10-01 01:44:39 +00:00
HexagonISelLowering.h TLI: Remove DAG argument from getRegisterByName 2019-10-01 01:44:39 +00:00
HexagonISelLoweringHVX.cpp [Hexagon] Generate vector min/max for HVX 2019-08-15 16:13:17 +00:00
HexagonInstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonInstrFormatsV5.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonInstrFormatsV60.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonInstrFormatsV65.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonInstrInfo.cpp Remove the AliasAnalysis argument in function areMemAccessesTriviallyDisjoint 2019-09-26 22:53:44 +00:00
HexagonInstrInfo.h Remove the AliasAnalysis argument in function areMemAccessesTriviallyDisjoint 2019-09-26 22:53:44 +00:00
HexagonIntrinsics.td Reapply r372285 "GlobalISel: Don't materialize immarg arguments to intrinsics" 2019-09-19 16:26:14 +00:00
HexagonIntrinsicsV5.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonIntrinsicsV60.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonLoopIdiomRecognition.cpp HexagonLoopIdiomRecognition - silence static analyzer dyn_cast<> null dereference warnings. NFCI. 2019-09-23 15:36:24 +00:00
HexagonMCInstLower.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonMachineFunctionInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonMachineFunctionInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonMachineScheduler.cpp Implementation of asm-goto support in LLVM 2019-02-08 20:48:56 +00:00
HexagonMachineScheduler.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonMapAsm2IntrinV62.gen.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonMapAsm2IntrinV65.gen.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonNewValueJump.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonOperands.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonOptAddrMode.cpp Fix uninitialized variable warning. NFCI. 2019-09-23 21:32:38 +00:00
HexagonOptimizeSZextends.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonPatterns.td [Hexagon] Bitcast v4i16 to v8i8, unify no-op casts between scalar and HVX 2019-09-23 14:33:27 +00:00
HexagonPatternsHVX.td [Hexagon] Bitcast v4i16 to v8i8, unify no-op casts between scalar and HVX 2019-09-23 14:33:27 +00:00
HexagonPatternsV65.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonPeephole.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonPseudo.td [Hexagon] Use misaligned load instead of trap0(#0) for __builtin_trap 2019-02-21 19:42:39 +00:00
HexagonRDFOpt.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonRegisterInfo.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonRegisterInfo.h CodeGen: Introduce a class for registers 2019-06-24 15:50:29 +00:00
HexagonRegisterInfo.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonSchedule.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonScheduleV5.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonScheduleV55.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonScheduleV60.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonScheduleV62.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonScheduleV65.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonScheduleV66.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonSelectionDAGInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonSelectionDAGInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonSplitConst32AndConst64.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonSplitDouble.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonStoreWidening.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonSubtarget.cpp Use a bit of relaxed constexpr to make FeatureBitset costant intializable 2019-08-24 15:02:44 +00:00
HexagonSubtarget.h [SVE][MVT] Fixed-length vector MVT ranges 2019-09-17 10:19:23 +00:00
HexagonTargetMachine.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
HexagonTargetMachine.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonTargetObjectFile.cpp OpaquePtr: switch to GlobalValue::getValueType in a few places. NFC. 2019-07-11 13:13:02 +00:00
HexagonTargetObjectFile.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonTargetStreamer.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonTargetTransformInfo.cpp [SVE][MVT] Fixed-length vector MVT ranges 2019-09-17 10:19:23 +00:00
HexagonTargetTransformInfo.h [System Model] [TTI] Update cache and prefetch TTI interfaces 2019-10-09 19:51:48 +00:00
HexagonVExtract.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
HexagonVLIWPacketizer.cpp [DFAPacketizer] Reapply: Track resources for packetized instructions 2019-09-09 13:17:55 +00:00
HexagonVLIWPacketizer.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HexagonVectorLoopCarriedReuse.cpp [Hexagon] Rework VLCR algorithm 2019-07-01 13:50:47 +00:00
HexagonVectorPrint.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RDFCopy.cpp Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 2019-08-01 23:27:28 +00:00
RDFCopy.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RDFDeadCode.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RDFDeadCode.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RDFGraph.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
RDFGraph.h Hexagon RDF: Replace function template (plus explicit specializations) with non-template overloads 2019-03-11 23:10:33 +00:00
RDFLiveness.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
RDFLiveness.h Hexagon RDF: Replace function template (plus explicit specializations) with non-template overloads 2019-03-11 23:10:33 +00:00
RDFRegisters.cpp Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 2019-08-01 23:27:28 +00:00
RDFRegisters.h Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 2019-08-01 23:27:28 +00:00