[llvm] [LV] Update LoopVectorizationPlanner::emitInvalidCostRemarks to handle reduction plans (PR #165913)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 31 15:44:23 PDT 2025
================
@@ -0,0 +1,159 @@
+; RUN: opt < %s -passes=loop-vectorize -S -pass-remarks=loop-vectorize 2>%t
+; RUN: cat %t | FileCheck --check-prefix=CHECK-REMARKS %s
+
+; CHECK-REMARKS: remark: repro.f90:9:5: vectorized loop (vectorization width: vscale x 2, interleaved count: 2)
+
+; ModuleID = 'FIRModule'
+source_filename = "FIRModule"
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
+target triple = "aarch64-unknown-linux-gnu"
+
+; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) vscale_range(1,16)
+define void @repro_(ptr noalias readonly captures(none) %0, ptr noalias readonly captures(none) %1, ptr noalias captures(none) %2) local_unnamed_addr #0 !dbg !6 {
+ #dbg_declare(ptr %0, !14, !DIExpression(), !15)
+ #dbg_declare(ptr %2, !16, !DIExpression(), !15)
+ #dbg_declare(ptr %1, !17, !DIExpression(), !15)
+ %4 = load i32, ptr %0, align 4, !dbg !18, !tbaa !19
+ %5 = icmp sgt i32 %4, 0, !dbg !18
+ br i1 %5, label %.preheader.preheader, label %._crit_edge, !dbg !18
+
+.preheader.preheader: ; preds = %3
+ %6 = zext nneg i32 %4 to i64, !dbg !18
+ %.pre = load double, ptr %2, align 8, !dbg !25, !tbaa !26
+ %.pre5 = load double, ptr %1, align 8, !dbg !25, !tbaa !28
+ %.phi.trans.insert = getelementptr i8, ptr %2, i64 8
+ %.pre6 = load double, ptr %.phi.trans.insert, align 8, !dbg !25, !tbaa !26
+ %.phi.trans.insert7 = getelementptr i8, ptr %1, i64 8
+ %.pre8 = load double, ptr %.phi.trans.insert7, align 8, !dbg !25, !tbaa !28
+ %.phi.trans.insert9 = getelementptr i8, ptr %2, i64 16
+ %.pre10 = load double, ptr %.phi.trans.insert9, align 8, !dbg !25, !tbaa !26
+ %.phi.trans.insert11 = getelementptr i8, ptr %1, i64 16
+ %.pre12 = load double, ptr %.phi.trans.insert11, align 8, !dbg !25, !tbaa !28
+ %.phi.trans.insert13 = getelementptr i8, ptr %2, i64 24
+ %.pre14 = load double, ptr %.phi.trans.insert13, align 8, !dbg !25, !tbaa !26
+ %.phi.trans.insert15 = getelementptr i8, ptr %1, i64 24
+ %.pre16 = load double, ptr %.phi.trans.insert15, align 8, !dbg !25, !tbaa !28
+ %.phi.trans.insert17 = getelementptr i8, ptr %2, i64 32
+ %.pre18 = load double, ptr %.phi.trans.insert17, align 8, !dbg !25, !tbaa !26
+ %.phi.trans.insert19 = getelementptr i8, ptr %1, i64 32
+ %.pre20 = load double, ptr %.phi.trans.insert19, align 8, !dbg !25, !tbaa !28
+ br label %.preheader, !dbg !30
+
+.preheader: ; preds = %.preheader.preheader, %.preheader
+ %7 = phi double [ %17, %.preheader ], [ %.pre18, %.preheader.preheader ], !dbg !25
----------------
fhahn wrote:
Would be good to use descriptive names for the various blocks and value names
https://github.com/llvm/llvm-project/pull/165913
More information about the llvm-commits
mailing list