|
14 | 14 | @syCTRO = external global i32, align 4 |
15 | 15 |
|
16 | 16 | define i8* @SyFgets(i8* %line, i64 %length, i64 %fid) { |
17 | | -; CHECK-LABEL: SyFgets: |
18 | | -; CHECK: ## %bb.0: ## %entry |
19 | | -; CHECK-NEXT: pushq %rbp |
20 | | -; CHECK-NEXT: .cfi_def_cfa_offset 16 |
21 | | -; CHECK-NEXT: pushq %r15 |
22 | | -; CHECK-NEXT: .cfi_def_cfa_offset 24 |
23 | | -; CHECK-NEXT: pushq %r14 |
24 | | -; CHECK-NEXT: .cfi_def_cfa_offset 32 |
25 | | -; CHECK-NEXT: pushq %r13 |
26 | | -; CHECK-NEXT: .cfi_def_cfa_offset 40 |
27 | | -; CHECK-NEXT: pushq %r12 |
28 | | -; CHECK-NEXT: .cfi_def_cfa_offset 48 |
29 | | -; CHECK-NEXT: pushq %rbx |
30 | | -; CHECK-NEXT: .cfi_def_cfa_offset 56 |
31 | | -; CHECK-NEXT: subq $552, %rsp ## imm = 0x228 |
32 | | -; CHECK-NEXT: .cfi_def_cfa_offset 608 |
33 | | -; CHECK-NEXT: .cfi_offset %rbx, -56 |
34 | | -; CHECK-NEXT: .cfi_offset %r12, -48 |
35 | | -; CHECK-NEXT: .cfi_offset %r13, -40 |
36 | | -; CHECK-NEXT: .cfi_offset %r14, -32 |
37 | | -; CHECK-NEXT: .cfi_offset %r15, -24 |
38 | | -; CHECK-NEXT: .cfi_offset %rbp, -16 |
39 | | -; CHECK-NEXT: testq $-3, %rdx |
40 | | -; CHECK-NEXT: jne LBB0_4 |
41 | | -; CHECK-NEXT: ## %bb.1: ## %if.end |
42 | | -; CHECK-NEXT: xorl %eax, %eax |
43 | | -; CHECK-NEXT: testb %al, %al |
44 | | -; CHECK-NEXT: jne LBB0_5 |
45 | | -; CHECK-NEXT: ## %bb.2: ## %if.then4 |
46 | | -; CHECK-NEXT: xorl %eax, %eax |
47 | | -; CHECK-NEXT: testb %al, %al |
48 | | -; CHECK-NEXT: je LBB0_55 |
49 | | -; CHECK-NEXT: ## %bb.3: ## %SyTime.exit |
50 | | -; CHECK-NEXT: xorl %eax, %eax |
51 | | -; CHECK-NEXT: testb %al, %al |
52 | | -; CHECK-NEXT: je LBB0_55 |
53 | | -; CHECK-NEXT: LBB0_4: ## %cleanup |
54 | | -; CHECK-NEXT: addq $552, %rsp ## imm = 0x228 |
55 | | -; CHECK-NEXT: popq %rbx |
56 | | -; CHECK-NEXT: popq %r12 |
57 | | -; CHECK-NEXT: popq %r13 |
58 | | -; CHECK-NEXT: popq %r14 |
59 | | -; CHECK-NEXT: popq %r15 |
60 | | -; CHECK-NEXT: popq %rbp |
61 | | -; CHECK-NEXT: retq |
62 | | -; CHECK-NEXT: LBB0_5: ## %if.end25 |
63 | | -; CHECK-NEXT: xorl %eax, %eax |
64 | | -; CHECK-NEXT: testb %al, %al |
65 | | -; CHECK-NEXT: je LBB0_55 |
66 | | -; CHECK-NEXT: ## %bb.6: ## %SyTime.exit2720 |
67 | | -; CHECK-NEXT: movq %rdx, %rbx |
68 | | -; CHECK-NEXT: movq %rdi, %rbp |
69 | | -; CHECK-NEXT: leaq {{[0-9]+}}(%rsp), %rax |
70 | | -; CHECK-NEXT: leaq {{[0-9]+}}(%rsp), %rcx |
71 | | -; CHECK-NEXT: cmpq %rax, %rcx |
72 | | -; CHECK-NEXT: jae LBB0_8 |
73 | | -; CHECK-NEXT: ## %bb.7: ## %for.body.lr.ph |
74 | | -; CHECK-NEXT: movl $512, %edx ## imm = 0x200 |
75 | | -; CHECK-NEXT: movl $32, %esi |
76 | | -; CHECK-NEXT: callq _memset |
77 | | -; CHECK-NEXT: LBB0_8: ## %while.body.preheader |
78 | | -; CHECK-NEXT: imulq $1040, %rbx, %rax ## imm = 0x410 |
79 | | -; CHECK-NEXT: movq _syBuf@GOTPCREL(%rip), %rcx |
80 | | -; CHECK-NEXT: leaq 8(%rcx,%rax), %rdx |
81 | | -; CHECK-NEXT: movl $1, %r15d |
82 | | -; CHECK-NEXT: movq _syCTRO@GOTPCREL(%rip), %rax |
83 | | -; CHECK-NEXT: movb $1, %cl |
84 | | -; CHECK-NEXT: .p2align 4, 0x90 |
85 | | -; CHECK-NEXT: LBB0_9: ## %do.body |
86 | | -; CHECK-NEXT: ## =>This Inner Loop Header: Depth=1 |
87 | | -; CHECK-NEXT: movl $0, (%rax) |
88 | | -; CHECK-NEXT: testb %cl, %cl |
89 | | -; CHECK-NEXT: jne LBB0_9 |
90 | | -; CHECK-NEXT: ## %bb.10: ## %do.end |
91 | | -; CHECK-NEXT: movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill |
92 | | -; CHECK-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill |
93 | | -; CHECK-NEXT: xorl %r13d, %r13d |
94 | | -; CHECK-NEXT: testb %r13b, %r13b |
95 | | -; CHECK-NEXT: jne LBB0_11 |
96 | | -; CHECK-NEXT: ## %bb.12: ## %while.body200.preheader |
97 | | -; CHECK-NEXT: xorl %r12d, %r12d |
98 | | -; CHECK-NEXT: leaq LJTI0_0(%rip), %rdx |
99 | | -; CHECK-NEXT: leaq LJTI0_1(%rip), %rbx |
100 | | -; CHECK-NEXT: movl $0, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Folded Spill |
101 | | -; CHECK-NEXT: xorl %r14d, %r14d |
102 | | -; CHECK-NEXT: jmp LBB0_13 |
103 | | -; CHECK-NEXT: .p2align 4, 0x90 |
104 | | -; CHECK-NEXT: LBB0_20: ## %sw.bb256 |
105 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
106 | | -; CHECK-NEXT: movl %r13d, %r14d |
107 | | -; CHECK-NEXT: LBB0_21: ## %while.cond197.backedge |
108 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
109 | | -; CHECK-NEXT: decl %r15d |
110 | | -; CHECK-NEXT: testl %r15d, %r15d |
111 | | -; CHECK-NEXT: movl %r14d, %r13d |
112 | | -; CHECK-NEXT: jle LBB0_22 |
113 | | -; CHECK-NEXT: LBB0_13: ## %while.body200 |
114 | | -; CHECK-NEXT: ## =>This Loop Header: Depth=1 |
115 | | -; CHECK-NEXT: ## Child Loop BB0_29 Depth 2 |
116 | | -; CHECK-NEXT: ## Child Loop BB0_38 Depth 2 |
117 | | -; CHECK-NEXT: leal -268(%r13), %eax |
118 | | -; CHECK-NEXT: cmpl $105, %eax |
119 | | -; CHECK-NEXT: ja LBB0_14 |
120 | | -; CHECK-NEXT: ## %bb.56: ## %while.body200 |
121 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
122 | | -; CHECK-NEXT: movslq (%rbx,%rax,4), %rax |
123 | | -; CHECK-NEXT: addq %rbx, %rax |
124 | | -; CHECK-NEXT: jmpq *%rax |
125 | | -; CHECK-NEXT: LBB0_44: ## %while.cond1037.preheader |
126 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
127 | | -; CHECK-NEXT: testb %r12b, %r12b |
128 | | -; CHECK-NEXT: movl %r13d, %r14d |
129 | | -; CHECK-NEXT: jne LBB0_21 |
130 | | -; CHECK-NEXT: jmp LBB0_55 |
131 | | -; CHECK-NEXT: .p2align 4, 0x90 |
132 | | -; CHECK-NEXT: LBB0_14: ## %while.body200 |
133 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
134 | | -; CHECK-NEXT: leal 1(%r13), %eax |
135 | | -; CHECK-NEXT: cmpl $21, %eax |
136 | | -; CHECK-NEXT: ja LBB0_20 |
137 | | -; CHECK-NEXT: ## %bb.15: ## %while.body200 |
138 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
139 | | -; CHECK-NEXT: movl $-1, %r14d |
140 | | -; CHECK-NEXT: movslq (%rdx,%rax,4), %rax |
141 | | -; CHECK-NEXT: addq %rdx, %rax |
142 | | -; CHECK-NEXT: jmpq *%rax |
143 | | -; CHECK-NEXT: LBB0_18: ## %while.cond201.preheader |
144 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
145 | | -; CHECK-NEXT: movl $1, %r14d |
146 | | -; CHECK-NEXT: jmp LBB0_21 |
147 | | -; CHECK-NEXT: LBB0_26: ## %sw.bb474 |
148 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
149 | | -; CHECK-NEXT: testb %r12b, %r12b |
150 | | -; CHECK-NEXT: ## implicit-def: $rbp |
151 | | -; CHECK-NEXT: jne LBB0_34 |
152 | | -; CHECK-NEXT: ## %bb.27: ## %do.body479.preheader |
153 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
154 | | -; CHECK-NEXT: testb %r12b, %r12b |
155 | | -; CHECK-NEXT: ## implicit-def: $rbp |
156 | | -; CHECK-NEXT: jne LBB0_34 |
157 | | -; CHECK-NEXT: ## %bb.28: ## %land.rhs485.preheader |
158 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
159 | | -; CHECK-NEXT: ## implicit-def: $rax |
160 | | -; CHECK-NEXT: jmp LBB0_29 |
161 | | -; CHECK-NEXT: .p2align 4, 0x90 |
162 | | -; CHECK-NEXT: LBB0_32: ## %do.body479.backedge |
163 | | -; CHECK-NEXT: ## in Loop: Header=BB0_29 Depth=2 |
164 | | -; CHECK-NEXT: leaq 1(%rbp), %rax |
165 | | -; CHECK-NEXT: testb %r12b, %r12b |
166 | | -; CHECK-NEXT: je LBB0_33 |
167 | | -; CHECK-NEXT: LBB0_29: ## %land.rhs485 |
168 | | -; CHECK-NEXT: ## Parent Loop BB0_13 Depth=1 |
169 | | -; CHECK-NEXT: ## => This Inner Loop Header: Depth=2 |
170 | | -; CHECK-NEXT: testb %al, %al |
171 | | -; CHECK-NEXT: js LBB0_55 |
172 | | -; CHECK-NEXT: ## %bb.30: ## %cond.true.i.i2780 |
173 | | -; CHECK-NEXT: ## in Loop: Header=BB0_29 Depth=2 |
174 | | -; CHECK-NEXT: movq %rax, %rbp |
175 | | -; CHECK-NEXT: testb %r12b, %r12b |
176 | | -; CHECK-NEXT: jne LBB0_32 |
177 | | -; CHECK-NEXT: ## %bb.31: ## %lor.rhs500 |
178 | | -; CHECK-NEXT: ## in Loop: Header=BB0_29 Depth=2 |
179 | | -; CHECK-NEXT: movl $256, %esi ## imm = 0x100 |
180 | | -; CHECK-NEXT: callq ___maskrune |
181 | | -; CHECK-NEXT: testb %r12b, %r12b |
182 | | -; CHECK-NEXT: jne LBB0_32 |
183 | | -; CHECK-NEXT: jmp LBB0_34 |
184 | | -; CHECK-NEXT: LBB0_45: ## %sw.bb1134 |
185 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
186 | | -; CHECK-NEXT: leaq {{[0-9]+}}(%rsp), %rax |
187 | | -; CHECK-NEXT: leaq {{[0-9]+}}(%rsp), %rcx |
188 | | -; CHECK-NEXT: cmpq %rax, %rcx |
189 | | -; CHECK-NEXT: jb LBB0_55 |
190 | | -; CHECK-NEXT: ## %bb.46: ## in Loop: Header=BB0_13 Depth=1 |
191 | | -; CHECK-NEXT: movl $0, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Folded Spill |
192 | | -; CHECK-NEXT: movl $268, %r14d ## imm = 0x10C |
193 | | -; CHECK-NEXT: jmp LBB0_21 |
194 | | -; CHECK-NEXT: LBB0_40: ## %sw.bb566 |
195 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
196 | | -; CHECK-NEXT: movl $20, %r14d |
197 | | -; CHECK-NEXT: jmp LBB0_21 |
198 | | -; CHECK-NEXT: LBB0_19: ## %sw.bb243 |
199 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
200 | | -; CHECK-NEXT: movl $2, %r14d |
201 | | -; CHECK-NEXT: jmp LBB0_21 |
202 | | -; CHECK-NEXT: LBB0_33: ## %if.end517.loopexitsplit |
203 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
204 | | -; CHECK-NEXT: incq %rbp |
205 | | -; CHECK-NEXT: LBB0_34: ## %if.end517 |
206 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
207 | | -; CHECK-NEXT: leal -324(%r14), %eax |
208 | | -; CHECK-NEXT: cmpl $59, %eax |
209 | | -; CHECK-NEXT: ja LBB0_35 |
210 | | -; CHECK-NEXT: ## %bb.57: ## %if.end517 |
211 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
212 | | -; CHECK-NEXT: movabsq $576460756598390785, %rcx ## imm = 0x800000100000001 |
213 | | -; CHECK-NEXT: btq %rax, %rcx |
214 | | -; CHECK-NEXT: jb LBB0_38 |
215 | | -; CHECK-NEXT: LBB0_35: ## %if.end517 |
216 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
217 | | -; CHECK-NEXT: cmpl $11, %r14d |
218 | | -; CHECK-NEXT: je LBB0_38 |
219 | | -; CHECK-NEXT: ## %bb.36: ## %if.end517 |
220 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
221 | | -; CHECK-NEXT: cmpl $24, %r14d |
222 | | -; CHECK-NEXT: je LBB0_38 |
223 | | -; CHECK-NEXT: ## %bb.37: ## %if.then532 |
224 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
225 | | -; CHECK-NEXT: movq _SyFgets.yank@GOTPCREL(%rip), %rax |
226 | | -; CHECK-NEXT: movb $0, (%rax) |
227 | | -; CHECK-NEXT: .p2align 4, 0x90 |
228 | | -; CHECK-NEXT: LBB0_38: ## %for.cond534 |
229 | | -; CHECK-NEXT: ## Parent Loop BB0_13 Depth=1 |
230 | | -; CHECK-NEXT: ## => This Inner Loop Header: Depth=2 |
231 | | -; CHECK-NEXT: testb %r12b, %r12b |
232 | | -; CHECK-NEXT: jne LBB0_38 |
233 | | -; CHECK-NEXT: ## %bb.39: ## %for.cond542.preheader |
234 | | -; CHECK-NEXT: ## in Loop: Header=BB0_13 Depth=1 |
235 | | -; CHECK-NEXT: testb %r12b, %r12b |
236 | | -; CHECK-NEXT: movb $0, (%rbp) |
237 | | -; CHECK-NEXT: movl %r13d, %r14d |
238 | | -; CHECK-NEXT: leaq LJTI0_0(%rip), %rdx |
239 | | -; CHECK-NEXT: jmp LBB0_21 |
240 | | -; CHECK-NEXT: .p2align 4, 0x90 |
241 | | -; CHECK-NEXT: LBB0_42: ## %while.cond864 |
242 | | -; CHECK-NEXT: ## =>This Inner Loop Header: Depth=1 |
243 | | -; CHECK-NEXT: jmp LBB0_42 |
244 | | -; CHECK-NEXT: .p2align 4, 0x90 |
245 | | -; CHECK-NEXT: LBB0_43: ## %while.cond962 |
246 | | -; CHECK-NEXT: ## =>This Inner Loop Header: Depth=1 |
247 | | -; CHECK-NEXT: jmp LBB0_43 |
248 | | -; CHECK-NEXT: .p2align 4, 0x90 |
249 | | -; CHECK-NEXT: LBB0_25: ## %for.cond357 |
250 | | -; CHECK-NEXT: ## =>This Inner Loop Header: Depth=1 |
251 | | -; CHECK-NEXT: jmp LBB0_25 |
252 | | -; CHECK-NEXT: LBB0_11: |
253 | | -; CHECK-NEXT: movl $0, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Folded Spill |
254 | | -; CHECK-NEXT: xorl %r14d, %r14d |
255 | | -; CHECK-NEXT: LBB0_22: ## %while.end1465 |
256 | | -; CHECK-NEXT: incl %r14d |
257 | | -; CHECK-NEXT: cmpl $16, %r14d |
258 | | -; CHECK-NEXT: ja LBB0_50 |
259 | | -; CHECK-NEXT: ## %bb.23: ## %while.end1465 |
260 | | -; CHECK-NEXT: movl $83969, %eax ## imm = 0x14801 |
261 | | -; CHECK-NEXT: btl %r14d, %eax |
262 | | -; CHECK-NEXT: jae LBB0_50 |
263 | | -; CHECK-NEXT: ## %bb.24: |
264 | | -; CHECK-NEXT: xorl %ebp, %ebp |
265 | | -; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rbx ## 8-byte Reload |
266 | | -; CHECK-NEXT: LBB0_48: ## %if.then1477 |
267 | | -; CHECK-NEXT: movl $1, %edx |
268 | | -; CHECK-NEXT: callq _write |
269 | | -; CHECK-NEXT: subq %rbp, %rbx |
270 | | -; CHECK-NEXT: movq _syHistory@GOTPCREL(%rip), %rax |
271 | | -; CHECK-NEXT: leaq 8189(%rbx,%rax), %rax |
272 | | -; CHECK-NEXT: .p2align 4, 0x90 |
273 | | -; CHECK-NEXT: LBB0_49: ## %for.body1723 |
274 | | -; CHECK-NEXT: ## =>This Inner Loop Header: Depth=1 |
275 | | -; CHECK-NEXT: decq %rax |
276 | | -; CHECK-NEXT: jmp LBB0_49 |
277 | | -; CHECK-NEXT: LBB0_47: ## %if.then1477.loopexit |
278 | | -; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rbx ## 8-byte Reload |
279 | | -; CHECK-NEXT: movq %rbx, %rbp |
280 | | -; CHECK-NEXT: jmp LBB0_48 |
281 | | -; CHECK-NEXT: LBB0_16: ## %while.cond635.preheader |
282 | | -; CHECK-NEXT: xorl %eax, %eax |
283 | | -; CHECK-NEXT: testb %al, %al |
284 | | -; CHECK-NEXT: je LBB0_41 |
285 | | -; CHECK-NEXT: .p2align 4, 0x90 |
286 | | -; CHECK-NEXT: LBB0_17: ## %for.body643.us |
287 | | -; CHECK-NEXT: ## =>This Inner Loop Header: Depth=1 |
288 | | -; CHECK-NEXT: jmp LBB0_17 |
289 | | -; CHECK-NEXT: .p2align 4, 0x90 |
290 | | -; CHECK-NEXT: LBB0_41: ## %while.cond661 |
291 | | -; CHECK-NEXT: ## =>This Inner Loop Header: Depth=1 |
292 | | -; CHECK-NEXT: jmp LBB0_41 |
293 | | -; CHECK-NEXT: LBB0_50: ## %for.cond1480.preheader |
294 | | -; CHECK-NEXT: movl $512, %eax ## imm = 0x200 |
295 | | -; CHECK-NEXT: cmpq %rax, %rax |
296 | | -; CHECK-NEXT: jae LBB0_55 |
297 | | -; CHECK-NEXT: ## %bb.51: ## %for.body1664.lr.ph |
298 | | -; CHECK-NEXT: xorl %eax, %eax |
299 | | -; CHECK-NEXT: testb %al, %al |
300 | | -; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rbx ## 8-byte Reload |
301 | | -; CHECK-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %ebp ## 4-byte Reload |
302 | | -; CHECK-NEXT: jne LBB0_54 |
303 | | -; CHECK-NEXT: ## %bb.52: ## %while.body1679.preheader |
304 | | -; CHECK-NEXT: incl %ebp |
305 | | -; CHECK-NEXT: .p2align 4, 0x90 |
306 | | -; CHECK-NEXT: LBB0_53: ## %while.body1679 |
307 | | -; CHECK-NEXT: ## =>This Inner Loop Header: Depth=1 |
308 | | -; CHECK-NEXT: movq (%rbx), %rdi |
309 | | -; CHECK-NEXT: callq _fileno |
310 | | -; CHECK-NEXT: movslq %ebp, %rax |
311 | | -; CHECK-NEXT: leal 1(%rax), %ebp |
312 | | -; CHECK-NEXT: cmpq %rax, %rax |
313 | | -; CHECK-NEXT: jl LBB0_53 |
314 | | -; CHECK-NEXT: LBB0_54: ## %while.cond1683.preheader |
315 | | -; CHECK-NEXT: xorl %eax, %eax |
316 | | -; CHECK-NEXT: testb %al, %al |
317 | | -; CHECK-NEXT: LBB0_55: ## %if.then.i |
318 | | -; CHECK-NEXT: ud2 |
319 | 17 | entry: |
320 | 18 | %sub.ptr.rhs.cast646 = ptrtoint i8* %line to i64 |
321 | 19 | %old = alloca [512 x i8], align 16 |
|
0 commit comments