brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 323cce3 Raw
69 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -passes='print<delinearization>' -disable-output 2>&1 2>&1 | FileCheck %s3; void foo (int m, int n, char *A) {4;    for (int i=0; i < m; i++)5;      for(int j=0; j< n; j++)6;        A[i*n+j] += 1;7;}8 9define void @foo(i32 %m, i32 %n, ptr nocapture %A) #0 {10; CHECK-LABEL: 'foo'11; CHECK-NEXT:  Inst: %4 = load i8, ptr %arrayidx.us, align 112; CHECK-NEXT:  AccessFunction: {{\{\{}}0,+,(sext i32 %n to i64)}<nsw><%for.body3.lr.ph.us>,+,1}<nsw><%for.body3.us>13; CHECK-NEXT:  Base offset: %A14; CHECK-NEXT:  ArrayDecl[UnknownSize][(sext i32 %n to i64)] with elements of 1 bytes.15; CHECK-NEXT:  ArrayRef[{0,+,1}<nuw><nsw><%for.body3.lr.ph.us>][{0,+,1}<nuw><nsw><%for.body3.us>]16; CHECK-NEXT:  Delinearization validation: Failed17; CHECK-EMPTY:18; CHECK-NEXT:  Inst: store i8 %add4.us, ptr %arrayidx.us, align 119; CHECK-NEXT:  AccessFunction: {{\{\{}}0,+,(sext i32 %n to i64)}<nsw><%for.body3.lr.ph.us>,+,1}<nsw><%for.body3.us>20; CHECK-NEXT:  Base offset: %A21; CHECK-NEXT:  ArrayDecl[UnknownSize][(sext i32 %n to i64)] with elements of 1 bytes.22; CHECK-NEXT:  ArrayRef[{0,+,1}<nuw><nsw><%for.body3.lr.ph.us>][{0,+,1}<nuw><nsw><%for.body3.us>]23; CHECK-NEXT:  Delinearization validation: Failed24;25entry:26  br label %entry.split27 28entry.split:                                      ; preds = %entry29  %cmp15 = icmp sgt i32 %m, 030  %cmp213 = icmp sgt i32 %n, 031  %or.cond = and i1 %cmp15, %cmp21332  br i1 %or.cond, label %for.cond1.preheader.lr.ph.split.us, label %for.end833 34for.cond1.preheader.lr.ph.split.us:               ; preds = %entry.split35  %0 = add i32 %n, -136  %1 = sext i32 %n to i6437  %2 = add i32 %m, -138  br label %for.body3.lr.ph.us39 40for.body3.us:                                     ; preds = %for.body3.us, %for.body3.lr.ph.us41  %indvars.iv = phi i64 [ 0, %for.body3.lr.ph.us ], [ %indvars.iv.next, %for.body3.us ]42  %3 = add nsw i64 %indvars.iv, %543  %arrayidx.us = getelementptr inbounds i8, ptr %A, i64 %344  %4 = load i8, ptr %arrayidx.us, align 145  %add4.us = add i8 %4, 146  store i8 %add4.us, ptr %arrayidx.us, align 147  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 148  %lftr.wideiv = trunc i64 %indvars.iv to i3249  %exitcond = icmp eq i32 %lftr.wideiv, %050  br i1 %exitcond, label %for.cond1.for.inc6_crit_edge.us, label %for.body3.us51 52for.body3.lr.ph.us:                               ; preds = %for.cond1.for.inc6_crit_edge.us, %for.cond1.preheader.lr.ph.split.us53  %indvars.iv19 = phi i64 [ %indvars.iv.next20, %for.cond1.for.inc6_crit_edge.us ], [ 0, %for.cond1.preheader.lr.ph.split.us ]54  %5 = mul nsw i64 %indvars.iv19, %155  br label %for.body3.us56 57for.cond1.for.inc6_crit_edge.us:                  ; preds = %for.body3.us58  %indvars.iv.next20 = add nuw nsw i64 %indvars.iv19, 159  %lftr.wideiv22 = trunc i64 %indvars.iv19 to i3260  %exitcond23 = icmp eq i32 %lftr.wideiv22, %261  br i1 %exitcond23, label %for.end8.loopexit, label %for.body3.lr.ph.us62 63for.end8.loopexit:                                ; preds = %for.cond1.for.inc6_crit_edge.us64  br label %for.end865 66for.end8:                                         ; preds = %for.end8.loopexit, %entry.split67  ret void68}69