1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 03:23:01 +02:00
llvm-mirror/lib/CodeGen/SelectionDAG
Sanjay Patel bcd538983f [SelectionDAG][x86] turn insertelement into undef with variable index into splat
I noticed this along with the patterns in D51125, but when the index is variable, 
we don't convert insertelement into a build_vector.

For x86, that means these get expanded at legalization time into the loading/spilling 
code that we see in the tests. I think it's always better to avoid going to memory on 
these, and we get the optimal 'broadcast' if it's available.

I suspect other targets may want to look at enabling the hook. AArch64 and AMDGPU have 
regression tests that would be affected (although I did not check what would happen in 
those cases). In the most basic cases shown here, AArch64 would probably do much 
better with a splat.

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

llvm-svn: 340705
2018-08-26 18:20:41 +00:00
..
CMakeLists.txt Remove trailing whitespace to trigger re-cmaking 2017-10-02 21:54:38 +00:00
DAGCombiner.cpp [SelectionDAG][x86] turn insertelement into undef with variable index into splat 2018-08-26 18:20:41 +00:00
FastISel.cpp [IR] Replace isa<TerminatorInst> with isTerminator(). 2018-08-26 09:51:22 +00:00
FunctionLoweringInfo.cpp DAG: Add calling convention argument to calling convention funcs 2018-07-28 13:25:19 +00:00
InstrEmitter.cpp [MI] Change the array of MachineMemOperand pointers to be 2018-08-16 21:30:05 +00:00
InstrEmitter.h [DebugInfo] Convert intrinsic llvm.dbg.label to MachineInstr. 2018-05-09 02:41:08 +00:00
LegalizeDAG.cpp [ARM] Lower llvm.ctlz.i32 to a libcall when clz is not available. 2018-08-22 21:47:14 +00:00
LegalizeFloatTypes.cpp DAG: Try to custom lower when promoting float operands 2018-08-15 20:34:54 +00:00
LegalizeIntegerTypes.cpp [SelectionDAG][X86] Reorder the operands the MaskedStoreSDNode to put the value first. 2018-08-25 17:48:17 +00:00
LegalizeTypes.cpp [DAG] Don't map a TableId to itself in the ReplacedValues map 2018-06-20 16:06:09 +00:00
LegalizeTypes.h [FPEnv] Scalarize StrictFP vector operations 2018-08-14 22:13:11 +00:00
LegalizeTypesGeneric.cpp Avoid losing Hi part when expanding VAARG nodes on big endian machines 2018-07-16 12:14:17 +00:00
LegalizeVectorOps.cpp [FPEnv] Support constrained FREM intrinsic 2018-08-20 19:28:56 +00:00
LegalizeVectorTypes.cpp [SelectionDAG][X86] Reorder the operands the MaskedStoreSDNode to put the value first. 2018-08-25 17:48:17 +00:00
LLVMBuild.txt
ResourcePriorityQueue.cpp Silence a bunch of implicit fallthrough warnings 2017-12-19 22:05:25 +00:00
ScheduleDAGFast.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
ScheduleDAGRRList.cpp [ScheduleDAG] Fix unfolding of SUnits to already existent nodes. 2018-07-18 18:01:03 +00:00
ScheduleDAGSDNodes.cpp [SDAG] Remove the reliance on MI's allocation strategy for 2018-08-14 23:30:32 +00:00
ScheduleDAGSDNodes.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
ScheduleDAGVLIW.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
SDNodeDbgValue.h [DebugInfo] LowerDbgDeclare: Add derefs when handling CallInst users 2018-07-26 20:56:53 +00:00
SelectionDAG.cpp [SelectionDAG][X86] Reorder the operands the MaskedStoreSDNode to put the value first. 2018-08-25 17:48:17 +00:00
SelectionDAGAddressAnalysis.cpp [DAG] Teach findBaseOffset to interpret indexes of indexed memory operations 2018-01-26 16:51:27 +00:00
SelectionDAGBuilder.cpp [IR] Replace isa<TerminatorInst> with isTerminator(). 2018-08-26 09:51:22 +00:00
SelectionDAGBuilder.h DAG: Add calling convention argument to calling convention funcs 2018-07-28 13:25:19 +00:00
SelectionDAGDumper.cpp Get rid of SETCCE 2018-06-04 18:36:22 +00:00
SelectionDAGISel.cpp [IR] Replace isa<TerminatorInst> with isTerminator(). 2018-08-26 09:51:22 +00:00
SelectionDAGPrinter.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +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 Remove trailing space 2018-07-30 19:41:25 +00:00
StatepointLowering.h [IR][CodeGen] Remove dependency on EVT from IR/Function.cpp. Move EVT to CodeGen layer. 2018-03-29 17:21:10 +00:00
TargetLowering.cpp [TargetLowering] Add BuildSDiv support for division by one or negone. 2018-08-21 10:20:36 +00:00