brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 78c71fd Raw
63 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -p loop-vectorize -mcpu=z16 -force-target-instruction-cost=1 -S %s | FileCheck %s3 4target triple = "systemz-unknown-linux-unknown"5 6define void @test_scalar_steps_target_instruction_cost(ptr %dst) {7; CHECK-LABEL: define void @test_scalar_steps_target_instruction_cost(8; CHECK-SAME: ptr [[DST:%.*]]) #[[ATTR0:[0-9]+]] {9; CHECK-NEXT:  [[ENTRY:.*:]]10; CHECK-NEXT:    br label %[[VECTOR_PH:.*]]11; CHECK:       [[VECTOR_PH]]:12; CHECK-NEXT:    br label %[[VECTOR_BODY:.*]]13; CHECK:       [[VECTOR_BODY]]:14; CHECK-NEXT:    [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_STORE_CONTINUE2:.*]] ]15; CHECK-NEXT:    [[OFFSET_IDX:%.*]] = mul i64 [[INDEX]], 316; CHECK-NEXT:    [[BROADCAST_SPLATINSERT:%.*]] = insertelement <2 x i64> poison, i64 [[INDEX]], i64 017; CHECK-NEXT:    [[BROADCAST_SPLAT:%.*]] = shufflevector <2 x i64> [[BROADCAST_SPLATINSERT]], <2 x i64> poison, <2 x i32> zeroinitializer18; CHECK-NEXT:    [[VEC_IV:%.*]] = add <2 x i64> [[BROADCAST_SPLAT]], <i64 0, i64 1>19; CHECK-NEXT:    [[TMP0:%.*]] = icmp ule <2 x i64> [[VEC_IV]], splat (i64 8)20; CHECK-NEXT:    [[TMP1:%.*]] = extractelement <2 x i1> [[TMP0]], i32 021; CHECK-NEXT:    br i1 [[TMP1]], label %[[PRED_STORE_IF:.*]], label %[[PRED_STORE_CONTINUE:.*]]22; CHECK:       [[PRED_STORE_IF]]:23; CHECK-NEXT:    [[TMP2:%.*]] = add i64 [[OFFSET_IDX]], 024; CHECK-NEXT:    [[TMP3:%.*]] = getelementptr inbounds i64, ptr [[DST]], i64 [[TMP2]]25; CHECK-NEXT:    store i64 [[TMP2]], ptr [[TMP3]], align 826; CHECK-NEXT:    br label %[[PRED_STORE_CONTINUE]]27; CHECK:       [[PRED_STORE_CONTINUE]]:28; CHECK-NEXT:    [[TMP4:%.*]] = extractelement <2 x i1> [[TMP0]], i32 129; CHECK-NEXT:    br i1 [[TMP4]], label %[[PRED_STORE_IF1:.*]], label %[[PRED_STORE_CONTINUE2]]30; CHECK:       [[PRED_STORE_IF1]]:31; CHECK-NEXT:    [[TMP5:%.*]] = add i64 [[OFFSET_IDX]], 332; CHECK-NEXT:    [[TMP6:%.*]] = getelementptr inbounds i64, ptr [[DST]], i64 [[TMP5]]33; CHECK-NEXT:    store i64 [[TMP5]], ptr [[TMP6]], align 834; CHECK-NEXT:    br label %[[PRED_STORE_CONTINUE2]]35; CHECK:       [[PRED_STORE_CONTINUE2]]:36; CHECK-NEXT:    [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 237; CHECK-NEXT:    [[TMP7:%.*]] = icmp eq i64 [[INDEX_NEXT]], 1038; CHECK-NEXT:    br i1 [[TMP7]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]39; CHECK:       [[MIDDLE_BLOCK]]:40; CHECK-NEXT:    br label %[[EXIT:.*]]41; CHECK:       [[EXIT]]:42; CHECK-NEXT:    ret void43;44entry:45  br label %loop46 47loop:48  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]49  %gep = getelementptr inbounds i64, ptr %dst, i64 %iv50  store i64 %iv, ptr %gep, align 851  %iv.next = add nuw nsw i64 %iv, 352  %cmp = icmp ult i64 %iv, 2253  br i1 %cmp, label %loop, label %exit54 55exit:56  ret void57}58;.59; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}60; CHECK: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}61; CHECK: [[META2]] = !{!"llvm.loop.unroll.runtime.disable"}62;.63