[llvm] AtomicExpand: Allow incrementally legalizing atomicrmw (PR #103371)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 30 08:02:38 PDT 2024
================
@@ -128,46 +131,49 @@ define half @test_atomicrmw_fadd_f16_seq_cst_align4(ptr %ptr, half %value) #0 {
;
; SOFTFP-NOLSE-LABEL: test_atomicrmw_fadd_f16_seq_cst_align4:
; SOFTFP-NOLSE: // %bb.0:
-; SOFTFP-NOLSE-NEXT: stp x30, x23, [sp, #-48]! // 16-byte Folded Spill
+; SOFTFP-NOLSE-NEXT: str x30, [sp, #-48]! // 8-byte Folded Spill
; SOFTFP-NOLSE-NEXT: stp x20, x19, [sp, #32] // 16-byte Folded Spill
-; SOFTFP-NOLSE-NEXT: ldrh w20, [x0]
; SOFTFP-NOLSE-NEXT: mov x19, x0
+; SOFTFP-NOLSE-NEXT: ldrh w0, [x0]
+; SOFTFP-NOLSE-NEXT: mov w20, w1
; SOFTFP-NOLSE-NEXT: stp x22, x21, [sp, #16] // 16-byte Folded Spill
-; SOFTFP-NOLSE-NEXT: mov w21, w1
; SOFTFP-NOLSE-NEXT: b .LBB1_2
-; SOFTFP-NOLSE-NEXT: .LBB1_1: // %atomicrmw.start
+; SOFTFP-NOLSE-NEXT: .LBB1_1: // %cmpxchg.nostore
; SOFTFP-NOLSE-NEXT: // in Loop: Header=BB1_2 Depth=1
-; SOFTFP-NOLSE-NEXT: cmp w8, w23
-; SOFTFP-NOLSE-NEXT: mov w20, w8
-; SOFTFP-NOLSE-NEXT: b.eq .LBB1_5
+; SOFTFP-NOLSE-NEXT: mov w8, wzr
+; SOFTFP-NOLSE-NEXT: clrex
+; SOFTFP-NOLSE-NEXT: cbnz w8, .LBB1_6
----------------
arsenm wrote:
AArch64 has "-aarch64-enable-atomic-cfg-tidy", which adds an extra simplifyCFG run to clean up after this. Not sure why this isn't universal, or why the expand pass doesn't just directly call simplifyCFG on modified blocks. I vaguely recall @rovka looking into this?
https://github.com/llvm/llvm-project/pull/103371
More information about the llvm-commits
mailing list