1 ; RUN: opt %loadPolly %defaultOpts -polly-codegen -enable-polly-vector -dce -S %s | FileCheck %s
2 ; Obtained from C source as:
3 ; clang -S -emit-llvm -O0 fast-math-vect-pr25911.c
4 ; opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars -instnamer fast-math-vect-pr25911.s > fast-math-vect-pr25911.ll
6 ; ModuleID = 'fast-math-vect-pr25911.s'
7 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
8 target triple = "x86_64-unknown-linux-gnu"
10 define float @bessel_Kn_scaled_small_x(i32 %n) nounwind uwtable {
13 %tmp1 = icmp sgt i32 %tmp, 0
14 %smax = select i1 %tmp1, i32 %tmp, i32 0
17 for.cond: ; preds = %for.inc, %entry
18 %indvar = phi i32 [ %indvar.next, %for.inc ], [ 0, %entry ]
19 %k_term.0 = phi float [ undef, %entry ], [ %mul7, %for.inc ]
20 %sum1.0 = phi float [ undef, %entry ], [ %add, %for.inc ]
21 %tmp2 = mul i32 %indvar, -1
22 %sub5 = add i32 %tmp, %tmp2
23 %k.0 = add i32 %indvar, 1
24 %exitcond = icmp eq i32 %indvar, %smax
25 br i1 %exitcond, label %for.end, label %for.body
27 for.body: ; preds = %for.cond
28 %mul = mul nsw i32 %k.0, %sub5
29 %div = sdiv i32 -1, %mul
30 %conv = sitofp i32 %div to float
31 %mul7 = fmul float %k_term.0, %conv
34 for.inc: ; preds = %for.body
35 %add = fadd float %sum1.0, %mul7
36 %indvar.next = add i32 %indvar, 1
39 for.end: ; preds = %for.cond
40 %sum1.0.lcssa = phi float [ %sum1.0, %for.cond ]
41 ret float %sum1.0.lcssa