brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 98203a2 Raw
46 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes="loop-vectorize" -force-vector-interleave=1 -force-vector-width=4 -S < %s | FileCheck %s3 4define void @uitofp_preserve_nneg(ptr %result, i32 %size, float %y) {5; CHECK-LABEL: @uitofp_preserve_nneg(6; CHECK-NEXT:  entry:7; CHECK-NEXT:    br label [[VECTOR_PH:%.*]]8; CHECK:       vector.ph:9; CHECK-NEXT:    [[BROADCAST_SPLATINSERT2:%.*]] = insertelement <4 x float> poison, float [[Y:%.*]], i64 010; CHECK-NEXT:    [[BROADCAST_SPLAT3:%.*]] = shufflevector <4 x float> [[BROADCAST_SPLATINSERT2]], <4 x float> poison, <4 x i32> zeroinitializer11; CHECK-NEXT:    br label [[VECTOR_BODY:%.*]]12; CHECK:       vector.body:13; CHECK-NEXT:    [[INDEX1:%.*]] = phi i32 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]14; CHECK-NEXT:    [[VEC_IND:%.*]] = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[VECTOR_BODY]] ]15; CHECK-NEXT:    [[TMP0:%.*]] = uitofp nneg <4 x i32> [[VEC_IND]] to <4 x float>16; CHECK-NEXT:    [[TMP3:%.*]] = fmul <4 x float> [[TMP0]], [[BROADCAST_SPLAT3]]17; CHECK-NEXT:    [[INDEX:%.*]] = zext nneg i32 [[INDEX1]] to i6418; CHECK-NEXT:    [[TMP2:%.*]] = getelementptr inbounds float, ptr [[RESULT:%.*]], i64 [[INDEX]]19; CHECK-NEXT:    store <4 x float> [[TMP3]], ptr [[TMP2]], align 420; CHECK-NEXT:    [[INDEX_NEXT]] = add nuw i32 [[INDEX1]], 421; CHECK-NEXT:    [[VEC_IND_NEXT]] = add nuw nsw <4 x i32> [[VEC_IND]], splat (i32 4)22; CHECK-NEXT:    [[TMP6:%.*]] = icmp eq i32 [[INDEX_NEXT]], 25623; CHECK-NEXT:    br i1 [[TMP6]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]24; CHECK:       middle.block:25; CHECK-NEXT:    br label [[FOR_BODY:%.*]]26; CHECK:       for.exit:27; CHECK-NEXT:    ret void28;29entry:30  br label %for.body31 32for.body:33  %iv = phi i32 [ 0, %entry ], [ %inc, %for.body ]34  %conv = uitofp nneg i32 %iv to float35  %val = fmul float %conv, %y36  %idxprom = zext nneg i32 %iv to i6437  %arrayidx = getelementptr inbounds float, ptr %result, i64 %idxprom38  store float %val, ptr %arrayidx, align 439  %inc = add nuw nsw i32 %iv, 140  %cmp = icmp slt i32 %inc, 25641  br i1 %cmp, label %for.body, label %for.exit42 43for.exit:44  ret void45}46