1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/include/llvm/CodeGen
Craig Topper 456baa52f2 [CostModel][X86] Fix overcounting arithmetic cost in illegal types in getArithmeticReductionCost/getMinMaxReductionCost
We were overcounting the number of arithmetic operations needed at each level before we reach a legal type. We were using the full vector type for that level, but we are going to split the input vector at that level in half. So the effective arithmetic operation cost at that level is half the width.

So for example on 8i32 on an sse target. Were were calculating the cost of an 8i32 op which is likely 2 for basic integer. Then after the loop we count 2 more v4i32 ops. For a total arith cost of 4. But if you look at the assembly there would only be 3 arithmetic ops.

There are still more bugs in this code that I'm going to work on next. The non pairwise code shouldn't count extract subvectors in the loop. There are no extracts, the types are split in registers. For pairwise we need to use 2 two src permute shuffles.

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

llvm-svn: 348621
2018-12-07 18:20:56 +00:00
..
GlobalISel [GlobalISel] Introduce G_BUILD_VECTOR, G_BUILD_VECTOR_TRUNC and G_CONCAT_VECTOR opcodes. 2018-12-05 23:53:30 +00:00
MIRParser
PBQP
AccelTable.h DwarfDebug: Reduce duplication in addAccel*** methods 2018-07-20 15:24:13 +00:00
Analysis.h
AsmPrinter.h [DebugInfo] Rename EmitDebugThreadLocal back to EmitDebugValue. NFC 2018-11-28 11:48:07 +00:00
AtomicExpandUtils.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
BasicTTIImpl.h [CostModel][X86] Fix overcounting arithmetic cost in illegal types in getArithmeticReductionCost/getMinMaxReductionCost 2018-12-07 18:20:56 +00:00
BuiltinGCs.h [GC] Rename a header for consistency 2018-11-10 16:08:10 +00:00
CalcSpillWeights.h
CallingConvLower.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
CommandFlags.inc [AArch64] Add Tiny Code Model for AArch64 2018-08-22 11:31:39 +00:00
CostTable.h
DAGCombine.h
DFAPacketizer.h
DIE.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
DIEValue.def
DwarfStringPoolEntry.h [DebugInfo] Reduce debug_str_offsets section size 2018-08-07 09:54:52 +00:00
EdgeBundles.h
ExecutionDomainFix.h
ExpandReductions.h
FastISel.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
FaultMaps.h
FunctionLoweringInfo.h AMDGPU: Fix various issues around the VirtReg2Value mapping 2018-11-30 22:55:29 +00:00
GCMetadata.h [GC][NFC] Simplify code now that we only have one safepoint kind 2018-11-12 22:03:53 +00:00
GCMetadataPrinter.h [CodeGen] Support custom format of stack maps 2018-11-26 18:43:48 +00:00
GCStrategy.h [GC][NFC] Simplify code now that we only have one safepoint kind 2018-11-12 22:03:53 +00:00
IntrinsicLowering.h
ISDOpcodes.h [SelectionDAG] Initial support for FSHL/FSHR funnel shift opcodes (PR39467) 2018-12-05 11:12:12 +00:00
LatencyPriorityQueue.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
LazyMachineBlockFrequencyInfo.h
LexicalScopes.h
LinkAllAsmWriterComponents.h [GC] Rename a header for consistency 2018-11-10 16:08:10 +00:00
LinkAllCodegenComponents.h [GC] Rename a header for consistency 2018-11-10 16:08:10 +00:00
LiveInterval.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
LiveIntervals.h Fix typos in comment 2018-10-30 01:11:52 +00:00
LiveIntervalUnion.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
LivePhysRegs.h LivePhysRegs/IfConversion: Change some types from unsigned to MCPhysReg; NFC 2018-11-06 19:00:11 +00:00
LiveRangeEdit.h
LiveRegMatrix.h
LiveRegUnits.h LivePhysRegs/IfConversion: Change some types from unsigned to MCPhysReg; NFC 2018-11-06 19:00:11 +00:00
LiveStacks.h
LiveVariables.h
LoopTraversal.h
LowLevelType.h
MachineBasicBlock.h [WebAssembly] Add isEHScopeReturn instruction property 2018-08-21 19:44:11 +00:00
MachineBlockFrequencyInfo.h
MachineBranchProbabilityInfo.h
MachineCombinerPattern.h
MachineConstantPool.h
MachineDominanceFrontier.h [WebAssembly] Add WebAssemblyException information analysis 2018-06-25 01:20:21 +00:00
MachineDominators.h
MachineFrameInfo.h [Power9] Allow gpr callee saved spills in prologue to vectors registers 2018-11-09 16:36:24 +00:00
MachineFunction.h MachineFunction: Store more specific reference to LLVMTargetMachine; NFC 2018-11-05 23:49:14 +00:00
MachineFunctionPass.h
MachineInstr.h Fix documentation of MachineInstr::getNumOperands 2018-10-12 12:26:37 +00:00
MachineInstrBuilder.h [MI] Change the array of MachineMemOperand pointers to be 2018-08-16 21:30:05 +00:00
MachineInstrBundle.h
MachineInstrBundleIterator.h
MachineJumpTableInfo.h
MachineLoopInfo.h
MachineMemOperand.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
MachineModuleInfo.h MachineModuleInfo: Store more specific reference to LLVMTargetMachine; NFC 2018-11-05 23:49:13 +00:00
MachineModuleInfoImpls.h [MinGW] [X86] Add stubs for references to data variables that might end up imported from a dll 2018-08-29 17:28:34 +00:00
MachineOperand.h CodeGen: Cleanup regmask construction; NFC 2018-07-26 00:27:47 +00:00
MachineOptimizationRemarkEmitter.h
MachineOutliner.h [MachineOutliner][NFC] Candidates don't need to be shared_ptrs anymore 2018-12-05 23:24:22 +00:00
MachinePassRegistry.h Type safe version of MachinePassRegistry 2018-11-09 17:19:45 +00:00
MachinePostDominators.h
MachineRegionInfo.h
MachineRegisterInfo.h [MachineCSE][GlobalISel] Making sure MachineCSE works mid-GlobalISel (again) 2018-10-20 00:06:15 +00:00
MachineScheduler.h Bias physical register immediate assignments 2018-11-14 21:11:53 +00:00
MachineSSAUpdater.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
MachineTraceMetrics.h
MachORelocation.h Remove trailing space 2018-07-30 19:41:25 +00:00
MacroFusion.h
MIRPrinter.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
MIRYamlMapping.h [MIR] Add hasWinCFI field 2018-10-24 21:07:38 +00:00
ParallelCG.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
Passes.h Subject: [PATCH] [CodeGen] Add pass to combine interleaved loads. 2018-11-19 14:26:10 +00:00
PBQPRAConstraint.h
PreISelIntrinsicLowering.h
PseudoSourceValue.h [PSV] Update API to be able to use TargetCustom without UB. 2018-08-20 19:23:45 +00:00
ReachingDefAnalysis.h
RegAllocPBQP.h
RegAllocRegistry.h Type safe version of MachinePassRegistry 2018-11-09 17:19:45 +00:00
RegisterClassInfo.h
RegisterPressure.h
RegisterScavenging.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
RegisterUsageInfo.h MachineFunction: Store more specific reference to LLVMTargetMachine; NFC 2018-11-05 23:49:14 +00:00
ResourcePriorityQueue.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
RuntimeLibcalls.h Put "built-in" function definitions in global Used list, for LTO. (fix bug 34169) 2018-07-24 19:34:37 +00:00
ScheduleDAG.h MachineFunction: Store more specific reference to LLVMTargetMachine; NFC 2018-11-05 23:49:14 +00:00
ScheduleDAGInstrs.h ScheduleDAG: Cleanup dumping code; NFC 2018-09-19 00:23:35 +00:00
ScheduleDAGMutation.h
ScheduleDFS.h
ScheduleHazardRecognizer.h
SchedulerRegistry.h Type safe version of MachinePassRegistry 2018-11-09 17:19:45 +00:00
ScoreboardHazardRecognizer.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
SDNodeProperties.td
SelectionDAG.h [DAG] consolidate shift simplifications 2018-11-23 20:05:12 +00:00
SelectionDAGAddressAnalysis.h [DAG] Add const variants for BaseIndexOffset functions. 2018-10-30 18:26:43 +00:00
SelectionDAGISel.h TableGen/ISel: Allow PatFrag predicate code to access captured operands 2018-11-30 14:15:13 +00:00
SelectionDAGNodes.h [SelectionDAG] move constant or splat functions to common location 2018-11-25 16:09:32 +00:00
SelectionDAGTargetInfo.h
SlotIndexes.h Fix typos in assert message 2018-10-19 20:17:05 +00:00
StackMaps.h [CodeGen] Expose some data types and accessors from StackMaps 2018-11-16 16:48:49 +00:00
StackProtector.h CodeGen: Remove pipeline dependencies on StackProtector; NFC 2018-07-13 00:08:38 +00:00
TailDuplicator.h
TargetCallingConv.h
TargetFrameLowering.h
TargetInstrInfo.h [CodeGen][NFC] Make TII::getMemOpBaseImmOfs return a base operand 2018-11-28 12:00:20 +00:00
TargetLowering.h [SelectionDAG] Initial support for FSHL/FSHR funnel shift opcodes (PR39467) 2018-12-05 11:12:12 +00:00
TargetLoweringObjectFileImpl.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
TargetOpcodes.h
TargetPassConfig.h MIR: Add method to stop after specific runs of passes 2018-12-04 17:45:12 +00:00
TargetRegisterInfo.h [TargetRegisterInfo] Remove temporary hook enableMultipleCopyHints() 2018-10-05 14:23:11 +00:00
TargetSchedule.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
TargetSubtargetInfo.h [tblgen][llvm-mca] Add the ability to describe move elimination candidates via tablegen. 2018-10-12 11:23:04 +00:00
UnreachableBlockElim.h
ValueTypes.h
ValueTypes.td NFC Fix a comment in ValueTypes.td 2018-06-07 23:32:18 +00:00
VirtRegMap.h [CodeGen] Fix inconsistent declaration parameter name 2018-07-16 18:51:40 +00:00
WasmEHFuncInfo.h [WebAssembly] Add support for the event section 2018-11-14 02:46:21 +00:00
WinEHFuncInfo.h