llvm-project/llvm/lib/Target/AArch64
zhongyunde 4a549be9c3 [AArch64] Lower multiplication by a negative constant to shl+sub+shl
Change the costmodel to lower a = b * C where C = -(2^n - 2^m) to
            lsl     w8, w0, m
            sub     w0, w8, w0, lsl n
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D134934
2022-10-01 21:27:42 +08:00
..
AsmParser Revert "Use std::is_same_v instead of std::is_same (NFC)" 2022-08-20 23:00:39 -07:00
Disassembler [llvm] Qualify auto in range-based for loops (NFC) 2022-08-13 12:55:42 -07:00
GISel [AArch64][GlobalISel] Implement another combine for shufflevector->AArch64 G_EXT. 2022-09-29 22:53:24 +01:00
MCTargetDesc [AArch64InstPrinter] Introduce register markup tags emission 2022-09-13 20:52:02 -07:00
TargetInfo
Utils [AArch64][SME] Add utility class for handling SME attributes. 2022-09-12 12:41:30 +00:00
AArch64.h KCFI sanitizer 2022-08-24 22:41:38 +00:00
AArch64.td [AArch64] Add Neoverse V2 CPU support 2022-09-27 07:56:08 +00:00
AArch64A53Fix835769.cpp Fix warnings about variables that are set but only used in debug mode 2022-04-06 10:01:46 +03:00
AArch64A57FPLoadBalancing.cpp
AArch64AdvSIMDScalarPass.cpp
AArch64AsmPrinter.cpp Revert "Revert "[clang, llvm] Add __declspec(safebuffers), support it in CodeView"" 2022-09-16 19:39:48 +00:00
AArch64BranchTargets.cpp
AArch64CallingConvention.cpp
AArch64CallingConvention.h [ARM64EC 4/?] Add LLVM support for varargs calling convention. 2022-09-05 13:05:48 -07:00
AArch64CallingConvention.td [AArch64][SME] Implement ABI for calls to/from streaming functions. 2022-09-16 14:07:47 +00:00
AArch64CleanupLocalDynamicTLSPass.cpp
AArch64CollectLOH.cpp [llvm] Call *set::insert without checking membership first (NFC) 2022-06-18 10:17:22 -07:00
AArch64Combine.td [GlobalISel] Combine select + fcmp to fminnum/fmaxnum/fminimum/fmaximum 2022-09-16 13:35:46 -07:00
AArch64CompressJumpTables.cpp
AArch64CondBrTuning.cpp [llvm] LLVM_FALLTHROUGH => [[fallthrough]]. NFC 2022-08-08 11:24:15 -07:00
AArch64ConditionOptimizer.cpp [Target] Qualify auto in range-based for loops (NFC) 2022-08-28 17:35:09 -07:00
AArch64ConditionalCompares.cpp [llvm] Don't including SetVector.h (NFC) 2022-09-17 12:36:43 -07:00
AArch64DeadRegisterDefinitionsPass.cpp
AArch64ExpandImm.cpp
AArch64ExpandImm.h
AArch64ExpandPseudoInsts.cpp [AArch64][SME] Implement ABI for calls from streaming-compatible functions. 2022-09-16 14:48:37 +00:00
AArch64FalkorHWPFFix.cpp [Target] use getSubtarget<> instead of static_cast<>(getSubtarget()) 2022-05-26 11:22:41 -07:00
AArch64FastISel.cpp [FastISel] Propagate PCSections metadata to MachineInstr 2022-09-07 11:36:01 +02:00
AArch64FrameLowering.cpp AArch64: Don't use RETA[AB] when ShadowCallStack is enabled. 2022-09-30 12:33:23 -07:00
AArch64FrameLowering.h [Target] Remove unused forward declarations (NFC) 2022-08-07 00:16:16 -07:00
AArch64GenRegisterBankInfo.def
AArch64ISelDAGToDAG.cpp [SVE] Fix SVEDup0 matching -0.0f 2022-08-30 11:07:17 -07:00
AArch64ISelLowering.cpp [AArch64] Lower multiplication by a negative constant to shl+sub+shl 2022-10-01 21:27:42 +08:00
AArch64ISelLowering.h [AArch64] Add support for 128-bit non temporal loads. 2022-09-30 11:04:04 +01:00
AArch64InstrAtomics.td GlobalISel: Allow forming atomic/volatile G_ZEXTLOAD 2022-07-08 11:55:08 -04:00
AArch64InstrFormats.td [TableGen][CodeEmitterGen] Allow local names for sub-operands in a operand list. 2022-09-24 09:40:44 -04:00
AArch64InstrGISel.td [AArch64][GlobalISel] Add a target-specific G_BIT opcode. 2022-09-28 15:48:35 -07:00
AArch64InstrInfo.cpp [AArch64] Use fast-math-flags in isAssociativeAndCommutative 2022-09-19 11:34:00 +01:00
AArch64InstrInfo.h [MachineScheduler] Order more stores by ascending address 2022-06-13 17:33:50 +08:00
AArch64InstrInfo.td [AArch64] Add support for 128-bit non temporal loads. 2022-09-30 11:04:04 +01:00
AArch64KCFI.cpp KCFI sanitizer 2022-08-24 22:41:38 +00:00
AArch64LoadStoreOptimizer.cpp Remove redundant initialization of Optional (NFC) 2022-08-20 21:18:28 -07:00
AArch64LowerHomogeneousPrologEpilog.cpp
AArch64MCInstLower.cpp
AArch64MCInstLower.h
AArch64MIPeepholeOpt.cpp [llvm] Don't including SetVector.h (NFC) 2022-09-17 12:36:43 -07:00
AArch64MachineFunctionInfo.cpp [llvm] Don't use Optional::hasValue (NFC) 2022-06-20 10:38:12 -07:00
AArch64MachineFunctionInfo.h [ARM64EC 4/?] Add LLVM support for varargs calling convention. 2022-09-05 13:05:48 -07:00
AArch64MachineScheduler.cpp [llvm] LLVM_FALLTHROUGH => [[fallthrough]]. NFC 2022-08-08 11:24:15 -07:00
AArch64MachineScheduler.h [AArch64] Order STP Q's by ascending address 2022-05-23 09:50:44 +01:00
AArch64MacroFusion.cpp [AArch64] Split fuse-literals feature 2022-04-11 05:27:11 +00:00
AArch64MacroFusion.h
AArch64PBQPRegAlloc.cpp
AArch64PBQPRegAlloc.h
AArch64PerfectShuffle.h [AArch64] Teach perfect shuffles tables about D-lane movs 2022-05-17 18:16:45 +01:00
AArch64PfmCounters.td
AArch64PromoteConstant.cpp
AArch64RedundantCopyElimination.cpp [llvm] LLVM_FALLTHROUGH => [[fallthrough]]. NFC 2022-08-08 11:24:15 -07:00
AArch64RegisterBanks.td
AArch64RegisterInfo.cpp [AArch64][SME] Implement ABI for calls to/from streaming functions. 2022-09-16 14:07:47 +00:00
AArch64RegisterInfo.h [AArch64][SME] Implement ABI for calls to/from streaming functions. 2022-09-16 14:07:47 +00:00
AArch64RegisterInfo.td [AArch64][SME] Implement ABI for calls to/from streaming functions. 2022-09-16 14:07:47 +00:00
AArch64SIMDInstrOpt.cpp [llvm] Qualify auto in range-based for loops (NFC) 2022-08-13 12:55:42 -07:00
AArch64SLSHardening.cpp [NFC][CodeGen] Rename some functions in MachineInstr.h and remove duplicated comments 2022-03-16 20:25:42 +08:00
AArch64SMEInstrInfo.td [AArch64][SME] Implement ABI for calls from streaming-compatible functions. 2022-09-16 14:48:37 +00:00
AArch64SVEInstrInfo.td [AArch64][SVE] Extend LD1RQ ISel patterns to cover missing addressing modes 2022-08-25 13:07:37 +00:00
AArch64SchedA53.td [AArch64] Initial sched model for Neoverse N2 2022-07-08 09:39:13 +00:00
AArch64SchedA55.td [AArch64] Initial sched model for Neoverse N2 2022-07-08 09:39:13 +00:00
AArch64SchedA57.td [AArch64][NFC] Drop 'V' from ASIMD FP convert, other, D/Q-form regex 2022-07-14 09:32:20 +00:00
AArch64SchedA57WriteRes.td
AArch64SchedA64FX.td [AArch64] Fix and add A64FX scheduling resource/latency info 2022-08-09 10:53:40 +09:00
AArch64SchedAmpere1.td [AArch64] Initial sched model for Neoverse N2 2022-07-08 09:39:13 +00:00
AArch64SchedCyclone.td [AArch64] Initial sched model for Neoverse N2 2022-07-08 09:39:13 +00:00
AArch64SchedExynosM3.td [AArch64] Initial sched model for Neoverse N2 2022-07-08 09:39:13 +00:00
AArch64SchedExynosM4.td [AArch64] Initial sched model for Neoverse N2 2022-07-08 09:39:13 +00:00
AArch64SchedExynosM5.td [AArch64] Initial sched model for Neoverse N2 2022-07-08 09:39:13 +00:00
AArch64SchedFalkor.td [AArch64] Initial sched model for Neoverse N2 2022-07-08 09:39:13 +00:00
AArch64SchedFalkorDetails.td
AArch64SchedKryo.td [AArch64] Initial sched model for Neoverse N2 2022-07-08 09:39:13 +00:00
AArch64SchedKryoDetails.td
AArch64SchedNeoverseN2.td [AArch64] Initial sched model for Neoverse N2 2022-07-08 09:39:13 +00:00
AArch64SchedPredAmpere.td [AArch64] Support for Ampere1 core 2022-05-03 15:54:02 +01:00
AArch64SchedPredExynos.td [AArch64][SchedModels] Handle virtual registers in FP/NEON predicates 2022-02-17 13:41:05 +03:00
AArch64SchedPredicates.td [AArch64] Support for Ampere1 core 2022-05-03 15:54:02 +01:00
AArch64SchedTSV110.td [AArch64] Fix sched model for tsv110 2022-08-25 19:20:07 +08:00
AArch64SchedThunderX.td [AArch64] Initial sched model for Neoverse N2 2022-07-08 09:39:13 +00:00
AArch64SchedThunderX2T99.td [AArch64] Initial sched model for Neoverse N2 2022-07-08 09:39:13 +00:00
AArch64SchedThunderX3T110.td [AArch64] Initial sched model for Neoverse N2 2022-07-08 09:39:13 +00:00
AArch64Schedule.td
AArch64SelectionDAGInfo.cpp [clang] Add support for __builtin_memset_inline 2022-06-10 13:13:59 +00:00
AArch64SelectionDAGInfo.h [clang] Add support for __builtin_memset_inline 2022-06-10 13:13:59 +00:00
AArch64SpeculationHardening.cpp [Target] Qualify auto in range-based for loops (NFC) 2022-08-28 17:35:09 -07:00
AArch64StackTagging.cpp [MTE] [HWASan] unify isInterestingAlloca 2022-09-28 15:52:34 -07:00
AArch64StackTaggingPreRA.cpp Remove unneeded cl::ZeroOrMore for cl::opt/cl::list options 2022-06-05 00:31:44 -07:00
AArch64StorePairSuppress.cpp
AArch64Subtarget.cpp [AArch64] Add Neoverse V2 CPU support 2022-09-27 07:56:08 +00:00
AArch64Subtarget.h [AArch64] Add Neoverse V2 CPU support 2022-09-27 07:56:08 +00:00
AArch64SystemOperands.td [AArch64] Add target feature "all" 2022-06-30 10:37:58 -07:00
AArch64TargetMachine.cpp KCFI sanitizer 2022-08-24 22:41:38 +00:00
AArch64TargetMachine.h mark getTargetTransformInfo and getTargetIRAnalysis as const 2022-02-25 14:30:44 -05:00
AArch64TargetObjectFile.cpp
AArch64TargetObjectFile.h
AArch64TargetTransformInfo.cpp Revert "[AARCH64][CostModel] Modified the cost of mask vector load/store" 2022-09-28 15:35:13 +01:00
AArch64TargetTransformInfo.h Move TargetTransformInfo::maxLegalDivRemBitWidth -> TargetLowering::maxSupportedDivRemBitWidth 2022-09-12 17:06:16 +01:00
CMakeLists.txt KCFI sanitizer 2022-08-24 22:41:38 +00:00
SMEInstrFormats.td [AArch64][SME] Add SME addha/va intrinsics 2022-07-05 09:47:17 +01:00
SVEInstrFormats.td [AArch64][SVE] Remove redundant ptest after match/nmatch 2022-09-28 08:23:23 +00:00
SVEIntrinsicOpts.cpp [IR] Move vector.insert/vector.extract out of experimental namespace 2022-06-27 10:48:45 +00:00