xref: /aosp_15_r20/external/llvm/test/Transforms/IndVarSimplify/polynomial-expand.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -indvars -disable-output
2*9880d681SAndroid Build Coastguard Worker; PR5073
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workertarget 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"
5*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-unknown-linux-gnu"
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine void @ctpmv_(float* noalias nocapture %tmp4, i32 %tmp21) nounwind {
8*9880d681SAndroid Build Coastguard Workerbb20:                                             ; preds = %bb19
9*9880d681SAndroid Build Coastguard Worker  br label %bb24
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Workerbb24:                                             ; preds = %bb40, %bb23
12*9880d681SAndroid Build Coastguard Worker  %tmp25 = phi i32 [ %tmp43, %bb40 ], [ %tmp21, %bb20 ] ; <i32> [#uses=4]
13*9880d681SAndroid Build Coastguard Worker  %tmp26 = phi i32 [ %tmp41, %bb40 ], [ undef, %bb20 ] ; <i32> [#uses=2]
14*9880d681SAndroid Build Coastguard Worker  %tmp27 = add nsw i32 %tmp26, -1                 ; <i32> [#uses=1]
15*9880d681SAndroid Build Coastguard Worker  %tmp28 = add nsw i32 %tmp25, -1                 ; <i32> [#uses=2]
16*9880d681SAndroid Build Coastguard Worker  %tmp29 = icmp sgt i32 %tmp28, 0                 ; <i1> [#uses=1]
17*9880d681SAndroid Build Coastguard Worker  br i1 %tmp29, label %bb30, label %bb40
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerbb30:                                             ; preds = %bb30, %bb24
20*9880d681SAndroid Build Coastguard Worker  %tmp31 = phi i32 [ %tmp39, %bb30 ], [ %tmp28, %bb24 ] ; <i32> [#uses=2]
21*9880d681SAndroid Build Coastguard Worker  %tmp32 = phi i32 [ %tmp37, %bb30 ], [ %tmp27, %bb24 ] ; <i32> [#uses=2]
22*9880d681SAndroid Build Coastguard Worker  %tmp33 = sext i32 %tmp32 to i64                 ; <i64> [#uses=1]
23*9880d681SAndroid Build Coastguard Worker  %tmp35 = getelementptr float, float* %tmp4, i64 %tmp33 ; <%0*> [#uses=1]
24*9880d681SAndroid Build Coastguard Worker  %tmp36 = load float, float* %tmp35, align 4               ; <%0> [#uses=0]
25*9880d681SAndroid Build Coastguard Worker  %tmp37 = add nsw i32 %tmp32, -1                 ; <i32> [#uses=1]
26*9880d681SAndroid Build Coastguard Worker  %tmp39 = add nsw i32 %tmp31, -1                 ; <i32> [#uses=1]
27*9880d681SAndroid Build Coastguard Worker  %tmp38 = icmp eq i32 %tmp31, 1                  ; <i1> [#uses=1]
28*9880d681SAndroid Build Coastguard Worker  br i1 %tmp38, label %bb40, label %bb30
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerbb40:                                             ; preds = %bb30, %bb24
31*9880d681SAndroid Build Coastguard Worker  %tmp41 = sub i32 %tmp26, %tmp25                 ; <i32> [#uses=1]
32*9880d681SAndroid Build Coastguard Worker  %tmp43 = add nsw i32 %tmp25, -1                 ; <i32> [#uses=1]
33*9880d681SAndroid Build Coastguard Worker  %tmp42 = icmp eq i32 %tmp25, 1                  ; <i1> [#uses=1]
34*9880d681SAndroid Build Coastguard Worker  br i1 %tmp42, label %bb46, label %bb24
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Workerbb46:                                             ; preds = %bb40, %bb23, %bb19
37*9880d681SAndroid Build Coastguard Worker  ret void
38*9880d681SAndroid Build Coastguard Worker}
39