xref: /aosp_15_r20/external/llvm/test/CodeGen/PowerPC/subreg-postra.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=pwr7 < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-m:e-i64:64-n32:64"
3*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-unknown-linux-gnu"
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind
6*9880d681SAndroid Build Coastguard Workerdefine void @jbd2_journal_commit_transaction(i32* %journal, i64 %inp1, i32 %inp2,
7*9880d681SAndroid Build Coastguard Worker                                             i32* %inp3, i32** %inp4,
8*9880d681SAndroid Build Coastguard Worker                                             i32** %inp5, i1 %inp6,
9*9880d681SAndroid Build Coastguard Worker                                             i1 %inp7, i1 %inp8) #0 {
10*9880d681SAndroid Build Coastguard Workerentry:
11*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %do.body, label %if.then5
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerif.then5:                                         ; preds = %entry
14*9880d681SAndroid Build Coastguard Worker  unreachable
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Workerdo.body:                                          ; preds = %entry
17*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %do.body.i, label %trace_jbd2_start_commit.exit
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdo.body.i:                                        ; preds = %do.body
20*9880d681SAndroid Build Coastguard Worker  unreachable
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workertrace_jbd2_start_commit.exit:                     ; preds = %do.body
23*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %do.body.i1116, label %trace_jbd2_commit_locking.exit
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Workerdo.body.i1116:                                    ; preds = %trace_jbd2_start_commit.exit
26*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %if.end.i1123, label %do.body5.i1122
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Workerdo.body5.i1122:                                   ; preds = %do.body.i1116
29*9880d681SAndroid Build Coastguard Worker  unreachable
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Workerif.end.i1123:                                     ; preds = %do.body.i1116
32*9880d681SAndroid Build Coastguard Worker  br label %trace_jbd2_commit_locking.exit
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Workertrace_jbd2_commit_locking.exit:                   ; preds = %if.end.i1123, %trace_jbd2_start_commit.exit
35*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %spin_unlock.exit1146, label %if.then.i.i.i.i1144
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Workerif.then.i.i.i.i1144:                              ; preds = %trace_jbd2_commit_locking.exit
38*9880d681SAndroid Build Coastguard Worker  unreachable
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Workerspin_unlock.exit1146:                             ; preds = %trace_jbd2_commit_locking.exit
41*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %spin_unlock.exit1154, label %if.then.i.i.i.i1152
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Workerif.then.i.i.i.i1152:                              ; preds = %spin_unlock.exit1146
44*9880d681SAndroid Build Coastguard Worker  br label %spin_unlock.exit1154
45*9880d681SAndroid Build Coastguard Worker
46*9880d681SAndroid Build Coastguard Workerspin_unlock.exit1154:                             ; preds = %if.then.i.i.i.i1152, %spin_unlock.exit1146
47*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %do.body.i1159, label %trace_jbd2_commit_flushing.exit
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Workerdo.body.i1159:                                    ; preds = %spin_unlock.exit1154
50*9880d681SAndroid Build Coastguard Worker  unreachable
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Workertrace_jbd2_commit_flushing.exit:                  ; preds = %spin_unlock.exit1154
53*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.end.i, label %for.body.lr.ph.i
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Workerfor.body.lr.ph.i:                                 ; preds = %trace_jbd2_commit_flushing.exit
56*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %spin_unlock.exit.i, label %if.then.i.i.i.i.i
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Workerif.then.i.i.i.i.i:                                ; preds = %for.body.lr.ph.i
59*9880d681SAndroid Build Coastguard Worker  unreachable
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workerspin_unlock.exit.i:                               ; preds = %for.body.lr.ph.i
62*9880d681SAndroid Build Coastguard Worker  unreachable
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Workerfor.end.i:                                        ; preds = %trace_jbd2_commit_flushing.exit
65*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %journal_submit_data_buffers.exit, label %if.then.i.i.i.i31.i
66*9880d681SAndroid Build Coastguard Worker
67*9880d681SAndroid Build Coastguard Workerif.then.i.i.i.i31.i:                              ; preds = %for.end.i
68*9880d681SAndroid Build Coastguard Worker  unreachable
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Workerjournal_submit_data_buffers.exit:                 ; preds = %for.end.i
71*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %if.end103, label %if.then102
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Workerif.then102:                                       ; preds = %journal_submit_data_buffers.exit
74*9880d681SAndroid Build Coastguard Worker  unreachable
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Workerif.end103:                                        ; preds = %journal_submit_data_buffers.exit
77*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %do.body.i1182, label %trace_jbd2_commit_logging.exit
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard Workerdo.body.i1182:                                    ; preds = %if.end103
80*9880d681SAndroid Build Coastguard Worker  unreachable
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Workertrace_jbd2_commit_logging.exit:                   ; preds = %if.end103
83*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.end.i1287, label %for.body.i1277
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Workerfor.body.i1277:                                   ; preds = %trace_jbd2_commit_logging.exit
86*9880d681SAndroid Build Coastguard Worker  unreachable
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Workerfor.end.i1287:                                    ; preds = %trace_jbd2_commit_logging.exit
89*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %journal_finish_inode_data_buffers.exit, label %if.then.i.i.i.i84.i
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Workerif.then.i.i.i.i84.i:                              ; preds = %for.end.i1287
92*9880d681SAndroid Build Coastguard Worker  unreachable
93*9880d681SAndroid Build Coastguard Worker
94*9880d681SAndroid Build Coastguard Workerjournal_finish_inode_data_buffers.exit:           ; preds = %for.end.i1287
95*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %if.end256, label %if.then249
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerif.then249:                                       ; preds = %journal_finish_inode_data_buffers.exit
98*9880d681SAndroid Build Coastguard Worker  unreachable
99*9880d681SAndroid Build Coastguard Worker
100*9880d681SAndroid Build Coastguard Workerif.end256:                                        ; preds = %journal_finish_inode_data_buffers.exit
101*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %do.body277, label %if.then260
102*9880d681SAndroid Build Coastguard Worker
103*9880d681SAndroid Build Coastguard Workerif.then260:                                       ; preds = %if.end256
104*9880d681SAndroid Build Coastguard Worker  br label %do.body277
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Workerdo.body277:                                       ; preds = %if.then260, %if.end256
107*9880d681SAndroid Build Coastguard Worker  br label %while.body318
108*9880d681SAndroid Build Coastguard Worker
109*9880d681SAndroid Build Coastguard Workerwhile.body318:                                    ; preds = %wait_on_buffer.exit, %do.body277
110*9880d681SAndroid Build Coastguard Worker  %tobool.i1295 = icmp eq i64 %inp1, 0
111*9880d681SAndroid Build Coastguard Worker  br i1 %tobool.i1295, label %wait_on_buffer.exit, label %if.then.i1296
112*9880d681SAndroid Build Coastguard Worker
113*9880d681SAndroid Build Coastguard Workerif.then.i1296:                                    ; preds = %while.body318
114*9880d681SAndroid Build Coastguard Worker  unreachable
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Workerwait_on_buffer.exit:                              ; preds = %while.body318
117*9880d681SAndroid Build Coastguard Worker  br i1 %inp6, label %do.body378, label %while.body318
118*9880d681SAndroid Build Coastguard Worker
119*9880d681SAndroid Build Coastguard Workerdo.body378:                                       ; preds = %wait_on_buffer.exit
120*9880d681SAndroid Build Coastguard Worker  br i1 %inp7, label %while.end418, label %while.body392.lr.ph
121*9880d681SAndroid Build Coastguard Worker
122*9880d681SAndroid Build Coastguard Workerwhile.body392.lr.ph:                              ; preds = %do.body378
123*9880d681SAndroid Build Coastguard Worker  br label %while.body392
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard Workerwhile.body392:                                    ; preds = %wait_on_buffer.exit1319, %while.body392.lr.ph
126*9880d681SAndroid Build Coastguard Worker  %0 = load i8*, i8** undef, align 8
127*9880d681SAndroid Build Coastguard Worker  %add.ptr399 = getelementptr inbounds i8, i8* %0, i64 -72
128*9880d681SAndroid Build Coastguard Worker  %b_state.i.i1314 = bitcast i8* %add.ptr399 to i64*
129*9880d681SAndroid Build Coastguard Worker  %tobool.i1316 = icmp eq i64 %inp1, 0
130*9880d681SAndroid Build Coastguard Worker  br i1 %tobool.i1316, label %wait_on_buffer.exit1319, label %if.then.i1317
131*9880d681SAndroid Build Coastguard Worker
132*9880d681SAndroid Build Coastguard Workerif.then.i1317:                                    ; preds = %while.body392
133*9880d681SAndroid Build Coastguard Worker  unreachable
134*9880d681SAndroid Build Coastguard Worker
135*9880d681SAndroid Build Coastguard Workerwait_on_buffer.exit1319:                          ; preds = %while.body392
136*9880d681SAndroid Build Coastguard Worker  %1 = load volatile i64, i64* %b_state.i.i1314, align 8
137*9880d681SAndroid Build Coastguard Worker  %conv.i.i1322 = and i64 %1, 1
138*9880d681SAndroid Build Coastguard Worker  %lnot404 = icmp eq i64 %conv.i.i1322, 0
139*9880d681SAndroid Build Coastguard Worker  %.err.4 = select i1 %lnot404, i32 -5, i32 %inp2
140*9880d681SAndroid Build Coastguard Worker  %2 = call i64 asm sideeffect "1:.long 0x7c0000a8 $| ((($0) & 0x1f) << 21) $| (((0) & 0x1f) << 16) $| ((($3) & 0x1f) << 11) $| (((0) & 0x1) << 0) \0Aandc $0,$0,$2\0Astdcx. $0,0,$3\0Abne- 1b\0A", "=&r,=*m,r,r,*m,~{cc},~{memory}"(i64* %b_state.i.i1314, i64 262144, i64* %b_state.i.i1314, i64* %b_state.i.i1314) #1
141*9880d681SAndroid Build Coastguard Worker  %prev.i.i.i1325 = getelementptr inbounds i8, i8* %0, i64 8
142*9880d681SAndroid Build Coastguard Worker  %3 = load i32*, i32** %inp4, align 8
143*9880d681SAndroid Build Coastguard Worker  store i32* %3, i32** %inp5, align 8
144*9880d681SAndroid Build Coastguard Worker  call void @__brelse(i32* %3) #1
145*9880d681SAndroid Build Coastguard Worker  br i1 %inp8, label %while.end418, label %while.body392
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @jbd2_journal_commit_transaction
148*9880d681SAndroid Build Coastguard Worker; CHECK: andi.
149*9880d681SAndroid Build Coastguard Worker; CHECK: crmove
150*9880d681SAndroid Build Coastguard Worker; CHECK: stdcx.
151*9880d681SAndroid Build Coastguard Worker; CHECK: isel {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}},
152*9880d681SAndroid Build Coastguard Worker
153*9880d681SAndroid Build Coastguard Workerwhile.end418:                                     ; preds = %wait_on_buffer.exit1319, %do.body378
154*9880d681SAndroid Build Coastguard Worker  %err.4.lcssa = phi i32 [ %inp2, %do.body378 ], [ %.err.4, %wait_on_buffer.exit1319 ]
155*9880d681SAndroid Build Coastguard Worker  br i1 %inp7, label %if.end421, label %if.then420
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Workerif.then420:                                       ; preds = %while.end418
158*9880d681SAndroid Build Coastguard Worker  call void @jbd2_journal_abort(i32* %journal, i32 signext %err.4.lcssa) #1
159*9880d681SAndroid Build Coastguard Worker  br label %if.end421
160*9880d681SAndroid Build Coastguard Worker
161*9880d681SAndroid Build Coastguard Workerif.end421:                                        ; preds = %if.then420, %while.end418
162*9880d681SAndroid Build Coastguard Worker  unreachable
163*9880d681SAndroid Build Coastguard Worker}
164*9880d681SAndroid Build Coastguard Worker
165*9880d681SAndroid Build Coastguard Workerdeclare void @jbd2_journal_abort(i32*, i32 signext)
166*9880d681SAndroid Build Coastguard Worker
167*9880d681SAndroid Build Coastguard Workerdeclare void @__brelse(i32*)
168*9880d681SAndroid Build Coastguard Worker
169*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind }
170*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind }
171*9880d681SAndroid Build Coastguard Worker
172