llvm-project/llvm/test/Transforms
Florian Hahn 93c8235702 [AArch64TTI] Compute imm materialization cost for AArch64 intrinsics
Currently, getIntImmCost returns TCC_Free for almost all intrinsics.
For most AArch64 specific intrinsics however, it looks like integer
constants cannot be folded into most of them (at least the ones I checked).

Unless we know that we can fold integer operands with the intrinsic, we
handle more cases correctly by returning the cost to materialize the
immediate than return TCC_Free.

Reviewers: SjoerdMeijer, dmgreen, t.p.northover, ributzka

Reviewed By: SjoerdMeijer

Differential Revision: https://reviews.llvm.org/D70669
2019-12-04 11:09:03 +00:00
..
ADCE Add missing test for r366215 2019-07-16 15:28:29 +00:00
AddDiscriminators
AggressiveInstCombine [NFC] run specific pass instead of whole -O3 pipeline for popcount recoginzation testcase. 2019-10-11 05:30:18 +00:00
AlignmentFromAssumptions [AlignmentFromAssumptions] getNewAlignmentDiff(): use getURemExpr() 2019-08-23 02:17:04 +00:00
ArgumentPromotion IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00
AtomicExpand AMDGPU: Select global atomicrmw fadd 2019-11-06 16:06:38 -08:00
Attributor [Attributor] Copy or port test cases related to Attributor to` Attributor` test folder 2019-12-02 15:36:29 +00:00
BDCE Clang-trunk Generates Wrong Debug values with -O1 2019-11-21 13:53:10 -08:00
BlockExtractor [BlockExtractor] Avoid assert with wrong line format 2019-08-20 14:46:02 +00:00
BranchFolding
CallSiteSplitting CallSiteSplitting: Respect convergent and noduplicate 2019-05-29 16:59:48 +00:00
CalledValuePropagation
CanonicalizeAliases
CodeExtractor [CodeExtractor] Fix sinking of allocas with multiple bitcast uses (PR42451) 2019-07-10 16:32:20 +00:00
CodeGenPrepare Reapply r374743 with a fix for the ocaml binding 2019-10-14 16:15:14 +00:00
ConstProp [ConstantFold] fix inconsistent handling of extractelement with undef index (PR42689) 2019-10-13 17:34:08 +00:00
ConstantHoisting [AArch64TTI] Compute imm materialization cost for AArch64 intrinsics 2019-12-04 11:09:03 +00:00
ConstantMerge
Coroutines [coroutine] Fixes "cannot move instruction since its users are not dominated by CoroBegin" problem. 2019-08-15 00:48:51 +00:00
CorrelatedValuePropagation [ConstantRange][LVI] Use overflow flags from `sub` to constrain the range 2019-11-07 16:18:03 +03:00
CrossDSOCFI
DCE [FPEnv] Strict FP tests should use the requisite function attributes. 2019-10-04 17:03:46 +00:00
DeadArgElim [FunctionAttrs] Annotate "willreturn" for intrinsics 2019-07-28 06:09:56 +00:00
DeadStoreElimination [FunctionAttrs] Annotate "willreturn" for intrinsics 2019-07-28 06:09:56 +00:00
DivRemPairs [DivRemPairs] Don't assert that we won't ever get expanded-form rem pairs in different BB's (PR43500) 2019-09-29 15:25:24 +00:00
EarlyCSE [IR] Fix mayReadFromMemory() for writeonly calls 2019-10-21 06:52:08 +00:00
EliminateAvailableExternally
EntryExitInstrumenter Reland "[ARM] push LR before __gnu_mcount_nc" 2019-08-16 23:30:16 +00:00
ExpandMemCmp [X86] Make memcmp vector lowering handle arbitrary expansions 2019-10-30 09:12:57 +02:00
Float2Int [Float2Int] avoid crashing on unreachable code (PR38502) 2019-09-19 16:31:17 +00:00
ForcedFunctionAttrs
FunctionAttrs [Attributor] Copy or port test cases related to Attributor to` Attributor` test folder 2019-12-02 15:36:29 +00:00
FunctionImport Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
GCOVProfiling
GVN [GVN] Propagate simple equalities from assumes within the tail of the block 2019-09-03 17:31:19 +00:00
GVNHoist
GVNSink [GVNSink] Add unary FNeg support to GVNSink pass 2019-06-28 19:57:31 +00:00
GlobalDCE Reland: Dead Virtual Function Elimination 2019-10-17 09:58:57 +00:00
GlobalMerge
GlobalOpt remove UB from test by making GV alignment explicit 2019-12-01 15:16:31 +00:00
GlobalSplit
GuardWidening Broaden the definition of a "widenable branch" 2019-11-21 10:46:16 -08:00
HardwareLoops Recommit "[HardwareLoops] Optimisation remarks" 2019-11-05 09:06:22 +00:00
HotColdSplit Fix failing testcase to check for the correct output 2019-12-02 16:19:35 -08:00
IPConstantProp [AbstractCallSite][FIX] Correct faulty assertion 2019-11-02 01:22:41 -05:00
IRCE [SCEV] Add smin support to getRangeRef 2019-09-12 21:32:27 +00:00
IndVarSimplify [LoopPred] Enable new transformation by default 2019-11-06 15:41:57 -08:00
IndirectBrExpand
InferAddressSpaces AMDGPU: Add intrinsics for address space identification 2019-09-05 02:20:39 +00:00
InferFunctionAttrs [Attributor] Copy or port test cases related to Attributor to` Attributor` test folder 2019-12-02 15:36:29 +00:00
Inline [InlineCost] Fix infinite loop in indirect call evaluation 2019-11-28 08:27:50 +02:00
InstCombine [InstCombine] Revert aafde063aa and 6749dc3446 related to bitcast handling of x86_mmx 2019-12-03 14:02:22 -08:00
InstMerge [MergedLoadStoreMotion] Sink stores to BB with more than 2 predecessors 2019-09-05 17:00:32 +00:00
InstNamer
InstSimplify [InstSimplify] fold copysign with same args to the arg 2019-11-26 17:35:10 -05:00
InterleavedAccess [ARM] MVE interleaving load and stores. 2019-11-19 18:37:30 +00:00
Internalize Reland: Dead Virtual Function Elimination 2019-10-17 09:58:57 +00:00
JumpThreading [JumpThreading] Use profile data even with the new pass manager 2019-11-22 08:21:48 -08:00
LCSSA
LICM [TTI] Fix cast cost on vector types. 2019-11-13 13:54:07 -05:00
LoadStoreVectorizer Handle casts changing pointer size in the vectorizer 2019-08-02 04:03:37 +00:00
LoopDataPrefetch
LoopDeletion
LoopDistribute Revert "[IRBuilder] Fold consistently for or/and whether constant is LHS or RHS" 2019-07-07 22:12:01 +00:00
LoopFusion [LoopFusion] Add ability to fuse guarded loops 2019-09-26 21:42:45 +00:00
LoopIdiom Revert BCmp Loop Idiom recognition transform (PR43870) 2019-11-02 12:48:03 +03:00
LoopInstSimplify [LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it. 2019-08-21 17:00:57 +00:00
LoopInterchange [LoopInterchange] Adjust assertions when updating successors. 2019-11-24 19:37:16 +00:00
LoopLoadElim LoopLoadElim: Respect convergent 2019-06-12 13:50:47 +00:00
LoopPredication [LoopPred] Robustly handle partially unswitched loops 2019-11-21 15:44:36 -08:00
LoopReroll [SCEV] Use NoWrapFlags when expanding a simple mul 2019-06-17 10:05:18 +00:00
LoopRotate [LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it. 2019-08-21 17:00:57 +00:00
LoopSimplify [DebugInfo@O2][LoopVectorize] pr39024: Vectorized code linenos step through loop even after completion 2019-06-19 10:50:47 +00:00
LoopSimplifyCFG
LoopStrengthReduce [NFC][LSR] Avoid undefined grep in pr2570.ll 2019-06-19 16:02:54 +00:00
LoopTransformWarning
LoopUnroll [InstCombine] Revert rL341831: relax one-use check in foldICmpAddConstant() (PR44100) 2019-12-02 18:06:15 +03:00
LoopUnrollAndJam
LoopUnswitch [LoopUnroll+LoopUnswitch] do not transform loops containing callbr 2019-07-15 21:16:29 +00:00
LoopVectorize [LV] Scalar with predication must not be uniform 2019-12-03 19:50:24 +02:00
LoopVersioning LoopVersioning: Respect convergent 2019-06-12 14:05:58 +00:00
LoopVersioningLICM LoopVersioningLICM: Respect convergent and noduplicate 2019-05-29 20:47:59 +00:00
LowerAtomic Transforms: lower fadd and fsub atomicrmw instructions 2019-05-23 17:03:43 +00:00
LowerConstantIntrinsics Reapply r374743 with a fix for the ocaml binding 2019-10-14 16:15:14 +00:00
LowerExpectIntrinsic Reland "clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM" 2019-09-11 16:19:50 +00:00
LowerGuardIntrinsic
LowerInvoke
LowerSwitch Fix a crash when the default of a switch is removed 2019-06-03 17:54:15 +00:00
LowerTypeTests LowerTypeTests: Rename local functions to avoid collisions with identically named functions in ThinLTO modules. 2019-10-03 23:42:44 +00:00
LowerWidenableCondition
MakeGuardsExplicit
Mem2Reg
MemCpyOpt Revert "Revert "As a follow-up to my initial mail to llvm-dev here's a first pass at the O1 described there."" 2019-11-26 20:28:52 -08:00
MergeFunc [IR] Redefine Freeze instruction 2019-11-12 10:49:00 +09:00
MergeICmps [MergeICmps] Make the pass compatible with the new pass manager. 2019-05-23 12:35:26 +00:00
MetaRenamer
NameAnonGlobals
NaryReassociate
NewGVN [NewGVN] Check that call has an access. 2019-10-15 17:25:36 +00:00
ObjCARC llvm/ObjCARC: Eliminate inlined AutoreleaseRV calls 2019-11-19 12:02:01 -08:00
PGOProfile [PGO] Don't group COMDAT variables for compiler generated profile variables in ELF 2019-09-30 18:11:22 +00:00
PartiallyInlineLibCalls
PhaseOrdering Revert "[Attributor] Move pass after InstCombine to futher eliminate null pointer checks" 2019-11-27 22:45:47 +01:00
PlaceSafepoints
PreISelIntrinsicLowering [ObjC] Override TailCallKind when lowering objc intrinsics 2019-11-11 08:30:06 -08:00
PruneEH
Reassociate [DBG][OPT] Attempt to salvage or undef debug info when removing trivially deletable instructions in the Reassociate Expression pass. 2019-11-12 15:17:04 +00:00
Reg2Mem
RewriteStatepointsForGC
SCCP [SCCP] Update condition to avoid overflow. 2019-07-31 18:22:22 +00:00
SLPVectorizer [SLP] Enhance SLPVectorizer to vectorize different combinations of aggregates 2019-12-03 19:29:27 +03:00
SROA [NFC] Precommit test showing SROA loses `!tbaa.struct` metadata 2019-12-02 11:48:01 +03:00
SafeStack [SafeStack] Insert the deref before remaining elements 2019-07-24 00:16:23 +00:00
SampleProfile Keep import function list for inlinee profile update 2019-11-06 18:36:00 -08:00
ScalarizeMaskedMemIntrin/X86 [ScalarizeMaskedMemIntrin] Add test case for expanding scatter. 2019-08-07 23:16:29 +00:00
Scalarizer [Scalarizer] Treat values from unreachable blocks as undef 2019-11-15 11:13:37 +01:00
SeparateConstOffsetFromGEP [lit] Delete empty lines at the end of lit.local.cfg NFC 2019-06-17 09:51:07 +00:00
SimpleLoopUnswitch [MemorySSA] Update for partial unswitch. 2019-10-14 23:52:39 +00:00
SimplifyCFG Broaden the definition of a "widenable branch" 2019-11-21 10:46:16 -08:00
Sink
SpeculateAroundPHIs Ignore indirect branches from callbr. 2019-08-14 16:44:07 +00:00
SpeculativeExecution Support FNeg in SpeculativeExecution pass 2019-05-14 16:51:18 +00:00
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols
StructurizeCFG StructurizeCFG: Relax uniformity checks. 2019-05-24 08:59:17 +00:00
SyntheticCountsPropagation
TailCallElim
ThinLTOBitcodeWriter cfi-icall: Allow the jump table to be optionally made non-canonical. 2019-08-09 22:31:59 +00:00
TypePromotion/ARM [CodeGen] Move ARMCodegenPrepare to TypePromotion 2019-12-03 11:12:52 +00:00
Util [SVFS] Inject TLI Mappings in VFABI attribute. 2019-11-15 18:42:56 +00:00
WholeProgramDevirt IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00