[llvm] [MachineScheduler][AArch64] Skip Neoverse V2 Pre-RA MISched for large vector intrinsic codes (PR #139557)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue May 13 02:13:33 PDT 2025
================
@@ -557,6 +576,47 @@ bool MachineSchedulerLegacy::runOnMachineFunction(MachineFunction &MF) {
return false;
}
+ // Try to recognise large hand-written instrinc vector code, and skip the
+ // machine scheduler for this function if the target and TTI hook are okay
+ // with this.
+ const TargetSubtargetInfo &STI = MF.getSubtarget();
+ const MCSchedModel &SchedModel = STI.getSchedModel();
+ auto &TTI = getAnalysis<TargetTransformInfoWrapperPass>().getTTI(MF.getFunction());
+
+ if (TTI.skipPreRASchedLargeVecFunc()) {
+ uint64_t InstructionCount = 0;
+ uint64_t IntrinsicCount = 0;
+ uint64_t VectorTypeCount = 0;
+ for (auto &BB : MF.getFunction()) {
+ for (Instruction &I : BB) {
+ InstructionCount++;
+ if (isa<IntrinsicInst>(I))
+ IntrinsicCount++;
+ Type *T = I.getType();
+ if (T && T->isVectorTy())
+ VectorTypeCount++;
+ }
+ }
----------------
arsenm wrote:
That makes more sense to me, this IR processing is extremely vague as written
https://github.com/llvm/llvm-project/pull/139557
More information about the llvm-commits
mailing list