Skip to content

Commit 768f438

Browse files
authored
[RISCV][GISel] Add Zalasr RUN lines to atomic-load-store-fp.ll. NFC (#162204)
After #161774 and #162042, this works correctly.
1 parent ca1a1f4 commit 768f438

File tree

1 file changed

+118
-0
lines changed

1 file changed

+118
-0
lines changed

llvm/test/CodeGen/RISCV/GlobalISel/atomic-load-store-fp.ll

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,16 @@
2323
; RUN: llc -mtriple=riscv64 -global-isel -mattr=+d,+a,+ztso -verify-machineinstrs < %s \
2424
; RUN: | FileCheck -check-prefixes=RV64IA,RV64IA-TSO-TRAILING-FENCE %s
2525

26+
; RUN: llc -mtriple=riscv32 -global-isel -mattr=+d,+a,+experimental-zalasr -verify-machineinstrs < %s \
27+
; RUN: | FileCheck -check-prefixes=RV32IA,RV32IA-ZALASR,RV32IA-ZALASR-WMO %s
28+
; RUN: llc -mtriple=riscv32 -global-isel -mattr=+d,+a,+experimental-zalasr,+ztso -verify-machineinstrs < %s \
29+
; RUN: | FileCheck -check-prefixes=RV32IA,RV32IA-ZALASR,RV32IA-ZALASR-TSO %s
30+
31+
; RUN: llc -mtriple=riscv64 -global-isel -mattr=+d,+a,+experimental-zalasr -verify-machineinstrs < %s \
32+
; RUN: | FileCheck -check-prefixes=RV64IA,RV64IA-ZALASR,RV64IA-ZALASR-WMO %s
33+
; RUN: llc -mtriple=riscv64 -global-isel -mattr=+d,+a,+experimental-zalasr,+ztso -verify-machineinstrs < %s \
34+
; RUN: | FileCheck -check-prefixes=RV64IA,RV64IA-ZALASR,RV64IA-ZALASR-TSO %s
35+
2636

2737
define float @atomic_load_f32_unordered(ptr %a) nounwind {
2838
; RV32I-LABEL: atomic_load_f32_unordered:
@@ -171,6 +181,30 @@ define float @atomic_load_f32_acquire(ptr %a) nounwind {
171181
; RV64IA-TSO-TRAILING-FENCE-NEXT: lw a0, 0(a0)
172182
; RV64IA-TSO-TRAILING-FENCE-NEXT: fmv.w.x fa0, a0
173183
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
184+
;
185+
; RV32IA-ZALASR-WMO-LABEL: atomic_load_f32_acquire:
186+
; RV32IA-ZALASR-WMO: # %bb.0:
187+
; RV32IA-ZALASR-WMO-NEXT: lw.aq a0, (a0)
188+
; RV32IA-ZALASR-WMO-NEXT: fmv.w.x fa0, a0
189+
; RV32IA-ZALASR-WMO-NEXT: ret
190+
;
191+
; RV32IA-ZALASR-TSO-LABEL: atomic_load_f32_acquire:
192+
; RV32IA-ZALASR-TSO: # %bb.0:
193+
; RV32IA-ZALASR-TSO-NEXT: lw a0, 0(a0)
194+
; RV32IA-ZALASR-TSO-NEXT: fmv.w.x fa0, a0
195+
; RV32IA-ZALASR-TSO-NEXT: ret
196+
;
197+
; RV64IA-ZALASR-WMO-LABEL: atomic_load_f32_acquire:
198+
; RV64IA-ZALASR-WMO: # %bb.0:
199+
; RV64IA-ZALASR-WMO-NEXT: lw.aq a0, (a0)
200+
; RV64IA-ZALASR-WMO-NEXT: fmv.w.x fa0, a0
201+
; RV64IA-ZALASR-WMO-NEXT: ret
202+
;
203+
; RV64IA-ZALASR-TSO-LABEL: atomic_load_f32_acquire:
204+
; RV64IA-ZALASR-TSO: # %bb.0:
205+
; RV64IA-ZALASR-TSO-NEXT: lw a0, 0(a0)
206+
; RV64IA-ZALASR-TSO-NEXT: fmv.w.x fa0, a0
207+
; RV64IA-ZALASR-TSO-NEXT: ret
174208
%1 = load atomic float, ptr %a acquire, align 4
175209
ret float %1
176210
}
@@ -256,6 +290,18 @@ define float @atomic_load_f32_seq_cst(ptr %a) nounwind {
256290
; RV64IA-TSO-TRAILING-FENCE-NEXT: lw a0, 0(a0)
257291
; RV64IA-TSO-TRAILING-FENCE-NEXT: fmv.w.x fa0, a0
258292
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
293+
;
294+
; RV32IA-ZALASR-LABEL: atomic_load_f32_seq_cst:
295+
; RV32IA-ZALASR: # %bb.0:
296+
; RV32IA-ZALASR-NEXT: lw.aq a0, (a0)
297+
; RV32IA-ZALASR-NEXT: fmv.w.x fa0, a0
298+
; RV32IA-ZALASR-NEXT: ret
299+
;
300+
; RV64IA-ZALASR-LABEL: atomic_load_f32_seq_cst:
301+
; RV64IA-ZALASR: # %bb.0:
302+
; RV64IA-ZALASR-NEXT: lw.aq a0, (a0)
303+
; RV64IA-ZALASR-NEXT: fmv.w.x fa0, a0
304+
; RV64IA-ZALASR-NEXT: ret
259305
%1 = load atomic float, ptr %a seq_cst, align 4
260306
ret float %1
261307
}
@@ -414,6 +460,18 @@ define double @atomic_load_f64_acquire(ptr %a) nounwind {
414460
; RV64IA-TSO-TRAILING-FENCE-NEXT: ld a0, 0(a0)
415461
; RV64IA-TSO-TRAILING-FENCE-NEXT: fmv.d.x fa0, a0
416462
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
463+
;
464+
; RV64IA-ZALASR-WMO-LABEL: atomic_load_f64_acquire:
465+
; RV64IA-ZALASR-WMO: # %bb.0:
466+
; RV64IA-ZALASR-WMO-NEXT: ld.aq a0, (a0)
467+
; RV64IA-ZALASR-WMO-NEXT: fmv.d.x fa0, a0
468+
; RV64IA-ZALASR-WMO-NEXT: ret
469+
;
470+
; RV64IA-ZALASR-TSO-LABEL: atomic_load_f64_acquire:
471+
; RV64IA-ZALASR-TSO: # %bb.0:
472+
; RV64IA-ZALASR-TSO-NEXT: ld a0, 0(a0)
473+
; RV64IA-ZALASR-TSO-NEXT: fmv.d.x fa0, a0
474+
; RV64IA-ZALASR-TSO-NEXT: ret
417475
%1 = load atomic double, ptr %a acquire, align 8
418476
ret double %1
419477
}
@@ -484,6 +542,12 @@ define double @atomic_load_f64_seq_cst(ptr %a) nounwind {
484542
; RV64IA-TSO-TRAILING-FENCE-NEXT: ld a0, 0(a0)
485543
; RV64IA-TSO-TRAILING-FENCE-NEXT: fmv.d.x fa0, a0
486544
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
545+
;
546+
; RV64IA-ZALASR-LABEL: atomic_load_f64_seq_cst:
547+
; RV64IA-ZALASR: # %bb.0:
548+
; RV64IA-ZALASR-NEXT: ld.aq a0, (a0)
549+
; RV64IA-ZALASR-NEXT: fmv.d.x fa0, a0
550+
; RV64IA-ZALASR-NEXT: ret
487551
%1 = load atomic double, ptr %a seq_cst, align 8
488552
ret double %1
489553
}
@@ -635,6 +699,30 @@ define void @atomic_store_f32_release(ptr %a, float %b) nounwind {
635699
; RV64IA-TSO-TRAILING-FENCE-NEXT: fmv.x.w a1, fa0
636700
; RV64IA-TSO-TRAILING-FENCE-NEXT: sw a1, 0(a0)
637701
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
702+
;
703+
; RV32IA-ZALASR-WMO-LABEL: atomic_store_f32_release:
704+
; RV32IA-ZALASR-WMO: # %bb.0:
705+
; RV32IA-ZALASR-WMO-NEXT: fmv.x.w a1, fa0
706+
; RV32IA-ZALASR-WMO-NEXT: sw.rl a1, (a0)
707+
; RV32IA-ZALASR-WMO-NEXT: ret
708+
;
709+
; RV32IA-ZALASR-TSO-LABEL: atomic_store_f32_release:
710+
; RV32IA-ZALASR-TSO: # %bb.0:
711+
; RV32IA-ZALASR-TSO-NEXT: fmv.x.w a1, fa0
712+
; RV32IA-ZALASR-TSO-NEXT: sw a1, 0(a0)
713+
; RV32IA-ZALASR-TSO-NEXT: ret
714+
;
715+
; RV64IA-ZALASR-WMO-LABEL: atomic_store_f32_release:
716+
; RV64IA-ZALASR-WMO: # %bb.0:
717+
; RV64IA-ZALASR-WMO-NEXT: fmv.x.w a1, fa0
718+
; RV64IA-ZALASR-WMO-NEXT: sw.rl a1, (a0)
719+
; RV64IA-ZALASR-WMO-NEXT: ret
720+
;
721+
; RV64IA-ZALASR-TSO-LABEL: atomic_store_f32_release:
722+
; RV64IA-ZALASR-TSO: # %bb.0:
723+
; RV64IA-ZALASR-TSO-NEXT: fmv.x.w a1, fa0
724+
; RV64IA-ZALASR-TSO-NEXT: sw a1, 0(a0)
725+
; RV64IA-ZALASR-TSO-NEXT: ret
638726
store atomic float %b, ptr %a release, align 4
639727
ret void
640728
}
@@ -718,6 +806,18 @@ define void @atomic_store_f32_seq_cst(ptr %a, float %b) nounwind {
718806
; RV64IA-TSO-TRAILING-FENCE-NEXT: sw a1, 0(a0)
719807
; RV64IA-TSO-TRAILING-FENCE-NEXT: fence rw, rw
720808
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
809+
;
810+
; RV32IA-ZALASR-LABEL: atomic_store_f32_seq_cst:
811+
; RV32IA-ZALASR: # %bb.0:
812+
; RV32IA-ZALASR-NEXT: fmv.x.w a1, fa0
813+
; RV32IA-ZALASR-NEXT: sw.rl a1, (a0)
814+
; RV32IA-ZALASR-NEXT: ret
815+
;
816+
; RV64IA-ZALASR-LABEL: atomic_store_f32_seq_cst:
817+
; RV64IA-ZALASR: # %bb.0:
818+
; RV64IA-ZALASR-NEXT: fmv.x.w a1, fa0
819+
; RV64IA-ZALASR-NEXT: sw.rl a1, (a0)
820+
; RV64IA-ZALASR-NEXT: ret
721821
store atomic float %b, ptr %a seq_cst, align 4
722822
ret void
723823
}
@@ -876,6 +976,18 @@ define void @atomic_store_f64_release(ptr %a, double %b) nounwind {
876976
; RV64IA-TSO-TRAILING-FENCE-NEXT: fmv.x.d a1, fa0
877977
; RV64IA-TSO-TRAILING-FENCE-NEXT: sd a1, 0(a0)
878978
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
979+
;
980+
; RV64IA-ZALASR-WMO-LABEL: atomic_store_f64_release:
981+
; RV64IA-ZALASR-WMO: # %bb.0:
982+
; RV64IA-ZALASR-WMO-NEXT: fmv.x.d a1, fa0
983+
; RV64IA-ZALASR-WMO-NEXT: sd.rl a1, (a0)
984+
; RV64IA-ZALASR-WMO-NEXT: ret
985+
;
986+
; RV64IA-ZALASR-TSO-LABEL: atomic_store_f64_release:
987+
; RV64IA-ZALASR-TSO: # %bb.0:
988+
; RV64IA-ZALASR-TSO-NEXT: fmv.x.d a1, fa0
989+
; RV64IA-ZALASR-TSO-NEXT: sd a1, 0(a0)
990+
; RV64IA-ZALASR-TSO-NEXT: ret
879991
store atomic double %b, ptr %a release, align 8
880992
ret void
881993
}
@@ -945,6 +1057,12 @@ define void @atomic_store_f64_seq_cst(ptr %a, double %b) nounwind {
9451057
; RV64IA-TSO-TRAILING-FENCE-NEXT: sd a1, 0(a0)
9461058
; RV64IA-TSO-TRAILING-FENCE-NEXT: fence rw, rw
9471059
; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
1060+
;
1061+
; RV64IA-ZALASR-LABEL: atomic_store_f64_seq_cst:
1062+
; RV64IA-ZALASR: # %bb.0:
1063+
; RV64IA-ZALASR-NEXT: fmv.x.d a1, fa0
1064+
; RV64IA-ZALASR-NEXT: sd.rl a1, (a0)
1065+
; RV64IA-ZALASR-NEXT: ret
9481066
store atomic double %b, ptr %a seq_cst, align 8
9491067
ret void
9501068
}

0 commit comments

Comments
 (0)