@@ -365,6 +365,7 @@ define void @trunc_store8(ptr %p, i32 %val) {
365365; NO-ATOMIC32: @ %bb.0:
366366; NO-ATOMIC32-NEXT: .save {r7, lr}
367367; NO-ATOMIC32-NEXT: push {r7, lr}
368+ ; NO-ATOMIC32-NEXT: uxtb r1, r1
368369; NO-ATOMIC32-NEXT: movs r2, #5
369370; NO-ATOMIC32-NEXT: bl __atomic_store_1
370371; NO-ATOMIC32-NEXT: pop {r7, pc}
@@ -385,6 +386,7 @@ define i8 @trunc_rmw8(ptr %p, i32 %val) {
385386; NO-ATOMIC32: @ %bb.0:
386387; NO-ATOMIC32-NEXT: .save {r7, lr}
387388; NO-ATOMIC32-NEXT: push {r7, lr}
389+ ; NO-ATOMIC32-NEXT: uxtb r1, r1
388390; NO-ATOMIC32-NEXT: movs r2, #5
389391; NO-ATOMIC32-NEXT: bl __atomic_fetch_add_1
390392; NO-ATOMIC32-NEXT: pop {r7, pc}
@@ -411,31 +413,32 @@ define i8 @trunc_rmw8_signed(ptr %p, i32 %val) {
411413; NO-ATOMIC32-NEXT: sub sp, #8
412414; NO-ATOMIC32-NEXT: mov r4, r1
413415; NO-ATOMIC32-NEXT: mov r5, r0
414- ; NO-ATOMIC32-NEXT: ldrb r2 , [r0]
416+ ; NO-ATOMIC32-NEXT: ldrb r0 , [r0]
415417; NO-ATOMIC32-NEXT: b .LBB18_2
416418; NO-ATOMIC32-NEXT: .LBB18_1: @ %atomicrmw.start
417419; NO-ATOMIC32-NEXT: @ in Loop: Header=BB18_2 Depth=1
420+ ; NO-ATOMIC32-NEXT: uxtb r2, r0
418421; NO-ATOMIC32-NEXT: mov r0, r5
419422; NO-ATOMIC32-NEXT: bl __atomic_compare_exchange_1
420- ; NO-ATOMIC32-NEXT: ldr r2, [sp, #4]
421- ; NO-ATOMIC32-NEXT: cmp r0, #0
423+ ; NO-ATOMIC32-NEXT: mov r1, r0
424+ ; NO-ATOMIC32-NEXT: ldr r0, [sp, #4]
425+ ; NO-ATOMIC32-NEXT: cmp r1, #0
422426; NO-ATOMIC32-NEXT: bne .LBB18_4
423427; NO-ATOMIC32-NEXT: .LBB18_2: @ %atomicrmw.start
424428; NO-ATOMIC32-NEXT: @ =>This Inner Loop Header: Depth=1
425429; NO-ATOMIC32-NEXT: add r1, sp, #4
426- ; NO-ATOMIC32-NEXT: strb r2 , [r1]
430+ ; NO-ATOMIC32-NEXT: strb r0 , [r1]
427431; NO-ATOMIC32-NEXT: movs r3, #5
428432; NO-ATOMIC32-NEXT: str r3, [sp]
429- ; NO-ATOMIC32-NEXT: sxtb r0 , r4
430- ; NO-ATOMIC32-NEXT: sxtb r6, r2
431- ; NO-ATOMIC32-NEXT: cmp r6, r0
433+ ; NO-ATOMIC32-NEXT: sxtb r2 , r4
434+ ; NO-ATOMIC32-NEXT: sxtb r6, r0
435+ ; NO-ATOMIC32-NEXT: cmp r6, r2
432436; NO-ATOMIC32-NEXT: bgt .LBB18_1
433437; NO-ATOMIC32-NEXT: @ %bb.3: @ %atomicrmw.start
434438; NO-ATOMIC32-NEXT: @ in Loop: Header=BB18_2 Depth=1
435- ; NO-ATOMIC32-NEXT: mov r2 , r4
439+ ; NO-ATOMIC32-NEXT: mov r0 , r4
436440; NO-ATOMIC32-NEXT: b .LBB18_1
437441; NO-ATOMIC32-NEXT: .LBB18_4: @ %atomicrmw.end
438- ; NO-ATOMIC32-NEXT: mov r0, r2
439442; NO-ATOMIC32-NEXT: add sp, #8
440443; NO-ATOMIC32-NEXT: pop {r4, r5, r6, pc}
441444;
@@ -463,6 +466,7 @@ define i8 @trunc_cmpxchg8(ptr %p, i32 %cmp, i32 %new) {
463466; NO-ATOMIC32-NEXT: strb r1, [r4]
464467; NO-ATOMIC32-NEXT: movs r3, #5
465468; NO-ATOMIC32-NEXT: str r3, [sp]
469+ ; NO-ATOMIC32-NEXT: uxtb r2, r2
466470; NO-ATOMIC32-NEXT: mov r1, r4
467471; NO-ATOMIC32-NEXT: bl __atomic_compare_exchange_1
468472; NO-ATOMIC32-NEXT: ldr r0, [sp, #4]
@@ -489,6 +493,7 @@ define void @trunc_store16(ptr %p, i32 %val) {
489493; NO-ATOMIC32: @ %bb.0:
490494; NO-ATOMIC32-NEXT: .save {r7, lr}
491495; NO-ATOMIC32-NEXT: push {r7, lr}
496+ ; NO-ATOMIC32-NEXT: uxth r1, r1
492497; NO-ATOMIC32-NEXT: movs r2, #5
493498; NO-ATOMIC32-NEXT: bl __atomic_store_2
494499; NO-ATOMIC32-NEXT: pop {r7, pc}
@@ -509,6 +514,7 @@ define i16 @trunc_rmw16(ptr %p, i32 %val) {
509514; NO-ATOMIC32: @ %bb.0:
510515; NO-ATOMIC32-NEXT: .save {r7, lr}
511516; NO-ATOMIC32-NEXT: push {r7, lr}
517+ ; NO-ATOMIC32-NEXT: uxth r1, r1
512518; NO-ATOMIC32-NEXT: movs r2, #5
513519; NO-ATOMIC32-NEXT: bl __atomic_fetch_add_2
514520; NO-ATOMIC32-NEXT: pop {r7, pc}
@@ -535,31 +541,32 @@ define i16 @trunc_rmw16_signed(ptr %p, i32 %val) {
535541; NO-ATOMIC32-NEXT: sub sp, #8
536542; NO-ATOMIC32-NEXT: mov r4, r1
537543; NO-ATOMIC32-NEXT: mov r5, r0
538- ; NO-ATOMIC32-NEXT: ldrh r2 , [r0]
544+ ; NO-ATOMIC32-NEXT: ldrh r0 , [r0]
539545; NO-ATOMIC32-NEXT: b .LBB22_2
540546; NO-ATOMIC32-NEXT: .LBB22_1: @ %atomicrmw.start
541547; NO-ATOMIC32-NEXT: @ in Loop: Header=BB22_2 Depth=1
548+ ; NO-ATOMIC32-NEXT: uxth r2, r0
542549; NO-ATOMIC32-NEXT: mov r0, r5
543550; NO-ATOMIC32-NEXT: bl __atomic_compare_exchange_2
544- ; NO-ATOMIC32-NEXT: ldr r2, [sp, #4]
545- ; NO-ATOMIC32-NEXT: cmp r0, #0
551+ ; NO-ATOMIC32-NEXT: mov r1, r0
552+ ; NO-ATOMIC32-NEXT: ldr r0, [sp, #4]
553+ ; NO-ATOMIC32-NEXT: cmp r1, #0
546554; NO-ATOMIC32-NEXT: bne .LBB22_4
547555; NO-ATOMIC32-NEXT: .LBB22_2: @ %atomicrmw.start
548556; NO-ATOMIC32-NEXT: @ =>This Inner Loop Header: Depth=1
549557; NO-ATOMIC32-NEXT: add r1, sp, #4
550- ; NO-ATOMIC32-NEXT: strh r2 , [r1]
558+ ; NO-ATOMIC32-NEXT: strh r0 , [r1]
551559; NO-ATOMIC32-NEXT: movs r3, #5
552560; NO-ATOMIC32-NEXT: str r3, [sp]
553- ; NO-ATOMIC32-NEXT: sxth r0 , r4
554- ; NO-ATOMIC32-NEXT: sxth r6, r2
555- ; NO-ATOMIC32-NEXT: cmp r6, r0
561+ ; NO-ATOMIC32-NEXT: sxth r2 , r4
562+ ; NO-ATOMIC32-NEXT: sxth r6, r0
563+ ; NO-ATOMIC32-NEXT: cmp r6, r2
556564; NO-ATOMIC32-NEXT: bgt .LBB22_1
557565; NO-ATOMIC32-NEXT: @ %bb.3: @ %atomicrmw.start
558566; NO-ATOMIC32-NEXT: @ in Loop: Header=BB22_2 Depth=1
559- ; NO-ATOMIC32-NEXT: mov r2 , r4
567+ ; NO-ATOMIC32-NEXT: mov r0 , r4
560568; NO-ATOMIC32-NEXT: b .LBB22_1
561569; NO-ATOMIC32-NEXT: .LBB22_4: @ %atomicrmw.end
562- ; NO-ATOMIC32-NEXT: mov r0, r2
563570; NO-ATOMIC32-NEXT: add sp, #8
564571; NO-ATOMIC32-NEXT: pop {r4, r5, r6, pc}
565572;
@@ -587,6 +594,7 @@ define i16 @trunc_cmpxchg16(ptr %p, i32 %cmp, i32 %new) {
587594; NO-ATOMIC32-NEXT: strh r1, [r4]
588595; NO-ATOMIC32-NEXT: movs r3, #5
589596; NO-ATOMIC32-NEXT: str r3, [sp]
597+ ; NO-ATOMIC32-NEXT: uxth r2, r2
590598; NO-ATOMIC32-NEXT: mov r1, r4
591599; NO-ATOMIC32-NEXT: bl __atomic_compare_exchange_2
592600; NO-ATOMIC32-NEXT: ldr r0, [sp, #4]
0 commit comments