xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/2009-11-13-ScavengerAssert2.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=armv7-eabi -mcpu=cortex-a8 < %s
2*9880d681SAndroid Build Coastguard Worker; PR5412
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker%bar = type { %quad, float, float, [3 x %quuz*], [3 x %bar*], [2 x %bar*], [3 x i8], i8 }
5*9880d681SAndroid Build Coastguard Worker%baz = type { %bar*, i32 }
6*9880d681SAndroid Build Coastguard Worker%foo = type { i8, %quux, %quad, float, [64 x %quuz], [128 x %bar], i32, %baz, %baz }
7*9880d681SAndroid Build Coastguard Worker%quad = type { [4 x float] }
8*9880d681SAndroid Build Coastguard Worker%quux = type { [4 x %quuz*], [4 x float], i32 }
9*9880d681SAndroid Build Coastguard Worker%quuz = type { %quad, %quad }
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Workerdefine arm_aapcs_vfpcc %bar* @aaa(%foo* nocapture %this, %quuz* %a, %quuz* %b, %quuz* %c, i8 zeroext %forced) {
12*9880d681SAndroid Build Coastguard Workerentry:
13*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %bb85, label %bb
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerbb:                                               ; preds = %entry
16*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %bb3.i, label %bb2.i
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerbb2.i:                                            ; preds = %bb
19*9880d681SAndroid Build Coastguard Worker  br label %bb3.i
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerbb3.i:                                            ; preds = %bb2.i, %bb
22*9880d681SAndroid Build Coastguard Worker  %0 = getelementptr inbounds %quuz, %quuz* %a, i32 0, i32 1, i32 0, i32 0 ; <float*> [#uses=0]
23*9880d681SAndroid Build Coastguard Worker  %1 = fsub float 0.000000e+00, undef             ; <float> [#uses=1]
24*9880d681SAndroid Build Coastguard Worker  %2 = getelementptr inbounds %quuz, %quuz* %b, i32 0, i32 1, i32 0, i32 1 ; <float*> [#uses=2]
25*9880d681SAndroid Build Coastguard Worker  %3 = load float, float* %2, align 4                    ; <float> [#uses=1]
26*9880d681SAndroid Build Coastguard Worker  %4 = getelementptr inbounds %quuz, %quuz* %a, i32 0, i32 1, i32 0, i32 1 ; <float*> [#uses=1]
27*9880d681SAndroid Build Coastguard Worker  %5 = fsub float %3, undef                       ; <float> [#uses=2]
28*9880d681SAndroid Build Coastguard Worker  %6 = getelementptr inbounds %quuz, %quuz* %b, i32 0, i32 1, i32 0, i32 2 ; <float*> [#uses=2]
29*9880d681SAndroid Build Coastguard Worker  %7 = load float, float* %6, align 4                    ; <float> [#uses=1]
30*9880d681SAndroid Build Coastguard Worker  %8 = fsub float %7, undef                       ; <float> [#uses=1]
31*9880d681SAndroid Build Coastguard Worker  %9 = getelementptr inbounds %quuz, %quuz* %c, i32 0, i32 1, i32 0, i32 0 ; <float*> [#uses=2]
32*9880d681SAndroid Build Coastguard Worker  %10 = load float, float* %9, align 4                   ; <float> [#uses=1]
33*9880d681SAndroid Build Coastguard Worker  %11 = fsub float %10, undef                     ; <float> [#uses=2]
34*9880d681SAndroid Build Coastguard Worker  %12 = getelementptr inbounds %quuz, %quuz* %c, i32 0, i32 1, i32 0, i32 1 ; <float*> [#uses=2]
35*9880d681SAndroid Build Coastguard Worker  %13 = load float, float* %12, align 4                  ; <float> [#uses=1]
36*9880d681SAndroid Build Coastguard Worker  %14 = fsub float %13, undef                     ; <float> [#uses=1]
37*9880d681SAndroid Build Coastguard Worker  %15 = load float, float* undef, align 4                ; <float> [#uses=1]
38*9880d681SAndroid Build Coastguard Worker  %16 = fsub float %15, undef                     ; <float> [#uses=1]
39*9880d681SAndroid Build Coastguard Worker  %17 = fmul float %5, %16                        ; <float> [#uses=1]
40*9880d681SAndroid Build Coastguard Worker  %18 = fsub float %17, 0.000000e+00              ; <float> [#uses=5]
41*9880d681SAndroid Build Coastguard Worker  %19 = fmul float %8, %11                        ; <float> [#uses=1]
42*9880d681SAndroid Build Coastguard Worker  %20 = fsub float %19, undef                     ; <float> [#uses=3]
43*9880d681SAndroid Build Coastguard Worker  %21 = fmul float %1, %14                        ; <float> [#uses=1]
44*9880d681SAndroid Build Coastguard Worker  %22 = fmul float %5, %11                        ; <float> [#uses=1]
45*9880d681SAndroid Build Coastguard Worker  %23 = fsub float %21, %22                       ; <float> [#uses=2]
46*9880d681SAndroid Build Coastguard Worker  store float %18, float* undef
47*9880d681SAndroid Build Coastguard Worker  %24 = getelementptr inbounds %bar, %bar* null, i32 0, i32 0, i32 0, i32 1 ; <float*> [#uses=2]
48*9880d681SAndroid Build Coastguard Worker  store float %20, float* %24
49*9880d681SAndroid Build Coastguard Worker  store float %23, float* undef
50*9880d681SAndroid Build Coastguard Worker  %25 = getelementptr inbounds %bar, %bar* null, i32 0, i32 0, i32 0, i32 3 ; <float*> [#uses=0]
51*9880d681SAndroid Build Coastguard Worker  %26 = fmul float %18, %18                       ; <float> [#uses=1]
52*9880d681SAndroid Build Coastguard Worker  %27 = fadd float %26, undef                     ; <float> [#uses=1]
53*9880d681SAndroid Build Coastguard Worker  %28 = fadd float %27, undef                     ; <float> [#uses=1]
54*9880d681SAndroid Build Coastguard Worker  %29 = call arm_aapcs_vfpcc  float @sqrtf(float %28) readnone ; <float> [#uses=1]
55*9880d681SAndroid Build Coastguard Worker  %30 = load float, float* null, align 4                 ; <float> [#uses=2]
56*9880d681SAndroid Build Coastguard Worker  %31 = load float, float* %4, align 4                   ; <float> [#uses=2]
57*9880d681SAndroid Build Coastguard Worker  %32 = load float, float* %2, align 4                   ; <float> [#uses=2]
58*9880d681SAndroid Build Coastguard Worker  %33 = load float, float* null, align 4                 ; <float> [#uses=3]
59*9880d681SAndroid Build Coastguard Worker  %34 = load float, float* %6, align 4                   ; <float> [#uses=2]
60*9880d681SAndroid Build Coastguard Worker  %35 = fsub float %33, %34                       ; <float> [#uses=2]
61*9880d681SAndroid Build Coastguard Worker  %36 = fmul float %20, %35                       ; <float> [#uses=1]
62*9880d681SAndroid Build Coastguard Worker  %37 = fsub float %36, undef                     ; <float> [#uses=1]
63*9880d681SAndroid Build Coastguard Worker  %38 = fmul float %23, 0.000000e+00              ; <float> [#uses=1]
64*9880d681SAndroid Build Coastguard Worker  %39 = fmul float %18, %35                       ; <float> [#uses=1]
65*9880d681SAndroid Build Coastguard Worker  %40 = fsub float %38, %39                       ; <float> [#uses=1]
66*9880d681SAndroid Build Coastguard Worker  %41 = fmul float %18, 0.000000e+00              ; <float> [#uses=1]
67*9880d681SAndroid Build Coastguard Worker  %42 = fmul float %20, 0.000000e+00              ; <float> [#uses=1]
68*9880d681SAndroid Build Coastguard Worker  %43 = fsub float %41, %42                       ; <float> [#uses=1]
69*9880d681SAndroid Build Coastguard Worker  %44 = fmul float 0.000000e+00, %37              ; <float> [#uses=1]
70*9880d681SAndroid Build Coastguard Worker  %45 = fmul float %31, %40                       ; <float> [#uses=1]
71*9880d681SAndroid Build Coastguard Worker  %46 = fadd float %44, %45                       ; <float> [#uses=1]
72*9880d681SAndroid Build Coastguard Worker  %47 = fmul float %33, %43                       ; <float> [#uses=1]
73*9880d681SAndroid Build Coastguard Worker  %48 = fadd float %46, %47                       ; <float> [#uses=2]
74*9880d681SAndroid Build Coastguard Worker  %49 = load float, float* %9, align 4                   ; <float> [#uses=2]
75*9880d681SAndroid Build Coastguard Worker  %50 = fsub float %30, %49                       ; <float> [#uses=1]
76*9880d681SAndroid Build Coastguard Worker  %51 = load float, float* %12, align 4                  ; <float> [#uses=3]
77*9880d681SAndroid Build Coastguard Worker  %52 = fsub float %32, %51                       ; <float> [#uses=2]
78*9880d681SAndroid Build Coastguard Worker  %53 = load float, float* undef, align 4                ; <float> [#uses=2]
79*9880d681SAndroid Build Coastguard Worker  %54 = load float, float* %24, align 4                  ; <float> [#uses=2]
80*9880d681SAndroid Build Coastguard Worker  %55 = fmul float %54, undef                     ; <float> [#uses=1]
81*9880d681SAndroid Build Coastguard Worker  %56 = fmul float undef, %52                     ; <float> [#uses=1]
82*9880d681SAndroid Build Coastguard Worker  %57 = fsub float %55, %56                       ; <float> [#uses=1]
83*9880d681SAndroid Build Coastguard Worker  %58 = fmul float undef, %52                     ; <float> [#uses=1]
84*9880d681SAndroid Build Coastguard Worker  %59 = fmul float %54, %50                       ; <float> [#uses=1]
85*9880d681SAndroid Build Coastguard Worker  %60 = fsub float %58, %59                       ; <float> [#uses=1]
86*9880d681SAndroid Build Coastguard Worker  %61 = fmul float %30, %57                       ; <float> [#uses=1]
87*9880d681SAndroid Build Coastguard Worker  %62 = fmul float %32, 0.000000e+00              ; <float> [#uses=1]
88*9880d681SAndroid Build Coastguard Worker  %63 = fadd float %61, %62                       ; <float> [#uses=1]
89*9880d681SAndroid Build Coastguard Worker  %64 = fmul float %34, %60                       ; <float> [#uses=1]
90*9880d681SAndroid Build Coastguard Worker  %65 = fadd float %63, %64                       ; <float> [#uses=2]
91*9880d681SAndroid Build Coastguard Worker  %66 = fcmp olt float %48, %65                   ; <i1> [#uses=1]
92*9880d681SAndroid Build Coastguard Worker  %67 = fsub float %49, 0.000000e+00              ; <float> [#uses=1]
93*9880d681SAndroid Build Coastguard Worker  %68 = fsub float %51, %31                       ; <float> [#uses=1]
94*9880d681SAndroid Build Coastguard Worker  %69 = fsub float %53, %33                       ; <float> [#uses=1]
95*9880d681SAndroid Build Coastguard Worker  %70 = fmul float undef, %67                     ; <float> [#uses=1]
96*9880d681SAndroid Build Coastguard Worker  %71 = load float, float* undef, align 4                ; <float> [#uses=2]
97*9880d681SAndroid Build Coastguard Worker  %72 = fmul float %71, %69                       ; <float> [#uses=1]
98*9880d681SAndroid Build Coastguard Worker  %73 = fsub float %70, %72                       ; <float> [#uses=1]
99*9880d681SAndroid Build Coastguard Worker  %74 = fmul float %71, %68                       ; <float> [#uses=1]
100*9880d681SAndroid Build Coastguard Worker  %75 = fsub float %74, 0.000000e+00              ; <float> [#uses=1]
101*9880d681SAndroid Build Coastguard Worker  %76 = fmul float %51, %73                       ; <float> [#uses=1]
102*9880d681SAndroid Build Coastguard Worker  %77 = fadd float undef, %76                     ; <float> [#uses=1]
103*9880d681SAndroid Build Coastguard Worker  %78 = fmul float %53, %75                       ; <float> [#uses=1]
104*9880d681SAndroid Build Coastguard Worker  %79 = fadd float %77, %78                       ; <float> [#uses=1]
105*9880d681SAndroid Build Coastguard Worker  %80 = select i1 %66, float %48, float %65       ; <float> [#uses=1]
106*9880d681SAndroid Build Coastguard Worker  %81 = select i1 undef, float %80, float %79     ; <float> [#uses=1]
107*9880d681SAndroid Build Coastguard Worker  %iftmp.164.0 = select i1 undef, float %29, float 1.000000e+00 ; <float> [#uses=1]
108*9880d681SAndroid Build Coastguard Worker  %82 = fdiv float %81, %iftmp.164.0              ; <float> [#uses=1]
109*9880d681SAndroid Build Coastguard Worker  %iftmp.165.0 = select i1 undef, float %82, float 0.000000e+00 ; <float> [#uses=1]
110*9880d681SAndroid Build Coastguard Worker  store float %iftmp.165.0, float* undef, align 4
111*9880d681SAndroid Build Coastguard Worker  br i1 false, label %bb4.i97, label %ccc.exit98
112*9880d681SAndroid Build Coastguard Worker
113*9880d681SAndroid Build Coastguard Workerbb4.i97:                                          ; preds = %bb3.i
114*9880d681SAndroid Build Coastguard Worker  br label %ccc.exit98
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Workerccc.exit98:                                       ; preds = %bb4.i97, %bb3.i
117*9880d681SAndroid Build Coastguard Worker  ret %bar* null
118*9880d681SAndroid Build Coastguard Worker
119*9880d681SAndroid Build Coastguard Workerbb85:                                             ; preds = %entry
120*9880d681SAndroid Build Coastguard Worker  ret %bar* null
121*9880d681SAndroid Build Coastguard Worker}
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Workerdeclare arm_aapcs_vfpcc float @sqrtf(float) readnone
124