@@ -327,50 +327,56 @@ define void @test_old_store_64bit(ptr %p, i64 %v) {
327327; ARMOPTNONE-NEXT: push {r4, r5, r7, lr}
328328; ARMOPTNONE-NEXT: add r7, sp, #8
329329; ARMOPTNONE-NEXT: push {r8, r10, r11}
330- ; ARMOPTNONE-NEXT: sub sp, sp, #20
331- ; ARMOPTNONE-NEXT: str r0, [sp] @ 4-byte Spill
332- ; ARMOPTNONE-NEXT: str r2, [sp, #4 ] @ 4-byte Spill
333- ; ARMOPTNONE-NEXT: str r1, [sp, #8 ] @ 4-byte Spill
330+ ; ARMOPTNONE-NEXT: sub sp, sp, #24
331+ ; ARMOPTNONE-NEXT: str r0, [sp, #4 ] @ 4-byte Spill
332+ ; ARMOPTNONE-NEXT: str r2, [sp, #8 ] @ 4-byte Spill
333+ ; ARMOPTNONE-NEXT: str r1, [sp, #12 ] @ 4-byte Spill
334334; ARMOPTNONE-NEXT: dmb ish
335335; ARMOPTNONE-NEXT: ldr r1, [r0]
336336; ARMOPTNONE-NEXT: ldr r0, [r0, #4]
337- ; ARMOPTNONE-NEXT: str r1, [sp, #12 ] @ 4-byte Spill
338- ; ARMOPTNONE-NEXT: str r0, [sp, #16 ] @ 4-byte Spill
337+ ; ARMOPTNONE-NEXT: str r1, [sp, #16 ] @ 4-byte Spill
338+ ; ARMOPTNONE-NEXT: str r0, [sp, #20 ] @ 4-byte Spill
339339; ARMOPTNONE-NEXT: b LBB5_1
340340; ARMOPTNONE-NEXT: LBB5_1: @ %atomicrmw.start
341341; ARMOPTNONE-NEXT: @ =>This Loop Header: Depth=1
342342; ARMOPTNONE-NEXT: @ Child Loop BB5_2 Depth 2
343- ; ARMOPTNONE-NEXT: ldr r1, [sp, #16] @ 4-byte Reload
344- ; ARMOPTNONE-NEXT: ldr r2, [sp, #12] @ 4-byte Reload
345- ; ARMOPTNONE-NEXT: ldr r3, [sp] @ 4-byte Reload
346- ; ARMOPTNONE-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
347- ; ARMOPTNONE-NEXT: ldr r10, [sp, #8] @ 4-byte Reload
348- ; ARMOPTNONE-NEXT: @ kill: def $r10 killed $r10 def $r10_r11
349- ; ARMOPTNONE-NEXT: mov r11, r0
350- ; ARMOPTNONE-NEXT: mov r8, r2
343+ ; ARMOPTNONE-NEXT: ldr r3, [sp, #20] @ 4-byte Reload
344+ ; ARMOPTNONE-NEXT: ldr r2, [sp, #16] @ 4-byte Reload
345+ ; ARMOPTNONE-NEXT: ldr r12, [sp, #8] @ 4-byte Reload
346+ ; ARMOPTNONE-NEXT: ldr r0, [sp, #12] @ 4-byte Reload
347+ ; ARMOPTNONE-NEXT: ldr r8, [sp, #4] @ 4-byte Reload
348+ ; ARMOPTNONE-NEXT: str r3, [sp] @ 4-byte Spill
349+ ; ARMOPTNONE-NEXT: @ implicit-def: $r1
350+ ; ARMOPTNONE-NEXT: @ implicit-def: $r9
351+ ; ARMOPTNONE-NEXT: @ kill: def $r8 killed $r8 def $r8_r9
351352; ARMOPTNONE-NEXT: mov r9, r1
353+ ; ARMOPTNONE-NEXT: @ kill: def $r0 killed $r0 def $r0_r1
354+ ; ARMOPTNONE-NEXT: mov r1, r12
355+ ; ARMOPTNONE-NEXT: mov r10, r2
356+ ; ARMOPTNONE-NEXT: mov r11, r3
352357; ARMOPTNONE-NEXT: LBB5_2: @ %atomicrmw.start
353358; ARMOPTNONE-NEXT: @ Parent Loop BB5_1 Depth=1
354359; ARMOPTNONE-NEXT: @ => This Inner Loop Header: Depth=2
355- ; ARMOPTNONE-NEXT: ldrexd r4, r5, [r3 ]
356- ; ARMOPTNONE-NEXT: cmp r4, r8
357- ; ARMOPTNONE-NEXT: cmpeq r5, r9
360+ ; ARMOPTNONE-NEXT: ldrexd r4, r5, [r8 ]
361+ ; ARMOPTNONE-NEXT: cmp r4, r10
362+ ; ARMOPTNONE-NEXT: cmpeq r5, r11
358363; ARMOPTNONE-NEXT: bne LBB5_4
359364; ARMOPTNONE-NEXT: @ %bb.3: @ %atomicrmw.start
360365; ARMOPTNONE-NEXT: @ in Loop: Header=BB5_2 Depth=2
361- ; ARMOPTNONE-NEXT: strexd r0, r10, r11 , [r3 ]
362- ; ARMOPTNONE-NEXT: cmp r0 , #0
366+ ; ARMOPTNONE-NEXT: strexd r9, r0, r1 , [r8 ]
367+ ; ARMOPTNONE-NEXT: cmp r9 , #0
363368; ARMOPTNONE-NEXT: bne LBB5_2
364369; ARMOPTNONE-NEXT: LBB5_4: @ %atomicrmw.start
365370; ARMOPTNONE-NEXT: @ in Loop: Header=BB5_1 Depth=1
371+ ; ARMOPTNONE-NEXT: ldr r1, [sp] @ 4-byte Reload
366372; ARMOPTNONE-NEXT: mov r0, r5
367373; ARMOPTNONE-NEXT: eor r3, r0, r1
368374; ARMOPTNONE-NEXT: mov r1, r4
369375; ARMOPTNONE-NEXT: eor r2, r1, r2
370376; ARMOPTNONE-NEXT: orr r2, r2, r3
371377; ARMOPTNONE-NEXT: cmp r2, #0
372- ; ARMOPTNONE-NEXT: str r1, [sp, #12 ] @ 4-byte Spill
373- ; ARMOPTNONE-NEXT: str r0, [sp, #16 ] @ 4-byte Spill
378+ ; ARMOPTNONE-NEXT: str r1, [sp, #16 ] @ 4-byte Spill
379+ ; ARMOPTNONE-NEXT: str r0, [sp, #20 ] @ 4-byte Spill
374380; ARMOPTNONE-NEXT: bne LBB5_1
375381; ARMOPTNONE-NEXT: b LBB5_5
376382; ARMOPTNONE-NEXT: LBB5_5: @ %atomicrmw.end
@@ -861,52 +867,58 @@ define void @store_atomic_f64__seq_cst(ptr %ptr, double %val1) {
861867; ARMOPTNONE-NEXT: push {r4, r5, r7, lr}
862868; ARMOPTNONE-NEXT: add r7, sp, #8
863869; ARMOPTNONE-NEXT: push {r8, r10, r11}
864- ; ARMOPTNONE-NEXT: sub sp, sp, #20
865- ; ARMOPTNONE-NEXT: str r0, [sp] @ 4-byte Spill
870+ ; ARMOPTNONE-NEXT: sub sp, sp, #24
871+ ; ARMOPTNONE-NEXT: str r0, [sp, #4 ] @ 4-byte Spill
866872; ARMOPTNONE-NEXT: vmov d16, r1, r2
867873; ARMOPTNONE-NEXT: vmov r1, r2, d16
868- ; ARMOPTNONE-NEXT: str r2, [sp, #4 ] @ 4-byte Spill
869- ; ARMOPTNONE-NEXT: str r1, [sp, #8 ] @ 4-byte Spill
874+ ; ARMOPTNONE-NEXT: str r2, [sp, #8 ] @ 4-byte Spill
875+ ; ARMOPTNONE-NEXT: str r1, [sp, #12 ] @ 4-byte Spill
870876; ARMOPTNONE-NEXT: dmb ish
871877; ARMOPTNONE-NEXT: ldr r1, [r0]
872878; ARMOPTNONE-NEXT: ldr r0, [r0, #4]
873- ; ARMOPTNONE-NEXT: str r1, [sp, #12 ] @ 4-byte Spill
874- ; ARMOPTNONE-NEXT: str r0, [sp, #16 ] @ 4-byte Spill
879+ ; ARMOPTNONE-NEXT: str r1, [sp, #16 ] @ 4-byte Spill
880+ ; ARMOPTNONE-NEXT: str r0, [sp, #20 ] @ 4-byte Spill
875881; ARMOPTNONE-NEXT: b LBB13_1
876882; ARMOPTNONE-NEXT: LBB13_1: @ %atomicrmw.start
877883; ARMOPTNONE-NEXT: @ =>This Loop Header: Depth=1
878884; ARMOPTNONE-NEXT: @ Child Loop BB13_2 Depth 2
879- ; ARMOPTNONE-NEXT: ldr r1, [sp, #16] @ 4-byte Reload
880- ; ARMOPTNONE-NEXT: ldr r2, [sp, #12] @ 4-byte Reload
881- ; ARMOPTNONE-NEXT: ldr r3, [sp] @ 4-byte Reload
882- ; ARMOPTNONE-NEXT: ldr r0, [sp, #4] @ 4-byte Reload
883- ; ARMOPTNONE-NEXT: ldr r10, [sp, #8] @ 4-byte Reload
884- ; ARMOPTNONE-NEXT: @ kill: def $r10 killed $r10 def $r10_r11
885- ; ARMOPTNONE-NEXT: mov r11, r0
886- ; ARMOPTNONE-NEXT: mov r8, r2
885+ ; ARMOPTNONE-NEXT: ldr r3, [sp, #20] @ 4-byte Reload
886+ ; ARMOPTNONE-NEXT: ldr r2, [sp, #16] @ 4-byte Reload
887+ ; ARMOPTNONE-NEXT: ldr r12, [sp, #8] @ 4-byte Reload
888+ ; ARMOPTNONE-NEXT: ldr r0, [sp, #12] @ 4-byte Reload
889+ ; ARMOPTNONE-NEXT: ldr r8, [sp, #4] @ 4-byte Reload
890+ ; ARMOPTNONE-NEXT: str r3, [sp] @ 4-byte Spill
891+ ; ARMOPTNONE-NEXT: @ implicit-def: $r1
892+ ; ARMOPTNONE-NEXT: @ implicit-def: $r9
893+ ; ARMOPTNONE-NEXT: @ kill: def $r8 killed $r8 def $r8_r9
887894; ARMOPTNONE-NEXT: mov r9, r1
895+ ; ARMOPTNONE-NEXT: @ kill: def $r0 killed $r0 def $r0_r1
896+ ; ARMOPTNONE-NEXT: mov r1, r12
897+ ; ARMOPTNONE-NEXT: mov r10, r2
898+ ; ARMOPTNONE-NEXT: mov r11, r3
888899; ARMOPTNONE-NEXT: LBB13_2: @ %atomicrmw.start
889900; ARMOPTNONE-NEXT: @ Parent Loop BB13_1 Depth=1
890901; ARMOPTNONE-NEXT: @ => This Inner Loop Header: Depth=2
891- ; ARMOPTNONE-NEXT: ldrexd r4, r5, [r3 ]
892- ; ARMOPTNONE-NEXT: cmp r4, r8
893- ; ARMOPTNONE-NEXT: cmpeq r5, r9
902+ ; ARMOPTNONE-NEXT: ldrexd r4, r5, [r8 ]
903+ ; ARMOPTNONE-NEXT: cmp r4, r10
904+ ; ARMOPTNONE-NEXT: cmpeq r5, r11
894905; ARMOPTNONE-NEXT: bne LBB13_4
895906; ARMOPTNONE-NEXT: @ %bb.3: @ %atomicrmw.start
896907; ARMOPTNONE-NEXT: @ in Loop: Header=BB13_2 Depth=2
897- ; ARMOPTNONE-NEXT: strexd r0, r10, r11 , [r3 ]
898- ; ARMOPTNONE-NEXT: cmp r0 , #0
908+ ; ARMOPTNONE-NEXT: strexd r9, r0, r1 , [r8 ]
909+ ; ARMOPTNONE-NEXT: cmp r9 , #0
899910; ARMOPTNONE-NEXT: bne LBB13_2
900911; ARMOPTNONE-NEXT: LBB13_4: @ %atomicrmw.start
901912; ARMOPTNONE-NEXT: @ in Loop: Header=BB13_1 Depth=1
913+ ; ARMOPTNONE-NEXT: ldr r1, [sp] @ 4-byte Reload
902914; ARMOPTNONE-NEXT: mov r0, r5
903915; ARMOPTNONE-NEXT: eor r3, r0, r1
904916; ARMOPTNONE-NEXT: mov r1, r4
905917; ARMOPTNONE-NEXT: eor r2, r1, r2
906918; ARMOPTNONE-NEXT: orr r2, r2, r3
907919; ARMOPTNONE-NEXT: cmp r2, #0
908- ; ARMOPTNONE-NEXT: str r1, [sp, #12 ] @ 4-byte Spill
909- ; ARMOPTNONE-NEXT: str r0, [sp, #16 ] @ 4-byte Spill
920+ ; ARMOPTNONE-NEXT: str r1, [sp, #16 ] @ 4-byte Spill
921+ ; ARMOPTNONE-NEXT: str r0, [sp, #20 ] @ 4-byte Spill
910922; ARMOPTNONE-NEXT: bne LBB13_1
911923; ARMOPTNONE-NEXT: b LBB13_5
912924; ARMOPTNONE-NEXT: LBB13_5: @ %atomicrmw.end
0 commit comments