[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / Transforms / LoopVectorize / PowerPC / massv-nobuiltin.ll
blobe7503b615f44a8c2eab3f39dbbb3d7dfb082c514
1 ; RUN: opt -vector-library=MASSV -loop-vectorize -force-vector-interleave=1 -S < %s | FileCheck %s
3 target datalayout = "e-m:e-i64:64-n32:64" 
4 target triple = "powerpc64le-unknown-linux-gnu"
6 declare double @atanh(double) #1
7 declare float @atanhf(float) #1
9 ; Check that functions marked as nobuiltin are not lowered to massv entries.
10 define void @atanh_f64(double* nocapture %varray) {
11 ; CHECK-LABEL: @atanh_f64(
12 ; CHECK-NOT: __atanhd2_massv{{.*}}<2 x double>
13 ; CHECK: ret void
15 entry:
16   br label %for.body
18 for.body:
19   %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
20   %tmp = trunc i64 %iv to i32
21   %conv = sitofp i32 %tmp to double
22   %call = tail call double @atanh(double %conv)
23   %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
24   store double %call, double* %arrayidx, align 4
25   %iv.next = add nuw nsw i64 %iv, 1
26   %exitcond = icmp eq i64 %iv.next, 1000
27   br i1 %exitcond, label %for.end, label %for.body
29 for.end:
30   ret void
33 define void @atanh_f32(float* nocapture %varray) {
34 ; CHECK-LABEL: @atanh_f32(
35 ; CHECK-NOT: __atanhf4_massv{{.*}}<2 x double>
36 ; CHECK: ret void
38 entry:
39   br label %for.body
41 for.body:
42   %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
43   %tmp = trunc i64 %iv to i32
44   %conv = sitofp i32 %tmp to float
45   %call = tail call float @atanhf(float %conv)
46   %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
47   store float %call, float* %arrayidx, align 4
48   %iv.next = add nuw nsw i64 %iv, 1
49   %exitcond = icmp eq i64 %iv.next, 1000
50   br i1 %exitcond, label %for.end, label %for.body
52 for.end:
53   ret void
56 attributes #1 = { nobuiltin nounwind }