[PATCH] D144719: [ScalarEvolution] Precommit a test

Tiehu Zhang via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 24 03:56:54 PST 2023


TiehuZhang created this revision.
Herald added a project: All.
TiehuZhang requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D144719

Files:
  llvm/test/Analysis/ScalarEvolution/trip-count-implied-offset.ll


Index: llvm/test/Analysis/ScalarEvolution/trip-count-implied-offset.ll
===================================================================
--- /dev/null
+++ llvm/test/Analysis/ScalarEvolution/trip-count-implied-offset.ll
@@ -0,0 +1,69 @@
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
+; RUN: opt < %s "-passes=print<scalar-evolution>" -disable-output -S 2>&1 | FileCheck %s
+
+target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
+target triple = "aarch64-unknown-linux-gnu"
+
+define dso_local void @cal_sparseMV(i32 noundef %nCells, ptr nocapture noundef readonly %x, ptr nocapture noundef writeonly %b, ptr nocapture noundef readonly %values, i32 noundef %max_row_length, ptr nocapture noundef readonly %col_index) local_unnamed_addr {
+; CHECK-LABEL: 'cal_sparseMV'
+; CHECK:       Determining loop execution counts for: @cal_sparseMV
+; CHECK:       Loop %for.body4: backedge-taken count is ({-1,+,(-1 * %max_row_length)}<nw><%for.cond1.preheader> + ({1,+,%max_row_length}<nw><%for.cond1.preheader> smax {%max_row_length,+,%max_row_length}<nw><%for.cond1.preheader>))
+; CHECK:       Loop %for.body4: constant max backedge-taken count is -1
+; CHECK:       Loop %for.body4: symbolic max backedge-taken count is ({-1,+,(-1 * %max_row_length)}<nw><%for.cond1.preheader> + ({1,+,%max_row_length}<nw><%for.cond1.preheader> smax {%max_row_length,+,%max_row_length}<nw><%for.cond1.preheader>))
+; CHECK:       Loop %for.body4: Predicated backedge-taken count is ({-1,+,(-1 * %max_row_length)}<nw><%for.cond1.preheader> + ({1,+,%max_row_length}<nw><%for.cond1.preheader> smax {%max_row_length,+,%max_row_length}<nw><%for.cond1.preheader>))
+;
+entry:
+  %cmp28 = icmp sgt i32 %nCells, 0
+  br i1 %cmp28, label %for.cond1.preheader.preheader, label %for.cond.cleanup
+
+for.cond1.preheader.preheader:                    ; preds = %entry
+  br label %for.cond1.preheader
+
+for.cond1.preheader:                              ; preds = %for.cond1.preheader.preheader, %for.cond.cleanup3
+  %i.030 = phi i32 [ %inc13, %for.cond.cleanup3 ], [ 0, %for.cond1.preheader.preheader ]
+  %value_index.029 = phi i32 [ %add, %for.cond.cleanup3 ], [ 0, %for.cond1.preheader.preheader ]
+  %add = add nsw i32 %value_index.029, %max_row_length
+  %cmp224 = icmp sgt i32 %max_row_length, 0
+  br i1 %cmp224, label %for.body4.preheader, label %for.cond.cleanup3
+
+for.body4.preheader:                              ; preds = %for.cond1.preheader
+  br label %for.body4
+
+for.cond.cleanup.loopexit:                        ; preds = %for.cond.cleanup3
+  br label %for.cond.cleanup
+
+for.cond.cleanup:                                 ; preds = %for.cond.cleanup.loopexit, %entry
+  ret void
+
+for.cond.cleanup3.loopexit:                       ; preds = %for.body4
+  %.lcssa = phi double [ %3, %for.body4 ]
+  br label %for.cond.cleanup3
+
+for.cond.cleanup3:                                ; preds = %for.cond.cleanup3.loopexit, %for.cond1.preheader
+  %temp_value.0.lcssa = phi double [ 0.000000e+00, %for.cond1.preheader ], [ %.lcssa, %for.cond.cleanup3.loopexit ]
+  %idxprom10 = zext i32 %i.030 to i64
+  %arrayidx11 = getelementptr inbounds double, ptr %b, i64 %idxprom10
+  store double %temp_value.0.lcssa, ptr %arrayidx11, align 8
+  %inc13 = add nuw nsw i32 %i.030, 1
+  %cmp = icmp slt i32 %inc13, %nCells
+  br i1 %cmp, label %for.cond1.preheader, label %for.cond.cleanup.loopexit
+
+for.body4:                                        ; preds = %for.body4.preheader, %for.body4
+  %j.026 = phi i32 [ %inc, %for.body4 ], [ %value_index.029, %for.body4.preheader ]
+  %temp_value.025 = phi double [ %3, %for.body4 ], [ 0.000000e+00, %for.body4.preheader ]
+  %idxprom = sext i32 %j.026 to i64
+  %arrayidx = getelementptr inbounds double, ptr %values, i64 %idxprom
+  %0 = load double, ptr %arrayidx, align 8
+  %arrayidx6 = getelementptr inbounds i32, ptr %col_index, i64 %idxprom
+  %1 = load i32, ptr %arrayidx6, align 4
+  %idxprom7 = sext i32 %1 to i64
+  %arrayidx8 = getelementptr inbounds double, ptr %x, i64 %idxprom7
+  %2 = load double, ptr %arrayidx8, align 8
+  %3 = tail call double @llvm.fmuladd.f64(double %0, double %2, double %temp_value.025)
+  %inc = add nsw i32 %j.026, 1
+  %cmp2 = icmp slt i32 %inc, %add
+  br i1 %cmp2, label %for.body4, label %for.cond.cleanup3.loopexit
+}
+
+declare double @llvm.fmuladd.f64(double, double, double)
+


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D144719.500133.patch
Type: text/x-patch
Size: 4408 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230224/2d746dd2/attachment.bin>


More information about the llvm-commits mailing list