brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 660dc6f Raw
53 lines · plain
1; RUN: opt -S -passes=loop-vectorize < %s 2>&1 -pass-remarks-analysis=.* | FileCheck %s2 3; Test the optimization remark emitter for recognition4; of a mathlib function vs. an arbitrary function.5 6target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"7target triple = "x86_64-apple-macosx10.14.0"8@data = external local_unnamed_addr global [32768 x float], align 169 10; CHECK: loop not vectorized: library call cannot be vectorized11 12define void @libcall_blocks_vectorization() {13entry:14  br label %for.body15 16for.cond.cleanup:17  ret void18 19for.body:20  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]21  %arrayidx = getelementptr inbounds [32768 x float], ptr @data, i64 0, i64 %indvars.iv22  %t0 = load float, ptr %arrayidx, align 423  %sqrtf = tail call float @sqrtf(float %t0)24  store float %sqrtf, ptr %arrayidx, align 425  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 126  %exitcond = icmp eq i64 %indvars.iv.next, 3276827  br i1 %exitcond, label %for.cond.cleanup, label %for.body28}29 30; CHECK: loop not vectorized: call instruction cannot be vectorized31 32define void @arbitrary_call_blocks_vectorization() {33entry:34  br label %for.body35 36for.cond.cleanup:37  ret void38 39for.body:40  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]41  %arrayidx = getelementptr inbounds [32768 x float], ptr @data, i64 0, i64 %indvars.iv42  %t0 = load float, ptr %arrayidx, align 443  %sqrtf = tail call float @arbitrary(float %t0)44  store float %sqrtf, ptr %arrayidx, align 445  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 146  %exitcond = icmp eq i64 %indvars.iv.next, 3276847  br i1 %exitcond, label %for.cond.cleanup, label %for.body48}49 50declare float @sqrtf(float)51declare float @arbitrary(float)52 53