llvm-project/llvm/lib/CodeGen/SelectionDAG
Jatin Bhateja 3c29bacd43 [X86] Improvement in CodeGen instruction selection for LEAs (re-applying post required revision changes.)
Summary:
   1/  Operand folding during complex pattern matching for LEAs has been
       extended, such that it promotes Scale to accommodate similar operand
       appearing in the DAG.
       e.g.
         T1 = A + B
         T2 = T1 + 10
         T3 = T2 + A
       For above DAG rooted at T3, X86AddressMode will no look like
         Base = B , Index = A , Scale = 2 , Disp = 10

   2/  During OptimizeLEAPass down the pipeline factorization is now performed over LEAs
       so that if there is an opportunity then complex LEAs (having 3 operands)
       could be factored out.
       e.g.
         leal 1(%rax,%rcx,1), %rdx
         leal 1(%rax,%rcx,2), %rcx
       will be factored as following
         leal 1(%rax,%rcx,1), %rdx
         leal (%rdx,%rcx)   , %edx

   3/ Aggressive operand folding for AM based selection for LEAs is sensitive to loops,
      thus avoiding creation of any complex LEAs within a loop.

Reviewers: lsaba, RKSimon, craig.topper, qcolombet, jmolloy

Reviewed By: lsaba

Subscribers: jmolloy, spatel, igorb, llvm-commits

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

llvm-svn: 314886
2017-10-04 09:02:10 +00:00
..
CMakeLists.txt Remove trailing whitespace to trigger re-cmaking 2017-10-02 21:54:38 +00:00
DAGCombiner.cpp Eliminate ftrunc if source is know to be rounded 2017-10-02 16:57:07 +00:00
FastISel.cpp Use helper function instead of manually constructing DBG_VALUEs (NFC) 2017-08-01 22:37:35 +00:00
FunctionLoweringInfo.cpp ISel: Fix FastISel of swifterror values 2017-06-15 17:34:42 +00:00
InstrEmitter.cpp Add llvm.codeview.annotation to implement MSVC __annotation 2017-09-05 20:14:58 +00:00
InstrEmitter.h Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
LLVMBuild.txt
LegalizeDAG.cpp ISel type legalization: add debug messages. NFCI. 2017-10-03 08:54:15 +00:00
LegalizeFloatTypes.cpp [legalize-types] Clean up softening machinery. 2017-07-04 01:08:55 +00:00
LegalizeIntegerTypes.cpp Reland "[mips] Fix multiprecision arithmetic." 2017-07-13 11:28:05 +00:00
LegalizeTypes.cpp [DebugInfo] Handle endianness when moving debug info for split integer values (reapplied) 2017-10-03 11:03:02 +00:00
LegalizeTypes.h [SelectionDAG] Teach the vector-types operand scalarizer about SETCC 2017-08-17 08:06:36 +00:00
LegalizeTypesGeneric.cpp [legalize-types] Clean up softening machinery. 2017-07-04 01:08:55 +00:00
LegalizeVectorOps.cpp [CodeGen] Fix some Clang-tidy modernize-use-bool-literals and Include What You Use warnings; other minor fixes (NFC). 2017-09-21 23:20:16 +00:00
LegalizeVectorTypes.cpp Fixed a bug in splitting Scatter operation in the Type Legalizer. 2017-09-11 06:18:15 +00:00
ResourcePriorityQueue.cpp Refactoring with range-based for, NFC 2017-05-04 13:35:17 +00:00
SDNodeDbgValue.h [Debug info] Transfer DI to fragment expressions for split integer values. 2017-08-18 18:07:00 +00:00
ScheduleDAGFast.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ScheduleDAGRRList.cpp Remove usages of deprecated std::unary_function and std::binary_function. 2017-09-14 18:33:25 +00:00
ScheduleDAGSDNodes.cpp [DebugInfo] Sort the SDDbgValue list before assuming it is in IR order 2017-09-25 16:14:53 +00:00
ScheduleDAGSDNodes.h [Target] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-11 01:45:03 +00:00
ScheduleDAGVLIW.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
SelectionDAG.cpp [SelectionDAG] Make NewSDValueDbgMsg print target specific nodes correctly by passing in the SelectionDAG. 2017-09-27 05:17:14 +00:00
SelectionDAGAddressAnalysis.cpp [CodeGen] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-09-13 21:15:20 +00:00
SelectionDAGBuilder.cpp [CodeGen] Fix some Clang-tidy modernize-use-default-member-init and Include What You Use warnings; other minor fixes (NFC). 2017-09-27 23:26:01 +00:00
SelectionDAGBuilder.h [CodeGen] Fix some Clang-tidy modernize-use-default-member-init and Include What You Use warnings; other minor fixes (NFC). 2017-09-27 23:26:01 +00:00
SelectionDAGDumper.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
SelectionDAGISel.cpp [X86] Improvement in CodeGen instruction selection for LEAs (re-applying post required revision changes.) 2017-10-04 09:02:10 +00:00
SelectionDAGPrinter.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
SelectionDAGTargetInfo.cpp [CodeGen] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-09-13 21:15:20 +00:00
StatepointLowering.cpp [CodeGen] Fix some Clang-tidy modernize-use-default-member-init and Include What You Use warnings; other minor fixes (NFC). 2017-09-27 23:26:01 +00:00
StatepointLowering.h [CodeGen] Fix some Clang-tidy modernize-use-default-member-init and Include What You Use warnings; other minor fixes (NFC). 2017-09-27 23:26:01 +00:00
TargetLowering.cpp CodeGen: Fix pointer info in expandUnalignedLoad/Store 2017-09-29 23:31:14 +00:00