brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · fb5a5f9 Raw
74 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 42; RUN: opt -mtriple=x86_64-apple-macosx -passes=loop-vectorize,simplifycfg,dce -force-vector-width=2 -force-vector-interleave=1 -S %s | FileCheck %s3 4define void @test_pr55096(i64 %c, ptr %p) {5; CHECK-LABEL: define void @test_pr55096(6; CHECK-SAME: i64 [[C:%.*]], ptr [[P:%.*]]) {7; CHECK-NEXT:  entry:8; CHECK-NEXT:    [[BROADCAST_SPLATINSERT:%.*]] = insertelement <2 x i64> poison, i64 [[C]], i64 09; CHECK-NEXT:    [[BROADCAST_SPLAT:%.*]] = shufflevector <2 x i64> [[BROADCAST_SPLATINSERT]], <2 x i64> poison, <2 x i32> zeroinitializer10; CHECK-NEXT:    br label [[VECTOR_BODY:%.*]]11; CHECK:       vector.body:12; CHECK-NEXT:    [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH:%.*]] ], [ [[INDEX_NEXT:%.*]], [[PRED_STORE_CONTINUE2:%.*]] ]13; CHECK-NEXT:    [[VEC_IND:%.*]] = phi <2 x i64> [ <i64 122, i64 123>, [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[PRED_STORE_CONTINUE2]] ]14; CHECK-NEXT:    [[DOTCAST:%.*]] = trunc i64 [[INDEX]] to i1615; CHECK-NEXT:    [[TMP0:%.*]] = mul i16 [[DOTCAST]], 200816; CHECK-NEXT:    [[OFFSET_IDX:%.*]] = add i16 6229, [[TMP0]]17; CHECK-NEXT:    [[TMP2:%.*]] = icmp uge <2 x i64> [[VEC_IND]], [[BROADCAST_SPLAT]]18; CHECK-NEXT:    [[TMP3:%.*]] = extractelement <2 x i1> [[TMP2]], i32 019; CHECK-NEXT:    br i1 [[TMP3]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTINUE:%.*]]20; CHECK:       pred.store.if:21; CHECK-NEXT:    [[TMP4:%.*]] = add i16 [[OFFSET_IDX]], 022; CHECK-NEXT:    [[TMP5:%.*]] = add i16 [[TMP4]], 200823; CHECK-NEXT:    [[TMP6:%.*]] = udiv i16 4943, [[TMP5]]24; CHECK-NEXT:    [[TMP7:%.*]] = getelementptr inbounds i16, ptr [[P]], i16 [[TMP6]]25; CHECK-NEXT:    store i16 0, ptr [[TMP7]], align 226; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE]]27; CHECK:       pred.store.continue:28; CHECK-NEXT:    [[TMP9:%.*]] = extractelement <2 x i1> [[TMP2]], i32 129; CHECK-NEXT:    br i1 [[TMP9]], label [[PRED_STORE_IF1:%.*]], label [[PRED_STORE_CONTINUE2]]30; CHECK:       pred.store.if1:31; CHECK-NEXT:    [[TMP10:%.*]] = add i16 [[OFFSET_IDX]], 200832; CHECK-NEXT:    [[TMP11:%.*]] = add i16 [[TMP10]], 200833; CHECK-NEXT:    [[TMP12:%.*]] = udiv i16 4943, [[TMP11]]34; CHECK-NEXT:    [[TMP13:%.*]] = getelementptr inbounds i16, ptr [[P]], i16 [[TMP12]]35; CHECK-NEXT:    store i16 0, ptr [[TMP13]], align 236; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE2]]37; CHECK:       pred.store.continue2:38; CHECK-NEXT:    [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 239; CHECK-NEXT:    [[VEC_IND_NEXT]] = add nuw nsw <2 x i64> [[VEC_IND]], splat (i64 2)40; CHECK-NEXT:    [[TMP15:%.*]] = icmp eq i64 [[INDEX_NEXT]], 34041; CHECK-NEXT:    br i1 [[TMP15]], label [[EXIT:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]42; CHECK:       exit:43; CHECK-NEXT:    ret void44;45entry:46  br label %loop.header47 48loop.header:49  %iv.1 = phi i64 [ 122, %entry ], [ %iv.1.next, %loop.latch ]50  %iv.2 = phi i16 [ 6229, %entry ], [ %iv.2.next, %loop.latch ]51  %iv.2.next = add i16 %iv.2, 200852  %cmp = icmp ult i64 %iv.1, %c53  br i1 %cmp, label %loop.latch, label %loop.then54 55loop.then:56  %div = udiv i16 4943, %iv.2.next57  %gep = getelementptr inbounds i16, ptr %p, i16 %div58  store i16 0, ptr %gep, align 259  br label %loop.latch60 61loop.latch:62  %iv.1.next = add nuw nsw i64 %iv.1, 163  %exitcond.not = icmp eq i64 %iv.1.next, 46264  br i1 %exitcond.not, label %exit, label %loop.header65 66exit:67  ret void68}69;.70; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}71; CHECK: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}72; CHECK: [[META2]] = !{!"llvm.loop.unroll.runtime.disable"}73;.74