Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / X86 / inline-asm-flag-output.ll
blob0afdb740233d92502a0fb9e7e0d47989f31ef5fd
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i686--   -no-integrated-as | FileCheck %s -check-prefix=X32
3 ; RUN: llc < %s -mtriple=x86_64-- -no-integrated-as | FileCheck %s -check-prefix=X64
5 define i32 @test_cca(i64 %nr, ptr %addr) nounwind {
6 ; X32-LABEL: test_cca:
7 ; X32:       # %bb.0: # %entry
8 ; X32-NEXT:    pushl %esi
9 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
11 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
12 ; X32-NEXT:    xorl %eax, %eax
13 ; X32-NEXT:    #APP
14 ; X32-NEXT:    cmp %ecx,(%esi)
15 ; X32-NEXT:    #NO_APP
16 ; X32-NEXT:    seta %al
17 ; X32-NEXT:    popl %esi
18 ; X32-NEXT:    retl
20 ; X64-LABEL: test_cca:
21 ; X64:       # %bb.0: # %entry
22 ; X64-NEXT:    xorl %eax, %eax
23 ; X64-NEXT:    #APP
24 ; X64-NEXT:    cmp %rdi,(%rsi)
25 ; X64-NEXT:    #NO_APP
26 ; X64-NEXT:    seta %al
27 ; X64-NEXT:    retq
28 entry:
29   %cc = tail call i32 asm "cmp $2,$1", "={@cca},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
30   %tobool = icmp ne i32 %cc, 0
31   %rv = zext i1 %tobool to i32
32   ret i32 %rv
36 define i32 @test_ccae(i64 %nr, ptr %addr) nounwind {
37 ; X32-LABEL: test_ccae:
38 ; X32:       # %bb.0: # %entry
39 ; X32-NEXT:    pushl %esi
40 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
41 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
42 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
43 ; X32-NEXT:    xorl %eax, %eax
44 ; X32-NEXT:    #APP
45 ; X32-NEXT:    cmp %ecx,(%esi)
46 ; X32-NEXT:    #NO_APP
47 ; X32-NEXT:    setae %al
48 ; X32-NEXT:    popl %esi
49 ; X32-NEXT:    retl
51 ; X64-LABEL: test_ccae:
52 ; X64:       # %bb.0: # %entry
53 ; X64-NEXT:    xorl %eax, %eax
54 ; X64-NEXT:    #APP
55 ; X64-NEXT:    cmp %rdi,(%rsi)
56 ; X64-NEXT:    #NO_APP
57 ; X64-NEXT:    setae %al
58 ; X64-NEXT:    retq
59 entry:
60   %cc = tail call i32 asm "cmp $2,$1", "={@ccae},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
61   %tobool = icmp ne i32 %cc, 0
62   %rv = zext i1 %tobool to i32
63   ret i32 %rv
67 define i32 @test_ccb(i64 %nr, ptr %addr) nounwind {
68 ; X32-LABEL: test_ccb:
69 ; X32:       # %bb.0: # %entry
70 ; X32-NEXT:    pushl %esi
71 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
72 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
73 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
74 ; X32-NEXT:    xorl %eax, %eax
75 ; X32-NEXT:    #APP
76 ; X32-NEXT:    cmp %ecx,(%esi)
77 ; X32-NEXT:    #NO_APP
78 ; X32-NEXT:    setb %al
79 ; X32-NEXT:    popl %esi
80 ; X32-NEXT:    retl
82 ; X64-LABEL: test_ccb:
83 ; X64:       # %bb.0: # %entry
84 ; X64-NEXT:    xorl %eax, %eax
85 ; X64-NEXT:    #APP
86 ; X64-NEXT:    cmp %rdi,(%rsi)
87 ; X64-NEXT:    #NO_APP
88 ; X64-NEXT:    setb %al
89 ; X64-NEXT:    retq
90 entry:
91   %cc = tail call i32 asm "cmp $2,$1", "={@ccb},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
92   %tobool = icmp ne i32 %cc, 0
93   %rv = zext i1 %tobool to i32
94   ret i32 %rv
98 define i32 @test_ccbe(i64 %nr, ptr %addr) nounwind {
99 ; X32-LABEL: test_ccbe:
100 ; X32:       # %bb.0: # %entry
101 ; X32-NEXT:    pushl %esi
102 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
103 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
104 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
105 ; X32-NEXT:    xorl %eax, %eax
106 ; X32-NEXT:    #APP
107 ; X32-NEXT:    cmp %ecx,(%esi)
108 ; X32-NEXT:    #NO_APP
109 ; X32-NEXT:    setbe %al
110 ; X32-NEXT:    popl %esi
111 ; X32-NEXT:    retl
113 ; X64-LABEL: test_ccbe:
114 ; X64:       # %bb.0: # %entry
115 ; X64-NEXT:    xorl %eax, %eax
116 ; X64-NEXT:    #APP
117 ; X64-NEXT:    cmp %rdi,(%rsi)
118 ; X64-NEXT:    #NO_APP
119 ; X64-NEXT:    setbe %al
120 ; X64-NEXT:    retq
121 entry:
122   %cc = tail call i32 asm "cmp $2,$1", "={@ccbe},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
123   %tobool = icmp ne i32 %cc, 0
124   %rv = zext i1 %tobool to i32
125   ret i32 %rv
129 define i32 @test_ccc(i64 %nr, ptr %addr) nounwind {
130 ; X32-LABEL: test_ccc:
131 ; X32:       # %bb.0: # %entry
132 ; X32-NEXT:    pushl %esi
133 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
134 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
135 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
136 ; X32-NEXT:    xorl %eax, %eax
137 ; X32-NEXT:    #APP
138 ; X32-NEXT:    cmp %ecx,(%esi)
139 ; X32-NEXT:    #NO_APP
140 ; X32-NEXT:    setb %al
141 ; X32-NEXT:    popl %esi
142 ; X32-NEXT:    retl
144 ; X64-LABEL: test_ccc:
145 ; X64:       # %bb.0: # %entry
146 ; X64-NEXT:    xorl %eax, %eax
147 ; X64-NEXT:    #APP
148 ; X64-NEXT:    cmp %rdi,(%rsi)
149 ; X64-NEXT:    #NO_APP
150 ; X64-NEXT:    setb %al
151 ; X64-NEXT:    retq
152 entry:
153   %cc = tail call i32 asm "cmp $2,$1", "={@ccc},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
154   %tobool = icmp ne i32 %cc, 0
155   %rv = zext i1 %tobool to i32
156   ret i32 %rv
160 define i32 @test_cce(i64 %nr, ptr %addr) nounwind {
161 ; X32-LABEL: test_cce:
162 ; X32:       # %bb.0: # %entry
163 ; X32-NEXT:    pushl %esi
164 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
165 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
166 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
167 ; X32-NEXT:    xorl %eax, %eax
168 ; X32-NEXT:    #APP
169 ; X32-NEXT:    cmp %ecx,(%esi)
170 ; X32-NEXT:    #NO_APP
171 ; X32-NEXT:    sete %al
172 ; X32-NEXT:    popl %esi
173 ; X32-NEXT:    retl
175 ; X64-LABEL: test_cce:
176 ; X64:       # %bb.0: # %entry
177 ; X64-NEXT:    xorl %eax, %eax
178 ; X64-NEXT:    #APP
179 ; X64-NEXT:    cmp %rdi,(%rsi)
180 ; X64-NEXT:    #NO_APP
181 ; X64-NEXT:    sete %al
182 ; X64-NEXT:    retq
183 entry:
184   %cc = tail call i32 asm "cmp $2,$1", "={@cce},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
185   %tobool = icmp ne i32 %cc, 0
186   %rv = zext i1 %tobool to i32
187   ret i32 %rv
191 define i32 @test_ccz(i64 %nr, ptr %addr) nounwind {
192 ; X32-LABEL: test_ccz:
193 ; X32:       # %bb.0: # %entry
194 ; X32-NEXT:    pushl %esi
195 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
196 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
197 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
198 ; X32-NEXT:    xorl %eax, %eax
199 ; X32-NEXT:    #APP
200 ; X32-NEXT:    cmp %ecx,(%esi)
201 ; X32-NEXT:    #NO_APP
202 ; X32-NEXT:    sete %al
203 ; X32-NEXT:    popl %esi
204 ; X32-NEXT:    retl
206 ; X64-LABEL: test_ccz:
207 ; X64:       # %bb.0: # %entry
208 ; X64-NEXT:    xorl %eax, %eax
209 ; X64-NEXT:    #APP
210 ; X64-NEXT:    cmp %rdi,(%rsi)
211 ; X64-NEXT:    #NO_APP
212 ; X64-NEXT:    sete %al
213 ; X64-NEXT:    retq
214 entry:
215   %cc = tail call i32 asm "cmp $2,$1", "={@ccz},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
216   %tobool = icmp ne i32 %cc, 0
217   %rv = zext i1 %tobool to i32
218   ret i32 %rv
222 define i32 @test_ccg(i64 %nr, ptr %addr) nounwind {
223 ; X32-LABEL: test_ccg:
224 ; X32:       # %bb.0: # %entry
225 ; X32-NEXT:    pushl %esi
226 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
227 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
228 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
229 ; X32-NEXT:    xorl %eax, %eax
230 ; X32-NEXT:    #APP
231 ; X32-NEXT:    cmp %ecx,(%esi)
232 ; X32-NEXT:    #NO_APP
233 ; X32-NEXT:    setg %al
234 ; X32-NEXT:    popl %esi
235 ; X32-NEXT:    retl
237 ; X64-LABEL: test_ccg:
238 ; X64:       # %bb.0: # %entry
239 ; X64-NEXT:    xorl %eax, %eax
240 ; X64-NEXT:    #APP
241 ; X64-NEXT:    cmp %rdi,(%rsi)
242 ; X64-NEXT:    #NO_APP
243 ; X64-NEXT:    setg %al
244 ; X64-NEXT:    retq
245 entry:
246   %cc = tail call i32 asm "cmp $2,$1", "={@ccg},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
247   %tobool = icmp ne i32 %cc, 0
248   %rv = zext i1 %tobool to i32
249   ret i32 %rv
253 define i32 @test_ccge(i64 %nr, ptr %addr) nounwind {
254 ; X32-LABEL: test_ccge:
255 ; X32:       # %bb.0: # %entry
256 ; X32-NEXT:    pushl %esi
257 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
258 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
259 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
260 ; X32-NEXT:    xorl %eax, %eax
261 ; X32-NEXT:    #APP
262 ; X32-NEXT:    cmp %ecx,(%esi)
263 ; X32-NEXT:    #NO_APP
264 ; X32-NEXT:    setge %al
265 ; X32-NEXT:    popl %esi
266 ; X32-NEXT:    retl
268 ; X64-LABEL: test_ccge:
269 ; X64:       # %bb.0: # %entry
270 ; X64-NEXT:    xorl %eax, %eax
271 ; X64-NEXT:    #APP
272 ; X64-NEXT:    cmp %rdi,(%rsi)
273 ; X64-NEXT:    #NO_APP
274 ; X64-NEXT:    setge %al
275 ; X64-NEXT:    retq
276 entry:
277   %cc = tail call i32 asm "cmp $2,$1", "={@ccge},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
278   %tobool = icmp ne i32 %cc, 0
279   %rv = zext i1 %tobool to i32
280   ret i32 %rv
284 define i32 @test_ccl(i64 %nr, ptr %addr) nounwind {
285 ; X32-LABEL: test_ccl:
286 ; X32:       # %bb.0: # %entry
287 ; X32-NEXT:    pushl %esi
288 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
289 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
290 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
291 ; X32-NEXT:    xorl %eax, %eax
292 ; X32-NEXT:    #APP
293 ; X32-NEXT:    cmp %ecx,(%esi)
294 ; X32-NEXT:    #NO_APP
295 ; X32-NEXT:    setl %al
296 ; X32-NEXT:    popl %esi
297 ; X32-NEXT:    retl
299 ; X64-LABEL: test_ccl:
300 ; X64:       # %bb.0: # %entry
301 ; X64-NEXT:    xorl %eax, %eax
302 ; X64-NEXT:    #APP
303 ; X64-NEXT:    cmp %rdi,(%rsi)
304 ; X64-NEXT:    #NO_APP
305 ; X64-NEXT:    setl %al
306 ; X64-NEXT:    retq
307 entry:
308   %cc = tail call i32 asm "cmp $2,$1", "={@ccl},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
309   %tobool = icmp ne i32 %cc, 0
310   %rv = zext i1 %tobool to i32
311   ret i32 %rv
315 define i32 @test_ccle(i64 %nr, ptr %addr) nounwind {
316 ; X32-LABEL: test_ccle:
317 ; X32:       # %bb.0: # %entry
318 ; X32-NEXT:    pushl %esi
319 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
320 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
321 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
322 ; X32-NEXT:    xorl %eax, %eax
323 ; X32-NEXT:    #APP
324 ; X32-NEXT:    cmp %ecx,(%esi)
325 ; X32-NEXT:    #NO_APP
326 ; X32-NEXT:    setle %al
327 ; X32-NEXT:    popl %esi
328 ; X32-NEXT:    retl
330 ; X64-LABEL: test_ccle:
331 ; X64:       # %bb.0: # %entry
332 ; X64-NEXT:    xorl %eax, %eax
333 ; X64-NEXT:    #APP
334 ; X64-NEXT:    cmp %rdi,(%rsi)
335 ; X64-NEXT:    #NO_APP
336 ; X64-NEXT:    setle %al
337 ; X64-NEXT:    retq
338 entry:
339   %cc = tail call i32 asm "cmp $2,$1", "={@ccle},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
340   %tobool = icmp ne i32 %cc, 0
341   %rv = zext i1 %tobool to i32
342   ret i32 %rv
346 define i32 @test_ccna(i64 %nr, ptr %addr) nounwind {
347 ; X32-LABEL: test_ccna:
348 ; X32:       # %bb.0: # %entry
349 ; X32-NEXT:    pushl %esi
350 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
351 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
352 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
353 ; X32-NEXT:    xorl %eax, %eax
354 ; X32-NEXT:    #APP
355 ; X32-NEXT:    cmp %ecx,(%esi)
356 ; X32-NEXT:    #NO_APP
357 ; X32-NEXT:    setbe %al
358 ; X32-NEXT:    popl %esi
359 ; X32-NEXT:    retl
361 ; X64-LABEL: test_ccna:
362 ; X64:       # %bb.0: # %entry
363 ; X64-NEXT:    xorl %eax, %eax
364 ; X64-NEXT:    #APP
365 ; X64-NEXT:    cmp %rdi,(%rsi)
366 ; X64-NEXT:    #NO_APP
367 ; X64-NEXT:    setbe %al
368 ; X64-NEXT:    retq
369 entry:
370   %cc = tail call i32 asm "cmp $2,$1", "={@ccna},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
371   %tobool = icmp ne i32 %cc, 0
372   %rv = zext i1 %tobool to i32
373   ret i32 %rv
377 define i32 @test_ccnae(i64 %nr, ptr %addr) nounwind {
378 ; X32-LABEL: test_ccnae:
379 ; X32:       # %bb.0: # %entry
380 ; X32-NEXT:    pushl %esi
381 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
382 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
383 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
384 ; X32-NEXT:    xorl %eax, %eax
385 ; X32-NEXT:    #APP
386 ; X32-NEXT:    cmp %ecx,(%esi)
387 ; X32-NEXT:    #NO_APP
388 ; X32-NEXT:    setb %al
389 ; X32-NEXT:    popl %esi
390 ; X32-NEXT:    retl
392 ; X64-LABEL: test_ccnae:
393 ; X64:       # %bb.0: # %entry
394 ; X64-NEXT:    xorl %eax, %eax
395 ; X64-NEXT:    #APP
396 ; X64-NEXT:    cmp %rdi,(%rsi)
397 ; X64-NEXT:    #NO_APP
398 ; X64-NEXT:    setb %al
399 ; X64-NEXT:    retq
400 entry:
401   %cc = tail call i32 asm "cmp $2,$1", "={@ccnae},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
402   %tobool = icmp ne i32 %cc, 0
403   %rv = zext i1 %tobool to i32
404   ret i32 %rv
408 define i32 @test_ccnb(i64 %nr, ptr %addr) nounwind {
409 ; X32-LABEL: test_ccnb:
410 ; X32:       # %bb.0: # %entry
411 ; X32-NEXT:    pushl %esi
412 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
413 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
414 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
415 ; X32-NEXT:    xorl %eax, %eax
416 ; X32-NEXT:    #APP
417 ; X32-NEXT:    cmp %ecx,(%esi)
418 ; X32-NEXT:    #NO_APP
419 ; X32-NEXT:    setae %al
420 ; X32-NEXT:    popl %esi
421 ; X32-NEXT:    retl
423 ; X64-LABEL: test_ccnb:
424 ; X64:       # %bb.0: # %entry
425 ; X64-NEXT:    xorl %eax, %eax
426 ; X64-NEXT:    #APP
427 ; X64-NEXT:    cmp %rdi,(%rsi)
428 ; X64-NEXT:    #NO_APP
429 ; X64-NEXT:    setae %al
430 ; X64-NEXT:    retq
431 entry:
432   %cc = tail call i32 asm "cmp $2,$1", "={@ccnb},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
433   %tobool = icmp ne i32 %cc, 0
434   %rv = zext i1 %tobool to i32
435   ret i32 %rv
439 define i32 @test_ccnbe(i64 %nr, ptr %addr) nounwind {
440 ; X32-LABEL: test_ccnbe:
441 ; X32:       # %bb.0: # %entry
442 ; X32-NEXT:    pushl %esi
443 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
444 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
445 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
446 ; X32-NEXT:    xorl %eax, %eax
447 ; X32-NEXT:    #APP
448 ; X32-NEXT:    cmp %ecx,(%esi)
449 ; X32-NEXT:    #NO_APP
450 ; X32-NEXT:    seta %al
451 ; X32-NEXT:    popl %esi
452 ; X32-NEXT:    retl
454 ; X64-LABEL: test_ccnbe:
455 ; X64:       # %bb.0: # %entry
456 ; X64-NEXT:    xorl %eax, %eax
457 ; X64-NEXT:    #APP
458 ; X64-NEXT:    cmp %rdi,(%rsi)
459 ; X64-NEXT:    #NO_APP
460 ; X64-NEXT:    seta %al
461 ; X64-NEXT:    retq
462 entry:
463   %cc = tail call i32 asm "cmp $2,$1", "={@ccnbe},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
464   %tobool = icmp ne i32 %cc, 0
465   %rv = zext i1 %tobool to i32
466   ret i32 %rv
470 define i32 @test_ccnc(i64 %nr, ptr %addr) nounwind {
471 ; X32-LABEL: test_ccnc:
472 ; X32:       # %bb.0: # %entry
473 ; X32-NEXT:    pushl %esi
474 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
475 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
476 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
477 ; X32-NEXT:    xorl %eax, %eax
478 ; X32-NEXT:    #APP
479 ; X32-NEXT:    cmp %ecx,(%esi)
480 ; X32-NEXT:    #NO_APP
481 ; X32-NEXT:    setae %al
482 ; X32-NEXT:    popl %esi
483 ; X32-NEXT:    retl
485 ; X64-LABEL: test_ccnc:
486 ; X64:       # %bb.0: # %entry
487 ; X64-NEXT:    xorl %eax, %eax
488 ; X64-NEXT:    #APP
489 ; X64-NEXT:    cmp %rdi,(%rsi)
490 ; X64-NEXT:    #NO_APP
491 ; X64-NEXT:    setae %al
492 ; X64-NEXT:    retq
493 entry:
494   %cc = tail call i32 asm "cmp $2,$1", "={@ccnc},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
495   %tobool = icmp ne i32 %cc, 0
496   %rv = zext i1 %tobool to i32
497   ret i32 %rv
501 define i32 @test_ccne(i64 %nr, ptr %addr) nounwind {
502 ; X32-LABEL: test_ccne:
503 ; X32:       # %bb.0: # %entry
504 ; X32-NEXT:    pushl %esi
505 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
506 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
507 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
508 ; X32-NEXT:    xorl %eax, %eax
509 ; X32-NEXT:    #APP
510 ; X32-NEXT:    cmp %ecx,(%esi)
511 ; X32-NEXT:    #NO_APP
512 ; X32-NEXT:    setne %al
513 ; X32-NEXT:    popl %esi
514 ; X32-NEXT:    retl
516 ; X64-LABEL: test_ccne:
517 ; X64:       # %bb.0: # %entry
518 ; X64-NEXT:    xorl %eax, %eax
519 ; X64-NEXT:    #APP
520 ; X64-NEXT:    cmp %rdi,(%rsi)
521 ; X64-NEXT:    #NO_APP
522 ; X64-NEXT:    setne %al
523 ; X64-NEXT:    retq
524 entry:
525   %cc = tail call i32 asm "cmp $2,$1", "={@ccne},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
526   %tobool = icmp ne i32 %cc, 0
527   %rv = zext i1 %tobool to i32
528   ret i32 %rv
532 define i32 @test_ccnz(i64 %nr, ptr %addr) nounwind {
533 ; X32-LABEL: test_ccnz:
534 ; X32:       # %bb.0: # %entry
535 ; X32-NEXT:    pushl %esi
536 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
537 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
538 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
539 ; X32-NEXT:    xorl %eax, %eax
540 ; X32-NEXT:    #APP
541 ; X32-NEXT:    cmp %ecx,(%esi)
542 ; X32-NEXT:    #NO_APP
543 ; X32-NEXT:    setne %al
544 ; X32-NEXT:    popl %esi
545 ; X32-NEXT:    retl
547 ; X64-LABEL: test_ccnz:
548 ; X64:       # %bb.0: # %entry
549 ; X64-NEXT:    xorl %eax, %eax
550 ; X64-NEXT:    #APP
551 ; X64-NEXT:    cmp %rdi,(%rsi)
552 ; X64-NEXT:    #NO_APP
553 ; X64-NEXT:    setne %al
554 ; X64-NEXT:    retq
555 entry:
556   %cc = tail call i32 asm "cmp $2,$1", "={@ccnz},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
557   %tobool = icmp ne i32 %cc, 0
558   %rv = zext i1 %tobool to i32
559   ret i32 %rv
563 define i32 @test_ccng(i64 %nr, ptr %addr) nounwind {
564 ; X32-LABEL: test_ccng:
565 ; X32:       # %bb.0: # %entry
566 ; X32-NEXT:    pushl %esi
567 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
568 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
569 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
570 ; X32-NEXT:    xorl %eax, %eax
571 ; X32-NEXT:    #APP
572 ; X32-NEXT:    cmp %ecx,(%esi)
573 ; X32-NEXT:    #NO_APP
574 ; X32-NEXT:    setle %al
575 ; X32-NEXT:    popl %esi
576 ; X32-NEXT:    retl
578 ; X64-LABEL: test_ccng:
579 ; X64:       # %bb.0: # %entry
580 ; X64-NEXT:    xorl %eax, %eax
581 ; X64-NEXT:    #APP
582 ; X64-NEXT:    cmp %rdi,(%rsi)
583 ; X64-NEXT:    #NO_APP
584 ; X64-NEXT:    setle %al
585 ; X64-NEXT:    retq
586 entry:
587   %cc = tail call i32 asm "cmp $2,$1", "={@ccng},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
588   %tobool = icmp ne i32 %cc, 0
589   %rv = zext i1 %tobool to i32
590   ret i32 %rv
594 define i32 @test_ccnge(i64 %nr, ptr %addr) nounwind {
595 ; X32-LABEL: test_ccnge:
596 ; X32:       # %bb.0: # %entry
597 ; X32-NEXT:    pushl %esi
598 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
599 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
600 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
601 ; X32-NEXT:    xorl %eax, %eax
602 ; X32-NEXT:    #APP
603 ; X32-NEXT:    cmp %ecx,(%esi)
604 ; X32-NEXT:    #NO_APP
605 ; X32-NEXT:    setl %al
606 ; X32-NEXT:    popl %esi
607 ; X32-NEXT:    retl
609 ; X64-LABEL: test_ccnge:
610 ; X64:       # %bb.0: # %entry
611 ; X64-NEXT:    xorl %eax, %eax
612 ; X64-NEXT:    #APP
613 ; X64-NEXT:    cmp %rdi,(%rsi)
614 ; X64-NEXT:    #NO_APP
615 ; X64-NEXT:    setl %al
616 ; X64-NEXT:    retq
617 entry:
618   %cc = tail call i32 asm "cmp $2,$1", "={@ccnge},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
619   %tobool = icmp ne i32 %cc, 0
620   %rv = zext i1 %tobool to i32
621   ret i32 %rv
625 define i32 @test_ccnl(i64 %nr, ptr %addr) nounwind {
626 ; X32-LABEL: test_ccnl:
627 ; X32:       # %bb.0: # %entry
628 ; X32-NEXT:    pushl %esi
629 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
630 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
631 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
632 ; X32-NEXT:    xorl %eax, %eax
633 ; X32-NEXT:    #APP
634 ; X32-NEXT:    cmp %ecx,(%esi)
635 ; X32-NEXT:    #NO_APP
636 ; X32-NEXT:    setge %al
637 ; X32-NEXT:    popl %esi
638 ; X32-NEXT:    retl
640 ; X64-LABEL: test_ccnl:
641 ; X64:       # %bb.0: # %entry
642 ; X64-NEXT:    xorl %eax, %eax
643 ; X64-NEXT:    #APP
644 ; X64-NEXT:    cmp %rdi,(%rsi)
645 ; X64-NEXT:    #NO_APP
646 ; X64-NEXT:    setge %al
647 ; X64-NEXT:    retq
648 entry:
649   %cc = tail call i32 asm "cmp $2,$1", "={@ccnl},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
650   %tobool = icmp ne i32 %cc, 0
651   %rv = zext i1 %tobool to i32
652   ret i32 %rv
656 define i32 @test_ccnle(i64 %nr, ptr %addr) nounwind {
657 ; X32-LABEL: test_ccnle:
658 ; X32:       # %bb.0: # %entry
659 ; X32-NEXT:    pushl %esi
660 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
661 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
662 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
663 ; X32-NEXT:    xorl %eax, %eax
664 ; X32-NEXT:    #APP
665 ; X32-NEXT:    cmp %ecx,(%esi)
666 ; X32-NEXT:    #NO_APP
667 ; X32-NEXT:    setg %al
668 ; X32-NEXT:    popl %esi
669 ; X32-NEXT:    retl
671 ; X64-LABEL: test_ccnle:
672 ; X64:       # %bb.0: # %entry
673 ; X64-NEXT:    xorl %eax, %eax
674 ; X64-NEXT:    #APP
675 ; X64-NEXT:    cmp %rdi,(%rsi)
676 ; X64-NEXT:    #NO_APP
677 ; X64-NEXT:    setg %al
678 ; X64-NEXT:    retq
679 entry:
680   %cc = tail call i32 asm "cmp $2,$1", "={@ccnle},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
681   %tobool = icmp ne i32 %cc, 0
682   %rv = zext i1 %tobool to i32
683   ret i32 %rv
687 define i32 @test_ccno(i64 %nr, ptr %addr) nounwind {
688 ; X32-LABEL: test_ccno:
689 ; X32:       # %bb.0: # %entry
690 ; X32-NEXT:    pushl %esi
691 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
692 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
693 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
694 ; X32-NEXT:    xorl %eax, %eax
695 ; X32-NEXT:    #APP
696 ; X32-NEXT:    cmp %ecx,(%esi)
697 ; X32-NEXT:    #NO_APP
698 ; X32-NEXT:    setno %al
699 ; X32-NEXT:    popl %esi
700 ; X32-NEXT:    retl
702 ; X64-LABEL: test_ccno:
703 ; X64:       # %bb.0: # %entry
704 ; X64-NEXT:    xorl %eax, %eax
705 ; X64-NEXT:    #APP
706 ; X64-NEXT:    cmp %rdi,(%rsi)
707 ; X64-NEXT:    #NO_APP
708 ; X64-NEXT:    setno %al
709 ; X64-NEXT:    retq
710 entry:
711   %cc = tail call i32 asm "cmp $2,$1", "={@ccno},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
712   %tobool = icmp ne i32 %cc, 0
713   %rv = zext i1 %tobool to i32
714   ret i32 %rv
718 define i32 @test_ccnp(i64 %nr, ptr %addr) nounwind {
719 ; X32-LABEL: test_ccnp:
720 ; X32:       # %bb.0: # %entry
721 ; X32-NEXT:    pushl %esi
722 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
723 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
724 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
725 ; X32-NEXT:    xorl %eax, %eax
726 ; X32-NEXT:    #APP
727 ; X32-NEXT:    cmp %ecx,(%esi)
728 ; X32-NEXT:    #NO_APP
729 ; X32-NEXT:    setnp %al
730 ; X32-NEXT:    popl %esi
731 ; X32-NEXT:    retl
733 ; X64-LABEL: test_ccnp:
734 ; X64:       # %bb.0: # %entry
735 ; X64-NEXT:    xorl %eax, %eax
736 ; X64-NEXT:    #APP
737 ; X64-NEXT:    cmp %rdi,(%rsi)
738 ; X64-NEXT:    #NO_APP
739 ; X64-NEXT:    setnp %al
740 ; X64-NEXT:    retq
741 entry:
742   %cc = tail call i32 asm "cmp $2,$1", "={@ccnp},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
743   %tobool = icmp ne i32 %cc, 0
744   %rv = zext i1 %tobool to i32
745   ret i32 %rv
749 define i32 @test_ccns(i64 %nr, ptr %addr) nounwind {
750 ; X32-LABEL: test_ccns:
751 ; X32:       # %bb.0: # %entry
752 ; X32-NEXT:    pushl %esi
753 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
754 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
755 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
756 ; X32-NEXT:    xorl %eax, %eax
757 ; X32-NEXT:    #APP
758 ; X32-NEXT:    cmp %ecx,(%esi)
759 ; X32-NEXT:    #NO_APP
760 ; X32-NEXT:    setns %al
761 ; X32-NEXT:    popl %esi
762 ; X32-NEXT:    retl
764 ; X64-LABEL: test_ccns:
765 ; X64:       # %bb.0: # %entry
766 ; X64-NEXT:    xorl %eax, %eax
767 ; X64-NEXT:    #APP
768 ; X64-NEXT:    cmp %rdi,(%rsi)
769 ; X64-NEXT:    #NO_APP
770 ; X64-NEXT:    setns %al
771 ; X64-NEXT:    retq
772 entry:
773   %cc = tail call i32 asm "cmp $2,$1", "={@ccns},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
774   %tobool = icmp ne i32 %cc, 0
775   %rv = zext i1 %tobool to i32
776   ret i32 %rv
780 define i32 @test_cco(i64 %nr, ptr %addr) nounwind {
781 ; X32-LABEL: test_cco:
782 ; X32:       # %bb.0: # %entry
783 ; X32-NEXT:    pushl %esi
784 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
785 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
786 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
787 ; X32-NEXT:    xorl %eax, %eax
788 ; X32-NEXT:    #APP
789 ; X32-NEXT:    cmp %ecx,(%esi)
790 ; X32-NEXT:    #NO_APP
791 ; X32-NEXT:    seto %al
792 ; X32-NEXT:    popl %esi
793 ; X32-NEXT:    retl
795 ; X64-LABEL: test_cco:
796 ; X64:       # %bb.0: # %entry
797 ; X64-NEXT:    xorl %eax, %eax
798 ; X64-NEXT:    #APP
799 ; X64-NEXT:    cmp %rdi,(%rsi)
800 ; X64-NEXT:    #NO_APP
801 ; X64-NEXT:    seto %al
802 ; X64-NEXT:    retq
803 entry:
804   %cc = tail call i32 asm "cmp $2,$1", "={@cco},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
805   %tobool = icmp ne i32 %cc, 0
806   %rv = zext i1 %tobool to i32
807   ret i32 %rv
811 define i32 @test_ccp(i64 %nr, ptr %addr) nounwind {
812 ; X32-LABEL: test_ccp:
813 ; X32:       # %bb.0: # %entry
814 ; X32-NEXT:    pushl %esi
815 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
816 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
817 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
818 ; X32-NEXT:    xorl %eax, %eax
819 ; X32-NEXT:    #APP
820 ; X32-NEXT:    cmp %ecx,(%esi)
821 ; X32-NEXT:    #NO_APP
822 ; X32-NEXT:    setp %al
823 ; X32-NEXT:    popl %esi
824 ; X32-NEXT:    retl
826 ; X64-LABEL: test_ccp:
827 ; X64:       # %bb.0: # %entry
828 ; X64-NEXT:    xorl %eax, %eax
829 ; X64-NEXT:    #APP
830 ; X64-NEXT:    cmp %rdi,(%rsi)
831 ; X64-NEXT:    #NO_APP
832 ; X64-NEXT:    setp %al
833 ; X64-NEXT:    retq
834 entry:
835   %cc = tail call i32 asm "cmp $2,$1", "={@ccp},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
836   %tobool = icmp ne i32 %cc, 0
837   %rv = zext i1 %tobool to i32
838   ret i32 %rv
842 define i32 @test_ccs(i64 %nr, ptr %addr) nounwind {
843 ; X32-LABEL: test_ccs:
844 ; X32:       # %bb.0: # %entry
845 ; X32-NEXT:    pushl %esi
846 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
847 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
848 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
849 ; X32-NEXT:    xorl %eax, %eax
850 ; X32-NEXT:    #APP
851 ; X32-NEXT:    cmp %ecx,(%esi)
852 ; X32-NEXT:    #NO_APP
853 ; X32-NEXT:    sets %al
854 ; X32-NEXT:    popl %esi
855 ; X32-NEXT:    retl
857 ; X64-LABEL: test_ccs:
858 ; X64:       # %bb.0: # %entry
859 ; X64-NEXT:    xorl %eax, %eax
860 ; X64-NEXT:    #APP
861 ; X64-NEXT:    cmp %rdi,(%rsi)
862 ; X64-NEXT:    #NO_APP
863 ; X64-NEXT:    sets %al
864 ; X64-NEXT:    retq
865 entry:
866   %cc = tail call i32 asm "cmp $2,$1", "={@ccs},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
867   %tobool = icmp ne i32 %cc, 0
868   %rv = zext i1 %tobool to i32
869   ret i32 %rv
872 declare void @bar()
874 define void @test_cca_branch(i64 %nr, ptr %addr) nounwind {
875 ; X32-LABEL: test_cca_branch:
876 ; X32:       # %bb.0: # %entry
877 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
878 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
879 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
880 ; X32-NEXT:    #APP
881 ; X32-NEXT:    cmp %eax,(%edx)
882 ; X32-NEXT:    #NO_APP
883 ; X32-NEXT:    jbe .LBB28_2
884 ; X32-NEXT:  # %bb.1: # %then
885 ; X32-NEXT:    calll bar@PLT
886 ; X32-NEXT:  .LBB28_2: # %exit
887 ; X32-NEXT:    retl
889 ; X64-LABEL: test_cca_branch:
890 ; X64:       # %bb.0: # %entry
891 ; X64-NEXT:    #APP
892 ; X64-NEXT:    cmp %rdi,(%rsi)
893 ; X64-NEXT:    #NO_APP
894 ; X64-NEXT:    jbe .LBB28_2
895 ; X64-NEXT:  # %bb.1: # %then
896 ; X64-NEXT:    pushq %rax
897 ; X64-NEXT:    callq bar@PLT
898 ; X64-NEXT:    addq $8, %rsp
899 ; X64-NEXT:  .LBB28_2: # %exit
900 ; X64-NEXT:    retq
901 entry:
902   %cc = tail call i8 asm "cmp $2,$1", "={@cca},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
903   %tobool = icmp ne i8 %cc, 0
904   br i1 %tobool, label %then, label %exit
906 then:
907   call void @bar()
908   br label %exit
910 exit:
911   ret void
914 define void @test_ccae_branch(i64 %nr, ptr %addr) nounwind {
915 ; X32-LABEL: test_ccae_branch:
916 ; X32:       # %bb.0: # %entry
917 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
918 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
919 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
920 ; X32-NEXT:    #APP
921 ; X32-NEXT:    cmp %eax,(%edx)
922 ; X32-NEXT:    #NO_APP
923 ; X32-NEXT:    jb .LBB29_2
924 ; X32-NEXT:  # %bb.1: # %then
925 ; X32-NEXT:    calll bar@PLT
926 ; X32-NEXT:  .LBB29_2: # %exit
927 ; X32-NEXT:    retl
929 ; X64-LABEL: test_ccae_branch:
930 ; X64:       # %bb.0: # %entry
931 ; X64-NEXT:    #APP
932 ; X64-NEXT:    cmp %rdi,(%rsi)
933 ; X64-NEXT:    #NO_APP
934 ; X64-NEXT:    jb .LBB29_2
935 ; X64-NEXT:  # %bb.1: # %then
936 ; X64-NEXT:    pushq %rax
937 ; X64-NEXT:    callq bar@PLT
938 ; X64-NEXT:    addq $8, %rsp
939 ; X64-NEXT:  .LBB29_2: # %exit
940 ; X64-NEXT:    retq
941 entry:
942   %cc = tail call i8 asm "cmp $2,$1", "={@ccae},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
943   %tobool = icmp ne i8 %cc, 0
944   br i1 %tobool, label %then, label %exit
946 then:
947   call void @bar()
948   br label %exit
950 exit:
951   ret void
954 define void @test_ccb_branch(i64 %nr, ptr %addr) nounwind {
955 ; X32-LABEL: test_ccb_branch:
956 ; X32:       # %bb.0: # %entry
957 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
958 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
959 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
960 ; X32-NEXT:    #APP
961 ; X32-NEXT:    cmp %eax,(%edx)
962 ; X32-NEXT:    #NO_APP
963 ; X32-NEXT:    jae .LBB30_2
964 ; X32-NEXT:  # %bb.1: # %then
965 ; X32-NEXT:    calll bar@PLT
966 ; X32-NEXT:  .LBB30_2: # %exit
967 ; X32-NEXT:    retl
969 ; X64-LABEL: test_ccb_branch:
970 ; X64:       # %bb.0: # %entry
971 ; X64-NEXT:    #APP
972 ; X64-NEXT:    cmp %rdi,(%rsi)
973 ; X64-NEXT:    #NO_APP
974 ; X64-NEXT:    jae .LBB30_2
975 ; X64-NEXT:  # %bb.1: # %then
976 ; X64-NEXT:    pushq %rax
977 ; X64-NEXT:    callq bar@PLT
978 ; X64-NEXT:    addq $8, %rsp
979 ; X64-NEXT:  .LBB30_2: # %exit
980 ; X64-NEXT:    retq
981 entry:
982   %cc = tail call i8 asm "cmp $2,$1", "={@ccb},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
983   %tobool = icmp ne i8 %cc, 0
984   br i1 %tobool, label %then, label %exit
986 then:
987   call void @bar()
988   br label %exit
990 exit:
991   ret void
994 define void @test_ccbe_branch(i64 %nr, ptr %addr) nounwind {
995 ; X32-LABEL: test_ccbe_branch:
996 ; X32:       # %bb.0: # %entry
997 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
998 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
999 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1000 ; X32-NEXT:    #APP
1001 ; X32-NEXT:    cmp %eax,(%edx)
1002 ; X32-NEXT:    #NO_APP
1003 ; X32-NEXT:    ja .LBB31_2
1004 ; X32-NEXT:  # %bb.1: # %then
1005 ; X32-NEXT:    calll bar@PLT
1006 ; X32-NEXT:  .LBB31_2: # %exit
1007 ; X32-NEXT:    retl
1009 ; X64-LABEL: test_ccbe_branch:
1010 ; X64:       # %bb.0: # %entry
1011 ; X64-NEXT:    #APP
1012 ; X64-NEXT:    cmp %rdi,(%rsi)
1013 ; X64-NEXT:    #NO_APP
1014 ; X64-NEXT:    ja .LBB31_2
1015 ; X64-NEXT:  # %bb.1: # %then
1016 ; X64-NEXT:    pushq %rax
1017 ; X64-NEXT:    callq bar@PLT
1018 ; X64-NEXT:    addq $8, %rsp
1019 ; X64-NEXT:  .LBB31_2: # %exit
1020 ; X64-NEXT:    retq
1021 entry:
1022   %cc = tail call i8 asm "cmp $2,$1", "={@ccbe},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1023   %tobool = icmp ne i8 %cc, 0
1024   br i1 %tobool, label %then, label %exit
1026 then:
1027   call void @bar()
1028   br label %exit
1030 exit:
1031   ret void
1034 define void @test_ccc_branch(i64 %nr, ptr %addr) nounwind {
1035 ; X32-LABEL: test_ccc_branch:
1036 ; X32:       # %bb.0: # %entry
1037 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1038 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1039 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1040 ; X32-NEXT:    #APP
1041 ; X32-NEXT:    cmp %eax,(%edx)
1042 ; X32-NEXT:    #NO_APP
1043 ; X32-NEXT:    jae .LBB32_2
1044 ; X32-NEXT:  # %bb.1: # %then
1045 ; X32-NEXT:    calll bar@PLT
1046 ; X32-NEXT:  .LBB32_2: # %exit
1047 ; X32-NEXT:    retl
1049 ; X64-LABEL: test_ccc_branch:
1050 ; X64:       # %bb.0: # %entry
1051 ; X64-NEXT:    #APP
1052 ; X64-NEXT:    cmp %rdi,(%rsi)
1053 ; X64-NEXT:    #NO_APP
1054 ; X64-NEXT:    jae .LBB32_2
1055 ; X64-NEXT:  # %bb.1: # %then
1056 ; X64-NEXT:    pushq %rax
1057 ; X64-NEXT:    callq bar@PLT
1058 ; X64-NEXT:    addq $8, %rsp
1059 ; X64-NEXT:  .LBB32_2: # %exit
1060 ; X64-NEXT:    retq
1061 entry:
1062   %cc = tail call i8 asm "cmp $2,$1", "={@ccc},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1063   %tobool = icmp ne i8 %cc, 0
1064   br i1 %tobool, label %then, label %exit
1066 then:
1067   call void @bar()
1068   br label %exit
1070 exit:
1071   ret void
1074 define void @test_cce_branch(i64 %nr, ptr %addr) nounwind {
1075 ; X32-LABEL: test_cce_branch:
1076 ; X32:       # %bb.0: # %entry
1077 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1078 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1079 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1080 ; X32-NEXT:    #APP
1081 ; X32-NEXT:    cmp %eax,(%edx)
1082 ; X32-NEXT:    #NO_APP
1083 ; X32-NEXT:    jne .LBB33_2
1084 ; X32-NEXT:  # %bb.1: # %then
1085 ; X32-NEXT:    calll bar@PLT
1086 ; X32-NEXT:  .LBB33_2: # %exit
1087 ; X32-NEXT:    retl
1089 ; X64-LABEL: test_cce_branch:
1090 ; X64:       # %bb.0: # %entry
1091 ; X64-NEXT:    #APP
1092 ; X64-NEXT:    cmp %rdi,(%rsi)
1093 ; X64-NEXT:    #NO_APP
1094 ; X64-NEXT:    jne .LBB33_2
1095 ; X64-NEXT:  # %bb.1: # %then
1096 ; X64-NEXT:    pushq %rax
1097 ; X64-NEXT:    callq bar@PLT
1098 ; X64-NEXT:    addq $8, %rsp
1099 ; X64-NEXT:  .LBB33_2: # %exit
1100 ; X64-NEXT:    retq
1101 entry:
1102   %cc = tail call i8 asm "cmp $2,$1", "={@cce},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1103   %tobool = icmp ne i8 %cc, 0
1104   br i1 %tobool, label %then, label %exit
1106 then:
1107   call void @bar()
1108   br label %exit
1110 exit:
1111   ret void
1114 define void @test_ccz_branch(i64 %nr, ptr %addr) nounwind {
1115 ; X32-LABEL: test_ccz_branch:
1116 ; X32:       # %bb.0: # %entry
1117 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1118 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1119 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1120 ; X32-NEXT:    #APP
1121 ; X32-NEXT:    cmp %eax,(%edx)
1122 ; X32-NEXT:    #NO_APP
1123 ; X32-NEXT:    jne .LBB34_2
1124 ; X32-NEXT:  # %bb.1: # %then
1125 ; X32-NEXT:    calll bar@PLT
1126 ; X32-NEXT:  .LBB34_2: # %exit
1127 ; X32-NEXT:    retl
1129 ; X64-LABEL: test_ccz_branch:
1130 ; X64:       # %bb.0: # %entry
1131 ; X64-NEXT:    #APP
1132 ; X64-NEXT:    cmp %rdi,(%rsi)
1133 ; X64-NEXT:    #NO_APP
1134 ; X64-NEXT:    jne .LBB34_2
1135 ; X64-NEXT:  # %bb.1: # %then
1136 ; X64-NEXT:    pushq %rax
1137 ; X64-NEXT:    callq bar@PLT
1138 ; X64-NEXT:    addq $8, %rsp
1139 ; X64-NEXT:  .LBB34_2: # %exit
1140 ; X64-NEXT:    retq
1141 entry:
1142   %cc = tail call i8 asm "cmp $2,$1", "={@ccz},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1143   %tobool = icmp ne i8 %cc, 0
1144   br i1 %tobool, label %then, label %exit
1146 then:
1147   call void @bar()
1148   br label %exit
1150 exit:
1151   ret void
1154 define void @test_ccg_branch(i64 %nr, ptr %addr) nounwind {
1155 ; X32-LABEL: test_ccg_branch:
1156 ; X32:       # %bb.0: # %entry
1157 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1158 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1159 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1160 ; X32-NEXT:    #APP
1161 ; X32-NEXT:    cmp %eax,(%edx)
1162 ; X32-NEXT:    #NO_APP
1163 ; X32-NEXT:    jle .LBB35_2
1164 ; X32-NEXT:  # %bb.1: # %then
1165 ; X32-NEXT:    calll bar@PLT
1166 ; X32-NEXT:  .LBB35_2: # %exit
1167 ; X32-NEXT:    retl
1169 ; X64-LABEL: test_ccg_branch:
1170 ; X64:       # %bb.0: # %entry
1171 ; X64-NEXT:    #APP
1172 ; X64-NEXT:    cmp %rdi,(%rsi)
1173 ; X64-NEXT:    #NO_APP
1174 ; X64-NEXT:    jle .LBB35_2
1175 ; X64-NEXT:  # %bb.1: # %then
1176 ; X64-NEXT:    pushq %rax
1177 ; X64-NEXT:    callq bar@PLT
1178 ; X64-NEXT:    addq $8, %rsp
1179 ; X64-NEXT:  .LBB35_2: # %exit
1180 ; X64-NEXT:    retq
1181 entry:
1182   %cc = tail call i8 asm "cmp $2,$1", "={@ccg},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1183   %tobool = icmp ne i8 %cc, 0
1184   br i1 %tobool, label %then, label %exit
1186 then:
1187   call void @bar()
1188   br label %exit
1190 exit:
1191   ret void
1194 define void @test_ccge_branch(i64 %nr, ptr %addr) nounwind {
1195 ; X32-LABEL: test_ccge_branch:
1196 ; X32:       # %bb.0: # %entry
1197 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1198 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1199 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1200 ; X32-NEXT:    #APP
1201 ; X32-NEXT:    cmp %eax,(%edx)
1202 ; X32-NEXT:    #NO_APP
1203 ; X32-NEXT:    jl .LBB36_2
1204 ; X32-NEXT:  # %bb.1: # %then
1205 ; X32-NEXT:    calll bar@PLT
1206 ; X32-NEXT:  .LBB36_2: # %exit
1207 ; X32-NEXT:    retl
1209 ; X64-LABEL: test_ccge_branch:
1210 ; X64:       # %bb.0: # %entry
1211 ; X64-NEXT:    #APP
1212 ; X64-NEXT:    cmp %rdi,(%rsi)
1213 ; X64-NEXT:    #NO_APP
1214 ; X64-NEXT:    jl .LBB36_2
1215 ; X64-NEXT:  # %bb.1: # %then
1216 ; X64-NEXT:    pushq %rax
1217 ; X64-NEXT:    callq bar@PLT
1218 ; X64-NEXT:    addq $8, %rsp
1219 ; X64-NEXT:  .LBB36_2: # %exit
1220 ; X64-NEXT:    retq
1221 entry:
1222   %cc = tail call i8 asm "cmp $2,$1", "={@ccge},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1223   %tobool = icmp ne i8 %cc, 0
1224   br i1 %tobool, label %then, label %exit
1226 then:
1227   call void @bar()
1228   br label %exit
1230 exit:
1231   ret void
1234 define void @test_ccl_branch(i64 %nr, ptr %addr) nounwind {
1235 ; X32-LABEL: test_ccl_branch:
1236 ; X32:       # %bb.0: # %entry
1237 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1238 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1239 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1240 ; X32-NEXT:    #APP
1241 ; X32-NEXT:    cmp %eax,(%edx)
1242 ; X32-NEXT:    #NO_APP
1243 ; X32-NEXT:    jge .LBB37_2
1244 ; X32-NEXT:  # %bb.1: # %then
1245 ; X32-NEXT:    calll bar@PLT
1246 ; X32-NEXT:  .LBB37_2: # %exit
1247 ; X32-NEXT:    retl
1249 ; X64-LABEL: test_ccl_branch:
1250 ; X64:       # %bb.0: # %entry
1251 ; X64-NEXT:    #APP
1252 ; X64-NEXT:    cmp %rdi,(%rsi)
1253 ; X64-NEXT:    #NO_APP
1254 ; X64-NEXT:    jge .LBB37_2
1255 ; X64-NEXT:  # %bb.1: # %then
1256 ; X64-NEXT:    pushq %rax
1257 ; X64-NEXT:    callq bar@PLT
1258 ; X64-NEXT:    addq $8, %rsp
1259 ; X64-NEXT:  .LBB37_2: # %exit
1260 ; X64-NEXT:    retq
1261 entry:
1262   %cc = tail call i8 asm "cmp $2,$1", "={@ccl},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1263   %tobool = icmp ne i8 %cc, 0
1264   br i1 %tobool, label %then, label %exit
1266 then:
1267   call void @bar()
1268   br label %exit
1270 exit:
1271   ret void
1274 define void @test_ccle_branch(i64 %nr, ptr %addr) nounwind {
1275 ; X32-LABEL: test_ccle_branch:
1276 ; X32:       # %bb.0: # %entry
1277 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1278 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1279 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1280 ; X32-NEXT:    #APP
1281 ; X32-NEXT:    cmp %eax,(%edx)
1282 ; X32-NEXT:    #NO_APP
1283 ; X32-NEXT:    jg .LBB38_2
1284 ; X32-NEXT:  # %bb.1: # %then
1285 ; X32-NEXT:    calll bar@PLT
1286 ; X32-NEXT:  .LBB38_2: # %exit
1287 ; X32-NEXT:    retl
1289 ; X64-LABEL: test_ccle_branch:
1290 ; X64:       # %bb.0: # %entry
1291 ; X64-NEXT:    #APP
1292 ; X64-NEXT:    cmp %rdi,(%rsi)
1293 ; X64-NEXT:    #NO_APP
1294 ; X64-NEXT:    jg .LBB38_2
1295 ; X64-NEXT:  # %bb.1: # %then
1296 ; X64-NEXT:    pushq %rax
1297 ; X64-NEXT:    callq bar@PLT
1298 ; X64-NEXT:    addq $8, %rsp
1299 ; X64-NEXT:  .LBB38_2: # %exit
1300 ; X64-NEXT:    retq
1301 entry:
1302   %cc = tail call i8 asm "cmp $2,$1", "={@ccle},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1303   %tobool = icmp ne i8 %cc, 0
1304   br i1 %tobool, label %then, label %exit
1306 then:
1307   call void @bar()
1308   br label %exit
1310 exit:
1311   ret void
1314 define void @test_ccna_branch(i64 %nr, ptr %addr) nounwind {
1315 ; X32-LABEL: test_ccna_branch:
1316 ; X32:       # %bb.0: # %entry
1317 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1318 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1319 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1320 ; X32-NEXT:    #APP
1321 ; X32-NEXT:    cmp %eax,(%edx)
1322 ; X32-NEXT:    #NO_APP
1323 ; X32-NEXT:    ja .LBB39_2
1324 ; X32-NEXT:  # %bb.1: # %then
1325 ; X32-NEXT:    calll bar@PLT
1326 ; X32-NEXT:  .LBB39_2: # %exit
1327 ; X32-NEXT:    retl
1329 ; X64-LABEL: test_ccna_branch:
1330 ; X64:       # %bb.0: # %entry
1331 ; X64-NEXT:    #APP
1332 ; X64-NEXT:    cmp %rdi,(%rsi)
1333 ; X64-NEXT:    #NO_APP
1334 ; X64-NEXT:    ja .LBB39_2
1335 ; X64-NEXT:  # %bb.1: # %then
1336 ; X64-NEXT:    pushq %rax
1337 ; X64-NEXT:    callq bar@PLT
1338 ; X64-NEXT:    addq $8, %rsp
1339 ; X64-NEXT:  .LBB39_2: # %exit
1340 ; X64-NEXT:    retq
1341 entry:
1342   %cc = tail call i8 asm "cmp $2,$1", "={@ccna},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1343   %tobool = icmp ne i8 %cc, 0
1344   br i1 %tobool, label %then, label %exit
1346 then:
1347   call void @bar()
1348   br label %exit
1350 exit:
1351   ret void
1354 define void @test_ccnae_branch(i64 %nr, ptr %addr) nounwind {
1355 ; X32-LABEL: test_ccnae_branch:
1356 ; X32:       # %bb.0: # %entry
1357 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1358 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1359 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1360 ; X32-NEXT:    #APP
1361 ; X32-NEXT:    cmp %eax,(%edx)
1362 ; X32-NEXT:    #NO_APP
1363 ; X32-NEXT:    jae .LBB40_2
1364 ; X32-NEXT:  # %bb.1: # %then
1365 ; X32-NEXT:    calll bar@PLT
1366 ; X32-NEXT:  .LBB40_2: # %exit
1367 ; X32-NEXT:    retl
1369 ; X64-LABEL: test_ccnae_branch:
1370 ; X64:       # %bb.0: # %entry
1371 ; X64-NEXT:    #APP
1372 ; X64-NEXT:    cmp %rdi,(%rsi)
1373 ; X64-NEXT:    #NO_APP
1374 ; X64-NEXT:    jae .LBB40_2
1375 ; X64-NEXT:  # %bb.1: # %then
1376 ; X64-NEXT:    pushq %rax
1377 ; X64-NEXT:    callq bar@PLT
1378 ; X64-NEXT:    addq $8, %rsp
1379 ; X64-NEXT:  .LBB40_2: # %exit
1380 ; X64-NEXT:    retq
1381 entry:
1382   %cc = tail call i8 asm "cmp $2,$1", "={@ccnae},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1383   %tobool = icmp ne i8 %cc, 0
1384   br i1 %tobool, label %then, label %exit
1386 then:
1387   call void @bar()
1388   br label %exit
1390 exit:
1391   ret void
1394 define void @test_ccnb_branch(i64 %nr, ptr %addr) nounwind {
1395 ; X32-LABEL: test_ccnb_branch:
1396 ; X32:       # %bb.0: # %entry
1397 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1398 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1399 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1400 ; X32-NEXT:    #APP
1401 ; X32-NEXT:    cmp %eax,(%edx)
1402 ; X32-NEXT:    #NO_APP
1403 ; X32-NEXT:    jb .LBB41_2
1404 ; X32-NEXT:  # %bb.1: # %then
1405 ; X32-NEXT:    calll bar@PLT
1406 ; X32-NEXT:  .LBB41_2: # %exit
1407 ; X32-NEXT:    retl
1409 ; X64-LABEL: test_ccnb_branch:
1410 ; X64:       # %bb.0: # %entry
1411 ; X64-NEXT:    #APP
1412 ; X64-NEXT:    cmp %rdi,(%rsi)
1413 ; X64-NEXT:    #NO_APP
1414 ; X64-NEXT:    jb .LBB41_2
1415 ; X64-NEXT:  # %bb.1: # %then
1416 ; X64-NEXT:    pushq %rax
1417 ; X64-NEXT:    callq bar@PLT
1418 ; X64-NEXT:    addq $8, %rsp
1419 ; X64-NEXT:  .LBB41_2: # %exit
1420 ; X64-NEXT:    retq
1421 entry:
1422   %cc = tail call i8 asm "cmp $2,$1", "={@ccnb},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1423   %tobool = icmp ne i8 %cc, 0
1424   br i1 %tobool, label %then, label %exit
1426 then:
1427   call void @bar()
1428   br label %exit
1430 exit:
1431   ret void
1434 define void @test_ccnbe_branch(i64 %nr, ptr %addr) nounwind {
1435 ; X32-LABEL: test_ccnbe_branch:
1436 ; X32:       # %bb.0: # %entry
1437 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1438 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1439 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1440 ; X32-NEXT:    #APP
1441 ; X32-NEXT:    cmp %eax,(%edx)
1442 ; X32-NEXT:    #NO_APP
1443 ; X32-NEXT:    jbe .LBB42_2
1444 ; X32-NEXT:  # %bb.1: # %then
1445 ; X32-NEXT:    calll bar@PLT
1446 ; X32-NEXT:  .LBB42_2: # %exit
1447 ; X32-NEXT:    retl
1449 ; X64-LABEL: test_ccnbe_branch:
1450 ; X64:       # %bb.0: # %entry
1451 ; X64-NEXT:    #APP
1452 ; X64-NEXT:    cmp %rdi,(%rsi)
1453 ; X64-NEXT:    #NO_APP
1454 ; X64-NEXT:    jbe .LBB42_2
1455 ; X64-NEXT:  # %bb.1: # %then
1456 ; X64-NEXT:    pushq %rax
1457 ; X64-NEXT:    callq bar@PLT
1458 ; X64-NEXT:    addq $8, %rsp
1459 ; X64-NEXT:  .LBB42_2: # %exit
1460 ; X64-NEXT:    retq
1461 entry:
1462   %cc = tail call i8 asm "cmp $2,$1", "={@ccnbe},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1463   %tobool = icmp ne i8 %cc, 0
1464   br i1 %tobool, label %then, label %exit
1466 then:
1467   call void @bar()
1468   br label %exit
1470 exit:
1471   ret void
1474 define void @test_ccnc_branch(i64 %nr, ptr %addr) nounwind {
1475 ; X32-LABEL: test_ccnc_branch:
1476 ; X32:       # %bb.0: # %entry
1477 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1478 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1479 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1480 ; X32-NEXT:    #APP
1481 ; X32-NEXT:    cmp %eax,(%edx)
1482 ; X32-NEXT:    #NO_APP
1483 ; X32-NEXT:    jb .LBB43_2
1484 ; X32-NEXT:  # %bb.1: # %then
1485 ; X32-NEXT:    calll bar@PLT
1486 ; X32-NEXT:  .LBB43_2: # %exit
1487 ; X32-NEXT:    retl
1489 ; X64-LABEL: test_ccnc_branch:
1490 ; X64:       # %bb.0: # %entry
1491 ; X64-NEXT:    #APP
1492 ; X64-NEXT:    cmp %rdi,(%rsi)
1493 ; X64-NEXT:    #NO_APP
1494 ; X64-NEXT:    jb .LBB43_2
1495 ; X64-NEXT:  # %bb.1: # %then
1496 ; X64-NEXT:    pushq %rax
1497 ; X64-NEXT:    callq bar@PLT
1498 ; X64-NEXT:    addq $8, %rsp
1499 ; X64-NEXT:  .LBB43_2: # %exit
1500 ; X64-NEXT:    retq
1501 entry:
1502   %cc = tail call i8 asm "cmp $2,$1", "={@ccnc},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1503   %tobool = icmp ne i8 %cc, 0
1504   br i1 %tobool, label %then, label %exit
1506 then:
1507   call void @bar()
1508   br label %exit
1510 exit:
1511   ret void
1514 define void @test_ccne_branch(i64 %nr, ptr %addr) nounwind {
1515 ; X32-LABEL: test_ccne_branch:
1516 ; X32:       # %bb.0: # %entry
1517 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1518 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1519 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1520 ; X32-NEXT:    #APP
1521 ; X32-NEXT:    cmp %eax,(%edx)
1522 ; X32-NEXT:    #NO_APP
1523 ; X32-NEXT:    je .LBB44_2
1524 ; X32-NEXT:  # %bb.1: # %then
1525 ; X32-NEXT:    calll bar@PLT
1526 ; X32-NEXT:  .LBB44_2: # %exit
1527 ; X32-NEXT:    retl
1529 ; X64-LABEL: test_ccne_branch:
1530 ; X64:       # %bb.0: # %entry
1531 ; X64-NEXT:    #APP
1532 ; X64-NEXT:    cmp %rdi,(%rsi)
1533 ; X64-NEXT:    #NO_APP
1534 ; X64-NEXT:    je .LBB44_2
1535 ; X64-NEXT:  # %bb.1: # %then
1536 ; X64-NEXT:    pushq %rax
1537 ; X64-NEXT:    callq bar@PLT
1538 ; X64-NEXT:    addq $8, %rsp
1539 ; X64-NEXT:  .LBB44_2: # %exit
1540 ; X64-NEXT:    retq
1541 entry:
1542   %cc = tail call i8 asm "cmp $2,$1", "={@ccne},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1543   %tobool = icmp ne i8 %cc, 0
1544   br i1 %tobool, label %then, label %exit
1546 then:
1547   call void @bar()
1548   br label %exit
1550 exit:
1551   ret void
1554 define void @test_ccnz_branch(i64 %nr, ptr %addr) nounwind {
1555 ; X32-LABEL: test_ccnz_branch:
1556 ; X32:       # %bb.0: # %entry
1557 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1558 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1559 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1560 ; X32-NEXT:    #APP
1561 ; X32-NEXT:    cmp %eax,(%edx)
1562 ; X32-NEXT:    #NO_APP
1563 ; X32-NEXT:    je .LBB45_2
1564 ; X32-NEXT:  # %bb.1: # %then
1565 ; X32-NEXT:    calll bar@PLT
1566 ; X32-NEXT:  .LBB45_2: # %exit
1567 ; X32-NEXT:    retl
1569 ; X64-LABEL: test_ccnz_branch:
1570 ; X64:       # %bb.0: # %entry
1571 ; X64-NEXT:    #APP
1572 ; X64-NEXT:    cmp %rdi,(%rsi)
1573 ; X64-NEXT:    #NO_APP
1574 ; X64-NEXT:    je .LBB45_2
1575 ; X64-NEXT:  # %bb.1: # %then
1576 ; X64-NEXT:    pushq %rax
1577 ; X64-NEXT:    callq bar@PLT
1578 ; X64-NEXT:    addq $8, %rsp
1579 ; X64-NEXT:  .LBB45_2: # %exit
1580 ; X64-NEXT:    retq
1581 entry:
1582   %cc = tail call i8 asm "cmp $2,$1", "={@ccnz},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1583   %tobool = icmp ne i8 %cc, 0
1584   br i1 %tobool, label %then, label %exit
1586 then:
1587   call void @bar()
1588   br label %exit
1590 exit:
1591   ret void
1594 define void @test_ccng_branch(i64 %nr, ptr %addr) nounwind {
1595 ; X32-LABEL: test_ccng_branch:
1596 ; X32:       # %bb.0: # %entry
1597 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1598 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1599 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1600 ; X32-NEXT:    #APP
1601 ; X32-NEXT:    cmp %eax,(%edx)
1602 ; X32-NEXT:    #NO_APP
1603 ; X32-NEXT:    jg .LBB46_2
1604 ; X32-NEXT:  # %bb.1: # %then
1605 ; X32-NEXT:    calll bar@PLT
1606 ; X32-NEXT:  .LBB46_2: # %exit
1607 ; X32-NEXT:    retl
1609 ; X64-LABEL: test_ccng_branch:
1610 ; X64:       # %bb.0: # %entry
1611 ; X64-NEXT:    #APP
1612 ; X64-NEXT:    cmp %rdi,(%rsi)
1613 ; X64-NEXT:    #NO_APP
1614 ; X64-NEXT:    jg .LBB46_2
1615 ; X64-NEXT:  # %bb.1: # %then
1616 ; X64-NEXT:    pushq %rax
1617 ; X64-NEXT:    callq bar@PLT
1618 ; X64-NEXT:    addq $8, %rsp
1619 ; X64-NEXT:  .LBB46_2: # %exit
1620 ; X64-NEXT:    retq
1621 entry:
1622   %cc = tail call i8 asm "cmp $2,$1", "={@ccng},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1623   %tobool = icmp ne i8 %cc, 0
1624   br i1 %tobool, label %then, label %exit
1626 then:
1627   call void @bar()
1628   br label %exit
1630 exit:
1631   ret void
1634 define void @test_ccnge_branch(i64 %nr, ptr %addr) nounwind {
1635 ; X32-LABEL: test_ccnge_branch:
1636 ; X32:       # %bb.0: # %entry
1637 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1638 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1639 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1640 ; X32-NEXT:    #APP
1641 ; X32-NEXT:    cmp %eax,(%edx)
1642 ; X32-NEXT:    #NO_APP
1643 ; X32-NEXT:    jge .LBB47_2
1644 ; X32-NEXT:  # %bb.1: # %then
1645 ; X32-NEXT:    calll bar@PLT
1646 ; X32-NEXT:  .LBB47_2: # %exit
1647 ; X32-NEXT:    retl
1649 ; X64-LABEL: test_ccnge_branch:
1650 ; X64:       # %bb.0: # %entry
1651 ; X64-NEXT:    #APP
1652 ; X64-NEXT:    cmp %rdi,(%rsi)
1653 ; X64-NEXT:    #NO_APP
1654 ; X64-NEXT:    jge .LBB47_2
1655 ; X64-NEXT:  # %bb.1: # %then
1656 ; X64-NEXT:    pushq %rax
1657 ; X64-NEXT:    callq bar@PLT
1658 ; X64-NEXT:    addq $8, %rsp
1659 ; X64-NEXT:  .LBB47_2: # %exit
1660 ; X64-NEXT:    retq
1661 entry:
1662   %cc = tail call i8 asm "cmp $2,$1", "={@ccnge},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1663   %tobool = icmp ne i8 %cc, 0
1664   br i1 %tobool, label %then, label %exit
1666 then:
1667   call void @bar()
1668   br label %exit
1670 exit:
1671   ret void
1674 define void @test_ccnl_branch(i64 %nr, ptr %addr) nounwind {
1675 ; X32-LABEL: test_ccnl_branch:
1676 ; X32:       # %bb.0: # %entry
1677 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1678 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1679 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1680 ; X32-NEXT:    #APP
1681 ; X32-NEXT:    cmp %eax,(%edx)
1682 ; X32-NEXT:    #NO_APP
1683 ; X32-NEXT:    jl .LBB48_2
1684 ; X32-NEXT:  # %bb.1: # %then
1685 ; X32-NEXT:    calll bar@PLT
1686 ; X32-NEXT:  .LBB48_2: # %exit
1687 ; X32-NEXT:    retl
1689 ; X64-LABEL: test_ccnl_branch:
1690 ; X64:       # %bb.0: # %entry
1691 ; X64-NEXT:    #APP
1692 ; X64-NEXT:    cmp %rdi,(%rsi)
1693 ; X64-NEXT:    #NO_APP
1694 ; X64-NEXT:    jl .LBB48_2
1695 ; X64-NEXT:  # %bb.1: # %then
1696 ; X64-NEXT:    pushq %rax
1697 ; X64-NEXT:    callq bar@PLT
1698 ; X64-NEXT:    addq $8, %rsp
1699 ; X64-NEXT:  .LBB48_2: # %exit
1700 ; X64-NEXT:    retq
1701 entry:
1702   %cc = tail call i8 asm "cmp $2,$1", "={@ccnl},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1703   %tobool = icmp ne i8 %cc, 0
1704   br i1 %tobool, label %then, label %exit
1706 then:
1707   call void @bar()
1708   br label %exit
1710 exit:
1711   ret void
1714 define void @test_ccnle_branch(i64 %nr, ptr %addr) nounwind {
1715 ; X32-LABEL: test_ccnle_branch:
1716 ; X32:       # %bb.0: # %entry
1717 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1718 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1719 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1720 ; X32-NEXT:    #APP
1721 ; X32-NEXT:    cmp %eax,(%edx)
1722 ; X32-NEXT:    #NO_APP
1723 ; X32-NEXT:    jle .LBB49_2
1724 ; X32-NEXT:  # %bb.1: # %then
1725 ; X32-NEXT:    calll bar@PLT
1726 ; X32-NEXT:  .LBB49_2: # %exit
1727 ; X32-NEXT:    retl
1729 ; X64-LABEL: test_ccnle_branch:
1730 ; X64:       # %bb.0: # %entry
1731 ; X64-NEXT:    #APP
1732 ; X64-NEXT:    cmp %rdi,(%rsi)
1733 ; X64-NEXT:    #NO_APP
1734 ; X64-NEXT:    jle .LBB49_2
1735 ; X64-NEXT:  # %bb.1: # %then
1736 ; X64-NEXT:    pushq %rax
1737 ; X64-NEXT:    callq bar@PLT
1738 ; X64-NEXT:    addq $8, %rsp
1739 ; X64-NEXT:  .LBB49_2: # %exit
1740 ; X64-NEXT:    retq
1741 entry:
1742   %cc = tail call i8 asm "cmp $2,$1", "={@ccnle},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1743   %tobool = icmp ne i8 %cc, 0
1744   br i1 %tobool, label %then, label %exit
1746 then:
1747   call void @bar()
1748   br label %exit
1750 exit:
1751   ret void
1754 define void @test_ccno_branch(i64 %nr, ptr %addr) nounwind {
1755 ; X32-LABEL: test_ccno_branch:
1756 ; X32:       # %bb.0: # %entry
1757 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1758 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1759 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1760 ; X32-NEXT:    #APP
1761 ; X32-NEXT:    cmp %eax,(%edx)
1762 ; X32-NEXT:    #NO_APP
1763 ; X32-NEXT:    jo .LBB50_2
1764 ; X32-NEXT:  # %bb.1: # %then
1765 ; X32-NEXT:    calll bar@PLT
1766 ; X32-NEXT:  .LBB50_2: # %exit
1767 ; X32-NEXT:    retl
1769 ; X64-LABEL: test_ccno_branch:
1770 ; X64:       # %bb.0: # %entry
1771 ; X64-NEXT:    #APP
1772 ; X64-NEXT:    cmp %rdi,(%rsi)
1773 ; X64-NEXT:    #NO_APP
1774 ; X64-NEXT:    jo .LBB50_2
1775 ; X64-NEXT:  # %bb.1: # %then
1776 ; X64-NEXT:    pushq %rax
1777 ; X64-NEXT:    callq bar@PLT
1778 ; X64-NEXT:    addq $8, %rsp
1779 ; X64-NEXT:  .LBB50_2: # %exit
1780 ; X64-NEXT:    retq
1781 entry:
1782   %cc = tail call i8 asm "cmp $2,$1", "={@ccno},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1783   %tobool = icmp ne i8 %cc, 0
1784   br i1 %tobool, label %then, label %exit
1786 then:
1787   call void @bar()
1788   br label %exit
1790 exit:
1791   ret void
1794 define void @test_ccnp_branch(i64 %nr, ptr %addr) nounwind {
1795 ; X32-LABEL: test_ccnp_branch:
1796 ; X32:       # %bb.0: # %entry
1797 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1798 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1799 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1800 ; X32-NEXT:    #APP
1801 ; X32-NEXT:    cmp %eax,(%edx)
1802 ; X32-NEXT:    #NO_APP
1803 ; X32-NEXT:    jp .LBB51_2
1804 ; X32-NEXT:  # %bb.1: # %then
1805 ; X32-NEXT:    calll bar@PLT
1806 ; X32-NEXT:  .LBB51_2: # %exit
1807 ; X32-NEXT:    retl
1809 ; X64-LABEL: test_ccnp_branch:
1810 ; X64:       # %bb.0: # %entry
1811 ; X64-NEXT:    #APP
1812 ; X64-NEXT:    cmp %rdi,(%rsi)
1813 ; X64-NEXT:    #NO_APP
1814 ; X64-NEXT:    jp .LBB51_2
1815 ; X64-NEXT:  # %bb.1: # %then
1816 ; X64-NEXT:    pushq %rax
1817 ; X64-NEXT:    callq bar@PLT
1818 ; X64-NEXT:    addq $8, %rsp
1819 ; X64-NEXT:  .LBB51_2: # %exit
1820 ; X64-NEXT:    retq
1821 entry:
1822   %cc = tail call i8 asm "cmp $2,$1", "={@ccnp},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1823   %tobool = icmp ne i8 %cc, 0
1824   br i1 %tobool, label %then, label %exit
1826 then:
1827   call void @bar()
1828   br label %exit
1830 exit:
1831   ret void
1834 define void @test_ccns_branch(i64 %nr, ptr %addr) nounwind {
1835 ; X32-LABEL: test_ccns_branch:
1836 ; X32:       # %bb.0: # %entry
1837 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1838 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1839 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1840 ; X32-NEXT:    #APP
1841 ; X32-NEXT:    cmp %eax,(%edx)
1842 ; X32-NEXT:    #NO_APP
1843 ; X32-NEXT:    js .LBB52_2
1844 ; X32-NEXT:  # %bb.1: # %then
1845 ; X32-NEXT:    calll bar@PLT
1846 ; X32-NEXT:  .LBB52_2: # %exit
1847 ; X32-NEXT:    retl
1849 ; X64-LABEL: test_ccns_branch:
1850 ; X64:       # %bb.0: # %entry
1851 ; X64-NEXT:    #APP
1852 ; X64-NEXT:    cmp %rdi,(%rsi)
1853 ; X64-NEXT:    #NO_APP
1854 ; X64-NEXT:    js .LBB52_2
1855 ; X64-NEXT:  # %bb.1: # %then
1856 ; X64-NEXT:    pushq %rax
1857 ; X64-NEXT:    callq bar@PLT
1858 ; X64-NEXT:    addq $8, %rsp
1859 ; X64-NEXT:  .LBB52_2: # %exit
1860 ; X64-NEXT:    retq
1861 entry:
1862   %cc = tail call i8 asm "cmp $2,$1", "={@ccns},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1863   %tobool = icmp ne i8 %cc, 0
1864   br i1 %tobool, label %then, label %exit
1866 then:
1867   call void @bar()
1868   br label %exit
1870 exit:
1871   ret void
1874 define void @test_cco_branch(i64 %nr, ptr %addr) nounwind {
1875 ; X32-LABEL: test_cco_branch:
1876 ; X32:       # %bb.0: # %entry
1877 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1878 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1879 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1880 ; X32-NEXT:    #APP
1881 ; X32-NEXT:    cmp %eax,(%edx)
1882 ; X32-NEXT:    #NO_APP
1883 ; X32-NEXT:    jno .LBB53_2
1884 ; X32-NEXT:  # %bb.1: # %then
1885 ; X32-NEXT:    calll bar@PLT
1886 ; X32-NEXT:  .LBB53_2: # %exit
1887 ; X32-NEXT:    retl
1889 ; X64-LABEL: test_cco_branch:
1890 ; X64:       # %bb.0: # %entry
1891 ; X64-NEXT:    #APP
1892 ; X64-NEXT:    cmp %rdi,(%rsi)
1893 ; X64-NEXT:    #NO_APP
1894 ; X64-NEXT:    jno .LBB53_2
1895 ; X64-NEXT:  # %bb.1: # %then
1896 ; X64-NEXT:    pushq %rax
1897 ; X64-NEXT:    callq bar@PLT
1898 ; X64-NEXT:    addq $8, %rsp
1899 ; X64-NEXT:  .LBB53_2: # %exit
1900 ; X64-NEXT:    retq
1901 entry:
1902   %cc = tail call i8 asm "cmp $2,$1", "={@cco},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1903   %tobool = icmp ne i8 %cc, 0
1904   br i1 %tobool, label %then, label %exit
1906 then:
1907   call void @bar()
1908   br label %exit
1910 exit:
1911   ret void
1914 define void @test_ccp_branch(i64 %nr, ptr %addr) nounwind {
1915 ; X32-LABEL: test_ccp_branch:
1916 ; X32:       # %bb.0: # %entry
1917 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1918 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1919 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1920 ; X32-NEXT:    #APP
1921 ; X32-NEXT:    cmp %eax,(%edx)
1922 ; X32-NEXT:    #NO_APP
1923 ; X32-NEXT:    jnp .LBB54_2
1924 ; X32-NEXT:  # %bb.1: # %then
1925 ; X32-NEXT:    calll bar@PLT
1926 ; X32-NEXT:  .LBB54_2: # %exit
1927 ; X32-NEXT:    retl
1929 ; X64-LABEL: test_ccp_branch:
1930 ; X64:       # %bb.0: # %entry
1931 ; X64-NEXT:    #APP
1932 ; X64-NEXT:    cmp %rdi,(%rsi)
1933 ; X64-NEXT:    #NO_APP
1934 ; X64-NEXT:    jnp .LBB54_2
1935 ; X64-NEXT:  # %bb.1: # %then
1936 ; X64-NEXT:    pushq %rax
1937 ; X64-NEXT:    callq bar@PLT
1938 ; X64-NEXT:    addq $8, %rsp
1939 ; X64-NEXT:  .LBB54_2: # %exit
1940 ; X64-NEXT:    retq
1941 entry:
1942   %cc = tail call i8 asm "cmp $2,$1", "={@ccp},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1943   %tobool = icmp ne i8 %cc, 0
1944   br i1 %tobool, label %then, label %exit
1946 then:
1947   call void @bar()
1948   br label %exit
1950 exit:
1951   ret void
1954 define void @test_ccs_branch(i64 %nr, ptr %addr) nounwind {
1955 ; X32-LABEL: test_ccs_branch:
1956 ; X32:       # %bb.0: # %entry
1957 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1958 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1959 ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
1960 ; X32-NEXT:    #APP
1961 ; X32-NEXT:    cmp %eax,(%edx)
1962 ; X32-NEXT:    #NO_APP
1963 ; X32-NEXT:    jns .LBB55_2
1964 ; X32-NEXT:  # %bb.1: # %then
1965 ; X32-NEXT:    calll bar@PLT
1966 ; X32-NEXT:  .LBB55_2: # %exit
1967 ; X32-NEXT:    retl
1969 ; X64-LABEL: test_ccs_branch:
1970 ; X64:       # %bb.0: # %entry
1971 ; X64-NEXT:    #APP
1972 ; X64-NEXT:    cmp %rdi,(%rsi)
1973 ; X64-NEXT:    #NO_APP
1974 ; X64-NEXT:    jns .LBB55_2
1975 ; X64-NEXT:  # %bb.1: # %then
1976 ; X64-NEXT:    pushq %rax
1977 ; X64-NEXT:    callq bar@PLT
1978 ; X64-NEXT:    addq $8, %rsp
1979 ; X64-NEXT:  .LBB55_2: # %exit
1980 ; X64-NEXT:    retq
1981 entry:
1982   %cc = tail call i8 asm "cmp $2,$1", "={@ccs},=*m,r,~{cc},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i64) %addr, i64 %nr) nounwind
1983   %tobool = icmp ne i8 %cc, 0
1984   br i1 %tobool, label %then, label %exit
1986 then:
1987   call void @bar()
1988   br label %exit
1990 exit:
1991   ret void