xref: /aosp_15_r20/external/llvm/test/CodeGen/MIR/Lanai/peephole-compare.mir (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker# RUN: llc -run-pass=peephole-opt %s -o - | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker# Test the compare fold peephole.
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: test0a
6*9880d681SAndroid Build Coastguard Worker# TODO: Enhance combiner to handle this case. This expands into:
7*9880d681SAndroid Build Coastguard Worker#   sub     %r7, %r6, %r3
8*9880d681SAndroid Build Coastguard Worker#   sub.f   %r7, %r6, %r0
9*9880d681SAndroid Build Coastguard Worker#   sel.eq %r18, %r3, %rv
10*9880d681SAndroid Build Coastguard Worker# This is different from the pattern currently matched. If the lowered form had
11*9880d681SAndroid Build Coastguard Worker# been sub.f %r3, 0, %r0 then it would have matched.
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: test1a
14*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN1:%.*]] = COPY %r7
15*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN2:%.*]] = COPY %r6
16*9880d681SAndroid Build Coastguard Worker# CHECK: SUB_F_R [[IN1]], [[IN2]], 0, implicit-def %sr
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: test1b
19*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN1:%.*]] = COPY %r7
20*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN2:%.*]] = COPY %r6
21*9880d681SAndroid Build Coastguard Worker# CHECK: SUB_F_R [[IN1]], [[IN2]], 0, implicit-def %sr
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: test2a
24*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN1:%.*]] = COPY %r7
25*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN2:%.*]] = COPY %r6
26*9880d681SAndroid Build Coastguard Worker# CHECK: SUB_F_R [[IN1]], [[IN2]], 0, implicit-def %sr
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: test2b
29*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN1:%.*]] = COPY %r7
30*9880d681SAndroid Build Coastguard Worker# CHECK: [[IN2:%.*]] = COPY %r6
31*9880d681SAndroid Build Coastguard Worker# CHECK: SUB_F_R [[IN1]], [[IN2]], 0, implicit-def %sr
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: test3
34*9880d681SAndroid Build Coastguard Worker# CHECK: AND_F_R
35*9880d681SAndroid Build Coastguard Worker# CHECK: AND_F_R
36*9880d681SAndroid Build Coastguard Worker# CHECK: AND_F_R
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Worker--- |
39*9880d681SAndroid Build Coastguard Worker  target datalayout = "E-m:e-p:32:32-i64:64-a:0:32-n32-S64"
40*9880d681SAndroid Build Coastguard Worker  target triple = "lanai-unknown-unknown"
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker  @a = global i32 -1, align 4
43*9880d681SAndroid Build Coastguard Worker  @b = global i32 0, align 4
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker  define i32 @test0a(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) {
46*9880d681SAndroid Build Coastguard Worker  entry:
47*9880d681SAndroid Build Coastguard Worker    %sub = sub i32 %b, %a
48*9880d681SAndroid Build Coastguard Worker    %cmp = icmp eq i32 %sub, 0
49*9880d681SAndroid Build Coastguard Worker    %cond = select i1 %cmp, i32 %c, i32 %sub
50*9880d681SAndroid Build Coastguard Worker    ret i32 %cond
51*9880d681SAndroid Build Coastguard Worker  }
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Worker  define i32 @test0b(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) {
54*9880d681SAndroid Build Coastguard Worker  entry:
55*9880d681SAndroid Build Coastguard Worker    %cmp = icmp eq i32 %b, %a
56*9880d681SAndroid Build Coastguard Worker    %cond = select i1 %cmp, i32 %c, i32 %b
57*9880d681SAndroid Build Coastguard Worker    ret i32 %cond
58*9880d681SAndroid Build Coastguard Worker  }
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Worker  define i32 @test1a(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) {
61*9880d681SAndroid Build Coastguard Worker  entry:
62*9880d681SAndroid Build Coastguard Worker    %sub = sub i32 %b, %a
63*9880d681SAndroid Build Coastguard Worker    %cmp = icmp slt i32 %sub, 0
64*9880d681SAndroid Build Coastguard Worker    %cond = select i1 %cmp, i32 %c, i32 %d
65*9880d681SAndroid Build Coastguard Worker    ret i32 %cond
66*9880d681SAndroid Build Coastguard Worker  }
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker  define i32 @test1b(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) {
69*9880d681SAndroid Build Coastguard Worker  entry:
70*9880d681SAndroid Build Coastguard Worker    %sub = sub i32 %b, %a
71*9880d681SAndroid Build Coastguard Worker    %cmp = icmp slt i32 %sub, 0
72*9880d681SAndroid Build Coastguard Worker    %cond = select i1 %cmp, i32 %c, i32 %d
73*9880d681SAndroid Build Coastguard Worker    ret i32 %cond
74*9880d681SAndroid Build Coastguard Worker  }
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Worker  define i32 @test2a(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) {
77*9880d681SAndroid Build Coastguard Worker  entry:
78*9880d681SAndroid Build Coastguard Worker    %sub = sub i32 %b, %a
79*9880d681SAndroid Build Coastguard Worker    %cmp = icmp sgt i32 %sub, -1
80*9880d681SAndroid Build Coastguard Worker    %cond = select i1 %cmp, i32 %c, i32 %d
81*9880d681SAndroid Build Coastguard Worker    ret i32 %cond
82*9880d681SAndroid Build Coastguard Worker  }
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard Worker  define i32 @test2b(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) {
85*9880d681SAndroid Build Coastguard Worker  entry:
86*9880d681SAndroid Build Coastguard Worker    %sub = sub i32 %b, %a
87*9880d681SAndroid Build Coastguard Worker    %cmp = icmp sgt i32 %sub, -1
88*9880d681SAndroid Build Coastguard Worker    %cond = select i1 %cmp, i32 %c, i32 %d
89*9880d681SAndroid Build Coastguard Worker    ret i32 %cond
90*9880d681SAndroid Build Coastguard Worker  }
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Worker  define i32 @test3(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) {
93*9880d681SAndroid Build Coastguard Worker  entry:
94*9880d681SAndroid Build Coastguard Worker    %sub = sub i32 %b, %a
95*9880d681SAndroid Build Coastguard Worker    %cmp = icmp slt i32 %sub, 1
96*9880d681SAndroid Build Coastguard Worker    %cond = select i1 %cmp, i32 %c, i32 %d
97*9880d681SAndroid Build Coastguard Worker    ret i32 %cond
98*9880d681SAndroid Build Coastguard Worker  }
99*9880d681SAndroid Build Coastguard Worker
100*9880d681SAndroid Build Coastguard Worker  define i32 @test4(i32 inreg %a, i32 inreg %b, i32 inreg %c, i32 inreg %d) {
101*9880d681SAndroid Build Coastguard Worker  entry:
102*9880d681SAndroid Build Coastguard Worker    %cmp = icmp ne i32 %a, 0
103*9880d681SAndroid Build Coastguard Worker    %cmp1 = icmp ult i32 %a, %b
104*9880d681SAndroid Build Coastguard Worker    %or.cond = and i1 %cmp, %cmp1
105*9880d681SAndroid Build Coastguard Worker    br i1 %or.cond, label %return, label %if.end
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Worker  if.end:                                           ; preds = %entry
108*9880d681SAndroid Build Coastguard Worker    %cmp2 = icmp ne i32 %b, 0
109*9880d681SAndroid Build Coastguard Worker    %cmp4 = icmp ult i32 %b, %c
110*9880d681SAndroid Build Coastguard Worker    %or.cond29 = and i1 %cmp2, %cmp4
111*9880d681SAndroid Build Coastguard Worker    br i1 %or.cond29, label %return, label %if.end6
112*9880d681SAndroid Build Coastguard Worker
113*9880d681SAndroid Build Coastguard Worker  if.end6:                                          ; preds = %if.end
114*9880d681SAndroid Build Coastguard Worker    %cmp7 = icmp ne i32 %c, 0
115*9880d681SAndroid Build Coastguard Worker    %cmp9 = icmp ult i32 %c, %d
116*9880d681SAndroid Build Coastguard Worker    %or.cond30 = and i1 %cmp7, %cmp9
117*9880d681SAndroid Build Coastguard Worker    br i1 %or.cond30, label %return, label %if.end11
118*9880d681SAndroid Build Coastguard Worker
119*9880d681SAndroid Build Coastguard Worker  if.end11:                                         ; preds = %if.end6
120*9880d681SAndroid Build Coastguard Worker    %cmp12 = icmp ne i32 %d, 0
121*9880d681SAndroid Build Coastguard Worker    %cmp14 = icmp ult i32 %d, %a
122*9880d681SAndroid Build Coastguard Worker    %or.cond31 = and i1 %cmp12, %cmp14
123*9880d681SAndroid Build Coastguard Worker    %b. = select i1 %or.cond31, i32 %b, i32 21
124*9880d681SAndroid Build Coastguard Worker    ret i32 %b.
125*9880d681SAndroid Build Coastguard Worker
126*9880d681SAndroid Build Coastguard Worker  return:                                           ; preds = %if.end6, %if.end, %entry
127*9880d681SAndroid Build Coastguard Worker    %retval.0 = phi i32 [ %c, %entry ], [ %d, %if.end ], [ %a, %if.end6 ]
128*9880d681SAndroid Build Coastguard Worker    ret i32 %retval.0
129*9880d681SAndroid Build Coastguard Worker  }
130*9880d681SAndroid Build Coastguard Worker
131*9880d681SAndroid Build Coastguard Worker  define void @testBB() {
132*9880d681SAndroid Build Coastguard Worker  entry:
133*9880d681SAndroid Build Coastguard Worker    %0 = load i32, i32* @a, align 4, !tbaa !0
134*9880d681SAndroid Build Coastguard Worker    %1 = load i32, i32* @b, align 4, !tbaa !0
135*9880d681SAndroid Build Coastguard Worker    %sub.i = sub i32 %1, %0
136*9880d681SAndroid Build Coastguard Worker    %tobool = icmp sgt i32 %sub.i, -1
137*9880d681SAndroid Build Coastguard Worker    br i1 %tobool, label %if.end, label %if.then
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Worker  if.then:                                          ; preds = %entry
140*9880d681SAndroid Build Coastguard Worker    %call1 = tail call i32 bitcast (i32 (...)* @g to i32 ()*)()
141*9880d681SAndroid Build Coastguard Worker    br label %while.body
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Worker  while.body:                                       ; preds = %while.body, %if.then
144*9880d681SAndroid Build Coastguard Worker    br label %while.body
145*9880d681SAndroid Build Coastguard Worker
146*9880d681SAndroid Build Coastguard Worker  if.end:                                           ; preds = %entry
147*9880d681SAndroid Build Coastguard Worker    %cmp.i = icmp slt i32 %sub.i, 1
148*9880d681SAndroid Build Coastguard Worker    br i1 %cmp.i, label %if.then4, label %if.end7
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Worker  if.then4:                                         ; preds = %if.end
151*9880d681SAndroid Build Coastguard Worker    %call5 = tail call i32 bitcast (i32 (...)* @g to i32 ()*)()
152*9880d681SAndroid Build Coastguard Worker    br label %while.body6
153*9880d681SAndroid Build Coastguard Worker
154*9880d681SAndroid Build Coastguard Worker  while.body6:                                      ; preds = %while.body6, %if.then4
155*9880d681SAndroid Build Coastguard Worker    br label %while.body6
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Worker  if.end7:                                          ; preds = %if.end
158*9880d681SAndroid Build Coastguard Worker    ret void
159*9880d681SAndroid Build Coastguard Worker  }
160*9880d681SAndroid Build Coastguard Worker
161*9880d681SAndroid Build Coastguard Worker  declare i32 @g(...)
162*9880d681SAndroid Build Coastguard Worker
163*9880d681SAndroid Build Coastguard Worker  ; Function Attrs: nounwind
164*9880d681SAndroid Build Coastguard Worker  declare void @llvm.stackprotector(i8*, i8**) #0
165*9880d681SAndroid Build Coastguard Worker
166*9880d681SAndroid Build Coastguard Worker  attributes #0 = { nounwind }
167*9880d681SAndroid Build Coastguard Worker
168*9880d681SAndroid Build Coastguard Worker  !0 = !{!1, !1, i64 0}
169*9880d681SAndroid Build Coastguard Worker  !1 = !{!"int", !2, i64 0}
170*9880d681SAndroid Build Coastguard Worker  !2 = !{!"omnipotent char", !3, i64 0}
171*9880d681SAndroid Build Coastguard Worker  !3 = !{!"Simple C/C++ TBAA"}
172*9880d681SAndroid Build Coastguard Worker
173*9880d681SAndroid Build Coastguard Worker...
174*9880d681SAndroid Build Coastguard Worker---
175*9880d681SAndroid Build Coastguard Workername:            test0a
176*9880d681SAndroid Build Coastguard Workeralignment:       2
177*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false
178*9880d681SAndroid Build Coastguard WorkerhasInlineAsm:    false
179*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false
180*9880d681SAndroid Build Coastguard WorkerisSSA:           true
181*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
182*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false
183*9880d681SAndroid Build Coastguard Workerregisters:
184*9880d681SAndroid Build Coastguard Worker  - { id: 0, class: gpr }
185*9880d681SAndroid Build Coastguard Worker  - { id: 1, class: gpr }
186*9880d681SAndroid Build Coastguard Worker  - { id: 2, class: gpr }
187*9880d681SAndroid Build Coastguard Worker  - { id: 3, class: gpr }
188*9880d681SAndroid Build Coastguard Worker  - { id: 4, class: gpr }
189*9880d681SAndroid Build Coastguard Worker  - { id: 5, class: gpr }
190*9880d681SAndroid Build Coastguard Workerliveins:
191*9880d681SAndroid Build Coastguard Worker  - { reg: '%r6', virtual-reg: '%0' }
192*9880d681SAndroid Build Coastguard Worker  - { reg: '%r7', virtual-reg: '%1' }
193*9880d681SAndroid Build Coastguard Worker  - { reg: '%r18', virtual-reg: '%2' }
194*9880d681SAndroid Build Coastguard WorkerframeInfo:
195*9880d681SAndroid Build Coastguard Worker  isFrameAddressTaken: false
196*9880d681SAndroid Build Coastguard Worker  isReturnAddressTaken: false
197*9880d681SAndroid Build Coastguard Worker  hasStackMap:     false
198*9880d681SAndroid Build Coastguard Worker  hasPatchPoint:   false
199*9880d681SAndroid Build Coastguard Worker  stackSize:       0
200*9880d681SAndroid Build Coastguard Worker  offsetAdjustment: 0
201*9880d681SAndroid Build Coastguard Worker  maxAlignment:    0
202*9880d681SAndroid Build Coastguard Worker  adjustsStack:    false
203*9880d681SAndroid Build Coastguard Worker  hasCalls:        false
204*9880d681SAndroid Build Coastguard Worker  maxCallFrameSize: 0
205*9880d681SAndroid Build Coastguard Worker  hasOpaqueSPAdjustment: false
206*9880d681SAndroid Build Coastguard Worker  hasVAStart:      false
207*9880d681SAndroid Build Coastguard Worker  hasMustTailInVarArgFunc: false
208*9880d681SAndroid Build Coastguard Workerbody:             |
209*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
210*9880d681SAndroid Build Coastguard Worker    liveins: %r6, %r7, %r18
211*9880d681SAndroid Build Coastguard Worker
212*9880d681SAndroid Build Coastguard Worker    %2 = COPY %r18
213*9880d681SAndroid Build Coastguard Worker    %1 = COPY %r7
214*9880d681SAndroid Build Coastguard Worker    %0 = COPY %r6
215*9880d681SAndroid Build Coastguard Worker    %4 = SUB_R %1, %0, 0
216*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO %4, 0, implicit-def %sr
217*9880d681SAndroid Build Coastguard Worker    %5 = SELECT %2, %4, 7, implicit %sr
218*9880d681SAndroid Build Coastguard Worker    %rv = COPY %5
219*9880d681SAndroid Build Coastguard Worker    RET implicit %rca, implicit %rv
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard Worker...
222*9880d681SAndroid Build Coastguard Worker---
223*9880d681SAndroid Build Coastguard Workername:            test0b
224*9880d681SAndroid Build Coastguard Workeralignment:       2
225*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false
226*9880d681SAndroid Build Coastguard WorkerhasInlineAsm:    false
227*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false
228*9880d681SAndroid Build Coastguard WorkerisSSA:           true
229*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
230*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false
231*9880d681SAndroid Build Coastguard Workerregisters:
232*9880d681SAndroid Build Coastguard Worker  - { id: 0, class: gpr }
233*9880d681SAndroid Build Coastguard Worker  - { id: 1, class: gpr }
234*9880d681SAndroid Build Coastguard Worker  - { id: 2, class: gpr }
235*9880d681SAndroid Build Coastguard Worker  - { id: 3, class: gpr }
236*9880d681SAndroid Build Coastguard Worker  - { id: 4, class: gpr }
237*9880d681SAndroid Build Coastguard Workerliveins:
238*9880d681SAndroid Build Coastguard Worker  - { reg: '%r6', virtual-reg: '%0' }
239*9880d681SAndroid Build Coastguard Worker  - { reg: '%r7', virtual-reg: '%1' }
240*9880d681SAndroid Build Coastguard Worker  - { reg: '%r18', virtual-reg: '%2' }
241*9880d681SAndroid Build Coastguard WorkerframeInfo:
242*9880d681SAndroid Build Coastguard Worker  isFrameAddressTaken: false
243*9880d681SAndroid Build Coastguard Worker  isReturnAddressTaken: false
244*9880d681SAndroid Build Coastguard Worker  hasStackMap:     false
245*9880d681SAndroid Build Coastguard Worker  hasPatchPoint:   false
246*9880d681SAndroid Build Coastguard Worker  stackSize:       0
247*9880d681SAndroid Build Coastguard Worker  offsetAdjustment: 0
248*9880d681SAndroid Build Coastguard Worker  maxAlignment:    0
249*9880d681SAndroid Build Coastguard Worker  adjustsStack:    false
250*9880d681SAndroid Build Coastguard Worker  hasCalls:        false
251*9880d681SAndroid Build Coastguard Worker  maxCallFrameSize: 0
252*9880d681SAndroid Build Coastguard Worker  hasOpaqueSPAdjustment: false
253*9880d681SAndroid Build Coastguard Worker  hasVAStart:      false
254*9880d681SAndroid Build Coastguard Worker  hasMustTailInVarArgFunc: false
255*9880d681SAndroid Build Coastguard Workerbody:             |
256*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
257*9880d681SAndroid Build Coastguard Worker    liveins: %r6, %r7, %r18
258*9880d681SAndroid Build Coastguard Worker
259*9880d681SAndroid Build Coastguard Worker    %2 = COPY %r18
260*9880d681SAndroid Build Coastguard Worker    %1 = COPY %r7
261*9880d681SAndroid Build Coastguard Worker    %0 = COPY %r6
262*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RR %1, %0, implicit-def %sr
263*9880d681SAndroid Build Coastguard Worker    %4 = SELECT %2, %1, 7, implicit %sr
264*9880d681SAndroid Build Coastguard Worker    %rv = COPY %4
265*9880d681SAndroid Build Coastguard Worker    RET implicit %rca, implicit %rv
266*9880d681SAndroid Build Coastguard Worker
267*9880d681SAndroid Build Coastguard Worker...
268*9880d681SAndroid Build Coastguard Worker---
269*9880d681SAndroid Build Coastguard Workername:            test1a
270*9880d681SAndroid Build Coastguard Workeralignment:       2
271*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false
272*9880d681SAndroid Build Coastguard WorkerhasInlineAsm:    false
273*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false
274*9880d681SAndroid Build Coastguard WorkerisSSA:           true
275*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
276*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false
277*9880d681SAndroid Build Coastguard Workerregisters:
278*9880d681SAndroid Build Coastguard Worker  - { id: 0, class: gpr }
279*9880d681SAndroid Build Coastguard Worker  - { id: 1, class: gpr }
280*9880d681SAndroid Build Coastguard Worker  - { id: 2, class: gpr }
281*9880d681SAndroid Build Coastguard Worker  - { id: 3, class: gpr }
282*9880d681SAndroid Build Coastguard Worker  - { id: 4, class: gpr }
283*9880d681SAndroid Build Coastguard Worker  - { id: 5, class: gpr }
284*9880d681SAndroid Build Coastguard Workerliveins:
285*9880d681SAndroid Build Coastguard Worker  - { reg: '%r6', virtual-reg: '%0' }
286*9880d681SAndroid Build Coastguard Worker  - { reg: '%r7', virtual-reg: '%1' }
287*9880d681SAndroid Build Coastguard Worker  - { reg: '%r18', virtual-reg: '%2' }
288*9880d681SAndroid Build Coastguard Worker  - { reg: '%r19', virtual-reg: '%3' }
289*9880d681SAndroid Build Coastguard WorkerframeInfo:
290*9880d681SAndroid Build Coastguard Worker  isFrameAddressTaken: false
291*9880d681SAndroid Build Coastguard Worker  isReturnAddressTaken: false
292*9880d681SAndroid Build Coastguard Worker  hasStackMap:     false
293*9880d681SAndroid Build Coastguard Worker  hasPatchPoint:   false
294*9880d681SAndroid Build Coastguard Worker  stackSize:       0
295*9880d681SAndroid Build Coastguard Worker  offsetAdjustment: 0
296*9880d681SAndroid Build Coastguard Worker  maxAlignment:    0
297*9880d681SAndroid Build Coastguard Worker  adjustsStack:    false
298*9880d681SAndroid Build Coastguard Worker  hasCalls:        false
299*9880d681SAndroid Build Coastguard Worker  maxCallFrameSize: 0
300*9880d681SAndroid Build Coastguard Worker  hasOpaqueSPAdjustment: false
301*9880d681SAndroid Build Coastguard Worker  hasVAStart:      false
302*9880d681SAndroid Build Coastguard Worker  hasMustTailInVarArgFunc: false
303*9880d681SAndroid Build Coastguard Workerbody:             |
304*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
305*9880d681SAndroid Build Coastguard Worker    liveins: %r6, %r7, %r18, %r19
306*9880d681SAndroid Build Coastguard Worker
307*9880d681SAndroid Build Coastguard Worker    %3 = COPY %r19
308*9880d681SAndroid Build Coastguard Worker    %2 = COPY %r18
309*9880d681SAndroid Build Coastguard Worker    %1 = COPY %r7
310*9880d681SAndroid Build Coastguard Worker    %0 = COPY %r6
311*9880d681SAndroid Build Coastguard Worker    %4 = SUB_R %1, %0, 0
312*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO killed %4, 0, implicit-def %sr
313*9880d681SAndroid Build Coastguard Worker    %5 = SELECT %2, %3, 11, implicit %sr
314*9880d681SAndroid Build Coastguard Worker    %rv = COPY %5
315*9880d681SAndroid Build Coastguard Worker    RET implicit %rca, implicit %rv
316*9880d681SAndroid Build Coastguard Worker
317*9880d681SAndroid Build Coastguard Worker...
318*9880d681SAndroid Build Coastguard Worker---
319*9880d681SAndroid Build Coastguard Workername:            test1b
320*9880d681SAndroid Build Coastguard Workeralignment:       2
321*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false
322*9880d681SAndroid Build Coastguard WorkerhasInlineAsm:    false
323*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false
324*9880d681SAndroid Build Coastguard WorkerisSSA:           true
325*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
326*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false
327*9880d681SAndroid Build Coastguard Workerregisters:
328*9880d681SAndroid Build Coastguard Worker  - { id: 0, class: gpr }
329*9880d681SAndroid Build Coastguard Worker  - { id: 1, class: gpr }
330*9880d681SAndroid Build Coastguard Worker  - { id: 2, class: gpr }
331*9880d681SAndroid Build Coastguard Worker  - { id: 3, class: gpr }
332*9880d681SAndroid Build Coastguard Worker  - { id: 4, class: gpr }
333*9880d681SAndroid Build Coastguard Worker  - { id: 5, class: gpr }
334*9880d681SAndroid Build Coastguard Workerliveins:
335*9880d681SAndroid Build Coastguard Worker  - { reg: '%r6', virtual-reg: '%0' }
336*9880d681SAndroid Build Coastguard Worker  - { reg: '%r7', virtual-reg: '%1' }
337*9880d681SAndroid Build Coastguard Worker  - { reg: '%r18', virtual-reg: '%2' }
338*9880d681SAndroid Build Coastguard Worker  - { reg: '%r19', virtual-reg: '%3' }
339*9880d681SAndroid Build Coastguard WorkerframeInfo:
340*9880d681SAndroid Build Coastguard Worker  isFrameAddressTaken: false
341*9880d681SAndroid Build Coastguard Worker  isReturnAddressTaken: false
342*9880d681SAndroid Build Coastguard Worker  hasStackMap:     false
343*9880d681SAndroid Build Coastguard Worker  hasPatchPoint:   false
344*9880d681SAndroid Build Coastguard Worker  stackSize:       0
345*9880d681SAndroid Build Coastguard Worker  offsetAdjustment: 0
346*9880d681SAndroid Build Coastguard Worker  maxAlignment:    0
347*9880d681SAndroid Build Coastguard Worker  adjustsStack:    false
348*9880d681SAndroid Build Coastguard Worker  hasCalls:        false
349*9880d681SAndroid Build Coastguard Worker  maxCallFrameSize: 0
350*9880d681SAndroid Build Coastguard Worker  hasOpaqueSPAdjustment: false
351*9880d681SAndroid Build Coastguard Worker  hasVAStart:      false
352*9880d681SAndroid Build Coastguard Worker  hasMustTailInVarArgFunc: false
353*9880d681SAndroid Build Coastguard Workerbody:             |
354*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
355*9880d681SAndroid Build Coastguard Worker    liveins: %r6, %r7, %r18, %r19
356*9880d681SAndroid Build Coastguard Worker
357*9880d681SAndroid Build Coastguard Worker    %3 = COPY %r19
358*9880d681SAndroid Build Coastguard Worker    %2 = COPY %r18
359*9880d681SAndroid Build Coastguard Worker    %1 = COPY %r7
360*9880d681SAndroid Build Coastguard Worker    %0 = COPY %r6
361*9880d681SAndroid Build Coastguard Worker    %4 = SUB_R %1, %0, 0
362*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO killed %4, 0, implicit-def %sr
363*9880d681SAndroid Build Coastguard Worker    %5 = SELECT %2, %3, 11, implicit %sr
364*9880d681SAndroid Build Coastguard Worker    %rv = COPY %5
365*9880d681SAndroid Build Coastguard Worker    RET implicit %rca, implicit %rv
366*9880d681SAndroid Build Coastguard Worker
367*9880d681SAndroid Build Coastguard Worker...
368*9880d681SAndroid Build Coastguard Worker---
369*9880d681SAndroid Build Coastguard Workername:            test2a
370*9880d681SAndroid Build Coastguard Workeralignment:       2
371*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false
372*9880d681SAndroid Build Coastguard WorkerhasInlineAsm:    false
373*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false
374*9880d681SAndroid Build Coastguard WorkerisSSA:           true
375*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
376*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false
377*9880d681SAndroid Build Coastguard Workerregisters:
378*9880d681SAndroid Build Coastguard Worker  - { id: 0, class: gpr }
379*9880d681SAndroid Build Coastguard Worker  - { id: 1, class: gpr }
380*9880d681SAndroid Build Coastguard Worker  - { id: 2, class: gpr }
381*9880d681SAndroid Build Coastguard Worker  - { id: 3, class: gpr }
382*9880d681SAndroid Build Coastguard Worker  - { id: 4, class: gpr }
383*9880d681SAndroid Build Coastguard Worker  - { id: 5, class: gpr }
384*9880d681SAndroid Build Coastguard Workerliveins:
385*9880d681SAndroid Build Coastguard Worker  - { reg: '%r6', virtual-reg: '%0' }
386*9880d681SAndroid Build Coastguard Worker  - { reg: '%r7', virtual-reg: '%1' }
387*9880d681SAndroid Build Coastguard Worker  - { reg: '%r18', virtual-reg: '%2' }
388*9880d681SAndroid Build Coastguard Worker  - { reg: '%r19', virtual-reg: '%3' }
389*9880d681SAndroid Build Coastguard WorkerframeInfo:
390*9880d681SAndroid Build Coastguard Worker  isFrameAddressTaken: false
391*9880d681SAndroid Build Coastguard Worker  isReturnAddressTaken: false
392*9880d681SAndroid Build Coastguard Worker  hasStackMap:     false
393*9880d681SAndroid Build Coastguard Worker  hasPatchPoint:   false
394*9880d681SAndroid Build Coastguard Worker  stackSize:       0
395*9880d681SAndroid Build Coastguard Worker  offsetAdjustment: 0
396*9880d681SAndroid Build Coastguard Worker  maxAlignment:    0
397*9880d681SAndroid Build Coastguard Worker  adjustsStack:    false
398*9880d681SAndroid Build Coastguard Worker  hasCalls:        false
399*9880d681SAndroid Build Coastguard Worker  maxCallFrameSize: 0
400*9880d681SAndroid Build Coastguard Worker  hasOpaqueSPAdjustment: false
401*9880d681SAndroid Build Coastguard Worker  hasVAStart:      false
402*9880d681SAndroid Build Coastguard Worker  hasMustTailInVarArgFunc: false
403*9880d681SAndroid Build Coastguard Workerbody:             |
404*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
405*9880d681SAndroid Build Coastguard Worker    liveins: %r6, %r7, %r18, %r19
406*9880d681SAndroid Build Coastguard Worker
407*9880d681SAndroid Build Coastguard Worker    %3 = COPY %r19
408*9880d681SAndroid Build Coastguard Worker    %2 = COPY %r18
409*9880d681SAndroid Build Coastguard Worker    %1 = COPY %r7
410*9880d681SAndroid Build Coastguard Worker    %0 = COPY %r6
411*9880d681SAndroid Build Coastguard Worker    %4 = SUB_R %1, %0, 0
412*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO killed %4, 0, implicit-def %sr
413*9880d681SAndroid Build Coastguard Worker    %5 = SELECT %2, %3, 10, implicit %sr
414*9880d681SAndroid Build Coastguard Worker    %rv = COPY %5
415*9880d681SAndroid Build Coastguard Worker    RET implicit %rca, implicit %rv
416*9880d681SAndroid Build Coastguard Worker
417*9880d681SAndroid Build Coastguard Worker...
418*9880d681SAndroid Build Coastguard Worker---
419*9880d681SAndroid Build Coastguard Workername:            test2b
420*9880d681SAndroid Build Coastguard Workeralignment:       2
421*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false
422*9880d681SAndroid Build Coastguard WorkerhasInlineAsm:    false
423*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false
424*9880d681SAndroid Build Coastguard WorkerisSSA:           true
425*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
426*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false
427*9880d681SAndroid Build Coastguard Workerregisters:
428*9880d681SAndroid Build Coastguard Worker  - { id: 0, class: gpr }
429*9880d681SAndroid Build Coastguard Worker  - { id: 1, class: gpr }
430*9880d681SAndroid Build Coastguard Worker  - { id: 2, class: gpr }
431*9880d681SAndroid Build Coastguard Worker  - { id: 3, class: gpr }
432*9880d681SAndroid Build Coastguard Worker  - { id: 4, class: gpr }
433*9880d681SAndroid Build Coastguard Worker  - { id: 5, class: gpr }
434*9880d681SAndroid Build Coastguard Workerliveins:
435*9880d681SAndroid Build Coastguard Worker  - { reg: '%r6', virtual-reg: '%0' }
436*9880d681SAndroid Build Coastguard Worker  - { reg: '%r7', virtual-reg: '%1' }
437*9880d681SAndroid Build Coastguard Worker  - { reg: '%r18', virtual-reg: '%2' }
438*9880d681SAndroid Build Coastguard Worker  - { reg: '%r19', virtual-reg: '%3' }
439*9880d681SAndroid Build Coastguard WorkerframeInfo:
440*9880d681SAndroid Build Coastguard Worker  isFrameAddressTaken: false
441*9880d681SAndroid Build Coastguard Worker  isReturnAddressTaken: false
442*9880d681SAndroid Build Coastguard Worker  hasStackMap:     false
443*9880d681SAndroid Build Coastguard Worker  hasPatchPoint:   false
444*9880d681SAndroid Build Coastguard Worker  stackSize:       0
445*9880d681SAndroid Build Coastguard Worker  offsetAdjustment: 0
446*9880d681SAndroid Build Coastguard Worker  maxAlignment:    0
447*9880d681SAndroid Build Coastguard Worker  adjustsStack:    false
448*9880d681SAndroid Build Coastguard Worker  hasCalls:        false
449*9880d681SAndroid Build Coastguard Worker  maxCallFrameSize: 0
450*9880d681SAndroid Build Coastguard Worker  hasOpaqueSPAdjustment: false
451*9880d681SAndroid Build Coastguard Worker  hasVAStart:      false
452*9880d681SAndroid Build Coastguard Worker  hasMustTailInVarArgFunc: false
453*9880d681SAndroid Build Coastguard Workerbody:             |
454*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
455*9880d681SAndroid Build Coastguard Worker    liveins: %r6, %r7, %r18, %r19
456*9880d681SAndroid Build Coastguard Worker
457*9880d681SAndroid Build Coastguard Worker    %3 = COPY %r19
458*9880d681SAndroid Build Coastguard Worker    %2 = COPY %r18
459*9880d681SAndroid Build Coastguard Worker    %1 = COPY %r7
460*9880d681SAndroid Build Coastguard Worker    %0 = COPY %r6
461*9880d681SAndroid Build Coastguard Worker    %4 = SUB_R %1, %0, 0
462*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO killed %4, 0, implicit-def %sr
463*9880d681SAndroid Build Coastguard Worker    %5 = SELECT %2, %3, 10, implicit %sr
464*9880d681SAndroid Build Coastguard Worker    %rv = COPY %5
465*9880d681SAndroid Build Coastguard Worker    RET implicit %rca, implicit %rv
466*9880d681SAndroid Build Coastguard Worker
467*9880d681SAndroid Build Coastguard Worker...
468*9880d681SAndroid Build Coastguard Worker---
469*9880d681SAndroid Build Coastguard Workername:            test3
470*9880d681SAndroid Build Coastguard Workeralignment:       2
471*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false
472*9880d681SAndroid Build Coastguard WorkerhasInlineAsm:    false
473*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false
474*9880d681SAndroid Build Coastguard WorkerisSSA:           true
475*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
476*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false
477*9880d681SAndroid Build Coastguard Workerregisters:
478*9880d681SAndroid Build Coastguard Worker  - { id: 0, class: gpr }
479*9880d681SAndroid Build Coastguard Worker  - { id: 1, class: gpr }
480*9880d681SAndroid Build Coastguard Worker  - { id: 2, class: gpr }
481*9880d681SAndroid Build Coastguard Worker  - { id: 3, class: gpr }
482*9880d681SAndroid Build Coastguard Worker  - { id: 4, class: gpr }
483*9880d681SAndroid Build Coastguard Worker  - { id: 5, class: gpr }
484*9880d681SAndroid Build Coastguard Workerliveins:
485*9880d681SAndroid Build Coastguard Worker  - { reg: '%r6', virtual-reg: '%0' }
486*9880d681SAndroid Build Coastguard Worker  - { reg: '%r7', virtual-reg: '%1' }
487*9880d681SAndroid Build Coastguard Worker  - { reg: '%r18', virtual-reg: '%2' }
488*9880d681SAndroid Build Coastguard Worker  - { reg: '%r19', virtual-reg: '%3' }
489*9880d681SAndroid Build Coastguard WorkerframeInfo:
490*9880d681SAndroid Build Coastguard Worker  isFrameAddressTaken: false
491*9880d681SAndroid Build Coastguard Worker  isReturnAddressTaken: false
492*9880d681SAndroid Build Coastguard Worker  hasStackMap:     false
493*9880d681SAndroid Build Coastguard Worker  hasPatchPoint:   false
494*9880d681SAndroid Build Coastguard Worker  stackSize:       0
495*9880d681SAndroid Build Coastguard Worker  offsetAdjustment: 0
496*9880d681SAndroid Build Coastguard Worker  maxAlignment:    0
497*9880d681SAndroid Build Coastguard Worker  adjustsStack:    false
498*9880d681SAndroid Build Coastguard Worker  hasCalls:        false
499*9880d681SAndroid Build Coastguard Worker  maxCallFrameSize: 0
500*9880d681SAndroid Build Coastguard Worker  hasOpaqueSPAdjustment: false
501*9880d681SAndroid Build Coastguard Worker  hasVAStart:      false
502*9880d681SAndroid Build Coastguard Worker  hasMustTailInVarArgFunc: false
503*9880d681SAndroid Build Coastguard Workerbody:             |
504*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
505*9880d681SAndroid Build Coastguard Worker    liveins: %r6, %r7, %r18, %r19
506*9880d681SAndroid Build Coastguard Worker
507*9880d681SAndroid Build Coastguard Worker    %3 = COPY %r19
508*9880d681SAndroid Build Coastguard Worker    %2 = COPY %r18
509*9880d681SAndroid Build Coastguard Worker    %1 = COPY %r7
510*9880d681SAndroid Build Coastguard Worker    %0 = COPY %r6
511*9880d681SAndroid Build Coastguard Worker    %4 = SUB_R %1, %0, 0
512*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO killed %4, 1, implicit-def %sr
513*9880d681SAndroid Build Coastguard Worker    %5 = SELECT %2, %3, 13, implicit %sr
514*9880d681SAndroid Build Coastguard Worker    %rv = COPY %5
515*9880d681SAndroid Build Coastguard Worker    RET implicit %rca, implicit %rv
516*9880d681SAndroid Build Coastguard Worker
517*9880d681SAndroid Build Coastguard Worker...
518*9880d681SAndroid Build Coastguard Worker---
519*9880d681SAndroid Build Coastguard Workername:            test4
520*9880d681SAndroid Build Coastguard Workeralignment:       2
521*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false
522*9880d681SAndroid Build Coastguard WorkerhasInlineAsm:    false
523*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false
524*9880d681SAndroid Build Coastguard WorkerisSSA:           true
525*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
526*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false
527*9880d681SAndroid Build Coastguard Workerregisters:
528*9880d681SAndroid Build Coastguard Worker  - { id: 0, class: gpr }
529*9880d681SAndroid Build Coastguard Worker  - { id: 1, class: gpr }
530*9880d681SAndroid Build Coastguard Worker  - { id: 2, class: gpr }
531*9880d681SAndroid Build Coastguard Worker  - { id: 3, class: gpr }
532*9880d681SAndroid Build Coastguard Worker  - { id: 4, class: gpr }
533*9880d681SAndroid Build Coastguard Worker  - { id: 5, class: gpr }
534*9880d681SAndroid Build Coastguard Worker  - { id: 6, class: gpr }
535*9880d681SAndroid Build Coastguard Worker  - { id: 7, class: gpr }
536*9880d681SAndroid Build Coastguard Worker  - { id: 8, class: gpr }
537*9880d681SAndroid Build Coastguard Worker  - { id: 9, class: gpr }
538*9880d681SAndroid Build Coastguard Worker  - { id: 10, class: gpr }
539*9880d681SAndroid Build Coastguard Worker  - { id: 11, class: gpr }
540*9880d681SAndroid Build Coastguard Worker  - { id: 12, class: gpr }
541*9880d681SAndroid Build Coastguard Worker  - { id: 13, class: gpr }
542*9880d681SAndroid Build Coastguard Worker  - { id: 14, class: gpr }
543*9880d681SAndroid Build Coastguard Worker  - { id: 15, class: gpr }
544*9880d681SAndroid Build Coastguard Worker  - { id: 16, class: gpr }
545*9880d681SAndroid Build Coastguard Worker  - { id: 17, class: gpr }
546*9880d681SAndroid Build Coastguard Worker  - { id: 18, class: gpr }
547*9880d681SAndroid Build Coastguard Worker  - { id: 19, class: gpr }
548*9880d681SAndroid Build Coastguard Worker  - { id: 20, class: gpr }
549*9880d681SAndroid Build Coastguard Worker  - { id: 21, class: gpr }
550*9880d681SAndroid Build Coastguard Worker  - { id: 22, class: gpr }
551*9880d681SAndroid Build Coastguard Workerliveins:
552*9880d681SAndroid Build Coastguard Worker  - { reg: '%r6', virtual-reg: '%1' }
553*9880d681SAndroid Build Coastguard Worker  - { reg: '%r7', virtual-reg: '%2' }
554*9880d681SAndroid Build Coastguard Worker  - { reg: '%r18', virtual-reg: '%3' }
555*9880d681SAndroid Build Coastguard Worker  - { reg: '%r19', virtual-reg: '%4' }
556*9880d681SAndroid Build Coastguard WorkerframeInfo:
557*9880d681SAndroid Build Coastguard Worker  isFrameAddressTaken: false
558*9880d681SAndroid Build Coastguard Worker  isReturnAddressTaken: false
559*9880d681SAndroid Build Coastguard Worker  hasStackMap:     false
560*9880d681SAndroid Build Coastguard Worker  hasPatchPoint:   false
561*9880d681SAndroid Build Coastguard Worker  stackSize:       0
562*9880d681SAndroid Build Coastguard Worker  offsetAdjustment: 0
563*9880d681SAndroid Build Coastguard Worker  maxAlignment:    0
564*9880d681SAndroid Build Coastguard Worker  adjustsStack:    false
565*9880d681SAndroid Build Coastguard Worker  hasCalls:        false
566*9880d681SAndroid Build Coastguard Worker  maxCallFrameSize: 0
567*9880d681SAndroid Build Coastguard Worker  hasOpaqueSPAdjustment: false
568*9880d681SAndroid Build Coastguard Worker  hasVAStart:      false
569*9880d681SAndroid Build Coastguard Worker  hasMustTailInVarArgFunc: false
570*9880d681SAndroid Build Coastguard Workerbody:             |
571*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
572*9880d681SAndroid Build Coastguard Worker    successors: %bb.4.return, %bb.1.if.end
573*9880d681SAndroid Build Coastguard Worker    liveins: %r6, %r7, %r18, %r19
574*9880d681SAndroid Build Coastguard Worker
575*9880d681SAndroid Build Coastguard Worker    %4 = COPY %r19
576*9880d681SAndroid Build Coastguard Worker    %3 = COPY %r18
577*9880d681SAndroid Build Coastguard Worker    %2 = COPY %r7
578*9880d681SAndroid Build Coastguard Worker    %1 = COPY %r6
579*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO %1, 0, implicit-def %sr
580*9880d681SAndroid Build Coastguard Worker    %5 = SCC 6, implicit %sr
581*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RR %1, %2, implicit-def %sr
582*9880d681SAndroid Build Coastguard Worker    %6 = SCC 4, implicit %sr
583*9880d681SAndroid Build Coastguard Worker    %7 = AND_R killed %5, killed %6, 0
584*9880d681SAndroid Build Coastguard Worker    %8 = SLI 1
585*9880d681SAndroid Build Coastguard Worker    %9 = AND_R killed %7, %8, 0
586*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO killed %9, 0, implicit-def %sr
587*9880d681SAndroid Build Coastguard Worker    BRCC %bb.4.return, 6, implicit %sr
588*9880d681SAndroid Build Coastguard Worker    BT %bb.1.if.end
589*9880d681SAndroid Build Coastguard Worker
590*9880d681SAndroid Build Coastguard Worker  bb.1.if.end:
591*9880d681SAndroid Build Coastguard Worker    successors: %bb.4.return, %bb.2.if.end6
592*9880d681SAndroid Build Coastguard Worker
593*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO %2, 0, implicit-def %sr
594*9880d681SAndroid Build Coastguard Worker    %10 = SCC 6, implicit %sr
595*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RR %2, %3, implicit-def %sr
596*9880d681SAndroid Build Coastguard Worker    %11 = SCC 4, implicit %sr
597*9880d681SAndroid Build Coastguard Worker    %12 = AND_R killed %10, killed %11, 0
598*9880d681SAndroid Build Coastguard Worker    %14 = AND_R killed %12, %8, 0
599*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO killed %14, 0, implicit-def %sr
600*9880d681SAndroid Build Coastguard Worker    BRCC %bb.4.return, 6, implicit %sr
601*9880d681SAndroid Build Coastguard Worker    BT %bb.2.if.end6
602*9880d681SAndroid Build Coastguard Worker
603*9880d681SAndroid Build Coastguard Worker  bb.2.if.end6:
604*9880d681SAndroid Build Coastguard Worker    successors: %bb.4.return, %bb.3.if.end11
605*9880d681SAndroid Build Coastguard Worker
606*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO %3, 0, implicit-def %sr
607*9880d681SAndroid Build Coastguard Worker    %15 = SCC 6, implicit %sr
608*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RR %3, %4, implicit-def %sr
609*9880d681SAndroid Build Coastguard Worker    %16 = SCC 4, implicit %sr
610*9880d681SAndroid Build Coastguard Worker    %17 = AND_R killed %15, killed %16, 0
611*9880d681SAndroid Build Coastguard Worker    %18 = SLI 1
612*9880d681SAndroid Build Coastguard Worker    %19 = AND_R killed %17, killed %18, 0
613*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO killed %19, 0, implicit-def %sr
614*9880d681SAndroid Build Coastguard Worker    BRCC %bb.4.return, 6, implicit %sr
615*9880d681SAndroid Build Coastguard Worker    BT %bb.3.if.end11
616*9880d681SAndroid Build Coastguard Worker
617*9880d681SAndroid Build Coastguard Worker  bb.3.if.end11:
618*9880d681SAndroid Build Coastguard Worker    %20 = SLI 21
619*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RR %4, %1, implicit-def %sr
620*9880d681SAndroid Build Coastguard Worker    %21 = SELECT %2, %20, 4, implicit %sr
621*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO %4, 0, implicit-def %sr
622*9880d681SAndroid Build Coastguard Worker    %22 = SELECT killed %21, %20, 6, implicit %sr
623*9880d681SAndroid Build Coastguard Worker    %rv = COPY %22
624*9880d681SAndroid Build Coastguard Worker    RET implicit %rca, implicit %rv
625*9880d681SAndroid Build Coastguard Worker
626*9880d681SAndroid Build Coastguard Worker  bb.4.return:
627*9880d681SAndroid Build Coastguard Worker    %0 = PHI %3, %bb.0.entry, %4, %bb.1.if.end, %1, %bb.2.if.end6
628*9880d681SAndroid Build Coastguard Worker    %rv = COPY %0
629*9880d681SAndroid Build Coastguard Worker    RET implicit %rca, implicit %rv
630*9880d681SAndroid Build Coastguard Worker
631*9880d681SAndroid Build Coastguard Worker...
632*9880d681SAndroid Build Coastguard Worker---
633*9880d681SAndroid Build Coastguard Workername:            testBB
634*9880d681SAndroid Build Coastguard Workeralignment:       2
635*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false
636*9880d681SAndroid Build Coastguard WorkerhasInlineAsm:    false
637*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: false
638*9880d681SAndroid Build Coastguard WorkerisSSA:           true
639*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
640*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false
641*9880d681SAndroid Build Coastguard Workerregisters:
642*9880d681SAndroid Build Coastguard Worker  - { id: 0, class: gpr }
643*9880d681SAndroid Build Coastguard Worker  - { id: 1, class: gpr }
644*9880d681SAndroid Build Coastguard Worker  - { id: 2, class: gpr }
645*9880d681SAndroid Build Coastguard Worker  - { id: 3, class: gpr }
646*9880d681SAndroid Build Coastguard Worker  - { id: 4, class: gpr }
647*9880d681SAndroid Build Coastguard Worker  - { id: 5, class: gpr }
648*9880d681SAndroid Build Coastguard Worker  - { id: 6, class: gpr }
649*9880d681SAndroid Build Coastguard Worker  - { id: 7, class: gpr }
650*9880d681SAndroid Build Coastguard Worker  - { id: 8, class: gpr }
651*9880d681SAndroid Build Coastguard WorkerframeInfo:
652*9880d681SAndroid Build Coastguard Worker  isFrameAddressTaken: false
653*9880d681SAndroid Build Coastguard Worker  isReturnAddressTaken: false
654*9880d681SAndroid Build Coastguard Worker  hasStackMap:     false
655*9880d681SAndroid Build Coastguard Worker  hasPatchPoint:   false
656*9880d681SAndroid Build Coastguard Worker  stackSize:       0
657*9880d681SAndroid Build Coastguard Worker  offsetAdjustment: 0
658*9880d681SAndroid Build Coastguard Worker  maxAlignment:    0
659*9880d681SAndroid Build Coastguard Worker  adjustsStack:    false
660*9880d681SAndroid Build Coastguard Worker  hasCalls:        true
661*9880d681SAndroid Build Coastguard Worker  maxCallFrameSize: 0
662*9880d681SAndroid Build Coastguard Worker  hasOpaqueSPAdjustment: false
663*9880d681SAndroid Build Coastguard Worker  hasVAStart:      false
664*9880d681SAndroid Build Coastguard Worker  hasMustTailInVarArgFunc: false
665*9880d681SAndroid Build Coastguard Workerbody:             |
666*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
667*9880d681SAndroid Build Coastguard Worker    successors: %bb.3.if.end, %bb.1.if.then
668*9880d681SAndroid Build Coastguard Worker
669*9880d681SAndroid Build Coastguard Worker    %1 = MOVHI target-flags(lanai-hi) @a
670*9880d681SAndroid Build Coastguard Worker    %2 = OR_I_LO killed %1, target-flags(lanai-lo) @a
671*9880d681SAndroid Build Coastguard Worker    %3 = LDW_RI killed %2, 0, 0 :: (load 4 from @a, !tbaa !0)
672*9880d681SAndroid Build Coastguard Worker    %4 = MOVHI target-flags(lanai-hi) @b
673*9880d681SAndroid Build Coastguard Worker    %5 = OR_I_LO killed %4, target-flags(lanai-lo) @b
674*9880d681SAndroid Build Coastguard Worker    %6 = LDW_RI killed %5, 0, 0 :: (load 4 from @b, !tbaa !0)
675*9880d681SAndroid Build Coastguard Worker    %0 = SUB_R killed %6, killed %3, 0
676*9880d681SAndroid Build Coastguard Worker    SFSUB_F_RI_LO %0, 0, implicit-def %sr
677*9880d681SAndroid Build Coastguard Worker    BRCC %bb.3.if.end, 10, implicit %sr
678*9880d681SAndroid Build Coastguard Worker    BT %bb.1.if.then
679*9880d681SAndroid Build Coastguard Worker
680*9880d681SAndroid Build Coastguard Worker  bb.1.if.then:
681*9880d681SAndroid Build Coastguard Worker    successors: %bb.2.while.body
682*9880d681SAndroid Build Coastguard Worker
683*9880d681SAndroid Build Coastguard Worker    ADJCALLSTACKDOWN 0, implicit-def dead %sp, implicit %sp
684*9880d681SAndroid Build Coastguard Worker    CALL @g, csr, implicit-def dead %rca, implicit %sp, implicit-def %sp, implicit-def %rv
685*9880d681SAndroid Build Coastguard Worker    ADJCALLSTACKUP 0, 0, implicit-def dead %sp, implicit %sp
686*9880d681SAndroid Build Coastguard Worker
687*9880d681SAndroid Build Coastguard Worker  bb.2.while.body:
688*9880d681SAndroid Build Coastguard Worker    successors: %bb.2.while.body
689*9880d681SAndroid Build Coastguard Worker
690*9880d681SAndroid Build Coastguard Worker    BT %bb.2.while.body
691*9880d681SAndroid Build Coastguard Worker
692*9880d681SAndroid Build Coastguard Worker  bb.3.if.end:
693*9880d681SAndroid Build Coastguard Worker    successors: %bb.4.if.then4, %bb.6.if.end7
694*9880d681SAndroid Build Coastguard Worker    liveins: %sr
695*9880d681SAndroid Build Coastguard Worker
696*9880d681SAndroid Build Coastguard Worker    BRCC %bb.6.if.end7, 14, implicit %sr
697*9880d681SAndroid Build Coastguard Worker    BT %bb.4.if.then4
698*9880d681SAndroid Build Coastguard Worker
699*9880d681SAndroid Build Coastguard Worker  bb.4.if.then4:
700*9880d681SAndroid Build Coastguard Worker    successors: %bb.5.while.body6
701*9880d681SAndroid Build Coastguard Worker
702*9880d681SAndroid Build Coastguard Worker    ADJCALLSTACKDOWN 0, implicit-def dead %sp, implicit %sp
703*9880d681SAndroid Build Coastguard Worker    CALL @g, csr, implicit-def dead %rca, implicit %sp, implicit-def %sp, implicit-def %rv
704*9880d681SAndroid Build Coastguard Worker    ADJCALLSTACKUP 0, 0, implicit-def dead %sp, implicit %sp
705*9880d681SAndroid Build Coastguard Worker
706*9880d681SAndroid Build Coastguard Worker  bb.5.while.body6:
707*9880d681SAndroid Build Coastguard Worker    successors: %bb.5.while.body6
708*9880d681SAndroid Build Coastguard Worker
709*9880d681SAndroid Build Coastguard Worker    BT %bb.5.while.body6
710*9880d681SAndroid Build Coastguard Worker
711*9880d681SAndroid Build Coastguard Worker  bb.6.if.end7:
712*9880d681SAndroid Build Coastguard Worker    RET implicit %rca
713*9880d681SAndroid Build Coastguard Worker
714*9880d681SAndroid Build Coastguard Worker...
715