[llvm] [RISCV] Support isel for Zacas for XLen and i32. (PR #77666)
Yingwei Zheng via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 10 11:08:45 PST 2024
================
@@ -2154,17 +3306,35 @@ define void @cmpxchg_i32_monotonic_monotonic(ptr %ptr, i32 %cmp, i32 %val) nounw
; RV64I-NEXT: addi sp, sp, 16
; RV64I-NEXT: ret
;
-; RV64IA-LABEL: cmpxchg_i32_monotonic_monotonic:
-; RV64IA: # %bb.0:
-; RV64IA-NEXT: sext.w a1, a1
-; RV64IA-NEXT: .LBB20_1: # =>This Inner Loop Header: Depth=1
-; RV64IA-NEXT: lr.w a3, (a0)
-; RV64IA-NEXT: bne a3, a1, .LBB20_3
-; RV64IA-NEXT: # %bb.2: # in Loop: Header=BB20_1 Depth=1
-; RV64IA-NEXT: sc.w a4, a2, (a0)
-; RV64IA-NEXT: bnez a4, .LBB20_1
-; RV64IA-NEXT: .LBB20_3:
-; RV64IA-NEXT: ret
+; RV64IA-WMO-LABEL: cmpxchg_i32_monotonic_monotonic:
+; RV64IA-WMO: # %bb.0:
+; RV64IA-WMO-NEXT: sext.w a1, a1
+; RV64IA-WMO-NEXT: .LBB20_1: # =>This Inner Loop Header: Depth=1
+; RV64IA-WMO-NEXT: lr.w a3, (a0)
+; RV64IA-WMO-NEXT: bne a3, a1, .LBB20_3
+; RV64IA-WMO-NEXT: # %bb.2: # in Loop: Header=BB20_1 Depth=1
+; RV64IA-WMO-NEXT: sc.w a4, a2, (a0)
+; RV64IA-WMO-NEXT: bnez a4, .LBB20_1
+; RV64IA-WMO-NEXT: .LBB20_3:
+; RV64IA-WMO-NEXT: ret
+;
+; RV64IA-ZACAS-LABEL: cmpxchg_i32_monotonic_monotonic:
+; RV64IA-ZACAS: # %bb.0:
+; RV64IA-ZACAS-NEXT: sext.w a1, a1
----------------
dtcxzyw wrote:
Is the `sext.w` required? Can we mark `amocas.w` as a W user/producer?
https://github.com/llvm/llvm-project/pull/77666
More information about the llvm-commits
mailing list