1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00
llvm-mirror/include/llvm/CodeGen
Paul Walker aeb7dd335b [SVE] Don't reorder subvector/binop sequences when the resulting binop is not legal.
When lowering fixed length vector operations for SVE the subvector
operations are used extensively to marshall data between scalable
and fixed-length vectors. This means that sequences like:

  extract_subvec(binop(insert_subvec(a), insert_subvec(b)))

are very common. DAGCombine only checks if the resulting binop is
legal or can be custom lowered when undoing such sequences. When
it's custom lowering that is introducing them the result is an
infinite legalise->combine->legalise loop.

This patch extends the isOperationLegalOr... functions to include
a "LegalOnly" parameter to restrict the check to legal operations
only. Although isOperationLegal could be used it's common for
the affected code paths to be visited pre and post legalisation,
so the extra parameter keeps the code tidy.

Differential Revision: https://reviews.llvm.org/D86450
2020-09-02 11:01:33 +01:00
..
GlobalISel Revert "Revert "[GlobalISel] Fold xor(cmp(pred, _, _), 1) -> cmp(inverse(pred), _, _)" (and dependent patch "Optimize away a Not feeding a brcond by using tbz instead of tbnz.")" 2020-09-01 14:29:04 -07:00
MIRParser Infer alignment of unmarked loads in IR/bitcode parsing. 2020-05-14 13:03:50 -07:00
PBQP
AccelTable.h
Analysis.h [CallSite removal][CodeGen] Drop some unneeded includes of CallSite.h. NFC 2020-04-16 11:05:35 -07:00
AntiDepBreaker.h [DebugInfo] Update MachineInstr to help support variadic DBG_VALUE instructions 2020-06-22 16:01:12 +01:00
AsmPrinter.h [AIX] Static init frontend recovery and backend support 2020-08-10 10:10:49 -04:00
AsmPrinterHandler.h This patch adds basic debug info support with basic block sections. 2020-07-01 23:53:00 -07:00
AtomicExpandUtils.h
BasicBlockSectionUtils.h [llvm][CodeGen] Machine Function Splitter 2020-08-28 11:10:14 -07:00
BasicTTIImpl.h Support addrspacecast initializers with isNoopAddrSpaceCast 2020-07-31 10:42:43 -04:00
BuiltinGCs.h
CalcSpillWeights.h
CallingConvLower.h [NFC] Remove dead code 2020-06-30 14:46:56 +00:00
CommandFlags.h [llvm][CodeGen] Machine Function Splitter 2020-08-28 11:10:14 -07:00
CostTable.h
CSEConfigBase.h
DAGCombine.h
DbgEntityHistoryCalculator.h [DwarfDebug] Improve single location detection in validThroughout (2/4) 2020-08-27 11:52:29 +01:00
DebugHandlerBase.h [DwarfDebug] Improve single location detection in validThroughout (2/4) 2020-08-27 11:52:29 +01:00
DFAPacketizer.h [DFAPacketizer] Allow up to 64 functional units 2019-11-05 15:41:42 +00:00
DIE.h [DebugInfo] Clean up DIEUnit. NFC. 2020-08-07 15:55:44 +07:00
DIEValue.def
DwarfStringPoolEntry.h
EdgeBundles.h CodeGen/EdgeBundles - move Twine.h include down into EdgeBundles.cpp. NFC. 2020-04-11 12:21:04 +01:00
ExecutionDomainFix.h ExecutionDomainFix.h - remove unused llvm::MachineBasicBlock forward declaration. NFC. 2020-04-11 11:25:48 +01:00
ExpandReductions.h
FastISel.h [FastISel] update to use intrinsic's isCommutative(); NFC 2020-08-30 11:36:41 -04:00
FaultMaps.h [FaultMaps] Make label formation a bit more explicit [NFC] 2019-12-19 12:38:44 -08:00
FunctionLoweringInfo.h [Statepoint] Consolidate relocation type tracking [NFC] 2020-07-29 11:45:31 -07:00
GCMetadata.h
GCMetadataPrinter.h
GCStrategy.h
IndirectThunks.h [IndirectThunks] Tiny comment fix 2020-06-18 06:50:30 +01:00
IntrinsicLowering.h IntrinsicLowering.h - remove unused llvm::Module forward declaration. NFC. 2020-04-11 11:25:48 +01:00
ISDOpcodes.h [SVE][CodeGen] Fix issues with EXTRACT_SUBVECTOR when using scalable FP vectors 2020-08-12 08:35:46 +01:00
LatencyPriorityQueue.h
LazyMachineBlockFrequencyInfo.h
LexicalScopes.h [LiveDebugValues] Cache LexicalScopes::getMachineBasicBlocks, NFCI 2020-06-04 16:58:45 -07:00
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h
LiveInterval.h [ADT/STLExtras.h] - Add llvm::is_sorted wrapper and update callers. 2020-04-14 14:11:02 +03:00
LiveIntervalCalc.h LiveIntervalCalc - remove unnecessary includes. NFC. 2020-05-08 14:57:35 +01:00
LiveIntervals.h LiveIntervals.h.h - reduce AliasAnalysis.h include to forward declaration. NFC. 2020-06-25 14:22:21 +01:00
LiveIntervalUnion.h
LivePhysRegs.h Recommit "[MachineVerifier] Improve verification of live-in lists." 2020-01-08 16:58:54 -08:00
LiveRangeCalc.h Split LiveRangeCalc in LiveRangeCalc/LiveIntervalCalc. NFC 2020-04-10 11:26:21 -07:00
LiveRangeEdit.h RegAlloc: Start using Register 2020-06-30 12:13:08 -04:00
LiveRegMatrix.h
LiveRegUnits.h [LiveRegUnits] Add phys_regs_and_masks iterator range (NFC). 2019-12-11 09:34:42 +00:00
LiveStacks.h Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
LiveVariables.h [LiveVariables] Replace std::vector with SmallVector. 2020-07-16 11:39:54 -07:00
LoopTraversal.h
LowLevelType.h GlobalISel: Move getLLTForMVT/getMVTForLLT 2020-01-09 16:32:51 -05:00
MachineBasicBlock.h [Propeller]: Use a descriptive temporary symbol name for the end of the basic block. 2020-08-05 13:17:19 -07:00
MachineBlockFrequencyInfo.h [llvm][NFC] refactor setBlockFrequency for clarity. 2020-07-28 13:04:11 -07:00
MachineBranchProbabilityInfo.h Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
MachineCombinerPattern.h [PowerPC] fma chain break to expose more ILP 2020-06-15 00:00:04 -04:00
MachineConstantPool.h [CodeGen] Use Align in MachineConstantPool. 2020-05-12 10:06:40 -07:00
MachineDominanceFrontier.h
MachineDominators.h DomTree: remove explicit use of DomTreeNodeBase::iterator 2020-07-08 18:18:49 +02:00
MachineFrameInfo.h [Alignment][NFC] Migrate TargetTransformInfo::CreateVariableSizedObject to Align 2020-07-01 14:31:21 +00:00
MachineFunction.h [llvm][CodeGen] Machine Function Splitter 2020-08-28 11:10:14 -07:00
MachineFunctionPass.h
MachineInstr.h [ScheduleDAG] Move DBG_VALUEs after first term forward. 2020-07-17 10:27:43 +01:00
MachineInstrBuilder.h [NFC] [MIR] Document the reg state flags 2020-08-03 09:03:24 +02:00
MachineInstrBundle.h CodeGen: Use Register in MachineInstrBuilder 2020-04-08 17:03:53 -04:00
MachineInstrBundleIterator.h Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
MachineJumpTableInfo.h
MachineLoopInfo.h Revert "Include static prof data when collecting loop BBs" 2020-03-24 09:41:16 -07:00
MachineLoopUtils.h [ARM][LowOverheadLoops] Remove dead loop update instructions. 2019-12-11 10:20:19 +00:00
MachineMemOperand.h MachineMemOperand.h - reduce GlobalValue.h include to just DerivedTypes.h. NFC. 2020-05-21 11:38:25 +01:00
MachineModuleInfo.h [CodeGen] Make MMI immutable NPM pass 2020-08-10 17:52:42 -07:00
MachineModuleInfoImpls.h
MachineOperand.h CodeGen: Use Register in more places 2020-04-07 15:59:40 -04:00
MachineOptimizationRemarkEmitter.h [Remarks] Extend the RemarkStreamer to support other emitters 2020-02-04 17:16:02 -08:00
MachineOutliner.h
MachinePassManager.h [NewPM][CodeGen] Add machine code verification callback 2020-08-13 16:13:01 -07:00
MachinePassRegistry.h
MachinePipeliner.h [MachinePipeliner] Add ORE for MachinePipeliner 2020-05-05 16:04:53 +00:00
MachinePostDominators.h DomTree: Remove getRoots() accessor 2020-07-06 21:58:11 +02:00
MachineRegionInfo.h
MachineRegisterInfo.h MIR: Infer not-SSA for subregister defs 2020-08-27 16:56:16 -04:00
MachineScheduler.h MachineScheduler.h - reduce AliasAnalysis.h include to forward declaration. NFC. 2020-06-25 11:40:44 +01:00
MachineSizeOpts.h [PGO][PGSO] Handle MBFIWrapper 2020-01-31 09:36:55 -08:00
MachineSSAUpdater.h MachineSSAUpdater: Allow initialization with just a register class 2020-08-21 23:04:35 +02:00
MachineTraceMetrics.h
MachORelocation.h
MacroFusion.h
MBFIWrapper.h [MBFI] Move BranchFolding::MBFIWrapper to its own files. NFC. 2020-01-28 10:58:46 -08:00
MIRFormatter.h Revert "Revert "[MIR] Target specific MIR formating and parsing"" 2020-01-08 20:03:29 -08:00
MIRPrinter.h
MIRYamlMapping.h [amdgpu] Add codegen support for HIP dynamic shared memory. 2020-08-20 21:29:18 -04:00
ModuloSchedule.h [ModuloSchedule] Devirtualize PeelingModuloScheduleExpander::expand as it's not needed 2020-07-06 18:05:32 -07:00
NonRelocatableStringpool.h [Dsymutil][Debuginfo][NFC] Reland: Refactor dsymutil to separate DWARF optimizing part. #2. 2020-01-08 14:15:31 +03:00
ParallelCG.h ParallelCG.h - replace TargetMachine.h include with forward declaration. NFC. 2020-04-12 12:36:02 +01:00
Passes.h [llvm][CodeGen] Machine Function Splitter 2020-08-28 11:10:14 -07:00
PBQPRAConstraint.h
PreISelIntrinsicLowering.h
PseudoSourceValue.h PseudoSourceValue.h - reduce GlobalValue.h include to forward declaration. NFC. 2020-05-20 13:52:22 +01:00
RDFGraph.h Move RDF from Hexagon to Codegen 2020-03-17 12:43:14 -07:00
RDFLiveness.h [RDF] Use hash-based containers, cache extra information 2020-08-04 18:36:49 -05:00
RDFRegisters.h [RDF] Add operator<<(raw_ostream&, RegisterAggr), NFC 2020-08-04 18:40:07 -05:00
ReachingDefAnalysis.h [ARM][LowOverheadLoops] Liveouts and reductions 2020-08-28 13:56:16 +01:00
RegAllocPBQP.h
RegAllocRegistry.h
Register.h [NFCI] Cleanup range checks in Register/MCRegister 2020-06-26 14:55:55 -04:00
RegisterClassInfo.h
RegisterPressure.h
RegisterScavenging.h [RegisterScavenging] Delete dead function unprocess(). 2020-08-27 13:19:32 -07:00
RegisterUsageInfo.h Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
ResourcePriorityQueue.h ResourcePriorityQueue.h - reduce unnecessary includes to forward declarations. NFC. 2020-05-26 19:22:14 +01:00
RuntimeLibcalls.h
ScheduleDAG.h [ScheduleDAG] Avoid unnecessary recomputation of topological order. 2020-05-31 11:04:35 +01:00
ScheduleDAGInstrs.h [Scheduling] Implement a new way to cluster loads/stores 2020-08-26 12:33:59 +00:00
ScheduleDAGMutation.h
ScheduleDFS.h ScheduleDFS.h - Replace ArrayRef.h include with forward declaration. NFC. 2020-04-17 10:02:06 +01:00
ScheduleHazardRecognizer.h
SchedulerRegistry.h
ScoreboardHazardRecognizer.h ScoreboardHazardRecognizer.h - remove unnecessary llvm::InstrItineraryData forward declaration. NFC. 2020-04-17 10:02:06 +01:00
SDNodeProperties.td
SelectionDAG.h [CodeGen] Refactor getMemBasePlusOffset & getObjectPtrOffset to accept a TypeSize 2020-08-11 12:17:10 +01:00
SelectionDAGAddressAnalysis.h
SelectionDAGISel.h SelectionDAGISel.h - remove Pass.h include and forward declarations. NFC. 2020-04-12 12:49:29 +01:00
SelectionDAGNodes.h [SDAG] Improve MemSDNode::getBasePtr 2020-08-25 15:19:52 -05:00
SelectionDAGTargetInfo.h [Alignment][NFC] Migrate SelectionDAGTargetInfo::EmitTargetCodeForMemcpy to Align 2020-06-30 13:12:31 +00:00
SlotIndexes.h [SlotIndexes] Add insertion point for insertMBBIntoMaps 2020-04-25 09:36:19 +09:00
Spiller.h Fix indentation using clang-format for Spiller.h. NFC 2020-03-09 10:52:28 -07:00
StackMaps.h MIR Statepoint refactoring. Part 1: Basic MI level changes. 2020-07-17 00:57:21 +07:00
StackProtector.h [StackProtector] Catch direct out-of-bounds when checking address-takenness 2020-03-17 12:09:07 +00:00
SwiftErrorValueTracking.h
SwitchLoweringUtils.h
TailDuplicator.h TailDuplicator: Use Register 2020-06-30 12:13:08 -04:00
TargetCallingConv.h CodeGen: Add support for lowering byref attribute 2020-07-21 17:38:15 -04:00
TargetFrameLowering.h [SVE] Don't use LocalStackAllocation for SVE objects 2020-07-27 08:22:01 +01:00
TargetInstrInfo.h Fix a couple of typos. NFC 2020-08-20 14:56:57 -06:00
TargetLowering.h [SVE] Don't reorder subvector/binop sequences when the resulting binop is not legal. 2020-09-02 11:01:33 +01:00
TargetLoweringObjectFileImpl.h [XCOFF][AIX] Use TE storage mapping class when large code model is enabled 2020-08-10 19:52:10 +00:00
TargetOpcodes.h
TargetPassConfig.h [llc] (almost) remove --print-machineinstrs 2020-07-20 10:43:28 -07:00
TargetRegisterInfo.h [AArch64][SVE] Preserve full vector regs over EH edge. 2020-09-02 10:54:18 +01:00
TargetSchedule.h
TargetSubtargetInfo.h [X86][MC][Target] Initial backend support a tune CPU to support -mtune 2020-08-14 15:31:50 -07:00
UnreachableBlockElim.h
ValueTypes.h [SVE] Make ElementCount members private 2020-08-28 14:43:53 +01:00
ValueTypes.td [MVT] Add new MVT types for RISC-V vector. 2020-07-01 01:07:50 +08:00
VirtRegMap.h VirtRegMap.h - remove unnecessary MCRegisterInfo.h include. NFC 2020-04-12 13:11:13 +01:00
WasmEHFuncInfo.h WasmEHFuncInfo.h - reduce BasicBlock.h/MachineBasicBlock.h includes to just forward declarations. NFC. 2020-04-16 14:59:49 +01:00
WinEHFuncInfo.h