Lines Matching refs:ARM6
7 ; RUN: llc -mtriple=armv6-unknown-none-eabi -O0 -o - %s | FileCheck %s --check-prefix=CHECK-ARM6
62 ; CHECK-ARM6-LABEL: test_xchg_i8:
63 ; CHECK-ARM6: @ %bb.0: @ %entry
64 ; CHECK-ARM6-NEXT: .pad #8
65 ; CHECK-ARM6-NEXT: sub sp, sp, #8
66 ; CHECK-ARM6-NEXT: ldr r0, .LCPI0_0
67 ; CHECK-ARM6-NEXT: ldrb r0, [r0]
68 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
69 ; CHECK-ARM6-NEXT: b .LBB0_1
70 ; CHECK-ARM6-NEXT: .LBB0_1: @ %atomicrmw.start
71 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
72 ; CHECK-ARM6-NEXT: @ Child Loop BB0_2 Depth 2
73 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
74 ; CHECK-ARM6-NEXT: ldr r3, .LCPI0_0
75 ; CHECK-ARM6-NEXT: mov r12, #1
76 ; CHECK-ARM6-NEXT: uxtb r1, r1
77 ; CHECK-ARM6-NEXT: .LBB0_2: @ %atomicrmw.start
78 ; CHECK-ARM6-NEXT: @ Parent Loop BB0_1 Depth=1
79 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
80 ; CHECK-ARM6-NEXT: ldrexb r0, [r3]
81 ; CHECK-ARM6-NEXT: cmp r0, r1
82 ; CHECK-ARM6-NEXT: bne .LBB0_4
83 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
84 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB0_2 Depth=2
85 ; CHECK-ARM6-NEXT: strexb r2, r12, [r3]
86 ; CHECK-ARM6-NEXT: cmp r2, #0
87 ; CHECK-ARM6-NEXT: bne .LBB0_2
88 ; CHECK-ARM6-NEXT: .LBB0_4: @ %atomicrmw.start
89 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB0_1 Depth=1
90 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
91 ; CHECK-ARM6-NEXT: uxtb r1, r1
92 ; CHECK-ARM6-NEXT: sub r1, r0, r1
93 ; CHECK-ARM6-NEXT: clz r1, r1
94 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
95 ; CHECK-ARM6-NEXT: cmp r1, #1
96 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
97 ; CHECK-ARM6-NEXT: bne .LBB0_1
98 ; CHECK-ARM6-NEXT: b .LBB0_5
99 ; CHECK-ARM6-NEXT: .LBB0_5: @ %atomicrmw.end
100 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
101 ; CHECK-ARM6-NEXT: add sp, sp, #8
102 ; CHECK-ARM6-NEXT: bx lr
103 ; CHECK-ARM6-NEXT: .p2align 2
104 ; CHECK-ARM6-NEXT: @ %bb.6:
105 ; CHECK-ARM6-NEXT: .LCPI0_0:
106 ; CHECK-ARM6-NEXT: .long atomic_i8
259 ; CHECK-ARM6-LABEL: test_add_i8:
260 ; CHECK-ARM6: @ %bb.0: @ %entry
261 ; CHECK-ARM6-NEXT: .pad #8
262 ; CHECK-ARM6-NEXT: sub sp, sp, #8
263 ; CHECK-ARM6-NEXT: ldr r0, .LCPI1_0
264 ; CHECK-ARM6-NEXT: ldrb r0, [r0]
265 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
266 ; CHECK-ARM6-NEXT: b .LBB1_1
267 ; CHECK-ARM6-NEXT: .LBB1_1: @ %atomicrmw.start
268 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
269 ; CHECK-ARM6-NEXT: @ Child Loop BB1_2 Depth 2
270 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
271 ; CHECK-ARM6-NEXT: add r12, r1, #1
272 ; CHECK-ARM6-NEXT: ldr r3, .LCPI1_0
273 ; CHECK-ARM6-NEXT: uxtb r1, r1
274 ; CHECK-ARM6-NEXT: .LBB1_2: @ %atomicrmw.start
275 ; CHECK-ARM6-NEXT: @ Parent Loop BB1_1 Depth=1
276 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
277 ; CHECK-ARM6-NEXT: ldrexb r0, [r3]
278 ; CHECK-ARM6-NEXT: cmp r0, r1
279 ; CHECK-ARM6-NEXT: bne .LBB1_4
280 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
281 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB1_2 Depth=2
282 ; CHECK-ARM6-NEXT: strexb r2, r12, [r3]
283 ; CHECK-ARM6-NEXT: cmp r2, #0
284 ; CHECK-ARM6-NEXT: bne .LBB1_2
285 ; CHECK-ARM6-NEXT: .LBB1_4: @ %atomicrmw.start
286 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB1_1 Depth=1
287 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
288 ; CHECK-ARM6-NEXT: uxtb r1, r1
289 ; CHECK-ARM6-NEXT: sub r1, r0, r1
290 ; CHECK-ARM6-NEXT: clz r1, r1
291 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
292 ; CHECK-ARM6-NEXT: cmp r1, #1
293 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
294 ; CHECK-ARM6-NEXT: bne .LBB1_1
295 ; CHECK-ARM6-NEXT: b .LBB1_5
296 ; CHECK-ARM6-NEXT: .LBB1_5: @ %atomicrmw.end
297 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
298 ; CHECK-ARM6-NEXT: add sp, sp, #8
299 ; CHECK-ARM6-NEXT: bx lr
300 ; CHECK-ARM6-NEXT: .p2align 2
301 ; CHECK-ARM6-NEXT: @ %bb.6:
302 ; CHECK-ARM6-NEXT: .LCPI1_0:
303 ; CHECK-ARM6-NEXT: .long atomic_i8
456 ; CHECK-ARM6-LABEL: test_sub_i8:
457 ; CHECK-ARM6: @ %bb.0: @ %entry
458 ; CHECK-ARM6-NEXT: .pad #8
459 ; CHECK-ARM6-NEXT: sub sp, sp, #8
460 ; CHECK-ARM6-NEXT: ldr r0, .LCPI2_0
461 ; CHECK-ARM6-NEXT: ldrb r0, [r0]
462 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
463 ; CHECK-ARM6-NEXT: b .LBB2_1
464 ; CHECK-ARM6-NEXT: .LBB2_1: @ %atomicrmw.start
465 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
466 ; CHECK-ARM6-NEXT: @ Child Loop BB2_2 Depth 2
467 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
468 ; CHECK-ARM6-NEXT: sub r12, r1, #1
469 ; CHECK-ARM6-NEXT: ldr r3, .LCPI2_0
470 ; CHECK-ARM6-NEXT: uxtb r1, r1
471 ; CHECK-ARM6-NEXT: .LBB2_2: @ %atomicrmw.start
472 ; CHECK-ARM6-NEXT: @ Parent Loop BB2_1 Depth=1
473 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
474 ; CHECK-ARM6-NEXT: ldrexb r0, [r3]
475 ; CHECK-ARM6-NEXT: cmp r0, r1
476 ; CHECK-ARM6-NEXT: bne .LBB2_4
477 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
478 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB2_2 Depth=2
479 ; CHECK-ARM6-NEXT: strexb r2, r12, [r3]
480 ; CHECK-ARM6-NEXT: cmp r2, #0
481 ; CHECK-ARM6-NEXT: bne .LBB2_2
482 ; CHECK-ARM6-NEXT: .LBB2_4: @ %atomicrmw.start
483 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB2_1 Depth=1
484 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
485 ; CHECK-ARM6-NEXT: uxtb r1, r1
486 ; CHECK-ARM6-NEXT: sub r1, r0, r1
487 ; CHECK-ARM6-NEXT: clz r1, r1
488 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
489 ; CHECK-ARM6-NEXT: cmp r1, #1
490 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
491 ; CHECK-ARM6-NEXT: bne .LBB2_1
492 ; CHECK-ARM6-NEXT: b .LBB2_5
493 ; CHECK-ARM6-NEXT: .LBB2_5: @ %atomicrmw.end
494 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
495 ; CHECK-ARM6-NEXT: add sp, sp, #8
496 ; CHECK-ARM6-NEXT: bx lr
497 ; CHECK-ARM6-NEXT: .p2align 2
498 ; CHECK-ARM6-NEXT: @ %bb.6:
499 ; CHECK-ARM6-NEXT: .LCPI2_0:
500 ; CHECK-ARM6-NEXT: .long atomic_i8
653 ; CHECK-ARM6-LABEL: test_and_i8:
654 ; CHECK-ARM6: @ %bb.0: @ %entry
655 ; CHECK-ARM6-NEXT: .pad #8
656 ; CHECK-ARM6-NEXT: sub sp, sp, #8
657 ; CHECK-ARM6-NEXT: ldr r0, .LCPI3_0
658 ; CHECK-ARM6-NEXT: ldrb r0, [r0]
659 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
660 ; CHECK-ARM6-NEXT: b .LBB3_1
661 ; CHECK-ARM6-NEXT: .LBB3_1: @ %atomicrmw.start
662 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
663 ; CHECK-ARM6-NEXT: @ Child Loop BB3_2 Depth 2
664 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
665 ; CHECK-ARM6-NEXT: and r12, r1, #1
666 ; CHECK-ARM6-NEXT: ldr r3, .LCPI3_0
667 ; CHECK-ARM6-NEXT: uxtb r1, r1
668 ; CHECK-ARM6-NEXT: .LBB3_2: @ %atomicrmw.start
669 ; CHECK-ARM6-NEXT: @ Parent Loop BB3_1 Depth=1
670 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
671 ; CHECK-ARM6-NEXT: ldrexb r0, [r3]
672 ; CHECK-ARM6-NEXT: cmp r0, r1
673 ; CHECK-ARM6-NEXT: bne .LBB3_4
674 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
675 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB3_2 Depth=2
676 ; CHECK-ARM6-NEXT: strexb r2, r12, [r3]
677 ; CHECK-ARM6-NEXT: cmp r2, #0
678 ; CHECK-ARM6-NEXT: bne .LBB3_2
679 ; CHECK-ARM6-NEXT: .LBB3_4: @ %atomicrmw.start
680 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB3_1 Depth=1
681 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
682 ; CHECK-ARM6-NEXT: uxtb r1, r1
683 ; CHECK-ARM6-NEXT: sub r1, r0, r1
684 ; CHECK-ARM6-NEXT: clz r1, r1
685 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
686 ; CHECK-ARM6-NEXT: cmp r1, #1
687 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
688 ; CHECK-ARM6-NEXT: bne .LBB3_1
689 ; CHECK-ARM6-NEXT: b .LBB3_5
690 ; CHECK-ARM6-NEXT: .LBB3_5: @ %atomicrmw.end
691 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
692 ; CHECK-ARM6-NEXT: add sp, sp, #8
693 ; CHECK-ARM6-NEXT: bx lr
694 ; CHECK-ARM6-NEXT: .p2align 2
695 ; CHECK-ARM6-NEXT: @ %bb.6:
696 ; CHECK-ARM6-NEXT: .LCPI3_0:
697 ; CHECK-ARM6-NEXT: .long atomic_i8
854 ; CHECK-ARM6-LABEL: test_nand_i8:
855 ; CHECK-ARM6: @ %bb.0: @ %entry
856 ; CHECK-ARM6-NEXT: .pad #8
857 ; CHECK-ARM6-NEXT: sub sp, sp, #8
858 ; CHECK-ARM6-NEXT: ldr r0, .LCPI4_0
859 ; CHECK-ARM6-NEXT: ldrb r0, [r0]
860 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
861 ; CHECK-ARM6-NEXT: b .LBB4_1
862 ; CHECK-ARM6-NEXT: .LBB4_1: @ %atomicrmw.start
863 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
864 ; CHECK-ARM6-NEXT: @ Child Loop BB4_2 Depth 2
865 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
866 ; CHECK-ARM6-NEXT: mvn r0, r1
867 ; CHECK-ARM6-NEXT: mvn r2, #1
868 ; CHECK-ARM6-NEXT: orr r12, r0, r2
869 ; CHECK-ARM6-NEXT: ldr r3, .LCPI4_0
870 ; CHECK-ARM6-NEXT: uxtb r1, r1
871 ; CHECK-ARM6-NEXT: .LBB4_2: @ %atomicrmw.start
872 ; CHECK-ARM6-NEXT: @ Parent Loop BB4_1 Depth=1
873 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
874 ; CHECK-ARM6-NEXT: ldrexb r0, [r3]
875 ; CHECK-ARM6-NEXT: cmp r0, r1
876 ; CHECK-ARM6-NEXT: bne .LBB4_4
877 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
878 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB4_2 Depth=2
879 ; CHECK-ARM6-NEXT: strexb r2, r12, [r3]
880 ; CHECK-ARM6-NEXT: cmp r2, #0
881 ; CHECK-ARM6-NEXT: bne .LBB4_2
882 ; CHECK-ARM6-NEXT: .LBB4_4: @ %atomicrmw.start
883 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB4_1 Depth=1
884 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
885 ; CHECK-ARM6-NEXT: uxtb r1, r1
886 ; CHECK-ARM6-NEXT: sub r1, r0, r1
887 ; CHECK-ARM6-NEXT: clz r1, r1
888 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
889 ; CHECK-ARM6-NEXT: cmp r1, #1
890 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
891 ; CHECK-ARM6-NEXT: bne .LBB4_1
892 ; CHECK-ARM6-NEXT: b .LBB4_5
893 ; CHECK-ARM6-NEXT: .LBB4_5: @ %atomicrmw.end
894 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
895 ; CHECK-ARM6-NEXT: add sp, sp, #8
896 ; CHECK-ARM6-NEXT: bx lr
897 ; CHECK-ARM6-NEXT: .p2align 2
898 ; CHECK-ARM6-NEXT: @ %bb.6:
899 ; CHECK-ARM6-NEXT: .LCPI4_0:
900 ; CHECK-ARM6-NEXT: .long atomic_i8
1057 ; CHECK-ARM6-LABEL: test_or_i8:
1058 ; CHECK-ARM6: @ %bb.0: @ %entry
1059 ; CHECK-ARM6-NEXT: .pad #8
1060 ; CHECK-ARM6-NEXT: sub sp, sp, #8
1061 ; CHECK-ARM6-NEXT: ldr r0, .LCPI5_0
1062 ; CHECK-ARM6-NEXT: ldrb r0, [r0]
1063 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
1064 ; CHECK-ARM6-NEXT: b .LBB5_1
1065 ; CHECK-ARM6-NEXT: .LBB5_1: @ %atomicrmw.start
1066 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
1067 ; CHECK-ARM6-NEXT: @ Child Loop BB5_2 Depth 2
1068 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
1069 ; CHECK-ARM6-NEXT: orr r12, r1, #1
1070 ; CHECK-ARM6-NEXT: ldr r3, .LCPI5_0
1071 ; CHECK-ARM6-NEXT: uxtb r1, r1
1072 ; CHECK-ARM6-NEXT: .LBB5_2: @ %atomicrmw.start
1073 ; CHECK-ARM6-NEXT: @ Parent Loop BB5_1 Depth=1
1074 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
1075 ; CHECK-ARM6-NEXT: ldrexb r0, [r3]
1076 ; CHECK-ARM6-NEXT: cmp r0, r1
1077 ; CHECK-ARM6-NEXT: bne .LBB5_4
1078 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
1079 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB5_2 Depth=2
1080 ; CHECK-ARM6-NEXT: strexb r2, r12, [r3]
1081 ; CHECK-ARM6-NEXT: cmp r2, #0
1082 ; CHECK-ARM6-NEXT: bne .LBB5_2
1083 ; CHECK-ARM6-NEXT: .LBB5_4: @ %atomicrmw.start
1084 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB5_1 Depth=1
1085 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
1086 ; CHECK-ARM6-NEXT: uxtb r1, r1
1087 ; CHECK-ARM6-NEXT: sub r1, r0, r1
1088 ; CHECK-ARM6-NEXT: clz r1, r1
1089 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
1090 ; CHECK-ARM6-NEXT: cmp r1, #1
1091 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
1092 ; CHECK-ARM6-NEXT: bne .LBB5_1
1093 ; CHECK-ARM6-NEXT: b .LBB5_5
1094 ; CHECK-ARM6-NEXT: .LBB5_5: @ %atomicrmw.end
1095 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
1096 ; CHECK-ARM6-NEXT: add sp, sp, #8
1097 ; CHECK-ARM6-NEXT: bx lr
1098 ; CHECK-ARM6-NEXT: .p2align 2
1099 ; CHECK-ARM6-NEXT: @ %bb.6:
1100 ; CHECK-ARM6-NEXT: .LCPI5_0:
1101 ; CHECK-ARM6-NEXT: .long atomic_i8
1256 ; CHECK-ARM6-LABEL: test_xor_i8:
1257 ; CHECK-ARM6: @ %bb.0: @ %entry
1258 ; CHECK-ARM6-NEXT: .pad #8
1259 ; CHECK-ARM6-NEXT: sub sp, sp, #8
1260 ; CHECK-ARM6-NEXT: ldr r0, .LCPI6_0
1261 ; CHECK-ARM6-NEXT: ldrb r0, [r0]
1262 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
1263 ; CHECK-ARM6-NEXT: b .LBB6_1
1264 ; CHECK-ARM6-NEXT: .LBB6_1: @ %atomicrmw.start
1265 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
1266 ; CHECK-ARM6-NEXT: @ Child Loop BB6_2 Depth 2
1267 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
1268 ; CHECK-ARM6-NEXT: eor r12, r1, #1
1269 ; CHECK-ARM6-NEXT: ldr r3, .LCPI6_0
1270 ; CHECK-ARM6-NEXT: uxtb r1, r1
1271 ; CHECK-ARM6-NEXT: .LBB6_2: @ %atomicrmw.start
1272 ; CHECK-ARM6-NEXT: @ Parent Loop BB6_1 Depth=1
1273 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
1274 ; CHECK-ARM6-NEXT: ldrexb r0, [r3]
1275 ; CHECK-ARM6-NEXT: cmp r0, r1
1276 ; CHECK-ARM6-NEXT: bne .LBB6_4
1277 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
1278 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB6_2 Depth=2
1279 ; CHECK-ARM6-NEXT: strexb r2, r12, [r3]
1280 ; CHECK-ARM6-NEXT: cmp r2, #0
1281 ; CHECK-ARM6-NEXT: bne .LBB6_2
1282 ; CHECK-ARM6-NEXT: .LBB6_4: @ %atomicrmw.start
1283 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB6_1 Depth=1
1284 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
1285 ; CHECK-ARM6-NEXT: uxtb r1, r1
1286 ; CHECK-ARM6-NEXT: sub r1, r0, r1
1287 ; CHECK-ARM6-NEXT: clz r1, r1
1288 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
1289 ; CHECK-ARM6-NEXT: cmp r1, #1
1290 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
1291 ; CHECK-ARM6-NEXT: bne .LBB6_1
1292 ; CHECK-ARM6-NEXT: b .LBB6_5
1293 ; CHECK-ARM6-NEXT: .LBB6_5: @ %atomicrmw.end
1294 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
1295 ; CHECK-ARM6-NEXT: add sp, sp, #8
1296 ; CHECK-ARM6-NEXT: bx lr
1297 ; CHECK-ARM6-NEXT: .p2align 2
1298 ; CHECK-ARM6-NEXT: @ %bb.6:
1299 ; CHECK-ARM6-NEXT: .LCPI6_0:
1300 ; CHECK-ARM6-NEXT: .long atomic_i8
1458 ; CHECK-ARM6-LABEL: test_max_i8:
1459 ; CHECK-ARM6: @ %bb.0: @ %entry
1460 ; CHECK-ARM6-NEXT: .pad #8
1461 ; CHECK-ARM6-NEXT: sub sp, sp, #8
1462 ; CHECK-ARM6-NEXT: ldr r0, .LCPI7_0
1463 ; CHECK-ARM6-NEXT: ldrb r0, [r0]
1464 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
1465 ; CHECK-ARM6-NEXT: b .LBB7_1
1466 ; CHECK-ARM6-NEXT: .LBB7_1: @ %atomicrmw.start
1467 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
1468 ; CHECK-ARM6-NEXT: @ Child Loop BB7_2 Depth 2
1469 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
1470 ; CHECK-ARM6-NEXT: sxtb r0, r1
1471 ; CHECK-ARM6-NEXT: mov r12, #1
1472 ; CHECK-ARM6-NEXT: cmp r0, #1
1473 ; CHECK-ARM6-NEXT: movgt r12, r1
1474 ; CHECK-ARM6-NEXT: ldr r3, .LCPI7_0
1475 ; CHECK-ARM6-NEXT: uxtb r1, r1
1476 ; CHECK-ARM6-NEXT: .LBB7_2: @ %atomicrmw.start
1477 ; CHECK-ARM6-NEXT: @ Parent Loop BB7_1 Depth=1
1478 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
1479 ; CHECK-ARM6-NEXT: ldrexb r0, [r3]
1480 ; CHECK-ARM6-NEXT: cmp r0, r1
1481 ; CHECK-ARM6-NEXT: bne .LBB7_4
1482 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
1483 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB7_2 Depth=2
1484 ; CHECK-ARM6-NEXT: strexb r2, r12, [r3]
1485 ; CHECK-ARM6-NEXT: cmp r2, #0
1486 ; CHECK-ARM6-NEXT: bne .LBB7_2
1487 ; CHECK-ARM6-NEXT: .LBB7_4: @ %atomicrmw.start
1488 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB7_1 Depth=1
1489 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
1490 ; CHECK-ARM6-NEXT: uxtb r1, r1
1491 ; CHECK-ARM6-NEXT: sub r1, r0, r1
1492 ; CHECK-ARM6-NEXT: clz r1, r1
1493 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
1494 ; CHECK-ARM6-NEXT: cmp r1, #1
1495 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
1496 ; CHECK-ARM6-NEXT: bne .LBB7_1
1497 ; CHECK-ARM6-NEXT: b .LBB7_5
1498 ; CHECK-ARM6-NEXT: .LBB7_5: @ %atomicrmw.end
1499 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
1500 ; CHECK-ARM6-NEXT: add sp, sp, #8
1501 ; CHECK-ARM6-NEXT: bx lr
1502 ; CHECK-ARM6-NEXT: .p2align 2
1503 ; CHECK-ARM6-NEXT: @ %bb.6:
1504 ; CHECK-ARM6-NEXT: .LCPI7_0:
1505 ; CHECK-ARM6-NEXT: .long atomic_i8
1679 ; CHECK-ARM6-LABEL: test_min_i8:
1680 ; CHECK-ARM6: @ %bb.0: @ %entry
1681 ; CHECK-ARM6-NEXT: .pad #8
1682 ; CHECK-ARM6-NEXT: sub sp, sp, #8
1683 ; CHECK-ARM6-NEXT: ldr r0, .LCPI8_0
1684 ; CHECK-ARM6-NEXT: ldrb r0, [r0]
1685 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
1686 ; CHECK-ARM6-NEXT: b .LBB8_1
1687 ; CHECK-ARM6-NEXT: .LBB8_1: @ %atomicrmw.start
1688 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
1689 ; CHECK-ARM6-NEXT: @ Child Loop BB8_2 Depth 2
1690 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
1691 ; CHECK-ARM6-NEXT: sxtb r0, r1
1692 ; CHECK-ARM6-NEXT: mov r12, #1
1693 ; CHECK-ARM6-NEXT: cmp r0, #2
1694 ; CHECK-ARM6-NEXT: movlt r12, r1
1695 ; CHECK-ARM6-NEXT: ldr r3, .LCPI8_0
1696 ; CHECK-ARM6-NEXT: uxtb r1, r1
1697 ; CHECK-ARM6-NEXT: .LBB8_2: @ %atomicrmw.start
1698 ; CHECK-ARM6-NEXT: @ Parent Loop BB8_1 Depth=1
1699 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
1700 ; CHECK-ARM6-NEXT: ldrexb r0, [r3]
1701 ; CHECK-ARM6-NEXT: cmp r0, r1
1702 ; CHECK-ARM6-NEXT: bne .LBB8_4
1703 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
1704 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB8_2 Depth=2
1705 ; CHECK-ARM6-NEXT: strexb r2, r12, [r3]
1706 ; CHECK-ARM6-NEXT: cmp r2, #0
1707 ; CHECK-ARM6-NEXT: bne .LBB8_2
1708 ; CHECK-ARM6-NEXT: .LBB8_4: @ %atomicrmw.start
1709 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB8_1 Depth=1
1710 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
1711 ; CHECK-ARM6-NEXT: uxtb r1, r1
1712 ; CHECK-ARM6-NEXT: sub r1, r0, r1
1713 ; CHECK-ARM6-NEXT: clz r1, r1
1714 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
1715 ; CHECK-ARM6-NEXT: cmp r1, #1
1716 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
1717 ; CHECK-ARM6-NEXT: bne .LBB8_1
1718 ; CHECK-ARM6-NEXT: b .LBB8_5
1719 ; CHECK-ARM6-NEXT: .LBB8_5: @ %atomicrmw.end
1720 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
1721 ; CHECK-ARM6-NEXT: add sp, sp, #8
1722 ; CHECK-ARM6-NEXT: bx lr
1723 ; CHECK-ARM6-NEXT: .p2align 2
1724 ; CHECK-ARM6-NEXT: @ %bb.6:
1725 ; CHECK-ARM6-NEXT: .LCPI8_0:
1726 ; CHECK-ARM6-NEXT: .long atomic_i8
1901 ; CHECK-ARM6-LABEL: test_umax_i8:
1902 ; CHECK-ARM6: @ %bb.0: @ %entry
1903 ; CHECK-ARM6-NEXT: .save {r11, lr}
1904 ; CHECK-ARM6-NEXT: push {r11, lr}
1905 ; CHECK-ARM6-NEXT: .pad #8
1906 ; CHECK-ARM6-NEXT: sub sp, sp, #8
1907 ; CHECK-ARM6-NEXT: ldr r0, .LCPI9_0
1908 ; CHECK-ARM6-NEXT: ldrb r0, [r0]
1909 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
1910 ; CHECK-ARM6-NEXT: b .LBB9_1
1911 ; CHECK-ARM6-NEXT: .LBB9_1: @ %atomicrmw.start
1912 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
1913 ; CHECK-ARM6-NEXT: @ Child Loop BB9_2 Depth 2
1914 ; CHECK-ARM6-NEXT: ldr r12, [sp, #4] @ 4-byte Reload
1915 ; CHECK-ARM6-NEXT: uxtb r1, r12
1916 ; CHECK-ARM6-NEXT: mov lr, #1
1917 ; CHECK-ARM6-NEXT: cmp r1, #1
1918 ; CHECK-ARM6-NEXT: movhi lr, r12
1919 ; CHECK-ARM6-NEXT: ldr r3, .LCPI9_0
1920 ; CHECK-ARM6-NEXT: uxtb r12, r12
1921 ; CHECK-ARM6-NEXT: .LBB9_2: @ %atomicrmw.start
1922 ; CHECK-ARM6-NEXT: @ Parent Loop BB9_1 Depth=1
1923 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
1924 ; CHECK-ARM6-NEXT: ldrexb r0, [r3]
1925 ; CHECK-ARM6-NEXT: cmp r0, r12
1926 ; CHECK-ARM6-NEXT: bne .LBB9_4
1927 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
1928 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB9_2 Depth=2
1929 ; CHECK-ARM6-NEXT: strexb r2, lr, [r3]
1930 ; CHECK-ARM6-NEXT: cmp r2, #0
1931 ; CHECK-ARM6-NEXT: bne .LBB9_2
1932 ; CHECK-ARM6-NEXT: .LBB9_4: @ %atomicrmw.start
1933 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB9_1 Depth=1
1934 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
1935 ; CHECK-ARM6-NEXT: sub r1, r0, r1
1936 ; CHECK-ARM6-NEXT: clz r1, r1
1937 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
1938 ; CHECK-ARM6-NEXT: cmp r1, #1
1939 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
1940 ; CHECK-ARM6-NEXT: bne .LBB9_1
1941 ; CHECK-ARM6-NEXT: b .LBB9_5
1942 ; CHECK-ARM6-NEXT: .LBB9_5: @ %atomicrmw.end
1943 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
1944 ; CHECK-ARM6-NEXT: add sp, sp, #8
1945 ; CHECK-ARM6-NEXT: pop {r11, pc}
1946 ; CHECK-ARM6-NEXT: .p2align 2
1947 ; CHECK-ARM6-NEXT: @ %bb.6:
1948 ; CHECK-ARM6-NEXT: .LCPI9_0:
1949 ; CHECK-ARM6-NEXT: .long atomic_i8
2126 ; CHECK-ARM6-LABEL: test_umin_i8:
2127 ; CHECK-ARM6: @ %bb.0: @ %entry
2128 ; CHECK-ARM6-NEXT: .save {r11, lr}
2129 ; CHECK-ARM6-NEXT: push {r11, lr}
2130 ; CHECK-ARM6-NEXT: .pad #8
2131 ; CHECK-ARM6-NEXT: sub sp, sp, #8
2132 ; CHECK-ARM6-NEXT: ldr r0, .LCPI10_0
2133 ; CHECK-ARM6-NEXT: ldrb r0, [r0]
2134 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
2135 ; CHECK-ARM6-NEXT: b .LBB10_1
2136 ; CHECK-ARM6-NEXT: .LBB10_1: @ %atomicrmw.start
2137 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
2138 ; CHECK-ARM6-NEXT: @ Child Loop BB10_2 Depth 2
2139 ; CHECK-ARM6-NEXT: ldr r12, [sp, #4] @ 4-byte Reload
2140 ; CHECK-ARM6-NEXT: uxtb r1, r12
2141 ; CHECK-ARM6-NEXT: mov lr, #1
2142 ; CHECK-ARM6-NEXT: cmp r1, #2
2143 ; CHECK-ARM6-NEXT: movlo lr, r12
2144 ; CHECK-ARM6-NEXT: ldr r3, .LCPI10_0
2145 ; CHECK-ARM6-NEXT: uxtb r12, r12
2146 ; CHECK-ARM6-NEXT: .LBB10_2: @ %atomicrmw.start
2147 ; CHECK-ARM6-NEXT: @ Parent Loop BB10_1 Depth=1
2148 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
2149 ; CHECK-ARM6-NEXT: ldrexb r0, [r3]
2150 ; CHECK-ARM6-NEXT: cmp r0, r12
2151 ; CHECK-ARM6-NEXT: bne .LBB10_4
2152 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
2153 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB10_2 Depth=2
2154 ; CHECK-ARM6-NEXT: strexb r2, lr, [r3]
2155 ; CHECK-ARM6-NEXT: cmp r2, #0
2156 ; CHECK-ARM6-NEXT: bne .LBB10_2
2157 ; CHECK-ARM6-NEXT: .LBB10_4: @ %atomicrmw.start
2158 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB10_1 Depth=1
2159 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
2160 ; CHECK-ARM6-NEXT: sub r1, r0, r1
2161 ; CHECK-ARM6-NEXT: clz r1, r1
2162 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
2163 ; CHECK-ARM6-NEXT: cmp r1, #1
2164 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
2165 ; CHECK-ARM6-NEXT: bne .LBB10_1
2166 ; CHECK-ARM6-NEXT: b .LBB10_5
2167 ; CHECK-ARM6-NEXT: .LBB10_5: @ %atomicrmw.end
2168 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
2169 ; CHECK-ARM6-NEXT: add sp, sp, #8
2170 ; CHECK-ARM6-NEXT: pop {r11, pc}
2171 ; CHECK-ARM6-NEXT: .p2align 2
2172 ; CHECK-ARM6-NEXT: @ %bb.6:
2173 ; CHECK-ARM6-NEXT: .LCPI10_0:
2174 ; CHECK-ARM6-NEXT: .long atomic_i8
2349 ; CHECK-ARM6-LABEL: test_xchg_i16:
2350 ; CHECK-ARM6: @ %bb.0: @ %entry
2351 ; CHECK-ARM6-NEXT: .pad #8
2352 ; CHECK-ARM6-NEXT: sub sp, sp, #8
2353 ; CHECK-ARM6-NEXT: ldr r0, .LCPI11_0
2354 ; CHECK-ARM6-NEXT: ldrh r0, [r0]
2355 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
2356 ; CHECK-ARM6-NEXT: b .LBB11_1
2357 ; CHECK-ARM6-NEXT: .LBB11_1: @ %atomicrmw.start
2358 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
2359 ; CHECK-ARM6-NEXT: @ Child Loop BB11_2 Depth 2
2360 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
2361 ; CHECK-ARM6-NEXT: ldr r3, .LCPI11_0
2362 ; CHECK-ARM6-NEXT: mov r12, #1
2363 ; CHECK-ARM6-NEXT: uxth r1, r1
2364 ; CHECK-ARM6-NEXT: .LBB11_2: @ %atomicrmw.start
2365 ; CHECK-ARM6-NEXT: @ Parent Loop BB11_1 Depth=1
2366 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
2367 ; CHECK-ARM6-NEXT: ldrexh r0, [r3]
2368 ; CHECK-ARM6-NEXT: cmp r0, r1
2369 ; CHECK-ARM6-NEXT: bne .LBB11_4
2370 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
2371 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB11_2 Depth=2
2372 ; CHECK-ARM6-NEXT: strexh r2, r12, [r3]
2373 ; CHECK-ARM6-NEXT: cmp r2, #0
2374 ; CHECK-ARM6-NEXT: bne .LBB11_2
2375 ; CHECK-ARM6-NEXT: .LBB11_4: @ %atomicrmw.start
2376 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB11_1 Depth=1
2377 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
2378 ; CHECK-ARM6-NEXT: uxth r1, r1
2379 ; CHECK-ARM6-NEXT: sub r1, r0, r1
2380 ; CHECK-ARM6-NEXT: clz r1, r1
2381 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
2382 ; CHECK-ARM6-NEXT: cmp r1, #1
2383 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
2384 ; CHECK-ARM6-NEXT: bne .LBB11_1
2385 ; CHECK-ARM6-NEXT: b .LBB11_5
2386 ; CHECK-ARM6-NEXT: .LBB11_5: @ %atomicrmw.end
2387 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
2388 ; CHECK-ARM6-NEXT: add sp, sp, #8
2389 ; CHECK-ARM6-NEXT: bx lr
2390 ; CHECK-ARM6-NEXT: .p2align 2
2391 ; CHECK-ARM6-NEXT: @ %bb.6:
2392 ; CHECK-ARM6-NEXT: .LCPI11_0:
2393 ; CHECK-ARM6-NEXT: .long atomic_i16
2546 ; CHECK-ARM6-LABEL: test_add_i16:
2547 ; CHECK-ARM6: @ %bb.0: @ %entry
2548 ; CHECK-ARM6-NEXT: .pad #8
2549 ; CHECK-ARM6-NEXT: sub sp, sp, #8
2550 ; CHECK-ARM6-NEXT: ldr r0, .LCPI12_0
2551 ; CHECK-ARM6-NEXT: ldrh r0, [r0]
2552 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
2553 ; CHECK-ARM6-NEXT: b .LBB12_1
2554 ; CHECK-ARM6-NEXT: .LBB12_1: @ %atomicrmw.start
2555 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
2556 ; CHECK-ARM6-NEXT: @ Child Loop BB12_2 Depth 2
2557 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
2558 ; CHECK-ARM6-NEXT: add r12, r1, #1
2559 ; CHECK-ARM6-NEXT: ldr r3, .LCPI12_0
2560 ; CHECK-ARM6-NEXT: uxth r1, r1
2561 ; CHECK-ARM6-NEXT: .LBB12_2: @ %atomicrmw.start
2562 ; CHECK-ARM6-NEXT: @ Parent Loop BB12_1 Depth=1
2563 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
2564 ; CHECK-ARM6-NEXT: ldrexh r0, [r3]
2565 ; CHECK-ARM6-NEXT: cmp r0, r1
2566 ; CHECK-ARM6-NEXT: bne .LBB12_4
2567 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
2568 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB12_2 Depth=2
2569 ; CHECK-ARM6-NEXT: strexh r2, r12, [r3]
2570 ; CHECK-ARM6-NEXT: cmp r2, #0
2571 ; CHECK-ARM6-NEXT: bne .LBB12_2
2572 ; CHECK-ARM6-NEXT: .LBB12_4: @ %atomicrmw.start
2573 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB12_1 Depth=1
2574 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
2575 ; CHECK-ARM6-NEXT: uxth r1, r1
2576 ; CHECK-ARM6-NEXT: sub r1, r0, r1
2577 ; CHECK-ARM6-NEXT: clz r1, r1
2578 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
2579 ; CHECK-ARM6-NEXT: cmp r1, #1
2580 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
2581 ; CHECK-ARM6-NEXT: bne .LBB12_1
2582 ; CHECK-ARM6-NEXT: b .LBB12_5
2583 ; CHECK-ARM6-NEXT: .LBB12_5: @ %atomicrmw.end
2584 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
2585 ; CHECK-ARM6-NEXT: add sp, sp, #8
2586 ; CHECK-ARM6-NEXT: bx lr
2587 ; CHECK-ARM6-NEXT: .p2align 2
2588 ; CHECK-ARM6-NEXT: @ %bb.6:
2589 ; CHECK-ARM6-NEXT: .LCPI12_0:
2590 ; CHECK-ARM6-NEXT: .long atomic_i16
2743 ; CHECK-ARM6-LABEL: test_sub_i16:
2744 ; CHECK-ARM6: @ %bb.0: @ %entry
2745 ; CHECK-ARM6-NEXT: .pad #8
2746 ; CHECK-ARM6-NEXT: sub sp, sp, #8
2747 ; CHECK-ARM6-NEXT: ldr r0, .LCPI13_0
2748 ; CHECK-ARM6-NEXT: ldrh r0, [r0]
2749 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
2750 ; CHECK-ARM6-NEXT: b .LBB13_1
2751 ; CHECK-ARM6-NEXT: .LBB13_1: @ %atomicrmw.start
2752 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
2753 ; CHECK-ARM6-NEXT: @ Child Loop BB13_2 Depth 2
2754 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
2755 ; CHECK-ARM6-NEXT: sub r12, r1, #1
2756 ; CHECK-ARM6-NEXT: ldr r3, .LCPI13_0
2757 ; CHECK-ARM6-NEXT: uxth r1, r1
2758 ; CHECK-ARM6-NEXT: .LBB13_2: @ %atomicrmw.start
2759 ; CHECK-ARM6-NEXT: @ Parent Loop BB13_1 Depth=1
2760 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
2761 ; CHECK-ARM6-NEXT: ldrexh r0, [r3]
2762 ; CHECK-ARM6-NEXT: cmp r0, r1
2763 ; CHECK-ARM6-NEXT: bne .LBB13_4
2764 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
2765 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB13_2 Depth=2
2766 ; CHECK-ARM6-NEXT: strexh r2, r12, [r3]
2767 ; CHECK-ARM6-NEXT: cmp r2, #0
2768 ; CHECK-ARM6-NEXT: bne .LBB13_2
2769 ; CHECK-ARM6-NEXT: .LBB13_4: @ %atomicrmw.start
2770 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB13_1 Depth=1
2771 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
2772 ; CHECK-ARM6-NEXT: uxth r1, r1
2773 ; CHECK-ARM6-NEXT: sub r1, r0, r1
2774 ; CHECK-ARM6-NEXT: clz r1, r1
2775 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
2776 ; CHECK-ARM6-NEXT: cmp r1, #1
2777 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
2778 ; CHECK-ARM6-NEXT: bne .LBB13_1
2779 ; CHECK-ARM6-NEXT: b .LBB13_5
2780 ; CHECK-ARM6-NEXT: .LBB13_5: @ %atomicrmw.end
2781 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
2782 ; CHECK-ARM6-NEXT: add sp, sp, #8
2783 ; CHECK-ARM6-NEXT: bx lr
2784 ; CHECK-ARM6-NEXT: .p2align 2
2785 ; CHECK-ARM6-NEXT: @ %bb.6:
2786 ; CHECK-ARM6-NEXT: .LCPI13_0:
2787 ; CHECK-ARM6-NEXT: .long atomic_i16
2940 ; CHECK-ARM6-LABEL: test_and_i16:
2941 ; CHECK-ARM6: @ %bb.0: @ %entry
2942 ; CHECK-ARM6-NEXT: .pad #8
2943 ; CHECK-ARM6-NEXT: sub sp, sp, #8
2944 ; CHECK-ARM6-NEXT: ldr r0, .LCPI14_0
2945 ; CHECK-ARM6-NEXT: ldrh r0, [r0]
2946 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
2947 ; CHECK-ARM6-NEXT: b .LBB14_1
2948 ; CHECK-ARM6-NEXT: .LBB14_1: @ %atomicrmw.start
2949 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
2950 ; CHECK-ARM6-NEXT: @ Child Loop BB14_2 Depth 2
2951 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
2952 ; CHECK-ARM6-NEXT: and r12, r1, #1
2953 ; CHECK-ARM6-NEXT: ldr r3, .LCPI14_0
2954 ; CHECK-ARM6-NEXT: uxth r1, r1
2955 ; CHECK-ARM6-NEXT: .LBB14_2: @ %atomicrmw.start
2956 ; CHECK-ARM6-NEXT: @ Parent Loop BB14_1 Depth=1
2957 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
2958 ; CHECK-ARM6-NEXT: ldrexh r0, [r3]
2959 ; CHECK-ARM6-NEXT: cmp r0, r1
2960 ; CHECK-ARM6-NEXT: bne .LBB14_4
2961 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
2962 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB14_2 Depth=2
2963 ; CHECK-ARM6-NEXT: strexh r2, r12, [r3]
2964 ; CHECK-ARM6-NEXT: cmp r2, #0
2965 ; CHECK-ARM6-NEXT: bne .LBB14_2
2966 ; CHECK-ARM6-NEXT: .LBB14_4: @ %atomicrmw.start
2967 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB14_1 Depth=1
2968 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
2969 ; CHECK-ARM6-NEXT: uxth r1, r1
2970 ; CHECK-ARM6-NEXT: sub r1, r0, r1
2971 ; CHECK-ARM6-NEXT: clz r1, r1
2972 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
2973 ; CHECK-ARM6-NEXT: cmp r1, #1
2974 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
2975 ; CHECK-ARM6-NEXT: bne .LBB14_1
2976 ; CHECK-ARM6-NEXT: b .LBB14_5
2977 ; CHECK-ARM6-NEXT: .LBB14_5: @ %atomicrmw.end
2978 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
2979 ; CHECK-ARM6-NEXT: add sp, sp, #8
2980 ; CHECK-ARM6-NEXT: bx lr
2981 ; CHECK-ARM6-NEXT: .p2align 2
2982 ; CHECK-ARM6-NEXT: @ %bb.6:
2983 ; CHECK-ARM6-NEXT: .LCPI14_0:
2984 ; CHECK-ARM6-NEXT: .long atomic_i16
3141 ; CHECK-ARM6-LABEL: test_nand_i16:
3142 ; CHECK-ARM6: @ %bb.0: @ %entry
3143 ; CHECK-ARM6-NEXT: .pad #8
3144 ; CHECK-ARM6-NEXT: sub sp, sp, #8
3145 ; CHECK-ARM6-NEXT: ldr r0, .LCPI15_0
3146 ; CHECK-ARM6-NEXT: ldrh r0, [r0]
3147 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
3148 ; CHECK-ARM6-NEXT: b .LBB15_1
3149 ; CHECK-ARM6-NEXT: .LBB15_1: @ %atomicrmw.start
3150 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
3151 ; CHECK-ARM6-NEXT: @ Child Loop BB15_2 Depth 2
3152 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
3153 ; CHECK-ARM6-NEXT: mvn r0, r1
3154 ; CHECK-ARM6-NEXT: mvn r2, #1
3155 ; CHECK-ARM6-NEXT: orr r12, r0, r2
3156 ; CHECK-ARM6-NEXT: ldr r3, .LCPI15_0
3157 ; CHECK-ARM6-NEXT: uxth r1, r1
3158 ; CHECK-ARM6-NEXT: .LBB15_2: @ %atomicrmw.start
3159 ; CHECK-ARM6-NEXT: @ Parent Loop BB15_1 Depth=1
3160 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
3161 ; CHECK-ARM6-NEXT: ldrexh r0, [r3]
3162 ; CHECK-ARM6-NEXT: cmp r0, r1
3163 ; CHECK-ARM6-NEXT: bne .LBB15_4
3164 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
3165 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB15_2 Depth=2
3166 ; CHECK-ARM6-NEXT: strexh r2, r12, [r3]
3167 ; CHECK-ARM6-NEXT: cmp r2, #0
3168 ; CHECK-ARM6-NEXT: bne .LBB15_2
3169 ; CHECK-ARM6-NEXT: .LBB15_4: @ %atomicrmw.start
3170 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB15_1 Depth=1
3171 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
3172 ; CHECK-ARM6-NEXT: uxth r1, r1
3173 ; CHECK-ARM6-NEXT: sub r1, r0, r1
3174 ; CHECK-ARM6-NEXT: clz r1, r1
3175 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
3176 ; CHECK-ARM6-NEXT: cmp r1, #1
3177 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
3178 ; CHECK-ARM6-NEXT: bne .LBB15_1
3179 ; CHECK-ARM6-NEXT: b .LBB15_5
3180 ; CHECK-ARM6-NEXT: .LBB15_5: @ %atomicrmw.end
3181 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
3182 ; CHECK-ARM6-NEXT: add sp, sp, #8
3183 ; CHECK-ARM6-NEXT: bx lr
3184 ; CHECK-ARM6-NEXT: .p2align 2
3185 ; CHECK-ARM6-NEXT: @ %bb.6:
3186 ; CHECK-ARM6-NEXT: .LCPI15_0:
3187 ; CHECK-ARM6-NEXT: .long atomic_i16
3344 ; CHECK-ARM6-LABEL: test_or_i16:
3345 ; CHECK-ARM6: @ %bb.0: @ %entry
3346 ; CHECK-ARM6-NEXT: .pad #8
3347 ; CHECK-ARM6-NEXT: sub sp, sp, #8
3348 ; CHECK-ARM6-NEXT: ldr r0, .LCPI16_0
3349 ; CHECK-ARM6-NEXT: ldrh r0, [r0]
3350 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
3351 ; CHECK-ARM6-NEXT: b .LBB16_1
3352 ; CHECK-ARM6-NEXT: .LBB16_1: @ %atomicrmw.start
3353 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
3354 ; CHECK-ARM6-NEXT: @ Child Loop BB16_2 Depth 2
3355 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
3356 ; CHECK-ARM6-NEXT: orr r12, r1, #1
3357 ; CHECK-ARM6-NEXT: ldr r3, .LCPI16_0
3358 ; CHECK-ARM6-NEXT: uxth r1, r1
3359 ; CHECK-ARM6-NEXT: .LBB16_2: @ %atomicrmw.start
3360 ; CHECK-ARM6-NEXT: @ Parent Loop BB16_1 Depth=1
3361 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
3362 ; CHECK-ARM6-NEXT: ldrexh r0, [r3]
3363 ; CHECK-ARM6-NEXT: cmp r0, r1
3364 ; CHECK-ARM6-NEXT: bne .LBB16_4
3365 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
3366 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB16_2 Depth=2
3367 ; CHECK-ARM6-NEXT: strexh r2, r12, [r3]
3368 ; CHECK-ARM6-NEXT: cmp r2, #0
3369 ; CHECK-ARM6-NEXT: bne .LBB16_2
3370 ; CHECK-ARM6-NEXT: .LBB16_4: @ %atomicrmw.start
3371 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB16_1 Depth=1
3372 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
3373 ; CHECK-ARM6-NEXT: uxth r1, r1
3374 ; CHECK-ARM6-NEXT: sub r1, r0, r1
3375 ; CHECK-ARM6-NEXT: clz r1, r1
3376 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
3377 ; CHECK-ARM6-NEXT: cmp r1, #1
3378 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
3379 ; CHECK-ARM6-NEXT: bne .LBB16_1
3380 ; CHECK-ARM6-NEXT: b .LBB16_5
3381 ; CHECK-ARM6-NEXT: .LBB16_5: @ %atomicrmw.end
3382 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
3383 ; CHECK-ARM6-NEXT: add sp, sp, #8
3384 ; CHECK-ARM6-NEXT: bx lr
3385 ; CHECK-ARM6-NEXT: .p2align 2
3386 ; CHECK-ARM6-NEXT: @ %bb.6:
3387 ; CHECK-ARM6-NEXT: .LCPI16_0:
3388 ; CHECK-ARM6-NEXT: .long atomic_i16
3543 ; CHECK-ARM6-LABEL: test_xor_i16:
3544 ; CHECK-ARM6: @ %bb.0: @ %entry
3545 ; CHECK-ARM6-NEXT: .pad #8
3546 ; CHECK-ARM6-NEXT: sub sp, sp, #8
3547 ; CHECK-ARM6-NEXT: ldr r0, .LCPI17_0
3548 ; CHECK-ARM6-NEXT: ldrh r0, [r0]
3549 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
3550 ; CHECK-ARM6-NEXT: b .LBB17_1
3551 ; CHECK-ARM6-NEXT: .LBB17_1: @ %atomicrmw.start
3552 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
3553 ; CHECK-ARM6-NEXT: @ Child Loop BB17_2 Depth 2
3554 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
3555 ; CHECK-ARM6-NEXT: eor r12, r1, #1
3556 ; CHECK-ARM6-NEXT: ldr r3, .LCPI17_0
3557 ; CHECK-ARM6-NEXT: uxth r1, r1
3558 ; CHECK-ARM6-NEXT: .LBB17_2: @ %atomicrmw.start
3559 ; CHECK-ARM6-NEXT: @ Parent Loop BB17_1 Depth=1
3560 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
3561 ; CHECK-ARM6-NEXT: ldrexh r0, [r3]
3562 ; CHECK-ARM6-NEXT: cmp r0, r1
3563 ; CHECK-ARM6-NEXT: bne .LBB17_4
3564 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
3565 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB17_2 Depth=2
3566 ; CHECK-ARM6-NEXT: strexh r2, r12, [r3]
3567 ; CHECK-ARM6-NEXT: cmp r2, #0
3568 ; CHECK-ARM6-NEXT: bne .LBB17_2
3569 ; CHECK-ARM6-NEXT: .LBB17_4: @ %atomicrmw.start
3570 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB17_1 Depth=1
3571 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
3572 ; CHECK-ARM6-NEXT: uxth r1, r1
3573 ; CHECK-ARM6-NEXT: sub r1, r0, r1
3574 ; CHECK-ARM6-NEXT: clz r1, r1
3575 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
3576 ; CHECK-ARM6-NEXT: cmp r1, #1
3577 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
3578 ; CHECK-ARM6-NEXT: bne .LBB17_1
3579 ; CHECK-ARM6-NEXT: b .LBB17_5
3580 ; CHECK-ARM6-NEXT: .LBB17_5: @ %atomicrmw.end
3581 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
3582 ; CHECK-ARM6-NEXT: add sp, sp, #8
3583 ; CHECK-ARM6-NEXT: bx lr
3584 ; CHECK-ARM6-NEXT: .p2align 2
3585 ; CHECK-ARM6-NEXT: @ %bb.6:
3586 ; CHECK-ARM6-NEXT: .LCPI17_0:
3587 ; CHECK-ARM6-NEXT: .long atomic_i16
3745 ; CHECK-ARM6-LABEL: test_max_i16:
3746 ; CHECK-ARM6: @ %bb.0: @ %entry
3747 ; CHECK-ARM6-NEXT: .pad #8
3748 ; CHECK-ARM6-NEXT: sub sp, sp, #8
3749 ; CHECK-ARM6-NEXT: ldr r0, .LCPI18_0
3750 ; CHECK-ARM6-NEXT: ldrh r0, [r0]
3751 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
3752 ; CHECK-ARM6-NEXT: b .LBB18_1
3753 ; CHECK-ARM6-NEXT: .LBB18_1: @ %atomicrmw.start
3754 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
3755 ; CHECK-ARM6-NEXT: @ Child Loop BB18_2 Depth 2
3756 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
3757 ; CHECK-ARM6-NEXT: sxth r0, r1
3758 ; CHECK-ARM6-NEXT: mov r12, #1
3759 ; CHECK-ARM6-NEXT: cmp r0, #1
3760 ; CHECK-ARM6-NEXT: movgt r12, r1
3761 ; CHECK-ARM6-NEXT: ldr r3, .LCPI18_0
3762 ; CHECK-ARM6-NEXT: uxth r1, r1
3763 ; CHECK-ARM6-NEXT: .LBB18_2: @ %atomicrmw.start
3764 ; CHECK-ARM6-NEXT: @ Parent Loop BB18_1 Depth=1
3765 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
3766 ; CHECK-ARM6-NEXT: ldrexh r0, [r3]
3767 ; CHECK-ARM6-NEXT: cmp r0, r1
3768 ; CHECK-ARM6-NEXT: bne .LBB18_4
3769 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
3770 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB18_2 Depth=2
3771 ; CHECK-ARM6-NEXT: strexh r2, r12, [r3]
3772 ; CHECK-ARM6-NEXT: cmp r2, #0
3773 ; CHECK-ARM6-NEXT: bne .LBB18_2
3774 ; CHECK-ARM6-NEXT: .LBB18_4: @ %atomicrmw.start
3775 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB18_1 Depth=1
3776 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
3777 ; CHECK-ARM6-NEXT: uxth r1, r1
3778 ; CHECK-ARM6-NEXT: sub r1, r0, r1
3779 ; CHECK-ARM6-NEXT: clz r1, r1
3780 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
3781 ; CHECK-ARM6-NEXT: cmp r1, #1
3782 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
3783 ; CHECK-ARM6-NEXT: bne .LBB18_1
3784 ; CHECK-ARM6-NEXT: b .LBB18_5
3785 ; CHECK-ARM6-NEXT: .LBB18_5: @ %atomicrmw.end
3786 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
3787 ; CHECK-ARM6-NEXT: add sp, sp, #8
3788 ; CHECK-ARM6-NEXT: bx lr
3789 ; CHECK-ARM6-NEXT: .p2align 2
3790 ; CHECK-ARM6-NEXT: @ %bb.6:
3791 ; CHECK-ARM6-NEXT: .LCPI18_0:
3792 ; CHECK-ARM6-NEXT: .long atomic_i16
3966 ; CHECK-ARM6-LABEL: test_min_i16:
3967 ; CHECK-ARM6: @ %bb.0: @ %entry
3968 ; CHECK-ARM6-NEXT: .pad #8
3969 ; CHECK-ARM6-NEXT: sub sp, sp, #8
3970 ; CHECK-ARM6-NEXT: ldr r0, .LCPI19_0
3971 ; CHECK-ARM6-NEXT: ldrh r0, [r0]
3972 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
3973 ; CHECK-ARM6-NEXT: b .LBB19_1
3974 ; CHECK-ARM6-NEXT: .LBB19_1: @ %atomicrmw.start
3975 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
3976 ; CHECK-ARM6-NEXT: @ Child Loop BB19_2 Depth 2
3977 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
3978 ; CHECK-ARM6-NEXT: sxth r0, r1
3979 ; CHECK-ARM6-NEXT: mov r12, #1
3980 ; CHECK-ARM6-NEXT: cmp r0, #2
3981 ; CHECK-ARM6-NEXT: movlt r12, r1
3982 ; CHECK-ARM6-NEXT: ldr r3, .LCPI19_0
3983 ; CHECK-ARM6-NEXT: uxth r1, r1
3984 ; CHECK-ARM6-NEXT: .LBB19_2: @ %atomicrmw.start
3985 ; CHECK-ARM6-NEXT: @ Parent Loop BB19_1 Depth=1
3986 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
3987 ; CHECK-ARM6-NEXT: ldrexh r0, [r3]
3988 ; CHECK-ARM6-NEXT: cmp r0, r1
3989 ; CHECK-ARM6-NEXT: bne .LBB19_4
3990 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
3991 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB19_2 Depth=2
3992 ; CHECK-ARM6-NEXT: strexh r2, r12, [r3]
3993 ; CHECK-ARM6-NEXT: cmp r2, #0
3994 ; CHECK-ARM6-NEXT: bne .LBB19_2
3995 ; CHECK-ARM6-NEXT: .LBB19_4: @ %atomicrmw.start
3996 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB19_1 Depth=1
3997 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
3998 ; CHECK-ARM6-NEXT: uxth r1, r1
3999 ; CHECK-ARM6-NEXT: sub r1, r0, r1
4000 ; CHECK-ARM6-NEXT: clz r1, r1
4001 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
4002 ; CHECK-ARM6-NEXT: cmp r1, #1
4003 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
4004 ; CHECK-ARM6-NEXT: bne .LBB19_1
4005 ; CHECK-ARM6-NEXT: b .LBB19_5
4006 ; CHECK-ARM6-NEXT: .LBB19_5: @ %atomicrmw.end
4007 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
4008 ; CHECK-ARM6-NEXT: add sp, sp, #8
4009 ; CHECK-ARM6-NEXT: bx lr
4010 ; CHECK-ARM6-NEXT: .p2align 2
4011 ; CHECK-ARM6-NEXT: @ %bb.6:
4012 ; CHECK-ARM6-NEXT: .LCPI19_0:
4013 ; CHECK-ARM6-NEXT: .long atomic_i16
4188 ; CHECK-ARM6-LABEL: test_umax_i16:
4189 ; CHECK-ARM6: @ %bb.0: @ %entry
4190 ; CHECK-ARM6-NEXT: .save {r11, lr}
4191 ; CHECK-ARM6-NEXT: push {r11, lr}
4192 ; CHECK-ARM6-NEXT: .pad #8
4193 ; CHECK-ARM6-NEXT: sub sp, sp, #8
4194 ; CHECK-ARM6-NEXT: ldr r0, .LCPI20_0
4195 ; CHECK-ARM6-NEXT: ldrh r0, [r0]
4196 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
4197 ; CHECK-ARM6-NEXT: b .LBB20_1
4198 ; CHECK-ARM6-NEXT: .LBB20_1: @ %atomicrmw.start
4199 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
4200 ; CHECK-ARM6-NEXT: @ Child Loop BB20_2 Depth 2
4201 ; CHECK-ARM6-NEXT: ldr r12, [sp, #4] @ 4-byte Reload
4202 ; CHECK-ARM6-NEXT: uxth r1, r12
4203 ; CHECK-ARM6-NEXT: mov lr, #1
4204 ; CHECK-ARM6-NEXT: cmp r1, #1
4205 ; CHECK-ARM6-NEXT: movhi lr, r12
4206 ; CHECK-ARM6-NEXT: ldr r3, .LCPI20_0
4207 ; CHECK-ARM6-NEXT: uxth r12, r12
4208 ; CHECK-ARM6-NEXT: .LBB20_2: @ %atomicrmw.start
4209 ; CHECK-ARM6-NEXT: @ Parent Loop BB20_1 Depth=1
4210 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
4211 ; CHECK-ARM6-NEXT: ldrexh r0, [r3]
4212 ; CHECK-ARM6-NEXT: cmp r0, r12
4213 ; CHECK-ARM6-NEXT: bne .LBB20_4
4214 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
4215 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB20_2 Depth=2
4216 ; CHECK-ARM6-NEXT: strexh r2, lr, [r3]
4217 ; CHECK-ARM6-NEXT: cmp r2, #0
4218 ; CHECK-ARM6-NEXT: bne .LBB20_2
4219 ; CHECK-ARM6-NEXT: .LBB20_4: @ %atomicrmw.start
4220 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB20_1 Depth=1
4221 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
4222 ; CHECK-ARM6-NEXT: sub r1, r0, r1
4223 ; CHECK-ARM6-NEXT: clz r1, r1
4224 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
4225 ; CHECK-ARM6-NEXT: cmp r1, #1
4226 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
4227 ; CHECK-ARM6-NEXT: bne .LBB20_1
4228 ; CHECK-ARM6-NEXT: b .LBB20_5
4229 ; CHECK-ARM6-NEXT: .LBB20_5: @ %atomicrmw.end
4230 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
4231 ; CHECK-ARM6-NEXT: add sp, sp, #8
4232 ; CHECK-ARM6-NEXT: pop {r11, pc}
4233 ; CHECK-ARM6-NEXT: .p2align 2
4234 ; CHECK-ARM6-NEXT: @ %bb.6:
4235 ; CHECK-ARM6-NEXT: .LCPI20_0:
4236 ; CHECK-ARM6-NEXT: .long atomic_i16
4413 ; CHECK-ARM6-LABEL: test_umin_i16:
4414 ; CHECK-ARM6: @ %bb.0: @ %entry
4415 ; CHECK-ARM6-NEXT: .save {r11, lr}
4416 ; CHECK-ARM6-NEXT: push {r11, lr}
4417 ; CHECK-ARM6-NEXT: .pad #8
4418 ; CHECK-ARM6-NEXT: sub sp, sp, #8
4419 ; CHECK-ARM6-NEXT: ldr r0, .LCPI21_0
4420 ; CHECK-ARM6-NEXT: ldrh r0, [r0]
4421 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
4422 ; CHECK-ARM6-NEXT: b .LBB21_1
4423 ; CHECK-ARM6-NEXT: .LBB21_1: @ %atomicrmw.start
4424 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
4425 ; CHECK-ARM6-NEXT: @ Child Loop BB21_2 Depth 2
4426 ; CHECK-ARM6-NEXT: ldr r12, [sp, #4] @ 4-byte Reload
4427 ; CHECK-ARM6-NEXT: uxth r1, r12
4428 ; CHECK-ARM6-NEXT: mov lr, #1
4429 ; CHECK-ARM6-NEXT: cmp r1, #2
4430 ; CHECK-ARM6-NEXT: movlo lr, r12
4431 ; CHECK-ARM6-NEXT: ldr r3, .LCPI21_0
4432 ; CHECK-ARM6-NEXT: uxth r12, r12
4433 ; CHECK-ARM6-NEXT: .LBB21_2: @ %atomicrmw.start
4434 ; CHECK-ARM6-NEXT: @ Parent Loop BB21_1 Depth=1
4435 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
4436 ; CHECK-ARM6-NEXT: ldrexh r0, [r3]
4437 ; CHECK-ARM6-NEXT: cmp r0, r12
4438 ; CHECK-ARM6-NEXT: bne .LBB21_4
4439 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
4440 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB21_2 Depth=2
4441 ; CHECK-ARM6-NEXT: strexh r2, lr, [r3]
4442 ; CHECK-ARM6-NEXT: cmp r2, #0
4443 ; CHECK-ARM6-NEXT: bne .LBB21_2
4444 ; CHECK-ARM6-NEXT: .LBB21_4: @ %atomicrmw.start
4445 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB21_1 Depth=1
4446 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
4447 ; CHECK-ARM6-NEXT: sub r1, r0, r1
4448 ; CHECK-ARM6-NEXT: clz r1, r1
4449 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
4450 ; CHECK-ARM6-NEXT: cmp r1, #1
4451 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
4452 ; CHECK-ARM6-NEXT: bne .LBB21_1
4453 ; CHECK-ARM6-NEXT: b .LBB21_5
4454 ; CHECK-ARM6-NEXT: .LBB21_5: @ %atomicrmw.end
4455 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
4456 ; CHECK-ARM6-NEXT: add sp, sp, #8
4457 ; CHECK-ARM6-NEXT: pop {r11, pc}
4458 ; CHECK-ARM6-NEXT: .p2align 2
4459 ; CHECK-ARM6-NEXT: @ %bb.6:
4460 ; CHECK-ARM6-NEXT: .LCPI21_0:
4461 ; CHECK-ARM6-NEXT: .long atomic_i16
4634 ; CHECK-ARM6-LABEL: test_xchg_i32:
4635 ; CHECK-ARM6: @ %bb.0: @ %entry
4636 ; CHECK-ARM6-NEXT: .pad #8
4637 ; CHECK-ARM6-NEXT: sub sp, sp, #8
4638 ; CHECK-ARM6-NEXT: ldr r0, .LCPI22_0
4639 ; CHECK-ARM6-NEXT: ldr r0, [r0]
4640 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
4641 ; CHECK-ARM6-NEXT: b .LBB22_1
4642 ; CHECK-ARM6-NEXT: .LBB22_1: @ %atomicrmw.start
4643 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
4644 ; CHECK-ARM6-NEXT: @ Child Loop BB22_2 Depth 2
4645 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
4646 ; CHECK-ARM6-NEXT: ldr r3, .LCPI22_0
4647 ; CHECK-ARM6-NEXT: mov r12, #1
4648 ; CHECK-ARM6-NEXT: .LBB22_2: @ %atomicrmw.start
4649 ; CHECK-ARM6-NEXT: @ Parent Loop BB22_1 Depth=1
4650 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
4651 ; CHECK-ARM6-NEXT: ldrex r0, [r3]
4652 ; CHECK-ARM6-NEXT: cmp r0, r1
4653 ; CHECK-ARM6-NEXT: bne .LBB22_4
4654 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
4655 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB22_2 Depth=2
4656 ; CHECK-ARM6-NEXT: strex r2, r12, [r3]
4657 ; CHECK-ARM6-NEXT: cmp r2, #0
4658 ; CHECK-ARM6-NEXT: bne .LBB22_2
4659 ; CHECK-ARM6-NEXT: .LBB22_4: @ %atomicrmw.start
4660 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB22_1 Depth=1
4661 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
4662 ; CHECK-ARM6-NEXT: sub r1, r0, r1
4663 ; CHECK-ARM6-NEXT: clz r1, r1
4664 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
4665 ; CHECK-ARM6-NEXT: cmp r1, #1
4666 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
4667 ; CHECK-ARM6-NEXT: bne .LBB22_1
4668 ; CHECK-ARM6-NEXT: b .LBB22_5
4669 ; CHECK-ARM6-NEXT: .LBB22_5: @ %atomicrmw.end
4670 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
4671 ; CHECK-ARM6-NEXT: add sp, sp, #8
4672 ; CHECK-ARM6-NEXT: bx lr
4673 ; CHECK-ARM6-NEXT: .p2align 2
4674 ; CHECK-ARM6-NEXT: @ %bb.6:
4675 ; CHECK-ARM6-NEXT: .LCPI22_0:
4676 ; CHECK-ARM6-NEXT: .long atomic_i32
4823 ; CHECK-ARM6-LABEL: test_add_i32:
4824 ; CHECK-ARM6: @ %bb.0: @ %entry
4825 ; CHECK-ARM6-NEXT: .pad #8
4826 ; CHECK-ARM6-NEXT: sub sp, sp, #8
4827 ; CHECK-ARM6-NEXT: ldr r0, .LCPI23_0
4828 ; CHECK-ARM6-NEXT: ldr r0, [r0]
4829 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
4830 ; CHECK-ARM6-NEXT: b .LBB23_1
4831 ; CHECK-ARM6-NEXT: .LBB23_1: @ %atomicrmw.start
4832 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
4833 ; CHECK-ARM6-NEXT: @ Child Loop BB23_2 Depth 2
4834 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
4835 ; CHECK-ARM6-NEXT: add r12, r1, #1
4836 ; CHECK-ARM6-NEXT: ldr r3, .LCPI23_0
4837 ; CHECK-ARM6-NEXT: .LBB23_2: @ %atomicrmw.start
4838 ; CHECK-ARM6-NEXT: @ Parent Loop BB23_1 Depth=1
4839 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
4840 ; CHECK-ARM6-NEXT: ldrex r0, [r3]
4841 ; CHECK-ARM6-NEXT: cmp r0, r1
4842 ; CHECK-ARM6-NEXT: bne .LBB23_4
4843 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
4844 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB23_2 Depth=2
4845 ; CHECK-ARM6-NEXT: strex r2, r12, [r3]
4846 ; CHECK-ARM6-NEXT: cmp r2, #0
4847 ; CHECK-ARM6-NEXT: bne .LBB23_2
4848 ; CHECK-ARM6-NEXT: .LBB23_4: @ %atomicrmw.start
4849 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB23_1 Depth=1
4850 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
4851 ; CHECK-ARM6-NEXT: sub r1, r0, r1
4852 ; CHECK-ARM6-NEXT: clz r1, r1
4853 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
4854 ; CHECK-ARM6-NEXT: cmp r1, #1
4855 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
4856 ; CHECK-ARM6-NEXT: bne .LBB23_1
4857 ; CHECK-ARM6-NEXT: b .LBB23_5
4858 ; CHECK-ARM6-NEXT: .LBB23_5: @ %atomicrmw.end
4859 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
4860 ; CHECK-ARM6-NEXT: add sp, sp, #8
4861 ; CHECK-ARM6-NEXT: bx lr
4862 ; CHECK-ARM6-NEXT: .p2align 2
4863 ; CHECK-ARM6-NEXT: @ %bb.6:
4864 ; CHECK-ARM6-NEXT: .LCPI23_0:
4865 ; CHECK-ARM6-NEXT: .long atomic_i32
5012 ; CHECK-ARM6-LABEL: test_sub_i32:
5013 ; CHECK-ARM6: @ %bb.0: @ %entry
5014 ; CHECK-ARM6-NEXT: .pad #8
5015 ; CHECK-ARM6-NEXT: sub sp, sp, #8
5016 ; CHECK-ARM6-NEXT: ldr r0, .LCPI24_0
5017 ; CHECK-ARM6-NEXT: ldr r0, [r0]
5018 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
5019 ; CHECK-ARM6-NEXT: b .LBB24_1
5020 ; CHECK-ARM6-NEXT: .LBB24_1: @ %atomicrmw.start
5021 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
5022 ; CHECK-ARM6-NEXT: @ Child Loop BB24_2 Depth 2
5023 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
5024 ; CHECK-ARM6-NEXT: sub r12, r1, #1
5025 ; CHECK-ARM6-NEXT: ldr r3, .LCPI24_0
5026 ; CHECK-ARM6-NEXT: .LBB24_2: @ %atomicrmw.start
5027 ; CHECK-ARM6-NEXT: @ Parent Loop BB24_1 Depth=1
5028 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
5029 ; CHECK-ARM6-NEXT: ldrex r0, [r3]
5030 ; CHECK-ARM6-NEXT: cmp r0, r1
5031 ; CHECK-ARM6-NEXT: bne .LBB24_4
5032 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
5033 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB24_2 Depth=2
5034 ; CHECK-ARM6-NEXT: strex r2, r12, [r3]
5035 ; CHECK-ARM6-NEXT: cmp r2, #0
5036 ; CHECK-ARM6-NEXT: bne .LBB24_2
5037 ; CHECK-ARM6-NEXT: .LBB24_4: @ %atomicrmw.start
5038 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB24_1 Depth=1
5039 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
5040 ; CHECK-ARM6-NEXT: sub r1, r0, r1
5041 ; CHECK-ARM6-NEXT: clz r1, r1
5042 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
5043 ; CHECK-ARM6-NEXT: cmp r1, #1
5044 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
5045 ; CHECK-ARM6-NEXT: bne .LBB24_1
5046 ; CHECK-ARM6-NEXT: b .LBB24_5
5047 ; CHECK-ARM6-NEXT: .LBB24_5: @ %atomicrmw.end
5048 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
5049 ; CHECK-ARM6-NEXT: add sp, sp, #8
5050 ; CHECK-ARM6-NEXT: bx lr
5051 ; CHECK-ARM6-NEXT: .p2align 2
5052 ; CHECK-ARM6-NEXT: @ %bb.6:
5053 ; CHECK-ARM6-NEXT: .LCPI24_0:
5054 ; CHECK-ARM6-NEXT: .long atomic_i32
5201 ; CHECK-ARM6-LABEL: test_and_i32:
5202 ; CHECK-ARM6: @ %bb.0: @ %entry
5203 ; CHECK-ARM6-NEXT: .pad #8
5204 ; CHECK-ARM6-NEXT: sub sp, sp, #8
5205 ; CHECK-ARM6-NEXT: ldr r0, .LCPI25_0
5206 ; CHECK-ARM6-NEXT: ldr r0, [r0]
5207 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
5208 ; CHECK-ARM6-NEXT: b .LBB25_1
5209 ; CHECK-ARM6-NEXT: .LBB25_1: @ %atomicrmw.start
5210 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
5211 ; CHECK-ARM6-NEXT: @ Child Loop BB25_2 Depth 2
5212 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
5213 ; CHECK-ARM6-NEXT: and r12, r1, #1
5214 ; CHECK-ARM6-NEXT: ldr r3, .LCPI25_0
5215 ; CHECK-ARM6-NEXT: .LBB25_2: @ %atomicrmw.start
5216 ; CHECK-ARM6-NEXT: @ Parent Loop BB25_1 Depth=1
5217 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
5218 ; CHECK-ARM6-NEXT: ldrex r0, [r3]
5219 ; CHECK-ARM6-NEXT: cmp r0, r1
5220 ; CHECK-ARM6-NEXT: bne .LBB25_4
5221 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
5222 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB25_2 Depth=2
5223 ; CHECK-ARM6-NEXT: strex r2, r12, [r3]
5224 ; CHECK-ARM6-NEXT: cmp r2, #0
5225 ; CHECK-ARM6-NEXT: bne .LBB25_2
5226 ; CHECK-ARM6-NEXT: .LBB25_4: @ %atomicrmw.start
5227 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB25_1 Depth=1
5228 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
5229 ; CHECK-ARM6-NEXT: sub r1, r0, r1
5230 ; CHECK-ARM6-NEXT: clz r1, r1
5231 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
5232 ; CHECK-ARM6-NEXT: cmp r1, #1
5233 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
5234 ; CHECK-ARM6-NEXT: bne .LBB25_1
5235 ; CHECK-ARM6-NEXT: b .LBB25_5
5236 ; CHECK-ARM6-NEXT: .LBB25_5: @ %atomicrmw.end
5237 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
5238 ; CHECK-ARM6-NEXT: add sp, sp, #8
5239 ; CHECK-ARM6-NEXT: bx lr
5240 ; CHECK-ARM6-NEXT: .p2align 2
5241 ; CHECK-ARM6-NEXT: @ %bb.6:
5242 ; CHECK-ARM6-NEXT: .LCPI25_0:
5243 ; CHECK-ARM6-NEXT: .long atomic_i32
5394 ; CHECK-ARM6-LABEL: test_nand_i32:
5395 ; CHECK-ARM6: @ %bb.0: @ %entry
5396 ; CHECK-ARM6-NEXT: .pad #8
5397 ; CHECK-ARM6-NEXT: sub sp, sp, #8
5398 ; CHECK-ARM6-NEXT: ldr r0, .LCPI26_0
5399 ; CHECK-ARM6-NEXT: ldr r0, [r0]
5400 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
5401 ; CHECK-ARM6-NEXT: b .LBB26_1
5402 ; CHECK-ARM6-NEXT: .LBB26_1: @ %atomicrmw.start
5403 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
5404 ; CHECK-ARM6-NEXT: @ Child Loop BB26_2 Depth 2
5405 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
5406 ; CHECK-ARM6-NEXT: mvn r0, r1
5407 ; CHECK-ARM6-NEXT: mvn r2, #1
5408 ; CHECK-ARM6-NEXT: orr r12, r0, r2
5409 ; CHECK-ARM6-NEXT: ldr r3, .LCPI26_0
5410 ; CHECK-ARM6-NEXT: .LBB26_2: @ %atomicrmw.start
5411 ; CHECK-ARM6-NEXT: @ Parent Loop BB26_1 Depth=1
5412 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
5413 ; CHECK-ARM6-NEXT: ldrex r0, [r3]
5414 ; CHECK-ARM6-NEXT: cmp r0, r1
5415 ; CHECK-ARM6-NEXT: bne .LBB26_4
5416 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
5417 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB26_2 Depth=2
5418 ; CHECK-ARM6-NEXT: strex r2, r12, [r3]
5419 ; CHECK-ARM6-NEXT: cmp r2, #0
5420 ; CHECK-ARM6-NEXT: bne .LBB26_2
5421 ; CHECK-ARM6-NEXT: .LBB26_4: @ %atomicrmw.start
5422 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB26_1 Depth=1
5423 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
5424 ; CHECK-ARM6-NEXT: sub r1, r0, r1
5425 ; CHECK-ARM6-NEXT: clz r1, r1
5426 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
5427 ; CHECK-ARM6-NEXT: cmp r1, #1
5428 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
5429 ; CHECK-ARM6-NEXT: bne .LBB26_1
5430 ; CHECK-ARM6-NEXT: b .LBB26_5
5431 ; CHECK-ARM6-NEXT: .LBB26_5: @ %atomicrmw.end
5432 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
5433 ; CHECK-ARM6-NEXT: add sp, sp, #8
5434 ; CHECK-ARM6-NEXT: bx lr
5435 ; CHECK-ARM6-NEXT: .p2align 2
5436 ; CHECK-ARM6-NEXT: @ %bb.6:
5437 ; CHECK-ARM6-NEXT: .LCPI26_0:
5438 ; CHECK-ARM6-NEXT: .long atomic_i32
5589 ; CHECK-ARM6-LABEL: test_or_i32:
5590 ; CHECK-ARM6: @ %bb.0: @ %entry
5591 ; CHECK-ARM6-NEXT: .pad #8
5592 ; CHECK-ARM6-NEXT: sub sp, sp, #8
5593 ; CHECK-ARM6-NEXT: ldr r0, .LCPI27_0
5594 ; CHECK-ARM6-NEXT: ldr r0, [r0]
5595 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
5596 ; CHECK-ARM6-NEXT: b .LBB27_1
5597 ; CHECK-ARM6-NEXT: .LBB27_1: @ %atomicrmw.start
5598 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
5599 ; CHECK-ARM6-NEXT: @ Child Loop BB27_2 Depth 2
5600 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
5601 ; CHECK-ARM6-NEXT: orr r12, r1, #1
5602 ; CHECK-ARM6-NEXT: ldr r3, .LCPI27_0
5603 ; CHECK-ARM6-NEXT: .LBB27_2: @ %atomicrmw.start
5604 ; CHECK-ARM6-NEXT: @ Parent Loop BB27_1 Depth=1
5605 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
5606 ; CHECK-ARM6-NEXT: ldrex r0, [r3]
5607 ; CHECK-ARM6-NEXT: cmp r0, r1
5608 ; CHECK-ARM6-NEXT: bne .LBB27_4
5609 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
5610 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB27_2 Depth=2
5611 ; CHECK-ARM6-NEXT: strex r2, r12, [r3]
5612 ; CHECK-ARM6-NEXT: cmp r2, #0
5613 ; CHECK-ARM6-NEXT: bne .LBB27_2
5614 ; CHECK-ARM6-NEXT: .LBB27_4: @ %atomicrmw.start
5615 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB27_1 Depth=1
5616 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
5617 ; CHECK-ARM6-NEXT: sub r1, r0, r1
5618 ; CHECK-ARM6-NEXT: clz r1, r1
5619 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
5620 ; CHECK-ARM6-NEXT: cmp r1, #1
5621 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
5622 ; CHECK-ARM6-NEXT: bne .LBB27_1
5623 ; CHECK-ARM6-NEXT: b .LBB27_5
5624 ; CHECK-ARM6-NEXT: .LBB27_5: @ %atomicrmw.end
5625 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
5626 ; CHECK-ARM6-NEXT: add sp, sp, #8
5627 ; CHECK-ARM6-NEXT: bx lr
5628 ; CHECK-ARM6-NEXT: .p2align 2
5629 ; CHECK-ARM6-NEXT: @ %bb.6:
5630 ; CHECK-ARM6-NEXT: .LCPI27_0:
5631 ; CHECK-ARM6-NEXT: .long atomic_i32
5780 ; CHECK-ARM6-LABEL: test_xor_i32:
5781 ; CHECK-ARM6: @ %bb.0: @ %entry
5782 ; CHECK-ARM6-NEXT: .pad #8
5783 ; CHECK-ARM6-NEXT: sub sp, sp, #8
5784 ; CHECK-ARM6-NEXT: ldr r0, .LCPI28_0
5785 ; CHECK-ARM6-NEXT: ldr r0, [r0]
5786 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
5787 ; CHECK-ARM6-NEXT: b .LBB28_1
5788 ; CHECK-ARM6-NEXT: .LBB28_1: @ %atomicrmw.start
5789 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
5790 ; CHECK-ARM6-NEXT: @ Child Loop BB28_2 Depth 2
5791 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
5792 ; CHECK-ARM6-NEXT: eor r12, r1, #1
5793 ; CHECK-ARM6-NEXT: ldr r3, .LCPI28_0
5794 ; CHECK-ARM6-NEXT: .LBB28_2: @ %atomicrmw.start
5795 ; CHECK-ARM6-NEXT: @ Parent Loop BB28_1 Depth=1
5796 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
5797 ; CHECK-ARM6-NEXT: ldrex r0, [r3]
5798 ; CHECK-ARM6-NEXT: cmp r0, r1
5799 ; CHECK-ARM6-NEXT: bne .LBB28_4
5800 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
5801 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB28_2 Depth=2
5802 ; CHECK-ARM6-NEXT: strex r2, r12, [r3]
5803 ; CHECK-ARM6-NEXT: cmp r2, #0
5804 ; CHECK-ARM6-NEXT: bne .LBB28_2
5805 ; CHECK-ARM6-NEXT: .LBB28_4: @ %atomicrmw.start
5806 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB28_1 Depth=1
5807 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
5808 ; CHECK-ARM6-NEXT: sub r1, r0, r1
5809 ; CHECK-ARM6-NEXT: clz r1, r1
5810 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
5811 ; CHECK-ARM6-NEXT: cmp r1, #1
5812 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
5813 ; CHECK-ARM6-NEXT: bne .LBB28_1
5814 ; CHECK-ARM6-NEXT: b .LBB28_5
5815 ; CHECK-ARM6-NEXT: .LBB28_5: @ %atomicrmw.end
5816 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
5817 ; CHECK-ARM6-NEXT: add sp, sp, #8
5818 ; CHECK-ARM6-NEXT: bx lr
5819 ; CHECK-ARM6-NEXT: .p2align 2
5820 ; CHECK-ARM6-NEXT: @ %bb.6:
5821 ; CHECK-ARM6-NEXT: .LCPI28_0:
5822 ; CHECK-ARM6-NEXT: .long atomic_i32
5973 ; CHECK-ARM6-LABEL: test_max_i32:
5974 ; CHECK-ARM6: @ %bb.0: @ %entry
5975 ; CHECK-ARM6-NEXT: .pad #8
5976 ; CHECK-ARM6-NEXT: sub sp, sp, #8
5977 ; CHECK-ARM6-NEXT: ldr r0, .LCPI29_0
5978 ; CHECK-ARM6-NEXT: ldr r0, [r0]
5979 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
5980 ; CHECK-ARM6-NEXT: b .LBB29_1
5981 ; CHECK-ARM6-NEXT: .LBB29_1: @ %atomicrmw.start
5982 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
5983 ; CHECK-ARM6-NEXT: @ Child Loop BB29_2 Depth 2
5984 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
5985 ; CHECK-ARM6-NEXT: mov r12, #1
5986 ; CHECK-ARM6-NEXT: cmp r1, #1
5987 ; CHECK-ARM6-NEXT: movgt r12, r1
5988 ; CHECK-ARM6-NEXT: ldr r3, .LCPI29_0
5989 ; CHECK-ARM6-NEXT: .LBB29_2: @ %atomicrmw.start
5990 ; CHECK-ARM6-NEXT: @ Parent Loop BB29_1 Depth=1
5991 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
5992 ; CHECK-ARM6-NEXT: ldrex r0, [r3]
5993 ; CHECK-ARM6-NEXT: cmp r0, r1
5994 ; CHECK-ARM6-NEXT: bne .LBB29_4
5995 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
5996 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB29_2 Depth=2
5997 ; CHECK-ARM6-NEXT: strex r2, r12, [r3]
5998 ; CHECK-ARM6-NEXT: cmp r2, #0
5999 ; CHECK-ARM6-NEXT: bne .LBB29_2
6000 ; CHECK-ARM6-NEXT: .LBB29_4: @ %atomicrmw.start
6001 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB29_1 Depth=1
6002 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
6003 ; CHECK-ARM6-NEXT: sub r1, r0, r1
6004 ; CHECK-ARM6-NEXT: clz r1, r1
6005 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
6006 ; CHECK-ARM6-NEXT: cmp r1, #1
6007 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
6008 ; CHECK-ARM6-NEXT: bne .LBB29_1
6009 ; CHECK-ARM6-NEXT: b .LBB29_5
6010 ; CHECK-ARM6-NEXT: .LBB29_5: @ %atomicrmw.end
6011 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
6012 ; CHECK-ARM6-NEXT: add sp, sp, #8
6013 ; CHECK-ARM6-NEXT: bx lr
6014 ; CHECK-ARM6-NEXT: .p2align 2
6015 ; CHECK-ARM6-NEXT: @ %bb.6:
6016 ; CHECK-ARM6-NEXT: .LCPI29_0:
6017 ; CHECK-ARM6-NEXT: .long atomic_i32
6182 ; CHECK-ARM6-LABEL: test_min_i32:
6183 ; CHECK-ARM6: @ %bb.0: @ %entry
6184 ; CHECK-ARM6-NEXT: .pad #8
6185 ; CHECK-ARM6-NEXT: sub sp, sp, #8
6186 ; CHECK-ARM6-NEXT: ldr r0, .LCPI30_0
6187 ; CHECK-ARM6-NEXT: ldr r0, [r0]
6188 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
6189 ; CHECK-ARM6-NEXT: b .LBB30_1
6190 ; CHECK-ARM6-NEXT: .LBB30_1: @ %atomicrmw.start
6191 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
6192 ; CHECK-ARM6-NEXT: @ Child Loop BB30_2 Depth 2
6193 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
6194 ; CHECK-ARM6-NEXT: mov r12, #1
6195 ; CHECK-ARM6-NEXT: cmp r1, #2
6196 ; CHECK-ARM6-NEXT: movlt r12, r1
6197 ; CHECK-ARM6-NEXT: ldr r3, .LCPI30_0
6198 ; CHECK-ARM6-NEXT: .LBB30_2: @ %atomicrmw.start
6199 ; CHECK-ARM6-NEXT: @ Parent Loop BB30_1 Depth=1
6200 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
6201 ; CHECK-ARM6-NEXT: ldrex r0, [r3]
6202 ; CHECK-ARM6-NEXT: cmp r0, r1
6203 ; CHECK-ARM6-NEXT: bne .LBB30_4
6204 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
6205 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB30_2 Depth=2
6206 ; CHECK-ARM6-NEXT: strex r2, r12, [r3]
6207 ; CHECK-ARM6-NEXT: cmp r2, #0
6208 ; CHECK-ARM6-NEXT: bne .LBB30_2
6209 ; CHECK-ARM6-NEXT: .LBB30_4: @ %atomicrmw.start
6210 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB30_1 Depth=1
6211 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
6212 ; CHECK-ARM6-NEXT: sub r1, r0, r1
6213 ; CHECK-ARM6-NEXT: clz r1, r1
6214 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
6215 ; CHECK-ARM6-NEXT: cmp r1, #1
6216 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
6217 ; CHECK-ARM6-NEXT: bne .LBB30_1
6218 ; CHECK-ARM6-NEXT: b .LBB30_5
6219 ; CHECK-ARM6-NEXT: .LBB30_5: @ %atomicrmw.end
6220 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
6221 ; CHECK-ARM6-NEXT: add sp, sp, #8
6222 ; CHECK-ARM6-NEXT: bx lr
6223 ; CHECK-ARM6-NEXT: .p2align 2
6224 ; CHECK-ARM6-NEXT: @ %bb.6:
6225 ; CHECK-ARM6-NEXT: .LCPI30_0:
6226 ; CHECK-ARM6-NEXT: .long atomic_i32
6391 ; CHECK-ARM6-LABEL: test_umax_i32:
6392 ; CHECK-ARM6: @ %bb.0: @ %entry
6393 ; CHECK-ARM6-NEXT: .pad #8
6394 ; CHECK-ARM6-NEXT: sub sp, sp, #8
6395 ; CHECK-ARM6-NEXT: ldr r0, .LCPI31_0
6396 ; CHECK-ARM6-NEXT: ldr r0, [r0]
6397 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
6398 ; CHECK-ARM6-NEXT: b .LBB31_1
6399 ; CHECK-ARM6-NEXT: .LBB31_1: @ %atomicrmw.start
6400 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
6401 ; CHECK-ARM6-NEXT: @ Child Loop BB31_2 Depth 2
6402 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
6403 ; CHECK-ARM6-NEXT: mov r12, #1
6404 ; CHECK-ARM6-NEXT: cmp r1, #1
6405 ; CHECK-ARM6-NEXT: movhi r12, r1
6406 ; CHECK-ARM6-NEXT: ldr r3, .LCPI31_0
6407 ; CHECK-ARM6-NEXT: .LBB31_2: @ %atomicrmw.start
6408 ; CHECK-ARM6-NEXT: @ Parent Loop BB31_1 Depth=1
6409 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
6410 ; CHECK-ARM6-NEXT: ldrex r0, [r3]
6411 ; CHECK-ARM6-NEXT: cmp r0, r1
6412 ; CHECK-ARM6-NEXT: bne .LBB31_4
6413 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
6414 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB31_2 Depth=2
6415 ; CHECK-ARM6-NEXT: strex r2, r12, [r3]
6416 ; CHECK-ARM6-NEXT: cmp r2, #0
6417 ; CHECK-ARM6-NEXT: bne .LBB31_2
6418 ; CHECK-ARM6-NEXT: .LBB31_4: @ %atomicrmw.start
6419 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB31_1 Depth=1
6420 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
6421 ; CHECK-ARM6-NEXT: sub r1, r0, r1
6422 ; CHECK-ARM6-NEXT: clz r1, r1
6423 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
6424 ; CHECK-ARM6-NEXT: cmp r1, #1
6425 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
6426 ; CHECK-ARM6-NEXT: bne .LBB31_1
6427 ; CHECK-ARM6-NEXT: b .LBB31_5
6428 ; CHECK-ARM6-NEXT: .LBB31_5: @ %atomicrmw.end
6429 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
6430 ; CHECK-ARM6-NEXT: add sp, sp, #8
6431 ; CHECK-ARM6-NEXT: bx lr
6432 ; CHECK-ARM6-NEXT: .p2align 2
6433 ; CHECK-ARM6-NEXT: @ %bb.6:
6434 ; CHECK-ARM6-NEXT: .LCPI31_0:
6435 ; CHECK-ARM6-NEXT: .long atomic_i32
6600 ; CHECK-ARM6-LABEL: test_umin_i32:
6601 ; CHECK-ARM6: @ %bb.0: @ %entry
6602 ; CHECK-ARM6-NEXT: .pad #8
6603 ; CHECK-ARM6-NEXT: sub sp, sp, #8
6604 ; CHECK-ARM6-NEXT: ldr r0, .LCPI32_0
6605 ; CHECK-ARM6-NEXT: ldr r0, [r0]
6606 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
6607 ; CHECK-ARM6-NEXT: b .LBB32_1
6608 ; CHECK-ARM6-NEXT: .LBB32_1: @ %atomicrmw.start
6609 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
6610 ; CHECK-ARM6-NEXT: @ Child Loop BB32_2 Depth 2
6611 ; CHECK-ARM6-NEXT: ldr r1, [sp, #4] @ 4-byte Reload
6612 ; CHECK-ARM6-NEXT: mov r12, #1
6613 ; CHECK-ARM6-NEXT: cmp r1, #2
6614 ; CHECK-ARM6-NEXT: movlo r12, r1
6615 ; CHECK-ARM6-NEXT: ldr r3, .LCPI32_0
6616 ; CHECK-ARM6-NEXT: .LBB32_2: @ %atomicrmw.start
6617 ; CHECK-ARM6-NEXT: @ Parent Loop BB32_1 Depth=1
6618 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
6619 ; CHECK-ARM6-NEXT: ldrex r0, [r3]
6620 ; CHECK-ARM6-NEXT: cmp r0, r1
6621 ; CHECK-ARM6-NEXT: bne .LBB32_4
6622 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
6623 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB32_2 Depth=2
6624 ; CHECK-ARM6-NEXT: strex r2, r12, [r3]
6625 ; CHECK-ARM6-NEXT: cmp r2, #0
6626 ; CHECK-ARM6-NEXT: bne .LBB32_2
6627 ; CHECK-ARM6-NEXT: .LBB32_4: @ %atomicrmw.start
6628 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB32_1 Depth=1
6629 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
6630 ; CHECK-ARM6-NEXT: sub r1, r0, r1
6631 ; CHECK-ARM6-NEXT: clz r1, r1
6632 ; CHECK-ARM6-NEXT: lsr r1, r1, #5
6633 ; CHECK-ARM6-NEXT: cmp r1, #1
6634 ; CHECK-ARM6-NEXT: str r0, [sp, #4] @ 4-byte Spill
6635 ; CHECK-ARM6-NEXT: bne .LBB32_1
6636 ; CHECK-ARM6-NEXT: b .LBB32_5
6637 ; CHECK-ARM6-NEXT: .LBB32_5: @ %atomicrmw.end
6638 ; CHECK-ARM6-NEXT: ldr r0, [sp] @ 4-byte Reload
6639 ; CHECK-ARM6-NEXT: add sp, sp, #8
6640 ; CHECK-ARM6-NEXT: bx lr
6641 ; CHECK-ARM6-NEXT: .p2align 2
6642 ; CHECK-ARM6-NEXT: @ %bb.6:
6643 ; CHECK-ARM6-NEXT: .LCPI32_0:
6644 ; CHECK-ARM6-NEXT: .long atomic_i32
6824 ; CHECK-ARM6-LABEL: test_xchg_i64:
6825 ; CHECK-ARM6: @ %bb.0: @ %entry
6826 ; CHECK-ARM6-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
6827 ; CHECK-ARM6-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
6828 ; CHECK-ARM6-NEXT: .pad #16
6829 ; CHECK-ARM6-NEXT: sub sp, sp, #16
6830 ; CHECK-ARM6-NEXT: ldr r0, .LCPI33_0
6831 ; CHECK-ARM6-NEXT: ldr r1, [r0]
6832 ; CHECK-ARM6-NEXT: ldr r0, [r0, #4]
6833 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
6834 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
6835 ; CHECK-ARM6-NEXT: b .LBB33_1
6836 ; CHECK-ARM6-NEXT: .LBB33_1: @ %atomicrmw.start
6837 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
6838 ; CHECK-ARM6-NEXT: @ Child Loop BB33_2 Depth 2
6839 ; CHECK-ARM6-NEXT: ldr r1, [sp, #12] @ 4-byte Reload
6840 ; CHECK-ARM6-NEXT: ldr r2, [sp, #8] @ 4-byte Reload
6841 ; CHECK-ARM6-NEXT: mov r6, r2
6842 ; CHECK-ARM6-NEXT: mov r7, r1
6843 ; CHECK-ARM6-NEXT: ldr r3, .LCPI33_0
6844 ; CHECK-ARM6-NEXT: mov r0, #0
6845 ; CHECK-ARM6-NEXT: mov r8, #1
6846 ; CHECK-ARM6-NEXT: @ kill: def $r8 killed $r8 def $r8_r9
6847 ; CHECK-ARM6-NEXT: mov r9, r0
6848 ; CHECK-ARM6-NEXT: .LBB33_2: @ %atomicrmw.start
6849 ; CHECK-ARM6-NEXT: @ Parent Loop BB33_1 Depth=1
6850 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
6851 ; CHECK-ARM6-NEXT: ldrexd r4, r5, [r3]
6852 ; CHECK-ARM6-NEXT: cmp r4, r6
6853 ; CHECK-ARM6-NEXT: cmpeq r5, r7
6854 ; CHECK-ARM6-NEXT: bne .LBB33_4
6855 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
6856 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB33_2 Depth=2
6857 ; CHECK-ARM6-NEXT: strexd r0, r8, r9, [r3]
6858 ; CHECK-ARM6-NEXT: cmp r0, #0
6859 ; CHECK-ARM6-NEXT: bne .LBB33_2
6860 ; CHECK-ARM6-NEXT: .LBB33_4: @ %atomicrmw.start
6861 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB33_1 Depth=1
6862 ; CHECK-ARM6-NEXT: mov r0, r5
6863 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
6864 ; CHECK-ARM6-NEXT: eor r3, r0, r1
6865 ; CHECK-ARM6-NEXT: mov r1, r4
6866 ; CHECK-ARM6-NEXT: str r1, [sp, #4] @ 4-byte Spill
6867 ; CHECK-ARM6-NEXT: eor r2, r1, r2
6868 ; CHECK-ARM6-NEXT: orr r2, r2, r3
6869 ; CHECK-ARM6-NEXT: cmp r2, #0
6870 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
6871 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
6872 ; CHECK-ARM6-NEXT: bne .LBB33_1
6873 ; CHECK-ARM6-NEXT: b .LBB33_5
6874 ; CHECK-ARM6-NEXT: .LBB33_5: @ %atomicrmw.end
6875 ; CHECK-ARM6-NEXT: ldr r1, [sp] @ 4-byte Reload
6876 ; CHECK-ARM6-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
6877 ; CHECK-ARM6-NEXT: add sp, sp, #16
6878 ; CHECK-ARM6-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
6879 ; CHECK-ARM6-NEXT: .p2align 2
6880 ; CHECK-ARM6-NEXT: @ %bb.6:
6881 ; CHECK-ARM6-NEXT: .LCPI33_0:
6882 ; CHECK-ARM6-NEXT: .long atomic_i64
7034 ; CHECK-ARM6-LABEL: test_add_i64:
7035 ; CHECK-ARM6: @ %bb.0: @ %entry
7036 ; CHECK-ARM6-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
7037 ; CHECK-ARM6-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
7038 ; CHECK-ARM6-NEXT: .pad #16
7039 ; CHECK-ARM6-NEXT: sub sp, sp, #16
7040 ; CHECK-ARM6-NEXT: ldr r0, .LCPI34_0
7041 ; CHECK-ARM6-NEXT: ldr r1, [r0]
7042 ; CHECK-ARM6-NEXT: ldr r0, [r0, #4]
7043 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
7044 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
7045 ; CHECK-ARM6-NEXT: b .LBB34_1
7046 ; CHECK-ARM6-NEXT: .LBB34_1: @ %atomicrmw.start
7047 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
7048 ; CHECK-ARM6-NEXT: @ Child Loop BB34_2 Depth 2
7049 ; CHECK-ARM6-NEXT: ldr r1, [sp, #12] @ 4-byte Reload
7050 ; CHECK-ARM6-NEXT: ldr r2, [sp, #8] @ 4-byte Reload
7051 ; CHECK-ARM6-NEXT: mov r6, r2
7052 ; CHECK-ARM6-NEXT: mov r7, r1
7053 ; CHECK-ARM6-NEXT: adds r8, r2, #1
7054 ; CHECK-ARM6-NEXT: adc r0, r1, #0
7055 ; CHECK-ARM6-NEXT: @ kill: def $r8 killed $r8 def $r8_r9
7056 ; CHECK-ARM6-NEXT: mov r9, r0
7057 ; CHECK-ARM6-NEXT: ldr r3, .LCPI34_0
7058 ; CHECK-ARM6-NEXT: .LBB34_2: @ %atomicrmw.start
7059 ; CHECK-ARM6-NEXT: @ Parent Loop BB34_1 Depth=1
7060 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
7061 ; CHECK-ARM6-NEXT: ldrexd r4, r5, [r3]
7062 ; CHECK-ARM6-NEXT: cmp r4, r6
7063 ; CHECK-ARM6-NEXT: cmpeq r5, r7
7064 ; CHECK-ARM6-NEXT: bne .LBB34_4
7065 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
7066 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB34_2 Depth=2
7067 ; CHECK-ARM6-NEXT: strexd r0, r8, r9, [r3]
7068 ; CHECK-ARM6-NEXT: cmp r0, #0
7069 ; CHECK-ARM6-NEXT: bne .LBB34_2
7070 ; CHECK-ARM6-NEXT: .LBB34_4: @ %atomicrmw.start
7071 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB34_1 Depth=1
7072 ; CHECK-ARM6-NEXT: mov r0, r5
7073 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
7074 ; CHECK-ARM6-NEXT: eor r3, r0, r1
7075 ; CHECK-ARM6-NEXT: mov r1, r4
7076 ; CHECK-ARM6-NEXT: str r1, [sp, #4] @ 4-byte Spill
7077 ; CHECK-ARM6-NEXT: eor r2, r1, r2
7078 ; CHECK-ARM6-NEXT: orr r2, r2, r3
7079 ; CHECK-ARM6-NEXT: cmp r2, #0
7080 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
7081 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
7082 ; CHECK-ARM6-NEXT: bne .LBB34_1
7083 ; CHECK-ARM6-NEXT: b .LBB34_5
7084 ; CHECK-ARM6-NEXT: .LBB34_5: @ %atomicrmw.end
7085 ; CHECK-ARM6-NEXT: ldr r1, [sp] @ 4-byte Reload
7086 ; CHECK-ARM6-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
7087 ; CHECK-ARM6-NEXT: add sp, sp, #16
7088 ; CHECK-ARM6-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
7089 ; CHECK-ARM6-NEXT: .p2align 2
7090 ; CHECK-ARM6-NEXT: @ %bb.6:
7091 ; CHECK-ARM6-NEXT: .LCPI34_0:
7092 ; CHECK-ARM6-NEXT: .long atomic_i64
7244 ; CHECK-ARM6-LABEL: test_sub_i64:
7245 ; CHECK-ARM6: @ %bb.0: @ %entry
7246 ; CHECK-ARM6-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
7247 ; CHECK-ARM6-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
7248 ; CHECK-ARM6-NEXT: .pad #16
7249 ; CHECK-ARM6-NEXT: sub sp, sp, #16
7250 ; CHECK-ARM6-NEXT: ldr r0, .LCPI35_0
7251 ; CHECK-ARM6-NEXT: ldr r1, [r0]
7252 ; CHECK-ARM6-NEXT: ldr r0, [r0, #4]
7253 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
7254 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
7255 ; CHECK-ARM6-NEXT: b .LBB35_1
7256 ; CHECK-ARM6-NEXT: .LBB35_1: @ %atomicrmw.start
7257 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
7258 ; CHECK-ARM6-NEXT: @ Child Loop BB35_2 Depth 2
7259 ; CHECK-ARM6-NEXT: ldr r1, [sp, #12] @ 4-byte Reload
7260 ; CHECK-ARM6-NEXT: ldr r2, [sp, #8] @ 4-byte Reload
7261 ; CHECK-ARM6-NEXT: mov r6, r2
7262 ; CHECK-ARM6-NEXT: mov r7, r1
7263 ; CHECK-ARM6-NEXT: subs r8, r2, #1
7264 ; CHECK-ARM6-NEXT: sbc r0, r1, #0
7265 ; CHECK-ARM6-NEXT: @ kill: def $r8 killed $r8 def $r8_r9
7266 ; CHECK-ARM6-NEXT: mov r9, r0
7267 ; CHECK-ARM6-NEXT: ldr r3, .LCPI35_0
7268 ; CHECK-ARM6-NEXT: .LBB35_2: @ %atomicrmw.start
7269 ; CHECK-ARM6-NEXT: @ Parent Loop BB35_1 Depth=1
7270 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
7271 ; CHECK-ARM6-NEXT: ldrexd r4, r5, [r3]
7272 ; CHECK-ARM6-NEXT: cmp r4, r6
7273 ; CHECK-ARM6-NEXT: cmpeq r5, r7
7274 ; CHECK-ARM6-NEXT: bne .LBB35_4
7275 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
7276 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB35_2 Depth=2
7277 ; CHECK-ARM6-NEXT: strexd r0, r8, r9, [r3]
7278 ; CHECK-ARM6-NEXT: cmp r0, #0
7279 ; CHECK-ARM6-NEXT: bne .LBB35_2
7280 ; CHECK-ARM6-NEXT: .LBB35_4: @ %atomicrmw.start
7281 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB35_1 Depth=1
7282 ; CHECK-ARM6-NEXT: mov r0, r5
7283 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
7284 ; CHECK-ARM6-NEXT: eor r3, r0, r1
7285 ; CHECK-ARM6-NEXT: mov r1, r4
7286 ; CHECK-ARM6-NEXT: str r1, [sp, #4] @ 4-byte Spill
7287 ; CHECK-ARM6-NEXT: eor r2, r1, r2
7288 ; CHECK-ARM6-NEXT: orr r2, r2, r3
7289 ; CHECK-ARM6-NEXT: cmp r2, #0
7290 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
7291 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
7292 ; CHECK-ARM6-NEXT: bne .LBB35_1
7293 ; CHECK-ARM6-NEXT: b .LBB35_5
7294 ; CHECK-ARM6-NEXT: .LBB35_5: @ %atomicrmw.end
7295 ; CHECK-ARM6-NEXT: ldr r1, [sp] @ 4-byte Reload
7296 ; CHECK-ARM6-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
7297 ; CHECK-ARM6-NEXT: add sp, sp, #16
7298 ; CHECK-ARM6-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
7299 ; CHECK-ARM6-NEXT: .p2align 2
7300 ; CHECK-ARM6-NEXT: @ %bb.6:
7301 ; CHECK-ARM6-NEXT: .LCPI35_0:
7302 ; CHECK-ARM6-NEXT: .long atomic_i64
7454 ; CHECK-ARM6-LABEL: test_and_i64:
7455 ; CHECK-ARM6: @ %bb.0: @ %entry
7456 ; CHECK-ARM6-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
7457 ; CHECK-ARM6-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
7458 ; CHECK-ARM6-NEXT: .pad #16
7459 ; CHECK-ARM6-NEXT: sub sp, sp, #16
7460 ; CHECK-ARM6-NEXT: ldr r0, .LCPI36_0
7461 ; CHECK-ARM6-NEXT: ldr r1, [r0]
7462 ; CHECK-ARM6-NEXT: ldr r0, [r0, #4]
7463 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
7464 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
7465 ; CHECK-ARM6-NEXT: b .LBB36_1
7466 ; CHECK-ARM6-NEXT: .LBB36_1: @ %atomicrmw.start
7467 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
7468 ; CHECK-ARM6-NEXT: @ Child Loop BB36_2 Depth 2
7469 ; CHECK-ARM6-NEXT: ldr r1, [sp, #12] @ 4-byte Reload
7470 ; CHECK-ARM6-NEXT: ldr r2, [sp, #8] @ 4-byte Reload
7471 ; CHECK-ARM6-NEXT: and r8, r2, #1
7472 ; CHECK-ARM6-NEXT: mov r0, #0
7473 ; CHECK-ARM6-NEXT: @ kill: def $r8 killed $r8 def $r8_r9
7474 ; CHECK-ARM6-NEXT: mov r9, r0
7475 ; CHECK-ARM6-NEXT: mov r6, r2
7476 ; CHECK-ARM6-NEXT: mov r7, r1
7477 ; CHECK-ARM6-NEXT: ldr r3, .LCPI36_0
7478 ; CHECK-ARM6-NEXT: .LBB36_2: @ %atomicrmw.start
7479 ; CHECK-ARM6-NEXT: @ Parent Loop BB36_1 Depth=1
7480 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
7481 ; CHECK-ARM6-NEXT: ldrexd r4, r5, [r3]
7482 ; CHECK-ARM6-NEXT: cmp r4, r6
7483 ; CHECK-ARM6-NEXT: cmpeq r5, r7
7484 ; CHECK-ARM6-NEXT: bne .LBB36_4
7485 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
7486 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB36_2 Depth=2
7487 ; CHECK-ARM6-NEXT: strexd r0, r8, r9, [r3]
7488 ; CHECK-ARM6-NEXT: cmp r0, #0
7489 ; CHECK-ARM6-NEXT: bne .LBB36_2
7490 ; CHECK-ARM6-NEXT: .LBB36_4: @ %atomicrmw.start
7491 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB36_1 Depth=1
7492 ; CHECK-ARM6-NEXT: mov r0, r5
7493 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
7494 ; CHECK-ARM6-NEXT: eor r3, r0, r1
7495 ; CHECK-ARM6-NEXT: mov r1, r4
7496 ; CHECK-ARM6-NEXT: str r1, [sp, #4] @ 4-byte Spill
7497 ; CHECK-ARM6-NEXT: eor r2, r1, r2
7498 ; CHECK-ARM6-NEXT: orr r2, r2, r3
7499 ; CHECK-ARM6-NEXT: cmp r2, #0
7500 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
7501 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
7502 ; CHECK-ARM6-NEXT: bne .LBB36_1
7503 ; CHECK-ARM6-NEXT: b .LBB36_5
7504 ; CHECK-ARM6-NEXT: .LBB36_5: @ %atomicrmw.end
7505 ; CHECK-ARM6-NEXT: ldr r1, [sp] @ 4-byte Reload
7506 ; CHECK-ARM6-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
7507 ; CHECK-ARM6-NEXT: add sp, sp, #16
7508 ; CHECK-ARM6-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
7509 ; CHECK-ARM6-NEXT: .p2align 2
7510 ; CHECK-ARM6-NEXT: @ %bb.6:
7511 ; CHECK-ARM6-NEXT: .LCPI36_0:
7512 ; CHECK-ARM6-NEXT: .long atomic_i64
7666 ; CHECK-ARM6-LABEL: test_nand_i64:
7667 ; CHECK-ARM6: @ %bb.0: @ %entry
7668 ; CHECK-ARM6-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
7669 ; CHECK-ARM6-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
7670 ; CHECK-ARM6-NEXT: .pad #16
7671 ; CHECK-ARM6-NEXT: sub sp, sp, #16
7672 ; CHECK-ARM6-NEXT: ldr r0, .LCPI37_0
7673 ; CHECK-ARM6-NEXT: ldr r1, [r0]
7674 ; CHECK-ARM6-NEXT: ldr r0, [r0, #4]
7675 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
7676 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
7677 ; CHECK-ARM6-NEXT: b .LBB37_1
7678 ; CHECK-ARM6-NEXT: .LBB37_1: @ %atomicrmw.start
7679 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
7680 ; CHECK-ARM6-NEXT: @ Child Loop BB37_2 Depth 2
7681 ; CHECK-ARM6-NEXT: ldr r1, [sp, #12] @ 4-byte Reload
7682 ; CHECK-ARM6-NEXT: ldr r2, [sp, #8] @ 4-byte Reload
7683 ; CHECK-ARM6-NEXT: mov r6, r2
7684 ; CHECK-ARM6-NEXT: mov r7, r1
7685 ; CHECK-ARM6-NEXT: mvn r0, r2
7686 ; CHECK-ARM6-NEXT: mvn r3, #1
7687 ; CHECK-ARM6-NEXT: orr r8, r0, r3
7688 ; CHECK-ARM6-NEXT: mvn r0, #0
7689 ; CHECK-ARM6-NEXT: @ kill: def $r8 killed $r8 def $r8_r9
7690 ; CHECK-ARM6-NEXT: mov r9, r0
7691 ; CHECK-ARM6-NEXT: ldr r3, .LCPI37_0
7692 ; CHECK-ARM6-NEXT: .LBB37_2: @ %atomicrmw.start
7693 ; CHECK-ARM6-NEXT: @ Parent Loop BB37_1 Depth=1
7694 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
7695 ; CHECK-ARM6-NEXT: ldrexd r4, r5, [r3]
7696 ; CHECK-ARM6-NEXT: cmp r4, r6
7697 ; CHECK-ARM6-NEXT: cmpeq r5, r7
7698 ; CHECK-ARM6-NEXT: bne .LBB37_4
7699 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
7700 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB37_2 Depth=2
7701 ; CHECK-ARM6-NEXT: strexd r0, r8, r9, [r3]
7702 ; CHECK-ARM6-NEXT: cmp r0, #0
7703 ; CHECK-ARM6-NEXT: bne .LBB37_2
7704 ; CHECK-ARM6-NEXT: .LBB37_4: @ %atomicrmw.start
7705 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB37_1 Depth=1
7706 ; CHECK-ARM6-NEXT: mov r0, r5
7707 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
7708 ; CHECK-ARM6-NEXT: eor r3, r0, r1
7709 ; CHECK-ARM6-NEXT: mov r1, r4
7710 ; CHECK-ARM6-NEXT: str r1, [sp, #4] @ 4-byte Spill
7711 ; CHECK-ARM6-NEXT: eor r2, r1, r2
7712 ; CHECK-ARM6-NEXT: orr r2, r2, r3
7713 ; CHECK-ARM6-NEXT: cmp r2, #0
7714 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
7715 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
7716 ; CHECK-ARM6-NEXT: bne .LBB37_1
7717 ; CHECK-ARM6-NEXT: b .LBB37_5
7718 ; CHECK-ARM6-NEXT: .LBB37_5: @ %atomicrmw.end
7719 ; CHECK-ARM6-NEXT: ldr r1, [sp] @ 4-byte Reload
7720 ; CHECK-ARM6-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
7721 ; CHECK-ARM6-NEXT: add sp, sp, #16
7722 ; CHECK-ARM6-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
7723 ; CHECK-ARM6-NEXT: .p2align 2
7724 ; CHECK-ARM6-NEXT: @ %bb.6:
7725 ; CHECK-ARM6-NEXT: .LCPI37_0:
7726 ; CHECK-ARM6-NEXT: .long atomic_i64
7878 ; CHECK-ARM6-LABEL: test_or_i64:
7879 ; CHECK-ARM6: @ %bb.0: @ %entry
7880 ; CHECK-ARM6-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
7881 ; CHECK-ARM6-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
7882 ; CHECK-ARM6-NEXT: .pad #16
7883 ; CHECK-ARM6-NEXT: sub sp, sp, #16
7884 ; CHECK-ARM6-NEXT: ldr r0, .LCPI38_0
7885 ; CHECK-ARM6-NEXT: ldr r1, [r0]
7886 ; CHECK-ARM6-NEXT: ldr r0, [r0, #4]
7887 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
7888 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
7889 ; CHECK-ARM6-NEXT: b .LBB38_1
7890 ; CHECK-ARM6-NEXT: .LBB38_1: @ %atomicrmw.start
7891 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
7892 ; CHECK-ARM6-NEXT: @ Child Loop BB38_2 Depth 2
7893 ; CHECK-ARM6-NEXT: ldr r1, [sp, #12] @ 4-byte Reload
7894 ; CHECK-ARM6-NEXT: ldr r2, [sp, #8] @ 4-byte Reload
7895 ; CHECK-ARM6-NEXT: orr r8, r2, #1
7896 ; CHECK-ARM6-NEXT: @ kill: def $r8 killed $r8 def $r8_r9
7897 ; CHECK-ARM6-NEXT: mov r9, r1
7898 ; CHECK-ARM6-NEXT: mov r6, r2
7899 ; CHECK-ARM6-NEXT: mov r7, r1
7900 ; CHECK-ARM6-NEXT: ldr r3, .LCPI38_0
7901 ; CHECK-ARM6-NEXT: .LBB38_2: @ %atomicrmw.start
7902 ; CHECK-ARM6-NEXT: @ Parent Loop BB38_1 Depth=1
7903 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
7904 ; CHECK-ARM6-NEXT: ldrexd r4, r5, [r3]
7905 ; CHECK-ARM6-NEXT: cmp r4, r6
7906 ; CHECK-ARM6-NEXT: cmpeq r5, r7
7907 ; CHECK-ARM6-NEXT: bne .LBB38_4
7908 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
7909 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB38_2 Depth=2
7910 ; CHECK-ARM6-NEXT: strexd r0, r8, r9, [r3]
7911 ; CHECK-ARM6-NEXT: cmp r0, #0
7912 ; CHECK-ARM6-NEXT: bne .LBB38_2
7913 ; CHECK-ARM6-NEXT: .LBB38_4: @ %atomicrmw.start
7914 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB38_1 Depth=1
7915 ; CHECK-ARM6-NEXT: mov r0, r5
7916 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
7917 ; CHECK-ARM6-NEXT: eor r3, r0, r1
7918 ; CHECK-ARM6-NEXT: mov r1, r4
7919 ; CHECK-ARM6-NEXT: str r1, [sp, #4] @ 4-byte Spill
7920 ; CHECK-ARM6-NEXT: eor r2, r1, r2
7921 ; CHECK-ARM6-NEXT: orr r2, r2, r3
7922 ; CHECK-ARM6-NEXT: cmp r2, #0
7923 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
7924 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
7925 ; CHECK-ARM6-NEXT: bne .LBB38_1
7926 ; CHECK-ARM6-NEXT: b .LBB38_5
7927 ; CHECK-ARM6-NEXT: .LBB38_5: @ %atomicrmw.end
7928 ; CHECK-ARM6-NEXT: ldr r1, [sp] @ 4-byte Reload
7929 ; CHECK-ARM6-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
7930 ; CHECK-ARM6-NEXT: add sp, sp, #16
7931 ; CHECK-ARM6-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
7932 ; CHECK-ARM6-NEXT: .p2align 2
7933 ; CHECK-ARM6-NEXT: @ %bb.6:
7934 ; CHECK-ARM6-NEXT: .LCPI38_0:
7935 ; CHECK-ARM6-NEXT: .long atomic_i64
8085 ; CHECK-ARM6-LABEL: test_xor_i64:
8086 ; CHECK-ARM6: @ %bb.0: @ %entry
8087 ; CHECK-ARM6-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
8088 ; CHECK-ARM6-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
8089 ; CHECK-ARM6-NEXT: .pad #16
8090 ; CHECK-ARM6-NEXT: sub sp, sp, #16
8091 ; CHECK-ARM6-NEXT: ldr r0, .LCPI39_0
8092 ; CHECK-ARM6-NEXT: ldr r1, [r0]
8093 ; CHECK-ARM6-NEXT: ldr r0, [r0, #4]
8094 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
8095 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
8096 ; CHECK-ARM6-NEXT: b .LBB39_1
8097 ; CHECK-ARM6-NEXT: .LBB39_1: @ %atomicrmw.start
8098 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
8099 ; CHECK-ARM6-NEXT: @ Child Loop BB39_2 Depth 2
8100 ; CHECK-ARM6-NEXT: ldr r1, [sp, #12] @ 4-byte Reload
8101 ; CHECK-ARM6-NEXT: ldr r2, [sp, #8] @ 4-byte Reload
8102 ; CHECK-ARM6-NEXT: eor r8, r2, #1
8103 ; CHECK-ARM6-NEXT: @ kill: def $r8 killed $r8 def $r8_r9
8104 ; CHECK-ARM6-NEXT: mov r9, r1
8105 ; CHECK-ARM6-NEXT: mov r6, r2
8106 ; CHECK-ARM6-NEXT: mov r7, r1
8107 ; CHECK-ARM6-NEXT: ldr r3, .LCPI39_0
8108 ; CHECK-ARM6-NEXT: .LBB39_2: @ %atomicrmw.start
8109 ; CHECK-ARM6-NEXT: @ Parent Loop BB39_1 Depth=1
8110 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
8111 ; CHECK-ARM6-NEXT: ldrexd r4, r5, [r3]
8112 ; CHECK-ARM6-NEXT: cmp r4, r6
8113 ; CHECK-ARM6-NEXT: cmpeq r5, r7
8114 ; CHECK-ARM6-NEXT: bne .LBB39_4
8115 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
8116 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB39_2 Depth=2
8117 ; CHECK-ARM6-NEXT: strexd r0, r8, r9, [r3]
8118 ; CHECK-ARM6-NEXT: cmp r0, #0
8119 ; CHECK-ARM6-NEXT: bne .LBB39_2
8120 ; CHECK-ARM6-NEXT: .LBB39_4: @ %atomicrmw.start
8121 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB39_1 Depth=1
8122 ; CHECK-ARM6-NEXT: mov r0, r5
8123 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
8124 ; CHECK-ARM6-NEXT: eor r3, r0, r1
8125 ; CHECK-ARM6-NEXT: mov r1, r4
8126 ; CHECK-ARM6-NEXT: str r1, [sp, #4] @ 4-byte Spill
8127 ; CHECK-ARM6-NEXT: eor r2, r1, r2
8128 ; CHECK-ARM6-NEXT: orr r2, r2, r3
8129 ; CHECK-ARM6-NEXT: cmp r2, #0
8130 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
8131 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
8132 ; CHECK-ARM6-NEXT: bne .LBB39_1
8133 ; CHECK-ARM6-NEXT: b .LBB39_5
8134 ; CHECK-ARM6-NEXT: .LBB39_5: @ %atomicrmw.end
8135 ; CHECK-ARM6-NEXT: ldr r1, [sp] @ 4-byte Reload
8136 ; CHECK-ARM6-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
8137 ; CHECK-ARM6-NEXT: add sp, sp, #16
8138 ; CHECK-ARM6-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
8139 ; CHECK-ARM6-NEXT: .p2align 2
8140 ; CHECK-ARM6-NEXT: @ %bb.6:
8141 ; CHECK-ARM6-NEXT: .LCPI39_0:
8142 ; CHECK-ARM6-NEXT: .long atomic_i64
8301 ; CHECK-ARM6-LABEL: test_max_i64:
8302 ; CHECK-ARM6: @ %bb.0: @ %entry
8303 ; CHECK-ARM6-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
8304 ; CHECK-ARM6-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
8305 ; CHECK-ARM6-NEXT: .pad #16
8306 ; CHECK-ARM6-NEXT: sub sp, sp, #16
8307 ; CHECK-ARM6-NEXT: ldr r0, .LCPI40_0
8308 ; CHECK-ARM6-NEXT: ldr r1, [r0]
8309 ; CHECK-ARM6-NEXT: ldr r0, [r0, #4]
8310 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
8311 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
8312 ; CHECK-ARM6-NEXT: b .LBB40_1
8313 ; CHECK-ARM6-NEXT: .LBB40_1: @ %atomicrmw.start
8314 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
8315 ; CHECK-ARM6-NEXT: @ Child Loop BB40_2 Depth 2
8316 ; CHECK-ARM6-NEXT: ldr r1, [sp, #12] @ 4-byte Reload
8317 ; CHECK-ARM6-NEXT: ldr r2, [sp, #8] @ 4-byte Reload
8318 ; CHECK-ARM6-NEXT: mov r6, r2
8319 ; CHECK-ARM6-NEXT: mov r7, r1
8320 ; CHECK-ARM6-NEXT: rsbs r0, r2, #1
8321 ; CHECK-ARM6-NEXT: rscs r0, r1, #0
8322 ; CHECK-ARM6-NEXT: mov r0, #0
8323 ; CHECK-ARM6-NEXT: movlt r0, #1
8324 ; CHECK-ARM6-NEXT: mov r8, #1
8325 ; CHECK-ARM6-NEXT: cmp r0, #0
8326 ; CHECK-ARM6-NEXT: movne r8, r2
8327 ; CHECK-ARM6-NEXT: cmp r0, #0
8328 ; CHECK-ARM6-NEXT: movne r0, r1
8329 ; CHECK-ARM6-NEXT: @ kill: def $r8 killed $r8 def $r8_r9
8330 ; CHECK-ARM6-NEXT: mov r9, r0
8331 ; CHECK-ARM6-NEXT: ldr r3, .LCPI40_0
8332 ; CHECK-ARM6-NEXT: .LBB40_2: @ %atomicrmw.start
8333 ; CHECK-ARM6-NEXT: @ Parent Loop BB40_1 Depth=1
8334 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
8335 ; CHECK-ARM6-NEXT: ldrexd r4, r5, [r3]
8336 ; CHECK-ARM6-NEXT: cmp r4, r6
8337 ; CHECK-ARM6-NEXT: cmpeq r5, r7
8338 ; CHECK-ARM6-NEXT: bne .LBB40_4
8339 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
8340 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB40_2 Depth=2
8341 ; CHECK-ARM6-NEXT: strexd r0, r8, r9, [r3]
8342 ; CHECK-ARM6-NEXT: cmp r0, #0
8343 ; CHECK-ARM6-NEXT: bne .LBB40_2
8344 ; CHECK-ARM6-NEXT: .LBB40_4: @ %atomicrmw.start
8345 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB40_1 Depth=1
8346 ; CHECK-ARM6-NEXT: mov r0, r5
8347 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
8348 ; CHECK-ARM6-NEXT: eor r3, r0, r1
8349 ; CHECK-ARM6-NEXT: mov r1, r4
8350 ; CHECK-ARM6-NEXT: str r1, [sp, #4] @ 4-byte Spill
8351 ; CHECK-ARM6-NEXT: eor r2, r1, r2
8352 ; CHECK-ARM6-NEXT: orr r2, r2, r3
8353 ; CHECK-ARM6-NEXT: cmp r2, #0
8354 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
8355 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
8356 ; CHECK-ARM6-NEXT: bne .LBB40_1
8357 ; CHECK-ARM6-NEXT: b .LBB40_5
8358 ; CHECK-ARM6-NEXT: .LBB40_5: @ %atomicrmw.end
8359 ; CHECK-ARM6-NEXT: ldr r1, [sp] @ 4-byte Reload
8360 ; CHECK-ARM6-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
8361 ; CHECK-ARM6-NEXT: add sp, sp, #16
8362 ; CHECK-ARM6-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
8363 ; CHECK-ARM6-NEXT: .p2align 2
8364 ; CHECK-ARM6-NEXT: @ %bb.6:
8365 ; CHECK-ARM6-NEXT: .LCPI40_0:
8366 ; CHECK-ARM6-NEXT: .long atomic_i64
8605 ; CHECK-ARM6-LABEL: test_min_i64:
8606 ; CHECK-ARM6: @ %bb.0: @ %entry
8607 ; CHECK-ARM6-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
8608 ; CHECK-ARM6-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
8609 ; CHECK-ARM6-NEXT: .pad #16
8610 ; CHECK-ARM6-NEXT: sub sp, sp, #16
8611 ; CHECK-ARM6-NEXT: ldr r0, .LCPI41_0
8612 ; CHECK-ARM6-NEXT: ldr r1, [r0]
8613 ; CHECK-ARM6-NEXT: ldr r0, [r0, #4]
8614 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
8615 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
8616 ; CHECK-ARM6-NEXT: b .LBB41_1
8617 ; CHECK-ARM6-NEXT: .LBB41_1: @ %atomicrmw.start
8618 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
8619 ; CHECK-ARM6-NEXT: @ Child Loop BB41_2 Depth 2
8620 ; CHECK-ARM6-NEXT: ldr r1, [sp, #12] @ 4-byte Reload
8621 ; CHECK-ARM6-NEXT: ldr r2, [sp, #8] @ 4-byte Reload
8622 ; CHECK-ARM6-NEXT: mov r6, r2
8623 ; CHECK-ARM6-NEXT: mov r7, r1
8624 ; CHECK-ARM6-NEXT: subs r0, r2, #2
8625 ; CHECK-ARM6-NEXT: sbcs r0, r1, #0
8626 ; CHECK-ARM6-NEXT: mov r0, #0
8627 ; CHECK-ARM6-NEXT: movlt r0, #1
8628 ; CHECK-ARM6-NEXT: mov r8, #1
8629 ; CHECK-ARM6-NEXT: cmp r0, #0
8630 ; CHECK-ARM6-NEXT: movne r8, r2
8631 ; CHECK-ARM6-NEXT: cmp r0, #0
8632 ; CHECK-ARM6-NEXT: movne r0, r1
8633 ; CHECK-ARM6-NEXT: @ kill: def $r8 killed $r8 def $r8_r9
8634 ; CHECK-ARM6-NEXT: mov r9, r0
8635 ; CHECK-ARM6-NEXT: ldr r3, .LCPI41_0
8636 ; CHECK-ARM6-NEXT: .LBB41_2: @ %atomicrmw.start
8637 ; CHECK-ARM6-NEXT: @ Parent Loop BB41_1 Depth=1
8638 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
8639 ; CHECK-ARM6-NEXT: ldrexd r4, r5, [r3]
8640 ; CHECK-ARM6-NEXT: cmp r4, r6
8641 ; CHECK-ARM6-NEXT: cmpeq r5, r7
8642 ; CHECK-ARM6-NEXT: bne .LBB41_4
8643 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
8644 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB41_2 Depth=2
8645 ; CHECK-ARM6-NEXT: strexd r0, r8, r9, [r3]
8646 ; CHECK-ARM6-NEXT: cmp r0, #0
8647 ; CHECK-ARM6-NEXT: bne .LBB41_2
8648 ; CHECK-ARM6-NEXT: .LBB41_4: @ %atomicrmw.start
8649 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB41_1 Depth=1
8650 ; CHECK-ARM6-NEXT: mov r0, r5
8651 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
8652 ; CHECK-ARM6-NEXT: eor r3, r0, r1
8653 ; CHECK-ARM6-NEXT: mov r1, r4
8654 ; CHECK-ARM6-NEXT: str r1, [sp, #4] @ 4-byte Spill
8655 ; CHECK-ARM6-NEXT: eor r2, r1, r2
8656 ; CHECK-ARM6-NEXT: orr r2, r2, r3
8657 ; CHECK-ARM6-NEXT: cmp r2, #0
8658 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
8659 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
8660 ; CHECK-ARM6-NEXT: bne .LBB41_1
8661 ; CHECK-ARM6-NEXT: b .LBB41_5
8662 ; CHECK-ARM6-NEXT: .LBB41_5: @ %atomicrmw.end
8663 ; CHECK-ARM6-NEXT: ldr r1, [sp] @ 4-byte Reload
8664 ; CHECK-ARM6-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
8665 ; CHECK-ARM6-NEXT: add sp, sp, #16
8666 ; CHECK-ARM6-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
8667 ; CHECK-ARM6-NEXT: .p2align 2
8668 ; CHECK-ARM6-NEXT: @ %bb.6:
8669 ; CHECK-ARM6-NEXT: .LCPI41_0:
8670 ; CHECK-ARM6-NEXT: .long atomic_i64
8909 ; CHECK-ARM6-LABEL: test_umax_i64:
8910 ; CHECK-ARM6: @ %bb.0: @ %entry
8911 ; CHECK-ARM6-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
8912 ; CHECK-ARM6-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
8913 ; CHECK-ARM6-NEXT: .pad #16
8914 ; CHECK-ARM6-NEXT: sub sp, sp, #16
8915 ; CHECK-ARM6-NEXT: ldr r0, .LCPI42_0
8916 ; CHECK-ARM6-NEXT: ldr r1, [r0]
8917 ; CHECK-ARM6-NEXT: ldr r0, [r0, #4]
8918 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
8919 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
8920 ; CHECK-ARM6-NEXT: b .LBB42_1
8921 ; CHECK-ARM6-NEXT: .LBB42_1: @ %atomicrmw.start
8922 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
8923 ; CHECK-ARM6-NEXT: @ Child Loop BB42_2 Depth 2
8924 ; CHECK-ARM6-NEXT: ldr r1, [sp, #12] @ 4-byte Reload
8925 ; CHECK-ARM6-NEXT: ldr r2, [sp, #8] @ 4-byte Reload
8926 ; CHECK-ARM6-NEXT: mov r6, r2
8927 ; CHECK-ARM6-NEXT: mov r7, r1
8928 ; CHECK-ARM6-NEXT: rsbs r0, r2, #1
8929 ; CHECK-ARM6-NEXT: rscs r0, r1, #0
8930 ; CHECK-ARM6-NEXT: mov r0, #0
8931 ; CHECK-ARM6-NEXT: movlo r0, #1
8932 ; CHECK-ARM6-NEXT: mov r8, #1
8933 ; CHECK-ARM6-NEXT: cmp r0, #0
8934 ; CHECK-ARM6-NEXT: movne r8, r2
8935 ; CHECK-ARM6-NEXT: cmp r0, #0
8936 ; CHECK-ARM6-NEXT: movne r0, r1
8937 ; CHECK-ARM6-NEXT: @ kill: def $r8 killed $r8 def $r8_r9
8938 ; CHECK-ARM6-NEXT: mov r9, r0
8939 ; CHECK-ARM6-NEXT: ldr r3, .LCPI42_0
8940 ; CHECK-ARM6-NEXT: .LBB42_2: @ %atomicrmw.start
8941 ; CHECK-ARM6-NEXT: @ Parent Loop BB42_1 Depth=1
8942 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
8943 ; CHECK-ARM6-NEXT: ldrexd r4, r5, [r3]
8944 ; CHECK-ARM6-NEXT: cmp r4, r6
8945 ; CHECK-ARM6-NEXT: cmpeq r5, r7
8946 ; CHECK-ARM6-NEXT: bne .LBB42_4
8947 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
8948 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB42_2 Depth=2
8949 ; CHECK-ARM6-NEXT: strexd r0, r8, r9, [r3]
8950 ; CHECK-ARM6-NEXT: cmp r0, #0
8951 ; CHECK-ARM6-NEXT: bne .LBB42_2
8952 ; CHECK-ARM6-NEXT: .LBB42_4: @ %atomicrmw.start
8953 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB42_1 Depth=1
8954 ; CHECK-ARM6-NEXT: mov r0, r5
8955 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
8956 ; CHECK-ARM6-NEXT: eor r3, r0, r1
8957 ; CHECK-ARM6-NEXT: mov r1, r4
8958 ; CHECK-ARM6-NEXT: str r1, [sp, #4] @ 4-byte Spill
8959 ; CHECK-ARM6-NEXT: eor r2, r1, r2
8960 ; CHECK-ARM6-NEXT: orr r2, r2, r3
8961 ; CHECK-ARM6-NEXT: cmp r2, #0
8962 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
8963 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
8964 ; CHECK-ARM6-NEXT: bne .LBB42_1
8965 ; CHECK-ARM6-NEXT: b .LBB42_5
8966 ; CHECK-ARM6-NEXT: .LBB42_5: @ %atomicrmw.end
8967 ; CHECK-ARM6-NEXT: ldr r1, [sp] @ 4-byte Reload
8968 ; CHECK-ARM6-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
8969 ; CHECK-ARM6-NEXT: add sp, sp, #16
8970 ; CHECK-ARM6-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
8971 ; CHECK-ARM6-NEXT: .p2align 2
8972 ; CHECK-ARM6-NEXT: @ %bb.6:
8973 ; CHECK-ARM6-NEXT: .LCPI42_0:
8974 ; CHECK-ARM6-NEXT: .long atomic_i64
9213 ; CHECK-ARM6-LABEL: test_umin_i64:
9214 ; CHECK-ARM6: @ %bb.0: @ %entry
9215 ; CHECK-ARM6-NEXT: .save {r4, r5, r6, r7, r8, r9, r11, lr}
9216 ; CHECK-ARM6-NEXT: push {r4, r5, r6, r7, r8, r9, r11, lr}
9217 ; CHECK-ARM6-NEXT: .pad #16
9218 ; CHECK-ARM6-NEXT: sub sp, sp, #16
9219 ; CHECK-ARM6-NEXT: ldr r0, .LCPI43_0
9220 ; CHECK-ARM6-NEXT: ldr r1, [r0]
9221 ; CHECK-ARM6-NEXT: ldr r0, [r0, #4]
9222 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
9223 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
9224 ; CHECK-ARM6-NEXT: b .LBB43_1
9225 ; CHECK-ARM6-NEXT: .LBB43_1: @ %atomicrmw.start
9226 ; CHECK-ARM6-NEXT: @ =>This Loop Header: Depth=1
9227 ; CHECK-ARM6-NEXT: @ Child Loop BB43_2 Depth 2
9228 ; CHECK-ARM6-NEXT: ldr r1, [sp, #12] @ 4-byte Reload
9229 ; CHECK-ARM6-NEXT: ldr r2, [sp, #8] @ 4-byte Reload
9230 ; CHECK-ARM6-NEXT: mov r6, r2
9231 ; CHECK-ARM6-NEXT: mov r7, r1
9232 ; CHECK-ARM6-NEXT: subs r0, r2, #2
9233 ; CHECK-ARM6-NEXT: sbcs r0, r1, #0
9234 ; CHECK-ARM6-NEXT: mov r0, #0
9235 ; CHECK-ARM6-NEXT: movlo r0, #1
9236 ; CHECK-ARM6-NEXT: mov r8, #1
9237 ; CHECK-ARM6-NEXT: cmp r0, #0
9238 ; CHECK-ARM6-NEXT: movne r8, r2
9239 ; CHECK-ARM6-NEXT: cmp r0, #0
9240 ; CHECK-ARM6-NEXT: movne r0, r1
9241 ; CHECK-ARM6-NEXT: @ kill: def $r8 killed $r8 def $r8_r9
9242 ; CHECK-ARM6-NEXT: mov r9, r0
9243 ; CHECK-ARM6-NEXT: ldr r3, .LCPI43_0
9244 ; CHECK-ARM6-NEXT: .LBB43_2: @ %atomicrmw.start
9245 ; CHECK-ARM6-NEXT: @ Parent Loop BB43_1 Depth=1
9246 ; CHECK-ARM6-NEXT: @ => This Inner Loop Header: Depth=2
9247 ; CHECK-ARM6-NEXT: ldrexd r4, r5, [r3]
9248 ; CHECK-ARM6-NEXT: cmp r4, r6
9249 ; CHECK-ARM6-NEXT: cmpeq r5, r7
9250 ; CHECK-ARM6-NEXT: bne .LBB43_4
9251 ; CHECK-ARM6-NEXT: @ %bb.3: @ %atomicrmw.start
9252 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB43_2 Depth=2
9253 ; CHECK-ARM6-NEXT: strexd r0, r8, r9, [r3]
9254 ; CHECK-ARM6-NEXT: cmp r0, #0
9255 ; CHECK-ARM6-NEXT: bne .LBB43_2
9256 ; CHECK-ARM6-NEXT: .LBB43_4: @ %atomicrmw.start
9257 ; CHECK-ARM6-NEXT: @ in Loop: Header=BB43_1 Depth=1
9258 ; CHECK-ARM6-NEXT: mov r0, r5
9259 ; CHECK-ARM6-NEXT: str r0, [sp] @ 4-byte Spill
9260 ; CHECK-ARM6-NEXT: eor r3, r0, r1
9261 ; CHECK-ARM6-NEXT: mov r1, r4
9262 ; CHECK-ARM6-NEXT: str r1, [sp, #4] @ 4-byte Spill
9263 ; CHECK-ARM6-NEXT: eor r2, r1, r2
9264 ; CHECK-ARM6-NEXT: orr r2, r2, r3
9265 ; CHECK-ARM6-NEXT: cmp r2, #0
9266 ; CHECK-ARM6-NEXT: str r1, [sp, #8] @ 4-byte Spill
9267 ; CHECK-ARM6-NEXT: str r0, [sp, #12] @ 4-byte Spill
9268 ; CHECK-ARM6-NEXT: bne .LBB43_1
9269 ; CHECK-ARM6-NEXT: b .LBB43_5
9270 ; CHECK-ARM6-NEXT: .LBB43_5: @ %atomicrmw.end
9271 ; CHECK-ARM6-NEXT: ldr r1, [sp] @ 4-byte Reload
9272 ; CHECK-ARM6-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
9273 ; CHECK-ARM6-NEXT: add sp, sp, #16
9274 ; CHECK-ARM6-NEXT: pop {r4, r5, r6, r7, r8, r9, r11, pc}
9275 ; CHECK-ARM6-NEXT: .p2align 2
9276 ; CHECK-ARM6-NEXT: @ %bb.6:
9277 ; CHECK-ARM6-NEXT: .LCPI43_0:
9278 ; CHECK-ARM6-NEXT: .long atomic_i64