brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.8 KiB · 0792e81 Raw
126 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt "-passes=print<scalar-evolution>,loop-unroll-and-jam" -verify-scev -S < %s | FileCheck %s3 4; Checks that we forget scalar evolution loops and dispositions, which allows5; scalar evolution to verify successfully. `print<scalar-evolution>` is needed6; to populate SCEV caches.7 8target datalayout = "e-m:e-i64:64-p:64:64-n32:64-S128-v256:256:256-v512:512:512"9 10define dso_local void @main() {11; CHECK-LABEL: @main(12; CHECK-NEXT:  entry:13; CHECK-NEXT:    [[X:%.*]] = alloca [216 x float], align 414; CHECK-NEXT:    [[Y:%.*]] = alloca [216 x float], align 415; CHECK-NEXT:    [[X_IX_DIM_0:%.*]] = getelementptr i8, ptr [[X]], i64 -5216; CHECK-NEXT:    [[Y_IX_DIM_0:%.*]] = getelementptr i8, ptr [[Y]], i64 -5217; CHECK-NEXT:    br label [[OUTER_HEADER:%.*]]18; CHECK:       outer.header:19; CHECK-NEXT:    [[X_IX_DIM_1:%.*]] = getelementptr i8, ptr [[X_IX_DIM_0]], i64 2020; CHECK-NEXT:    [[Y_IX_DIM_1:%.*]] = getelementptr i8, ptr [[Y_IX_DIM_0]], i64 421; CHECK-NEXT:    [[X_IX_DIM_1_1:%.*]] = getelementptr i8, ptr [[X_IX_DIM_0]], i64 2022; CHECK-NEXT:    [[Y_IX_DIM_1_1:%.*]] = getelementptr i8, ptr [[Y_IX_DIM_0]], i64 823; CHECK-NEXT:    [[X_IX_DIM_1_2:%.*]] = getelementptr i8, ptr [[X_IX_DIM_0]], i64 2024; CHECK-NEXT:    [[Y_IX_DIM_1_2:%.*]] = getelementptr i8, ptr [[Y_IX_DIM_0]], i64 1225; CHECK-NEXT:    [[X_IX_DIM_1_3:%.*]] = getelementptr i8, ptr [[X_IX_DIM_0]], i64 2026; CHECK-NEXT:    [[Y_IX_DIM_1_3:%.*]] = getelementptr i8, ptr [[Y_IX_DIM_0]], i64 1627; CHECK-NEXT:    [[X_IX_DIM_1_4:%.*]] = getelementptr i8, ptr [[X_IX_DIM_0]], i64 2028; CHECK-NEXT:    [[Y_IX_DIM_1_4:%.*]] = getelementptr i8, ptr [[Y_IX_DIM_0]], i64 2029; CHECK-NEXT:    [[X_IX_DIM_1_5:%.*]] = getelementptr i8, ptr [[X_IX_DIM_0]], i64 2030; CHECK-NEXT:    [[Y_IX_DIM_1_5:%.*]] = getelementptr i8, ptr [[Y_IX_DIM_0]], i64 2431; CHECK-NEXT:    br label [[INNER:%.*]]32; CHECK:       inner:33; CHECK-NEXT:    [[INNER_IV_1:%.*]] = phi i64 [ 1, [[OUTER_HEADER]] ], [ 0, [[INNER]] ]34; CHECK-NEXT:    [[INNER_IV:%.*]] = phi i64 [ 1, [[OUTER_HEADER]] ], [ [[INNER_IV_NEXT:%.*]], [[INNER]] ]35; CHECK-NEXT:    [[INNER_IV_1_1:%.*]] = phi i64 [ 1, [[OUTER_HEADER]] ], [ 0, [[INNER]] ]36; CHECK-NEXT:    [[INNER_IV_11:%.*]] = phi i64 [ 1, [[OUTER_HEADER]] ], [ [[INNER_IV_NEXT_1:%.*]], [[INNER]] ]37; CHECK-NEXT:    [[INNER_IV_1_2:%.*]] = phi i64 [ 1, [[OUTER_HEADER]] ], [ 0, [[INNER]] ]38; CHECK-NEXT:    [[INNER_IV_2:%.*]] = phi i64 [ 1, [[OUTER_HEADER]] ], [ [[INNER_IV_NEXT_2:%.*]], [[INNER]] ]39; CHECK-NEXT:    [[INNER_IV_1_3:%.*]] = phi i64 [ 1, [[OUTER_HEADER]] ], [ 0, [[INNER]] ]40; CHECK-NEXT:    [[INNER_IV_3:%.*]] = phi i64 [ 1, [[OUTER_HEADER]] ], [ [[INNER_IV_NEXT_3:%.*]], [[INNER]] ]41; CHECK-NEXT:    [[INNER_IV_1_4:%.*]] = phi i64 [ 1, [[OUTER_HEADER]] ], [ 0, [[INNER]] ]42; CHECK-NEXT:    [[INNER_IV_4:%.*]] = phi i64 [ 1, [[OUTER_HEADER]] ], [ [[INNER_IV_NEXT_4:%.*]], [[INNER]] ]43; CHECK-NEXT:    [[INNER_IV_1_5:%.*]] = phi i64 [ 1, [[OUTER_HEADER]] ], [ 0, [[INNER]] ]44; CHECK-NEXT:    [[INNER_IV_5:%.*]] = phi i64 [ 1, [[OUTER_HEADER]] ], [ [[INNER_IV_NEXT_5:%.*]], [[INNER]] ]45; CHECK-NEXT:    [[_IX_X_LEN:%.*]] = mul nuw nsw i64 [[INNER_IV_1]], 14446; CHECK-NEXT:    [[X_IX_DIM_2:%.*]] = getelementptr i8, ptr [[X_IX_DIM_1]], i64 [[_IX_X_LEN]]47; CHECK-NEXT:    [[Y_IX_DIM_2:%.*]] = getelementptr i8, ptr [[Y_IX_DIM_1]], i64 [[_IX_X_LEN]]48; CHECK-NEXT:    [[_VAL_Y:%.*]] = load float, ptr [[Y_IX_DIM_2]], align 449; CHECK-NEXT:    store float [[_VAL_Y]], ptr [[X_IX_DIM_2]], align 850; CHECK-NEXT:    [[INNER_IV_NEXT]] = add nuw nsw i64 [[INNER_IV]], 151; CHECK-NEXT:    [[_IX_X_LEN_12:%.*]] = mul nuw nsw i64 [[INNER_IV_1_1]], 14452; CHECK-NEXT:    [[X_IX_DIM_2_1:%.*]] = getelementptr i8, ptr [[X_IX_DIM_1_1]], i64 [[_IX_X_LEN_12]]53; CHECK-NEXT:    [[Y_IX_DIM_2_1:%.*]] = getelementptr i8, ptr [[Y_IX_DIM_1_1]], i64 [[_IX_X_LEN_12]]54; CHECK-NEXT:    [[_VAL_Y_1:%.*]] = load float, ptr [[Y_IX_DIM_2_1]], align 455; CHECK-NEXT:    store float [[_VAL_Y_1]], ptr [[X_IX_DIM_2_1]], align 856; CHECK-NEXT:    [[INNER_IV_NEXT_1]] = add nuw nsw i64 [[INNER_IV_11]], 157; CHECK-NEXT:    [[_IX_X_LEN_2:%.*]] = mul nuw nsw i64 [[INNER_IV_1_2]], 14458; CHECK-NEXT:    [[X_IX_DIM_2_2:%.*]] = getelementptr i8, ptr [[X_IX_DIM_1_2]], i64 [[_IX_X_LEN_2]]59; CHECK-NEXT:    [[Y_IX_DIM_2_2:%.*]] = getelementptr i8, ptr [[Y_IX_DIM_1_2]], i64 [[_IX_X_LEN_2]]60; CHECK-NEXT:    [[_VAL_Y_2:%.*]] = load float, ptr [[Y_IX_DIM_2_2]], align 461; CHECK-NEXT:    store float [[_VAL_Y_2]], ptr [[X_IX_DIM_2_2]], align 862; CHECK-NEXT:    [[INNER_IV_NEXT_2]] = add nuw nsw i64 [[INNER_IV_2]], 163; CHECK-NEXT:    [[_IX_X_LEN_3:%.*]] = mul nuw nsw i64 [[INNER_IV_1_3]], 14464; CHECK-NEXT:    [[X_IX_DIM_2_3:%.*]] = getelementptr i8, ptr [[X_IX_DIM_1_3]], i64 [[_IX_X_LEN_3]]65; CHECK-NEXT:    [[Y_IX_DIM_2_3:%.*]] = getelementptr i8, ptr [[Y_IX_DIM_1_3]], i64 [[_IX_X_LEN_3]]66; CHECK-NEXT:    [[_VAL_Y_3:%.*]] = load float, ptr [[Y_IX_DIM_2_3]], align 467; CHECK-NEXT:    store float [[_VAL_Y_3]], ptr [[X_IX_DIM_2_3]], align 868; CHECK-NEXT:    [[INNER_IV_NEXT_3]] = add nuw nsw i64 [[INNER_IV_3]], 169; CHECK-NEXT:    [[_IX_X_LEN_4:%.*]] = mul nuw nsw i64 [[INNER_IV_1_4]], 14470; CHECK-NEXT:    [[X_IX_DIM_2_4:%.*]] = getelementptr i8, ptr [[X_IX_DIM_1_4]], i64 [[_IX_X_LEN_4]]71; CHECK-NEXT:    [[Y_IX_DIM_2_4:%.*]] = getelementptr i8, ptr [[Y_IX_DIM_1_4]], i64 [[_IX_X_LEN_4]]72; CHECK-NEXT:    [[_VAL_Y_4:%.*]] = load float, ptr [[Y_IX_DIM_2_4]], align 473; CHECK-NEXT:    store float [[_VAL_Y_4]], ptr [[X_IX_DIM_2_4]], align 874; CHECK-NEXT:    [[INNER_IV_NEXT_4]] = add nuw nsw i64 [[INNER_IV_4]], 175; CHECK-NEXT:    [[_IX_X_LEN_5:%.*]] = mul nuw nsw i64 [[INNER_IV_1_5]], 14476; CHECK-NEXT:    [[X_IX_DIM_2_5:%.*]] = getelementptr i8, ptr [[X_IX_DIM_1_5]], i64 [[_IX_X_LEN_5]]77; CHECK-NEXT:    [[Y_IX_DIM_2_5:%.*]] = getelementptr i8, ptr [[Y_IX_DIM_1_5]], i64 [[_IX_X_LEN_5]]78; CHECK-NEXT:    [[_VAL_Y_5:%.*]] = load float, ptr [[Y_IX_DIM_2_5]], align 479; CHECK-NEXT:    store float [[_VAL_Y_5]], ptr [[X_IX_DIM_2_5]], align 880; CHECK-NEXT:    [[INNER_IV_NEXT_5]] = add nuw nsw i64 [[INNER_IV_5]], 181; CHECK-NEXT:    [[EXITCOND_NOT_5:%.*]] = icmp eq i64 [[INNER_IV_NEXT_5]], 782; CHECK-NEXT:    br i1 [[EXITCOND_NOT_5]], label [[OUTER_LATCH:%.*]], label [[INNER]]83; CHECK:       outer.latch:84; CHECK-NEXT:    br label [[EXIT:%.*]]85; CHECK:       exit:86; CHECK-NEXT:    ret void87;88entry:89  %x = alloca [216 x float], align 490  %y = alloca [216 x float], align 491  %x_ix_dim_0 = getelementptr i8, ptr %x, i64 -5292  %y_ix_dim_0 = getelementptr i8, ptr %y, i64 -5293  br label %outer.header94 95outer.header:          ; preds = %outer.latch, %entry96  %outer.iv = phi i64 [ 1, %entry ], [ %outer.iv.next, %outer.latch ]97  %_ix_x_len.1 = shl nuw nsw i64 %outer.iv, 298  %x_ix_dim_1 = getelementptr i8, ptr %x_ix_dim_0, i64 2099  %y_ix_dim_1 = getelementptr i8, ptr %y_ix_dim_0, i64 %_ix_x_len.1100  br label %inner101 102inner:                                      ; preds = %inner, %outer.header103  %inner.iv.1 = phi i64 [ 1, %outer.header ], [ 0, %inner ]104  %inner.iv = phi i64 [ 1, %outer.header ], [ %inner.iv.next, %inner ]105  %_ix_x_len = mul nuw nsw i64 %inner.iv.1, 144106  %x_ix_dim_2 = getelementptr i8, ptr %x_ix_dim_1, i64 %_ix_x_len107  %y_ix_dim_2 = getelementptr i8, ptr %y_ix_dim_1, i64 %_ix_x_len108  %_val_y = load float, ptr %y_ix_dim_2, align 4109  %_add_tmp = fadd fast float %_val_y, 0.000000e+00110  store float %_add_tmp, ptr %x_ix_dim_2, align 8111  %inner.iv.next = add nuw nsw i64 %inner.iv, 1112  %exitcond.not = icmp eq i64 %inner.iv.next, 7113  br i1 %exitcond.not, label %outer.latch, label %inner114 115outer.latch:                                    ; preds = %inner116  %outer.iv.next = add nuw nsw i64 %outer.iv, 1117  %exitcond.not.1 = icmp eq i64 %outer.iv.next, 7118  br i1 %exitcond.not.1, label %exit, label %outer.header, !llvm.loop !1119 120exit:                                    ; preds = %outer.latch121  ret void122}123 124!1 = distinct !{!1, !2}125!2 = !{!"llvm.loop.unroll_and_jam.enable"}126