107 lines · plain
1; RUN: opt -vector-library=MASSV -passes=inject-tli-mappings,loop-vectorize -force-vector-interleave=1 -mattr=-altivec -S < %s | FileCheck %s2 3target datalayout = "e-m:e-i64:64-n32:64"4target triple = "powerpc64le-unknown-linux-gnu"5 6declare double @cbrt(double) #07declare float @cbrtf(float) #08 9declare double @atanh(double) #010declare float @atanhf(float) #011 12; MASSV is unsupported for AltiVec.13; Check that massv entries are not generated.14define void @cbrt_f64(ptr nocapture %varray) {15; CHECK-LABEL: @cbrt_f64(16; CHECK-NOT: __cbrtd2{{.*}}<2 x double>17; CHECK: ret void18;19entry:20 br label %for.body21 22for.body:23 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]24 %tmp = trunc i64 %iv to i3225 %conv = sitofp i32 %tmp to double26 %call = tail call double @cbrt(double %conv)27 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv28 store double %call, ptr %arrayidx, align 429 %iv.next = add nuw nsw i64 %iv, 130 %exitcond = icmp eq i64 %iv.next, 100031 br i1 %exitcond, label %for.end, label %for.body32 33for.end:34 ret void35}36 37define void @cbrt_f32(ptr nocapture %varray) {38; CHECK-LABEL: @cbrt_f32(39; CHECK-NOT: __cbrtf4{{.*}}<4 x float>40; CHECK: ret void41;42entry:43 br label %for.body44 45for.body:46 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]47 %tmp = trunc i64 %iv to i3248 %conv = sitofp i32 %tmp to float49 %call = tail call float @cbrtf(float %conv)50 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv51 store float %call, ptr %arrayidx, align 452 %iv.next = add nuw nsw i64 %iv, 153 %exitcond = icmp eq i64 %iv.next, 100054 br i1 %exitcond, label %for.end, label %for.body55 56for.end:57 ret void58}59 60define void @atanh_f64(ptr nocapture %varray) {61; CHECK-LABEL: @atanh_f64(62; CHECK-NOT: __atanhd2{{.*}}<2 x double>63; CHECK: ret void64;65entry:66 br label %for.body67 68for.body:69 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]70 %tmp = trunc i64 %iv to i3271 %conv = sitofp i32 %tmp to double72 %call = tail call double @atanh(double %conv)73 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv74 store double %call, ptr %arrayidx, align 475 %iv.next = add nuw nsw i64 %iv, 176 %exitcond = icmp eq i64 %iv.next, 100077 br i1 %exitcond, label %for.end, label %for.body78 79for.end:80 ret void81}82 83define void @atanh_f32(ptr nocapture %varray) {84; CHECK-LABEL: @atanh_f32(85; CHECK-NOT: __atanhf4{{.*}}<2 x double>86; CHECK: ret void87;88entry:89 br label %for.body90 91for.body:92 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]93 %tmp = trunc i64 %iv to i3294 %conv = sitofp i32 %tmp to float95 %call = tail call float @atanhf(float %conv)96 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv97 store float %call, ptr %arrayidx, align 498 %iv.next = add nuw nsw i64 %iv, 199 %exitcond = icmp eq i64 %iv.next, 1000100 br i1 %exitcond, label %for.end, label %for.body101 102for.end:103 ret void104}105 106attributes #0 = { nounwind }107