llvm-project/llvm/lib/Target/XCore
Jonas Paulsson 024e319489 [SystemZ, LoopStrengthReduce]
This patch makes LSR generate better code for SystemZ in the cases of memory
intrinsics, Load->Store pairs or comparison of immediate with memory.

In order to achieve this, the following common code changes were made:

 * New TTI hook: LSRWithInstrQueries(), which defaults to false. Controls if
 LSR should do instruction-based addressing evaluations by calling
 isLegalAddressingMode() with the Instruction pointers.
 * In LoopStrengthReduce: handle address operands of memset, memmove and memcpy
 as address uses, and call isFoldableMemAccessOffset() for any LSRUse::Address,
 not just loads or stores.

SystemZ changes:

 * isLSRCostLess() implemented with Insns first, and without ImmCost.
 * New function supportedAddressingMode() that is a helper for TTI methods
 looking at Instructions passed via pointers.

Review: Ulrich Weigand, Quentin Colombet
https://reviews.llvm.org/D35262
https://reviews.llvm.org/D35049

llvm-svn: 308729
2017-07-21 11:59:37 +00:00
..
Disassembler Fix "static initialization order fiasco" for the XCore Target. 2016-10-11 18:22:41 +00:00
InstPrinter [XCore] Fix some Include What You Use warnings; other minor fixes (NFC). 2017-02-03 21:46:55 +00:00
MCTargetDesc Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
TargetInfo Fix "static initialization order fiasco" for the XCore Target. 2016-10-11 18:22:41 +00:00
CMakeLists.txt
LLVMBuild.txt
README.txt
XCore.h
XCore.td
XCoreAsmPrinter.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
XCoreCallingConv.td
XCoreFrameLowering.cpp Move size and alignment information of regclass to TargetRegisterInfo 2017-04-24 18:55:33 +00:00
XCoreFrameLowering.h
XCoreFrameToArgsOffsetElim.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
XCoreISelDAGToDAG.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
XCoreISelLowering.cpp [SystemZ, LoopStrengthReduce] 2017-07-21 11:59:37 +00:00
XCoreISelLowering.h [SystemZ, LoopStrengthReduce] 2017-07-21 11:59:37 +00:00
XCoreInstrFormats.td
XCoreInstrInfo.cpp Finish renaming remaining analyzeBranch functions 2016-09-14 20:43:16 +00:00
XCoreInstrInfo.h Finish renaming remaining analyzeBranch functions 2016-09-14 20:43:16 +00:00
XCoreInstrInfo.td Add extra operand to CALLSEQ_START to keep frame part set up previously 2017-05-09 13:35:13 +00:00
XCoreLowerThreadLocal.cpp Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
XCoreMCInstLower.cpp Actually remove the Mangler from the AsmPrinter and clean up the places it was "used" but not used. 2016-09-16 17:07:23 +00:00
XCoreMCInstLower.h Actually remove the Mangler from the AsmPrinter and clean up the places it was "used" but not used. 2016-09-16 17:07:23 +00:00
XCoreMachineFunctionInfo.cpp Move size and alignment information of regclass to TargetRegisterInfo 2017-04-24 18:55:33 +00:00
XCoreMachineFunctionInfo.h [XCore] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-24 23:02:48 +00:00
XCoreRegisterInfo.cpp
XCoreRegisterInfo.h
XCoreRegisterInfo.td
XCoreSelectionDAGInfo.cpp Make library calls sensitive to regparm module flag (Fixes PR3997). 2017-03-18 00:44:07 +00:00
XCoreSelectionDAGInfo.h
XCoreSubtarget.cpp
XCoreSubtarget.h
XCoreTargetMachine.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
XCoreTargetMachine.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
XCoreTargetObjectFile.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
XCoreTargetObjectFile.h Target: Change various section classifiers in TargetLoweringObjectFile to take a GlobalObject. 2016-10-24 19:23:39 +00:00
XCoreTargetStreamer.h
XCoreTargetTransformInfo.h Do a sweep over move ctors and remove those that are identical to the default. 2016-10-20 12:20:28 +00:00

README.txt

To-do
-----

* Instruction encodings
* Tailcalls
* Investigate loop alignment
* Add builtins