|
23 | 23 | ; RUN: llc -mtriple=riscv64 -global-isel -mattr=+a,+ztso -verify-machineinstrs < %s \
|
24 | 24 | ; RUN: | FileCheck -check-prefixes=RV64IA,RV64IA-TSO-TRAILING-FENCE %s
|
25 | 25 |
|
| 26 | +; RUN: llc -mtriple=riscv32 -global-isel -mattr=+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=+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=+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=+a,+experimental-zalasr,+ztso -verify-machineinstrs < %s \ |
| 34 | +; RUN: | FileCheck -check-prefixes=RV64IA,RV64IA-ZALASR,RV64IA-ZALASR-TSO %s |
26 | 35 |
|
27 | 36 | define i8 @atomic_load_i8_unordered(ptr %a) nounwind {
|
28 | 37 | ; RV32I-LABEL: atomic_load_i8_unordered:
|
@@ -156,6 +165,26 @@ define i8 @atomic_load_i8_acquire(ptr %a) nounwind {
|
156 | 165 | ; RV64IA-TSO-TRAILING-FENCE: # %bb.0:
|
157 | 166 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: lbu a0, 0(a0)
|
158 | 167 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 168 | +; |
| 169 | +; RV32IA-ZALASR-WMO-LABEL: atomic_load_i8_acquire: |
| 170 | +; RV32IA-ZALASR-WMO: # %bb.0: |
| 171 | +; RV32IA-ZALASR-WMO-NEXT: lb.aq a0, (a0) |
| 172 | +; RV32IA-ZALASR-WMO-NEXT: ret |
| 173 | +; |
| 174 | +; RV32IA-ZALASR-TSO-LABEL: atomic_load_i8_acquire: |
| 175 | +; RV32IA-ZALASR-TSO: # %bb.0: |
| 176 | +; RV32IA-ZALASR-TSO-NEXT: lbu a0, 0(a0) |
| 177 | +; RV32IA-ZALASR-TSO-NEXT: ret |
| 178 | +; |
| 179 | +; RV64IA-ZALASR-WMO-LABEL: atomic_load_i8_acquire: |
| 180 | +; RV64IA-ZALASR-WMO: # %bb.0: |
| 181 | +; RV64IA-ZALASR-WMO-NEXT: lb.aq a0, (a0) |
| 182 | +; RV64IA-ZALASR-WMO-NEXT: ret |
| 183 | +; |
| 184 | +; RV64IA-ZALASR-TSO-LABEL: atomic_load_i8_acquire: |
| 185 | +; RV64IA-ZALASR-TSO: # %bb.0: |
| 186 | +; RV64IA-ZALASR-TSO-NEXT: lbu a0, 0(a0) |
| 187 | +; RV64IA-ZALASR-TSO-NEXT: ret |
159 | 188 | %1 = load atomic i8, ptr %a acquire, align 1
|
160 | 189 | ret i8 %1
|
161 | 190 | }
|
@@ -232,6 +261,16 @@ define i8 @atomic_load_i8_seq_cst(ptr %a) nounwind {
|
232 | 261 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: fence rw, rw
|
233 | 262 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: lbu a0, 0(a0)
|
234 | 263 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 264 | +; |
| 265 | +; RV32IA-ZALASR-LABEL: atomic_load_i8_seq_cst: |
| 266 | +; RV32IA-ZALASR: # %bb.0: |
| 267 | +; RV32IA-ZALASR-NEXT: lb.aq a0, (a0) |
| 268 | +; RV32IA-ZALASR-NEXT: ret |
| 269 | +; |
| 270 | +; RV64IA-ZALASR-LABEL: atomic_load_i8_seq_cst: |
| 271 | +; RV64IA-ZALASR: # %bb.0: |
| 272 | +; RV64IA-ZALASR-NEXT: lb.aq a0, (a0) |
| 273 | +; RV64IA-ZALASR-NEXT: ret |
235 | 274 | %1 = load atomic i8, ptr %a seq_cst, align 1
|
236 | 275 | ret i8 %1
|
237 | 276 | }
|
@@ -368,6 +407,26 @@ define i16 @atomic_load_i16_acquire(ptr %a) nounwind {
|
368 | 407 | ; RV64IA-TSO-TRAILING-FENCE: # %bb.0:
|
369 | 408 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: lh a0, 0(a0)
|
370 | 409 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 410 | +; |
| 411 | +; RV32IA-ZALASR-WMO-LABEL: atomic_load_i16_acquire: |
| 412 | +; RV32IA-ZALASR-WMO: # %bb.0: |
| 413 | +; RV32IA-ZALASR-WMO-NEXT: lh.aq a0, (a0) |
| 414 | +; RV32IA-ZALASR-WMO-NEXT: ret |
| 415 | +; |
| 416 | +; RV32IA-ZALASR-TSO-LABEL: atomic_load_i16_acquire: |
| 417 | +; RV32IA-ZALASR-TSO: # %bb.0: |
| 418 | +; RV32IA-ZALASR-TSO-NEXT: lh a0, 0(a0) |
| 419 | +; RV32IA-ZALASR-TSO-NEXT: ret |
| 420 | +; |
| 421 | +; RV64IA-ZALASR-WMO-LABEL: atomic_load_i16_acquire: |
| 422 | +; RV64IA-ZALASR-WMO: # %bb.0: |
| 423 | +; RV64IA-ZALASR-WMO-NEXT: lh.aq a0, (a0) |
| 424 | +; RV64IA-ZALASR-WMO-NEXT: ret |
| 425 | +; |
| 426 | +; RV64IA-ZALASR-TSO-LABEL: atomic_load_i16_acquire: |
| 427 | +; RV64IA-ZALASR-TSO: # %bb.0: |
| 428 | +; RV64IA-ZALASR-TSO-NEXT: lh a0, 0(a0) |
| 429 | +; RV64IA-ZALASR-TSO-NEXT: ret |
371 | 430 | %1 = load atomic i16, ptr %a acquire, align 2
|
372 | 431 | ret i16 %1
|
373 | 432 | }
|
@@ -444,6 +503,16 @@ define i16 @atomic_load_i16_seq_cst(ptr %a) nounwind {
|
444 | 503 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: fence rw, rw
|
445 | 504 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: lh a0, 0(a0)
|
446 | 505 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 506 | +; |
| 507 | +; RV32IA-ZALASR-LABEL: atomic_load_i16_seq_cst: |
| 508 | +; RV32IA-ZALASR: # %bb.0: |
| 509 | +; RV32IA-ZALASR-NEXT: lh.aq a0, (a0) |
| 510 | +; RV32IA-ZALASR-NEXT: ret |
| 511 | +; |
| 512 | +; RV64IA-ZALASR-LABEL: atomic_load_i16_seq_cst: |
| 513 | +; RV64IA-ZALASR: # %bb.0: |
| 514 | +; RV64IA-ZALASR-NEXT: lh.aq a0, (a0) |
| 515 | +; RV64IA-ZALASR-NEXT: ret |
447 | 516 | %1 = load atomic i16, ptr %a seq_cst, align 2
|
448 | 517 | ret i16 %1
|
449 | 518 | }
|
@@ -580,6 +649,26 @@ define i32 @atomic_load_i32_acquire(ptr %a) nounwind {
|
580 | 649 | ; RV64IA-TSO-TRAILING-FENCE: # %bb.0:
|
581 | 650 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: lw a0, 0(a0)
|
582 | 651 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 652 | +; |
| 653 | +; RV32IA-ZALASR-WMO-LABEL: atomic_load_i32_acquire: |
| 654 | +; RV32IA-ZALASR-WMO: # %bb.0: |
| 655 | +; RV32IA-ZALASR-WMO-NEXT: lw.aq a0, (a0) |
| 656 | +; RV32IA-ZALASR-WMO-NEXT: ret |
| 657 | +; |
| 658 | +; RV32IA-ZALASR-TSO-LABEL: atomic_load_i32_acquire: |
| 659 | +; RV32IA-ZALASR-TSO: # %bb.0: |
| 660 | +; RV32IA-ZALASR-TSO-NEXT: lw a0, 0(a0) |
| 661 | +; RV32IA-ZALASR-TSO-NEXT: ret |
| 662 | +; |
| 663 | +; RV64IA-ZALASR-WMO-LABEL: atomic_load_i32_acquire: |
| 664 | +; RV64IA-ZALASR-WMO: # %bb.0: |
| 665 | +; RV64IA-ZALASR-WMO-NEXT: lw.aq a0, (a0) |
| 666 | +; RV64IA-ZALASR-WMO-NEXT: ret |
| 667 | +; |
| 668 | +; RV64IA-ZALASR-TSO-LABEL: atomic_load_i32_acquire: |
| 669 | +; RV64IA-ZALASR-TSO: # %bb.0: |
| 670 | +; RV64IA-ZALASR-TSO-NEXT: lw a0, 0(a0) |
| 671 | +; RV64IA-ZALASR-TSO-NEXT: ret |
583 | 672 | %1 = load atomic i32, ptr %a acquire, align 4
|
584 | 673 | ret i32 %1
|
585 | 674 | }
|
@@ -656,6 +745,16 @@ define i32 @atomic_load_i32_seq_cst(ptr %a) nounwind {
|
656 | 745 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: fence rw, rw
|
657 | 746 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: lw a0, 0(a0)
|
658 | 747 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 748 | +; |
| 749 | +; RV32IA-ZALASR-LABEL: atomic_load_i32_seq_cst: |
| 750 | +; RV32IA-ZALASR: # %bb.0: |
| 751 | +; RV32IA-ZALASR-NEXT: lw.aq a0, (a0) |
| 752 | +; RV32IA-ZALASR-NEXT: ret |
| 753 | +; |
| 754 | +; RV64IA-ZALASR-LABEL: atomic_load_i32_seq_cst: |
| 755 | +; RV64IA-ZALASR: # %bb.0: |
| 756 | +; RV64IA-ZALASR-NEXT: lw.aq a0, (a0) |
| 757 | +; RV64IA-ZALASR-NEXT: ret |
659 | 758 | %1 = load atomic i32, ptr %a seq_cst, align 4
|
660 | 759 | ret i32 %1
|
661 | 760 | }
|
@@ -790,6 +889,16 @@ define i64 @atomic_load_i64_acquire(ptr %a) nounwind {
|
790 | 889 | ; RV64IA-TSO-TRAILING-FENCE: # %bb.0:
|
791 | 890 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ld a0, 0(a0)
|
792 | 891 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 892 | +; |
| 893 | +; RV64IA-ZALASR-WMO-LABEL: atomic_load_i64_acquire: |
| 894 | +; RV64IA-ZALASR-WMO: # %bb.0: |
| 895 | +; RV64IA-ZALASR-WMO-NEXT: ld.aq a0, (a0) |
| 896 | +; RV64IA-ZALASR-WMO-NEXT: ret |
| 897 | +; |
| 898 | +; RV64IA-ZALASR-TSO-LABEL: atomic_load_i64_acquire: |
| 899 | +; RV64IA-ZALASR-TSO: # %bb.0: |
| 900 | +; RV64IA-ZALASR-TSO-NEXT: ld a0, 0(a0) |
| 901 | +; RV64IA-ZALASR-TSO-NEXT: ret |
793 | 902 | %1 = load atomic i64, ptr %a acquire, align 8
|
794 | 903 | ret i64 %1
|
795 | 904 | }
|
@@ -850,6 +959,11 @@ define i64 @atomic_load_i64_seq_cst(ptr %a) nounwind {
|
850 | 959 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: fence rw, rw
|
851 | 960 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ld a0, 0(a0)
|
852 | 961 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 962 | +; |
| 963 | +; RV64IA-ZALASR-LABEL: atomic_load_i64_seq_cst: |
| 964 | +; RV64IA-ZALASR: # %bb.0: |
| 965 | +; RV64IA-ZALASR-NEXT: ld.aq a0, (a0) |
| 966 | +; RV64IA-ZALASR-NEXT: ret |
853 | 967 | %1 = load atomic i64, ptr %a seq_cst, align 8
|
854 | 968 | ret i64 %1
|
855 | 969 | }
|
@@ -986,6 +1100,26 @@ define void @atomic_store_i8_release(ptr %a, i8 %b) nounwind {
|
986 | 1100 | ; RV64IA-TSO-TRAILING-FENCE: # %bb.0:
|
987 | 1101 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: sb a1, 0(a0)
|
988 | 1102 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 1103 | +; |
| 1104 | +; RV32IA-ZALASR-WMO-LABEL: atomic_store_i8_release: |
| 1105 | +; RV32IA-ZALASR-WMO: # %bb.0: |
| 1106 | +; RV32IA-ZALASR-WMO-NEXT: sb.rl a1, (a0) |
| 1107 | +; RV32IA-ZALASR-WMO-NEXT: ret |
| 1108 | +; |
| 1109 | +; RV32IA-ZALASR-TSO-LABEL: atomic_store_i8_release: |
| 1110 | +; RV32IA-ZALASR-TSO: # %bb.0: |
| 1111 | +; RV32IA-ZALASR-TSO-NEXT: sb a1, 0(a0) |
| 1112 | +; RV32IA-ZALASR-TSO-NEXT: ret |
| 1113 | +; |
| 1114 | +; RV64IA-ZALASR-WMO-LABEL: atomic_store_i8_release: |
| 1115 | +; RV64IA-ZALASR-WMO: # %bb.0: |
| 1116 | +; RV64IA-ZALASR-WMO-NEXT: sb.rl a1, (a0) |
| 1117 | +; RV64IA-ZALASR-WMO-NEXT: ret |
| 1118 | +; |
| 1119 | +; RV64IA-ZALASR-TSO-LABEL: atomic_store_i8_release: |
| 1120 | +; RV64IA-ZALASR-TSO: # %bb.0: |
| 1121 | +; RV64IA-ZALASR-TSO-NEXT: sb a1, 0(a0) |
| 1122 | +; RV64IA-ZALASR-TSO-NEXT: ret |
989 | 1123 | store atomic i8 %b, ptr %a release, align 1
|
990 | 1124 | ret void
|
991 | 1125 | }
|
@@ -1060,6 +1194,16 @@ define void @atomic_store_i8_seq_cst(ptr %a, i8 %b) nounwind {
|
1060 | 1194 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: sb a1, 0(a0)
|
1061 | 1195 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: fence rw, rw
|
1062 | 1196 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 1197 | +; |
| 1198 | +; RV32IA-ZALASR-LABEL: atomic_store_i8_seq_cst: |
| 1199 | +; RV32IA-ZALASR: # %bb.0: |
| 1200 | +; RV32IA-ZALASR-NEXT: sb.rl a1, (a0) |
| 1201 | +; RV32IA-ZALASR-NEXT: ret |
| 1202 | +; |
| 1203 | +; RV64IA-ZALASR-LABEL: atomic_store_i8_seq_cst: |
| 1204 | +; RV64IA-ZALASR: # %bb.0: |
| 1205 | +; RV64IA-ZALASR-NEXT: sb.rl a1, (a0) |
| 1206 | +; RV64IA-ZALASR-NEXT: ret |
1063 | 1207 | store atomic i8 %b, ptr %a seq_cst, align 1
|
1064 | 1208 | ret void
|
1065 | 1209 | }
|
@@ -1196,6 +1340,26 @@ define void @atomic_store_i16_release(ptr %a, i16 %b) nounwind {
|
1196 | 1340 | ; RV64IA-TSO-TRAILING-FENCE: # %bb.0:
|
1197 | 1341 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: sh a1, 0(a0)
|
1198 | 1342 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 1343 | +; |
| 1344 | +; RV32IA-ZALASR-WMO-LABEL: atomic_store_i16_release: |
| 1345 | +; RV32IA-ZALASR-WMO: # %bb.0: |
| 1346 | +; RV32IA-ZALASR-WMO-NEXT: sh.rl a1, (a0) |
| 1347 | +; RV32IA-ZALASR-WMO-NEXT: ret |
| 1348 | +; |
| 1349 | +; RV32IA-ZALASR-TSO-LABEL: atomic_store_i16_release: |
| 1350 | +; RV32IA-ZALASR-TSO: # %bb.0: |
| 1351 | +; RV32IA-ZALASR-TSO-NEXT: sh a1, 0(a0) |
| 1352 | +; RV32IA-ZALASR-TSO-NEXT: ret |
| 1353 | +; |
| 1354 | +; RV64IA-ZALASR-WMO-LABEL: atomic_store_i16_release: |
| 1355 | +; RV64IA-ZALASR-WMO: # %bb.0: |
| 1356 | +; RV64IA-ZALASR-WMO-NEXT: sh.rl a1, (a0) |
| 1357 | +; RV64IA-ZALASR-WMO-NEXT: ret |
| 1358 | +; |
| 1359 | +; RV64IA-ZALASR-TSO-LABEL: atomic_store_i16_release: |
| 1360 | +; RV64IA-ZALASR-TSO: # %bb.0: |
| 1361 | +; RV64IA-ZALASR-TSO-NEXT: sh a1, 0(a0) |
| 1362 | +; RV64IA-ZALASR-TSO-NEXT: ret |
1199 | 1363 | store atomic i16 %b, ptr %a release, align 2
|
1200 | 1364 | ret void
|
1201 | 1365 | }
|
@@ -1270,6 +1434,16 @@ define void @atomic_store_i16_seq_cst(ptr %a, i16 %b) nounwind {
|
1270 | 1434 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: sh a1, 0(a0)
|
1271 | 1435 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: fence rw, rw
|
1272 | 1436 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 1437 | +; |
| 1438 | +; RV32IA-ZALASR-LABEL: atomic_store_i16_seq_cst: |
| 1439 | +; RV32IA-ZALASR: # %bb.0: |
| 1440 | +; RV32IA-ZALASR-NEXT: sh.rl a1, (a0) |
| 1441 | +; RV32IA-ZALASR-NEXT: ret |
| 1442 | +; |
| 1443 | +; RV64IA-ZALASR-LABEL: atomic_store_i16_seq_cst: |
| 1444 | +; RV64IA-ZALASR: # %bb.0: |
| 1445 | +; RV64IA-ZALASR-NEXT: sh.rl a1, (a0) |
| 1446 | +; RV64IA-ZALASR-NEXT: ret |
1273 | 1447 | store atomic i16 %b, ptr %a seq_cst, align 2
|
1274 | 1448 | ret void
|
1275 | 1449 | }
|
@@ -1406,6 +1580,26 @@ define void @atomic_store_i32_release(ptr %a, i32 %b) nounwind {
|
1406 | 1580 | ; RV64IA-TSO-TRAILING-FENCE: # %bb.0:
|
1407 | 1581 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: sw a1, 0(a0)
|
1408 | 1582 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 1583 | +; |
| 1584 | +; RV32IA-ZALASR-WMO-LABEL: atomic_store_i32_release: |
| 1585 | +; RV32IA-ZALASR-WMO: # %bb.0: |
| 1586 | +; RV32IA-ZALASR-WMO-NEXT: sw.rl a1, (a0) |
| 1587 | +; RV32IA-ZALASR-WMO-NEXT: ret |
| 1588 | +; |
| 1589 | +; RV32IA-ZALASR-TSO-LABEL: atomic_store_i32_release: |
| 1590 | +; RV32IA-ZALASR-TSO: # %bb.0: |
| 1591 | +; RV32IA-ZALASR-TSO-NEXT: sw a1, 0(a0) |
| 1592 | +; RV32IA-ZALASR-TSO-NEXT: ret |
| 1593 | +; |
| 1594 | +; RV64IA-ZALASR-WMO-LABEL: atomic_store_i32_release: |
| 1595 | +; RV64IA-ZALASR-WMO: # %bb.0: |
| 1596 | +; RV64IA-ZALASR-WMO-NEXT: sw.rl a1, (a0) |
| 1597 | +; RV64IA-ZALASR-WMO-NEXT: ret |
| 1598 | +; |
| 1599 | +; RV64IA-ZALASR-TSO-LABEL: atomic_store_i32_release: |
| 1600 | +; RV64IA-ZALASR-TSO: # %bb.0: |
| 1601 | +; RV64IA-ZALASR-TSO-NEXT: sw a1, 0(a0) |
| 1602 | +; RV64IA-ZALASR-TSO-NEXT: ret |
1409 | 1603 | store atomic i32 %b, ptr %a release, align 4
|
1410 | 1604 | ret void
|
1411 | 1605 | }
|
@@ -1480,6 +1674,16 @@ define void @atomic_store_i32_seq_cst(ptr %a, i32 %b) nounwind {
|
1480 | 1674 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: sw a1, 0(a0)
|
1481 | 1675 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: fence rw, rw
|
1482 | 1676 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 1677 | +; |
| 1678 | +; RV32IA-ZALASR-LABEL: atomic_store_i32_seq_cst: |
| 1679 | +; RV32IA-ZALASR: # %bb.0: |
| 1680 | +; RV32IA-ZALASR-NEXT: sw.rl a1, (a0) |
| 1681 | +; RV32IA-ZALASR-NEXT: ret |
| 1682 | +; |
| 1683 | +; RV64IA-ZALASR-LABEL: atomic_store_i32_seq_cst: |
| 1684 | +; RV64IA-ZALASR: # %bb.0: |
| 1685 | +; RV64IA-ZALASR-NEXT: sw.rl a1, (a0) |
| 1686 | +; RV64IA-ZALASR-NEXT: ret |
1483 | 1687 | store atomic i32 %b, ptr %a seq_cst, align 4
|
1484 | 1688 | ret void
|
1485 | 1689 | }
|
@@ -1614,6 +1818,16 @@ define void @atomic_store_i64_release(ptr %a, i64 %b) nounwind {
|
1614 | 1818 | ; RV64IA-TSO-TRAILING-FENCE: # %bb.0:
|
1615 | 1819 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: sd a1, 0(a0)
|
1616 | 1820 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 1821 | +; |
| 1822 | +; RV64IA-ZALASR-WMO-LABEL: atomic_store_i64_release: |
| 1823 | +; RV64IA-ZALASR-WMO: # %bb.0: |
| 1824 | +; RV64IA-ZALASR-WMO-NEXT: sd.rl a1, (a0) |
| 1825 | +; RV64IA-ZALASR-WMO-NEXT: ret |
| 1826 | +; |
| 1827 | +; RV64IA-ZALASR-TSO-LABEL: atomic_store_i64_release: |
| 1828 | +; RV64IA-ZALASR-TSO: # %bb.0: |
| 1829 | +; RV64IA-ZALASR-TSO-NEXT: sd a1, 0(a0) |
| 1830 | +; RV64IA-ZALASR-TSO-NEXT: ret |
1617 | 1831 | store atomic i64 %b, ptr %a release, align 8
|
1618 | 1832 | ret void
|
1619 | 1833 | }
|
@@ -1673,6 +1887,11 @@ define void @atomic_store_i64_seq_cst(ptr %a, i64 %b) nounwind {
|
1673 | 1887 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: sd a1, 0(a0)
|
1674 | 1888 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: fence rw, rw
|
1675 | 1889 | ; RV64IA-TSO-TRAILING-FENCE-NEXT: ret
|
| 1890 | +; |
| 1891 | +; RV64IA-ZALASR-LABEL: atomic_store_i64_seq_cst: |
| 1892 | +; RV64IA-ZALASR: # %bb.0: |
| 1893 | +; RV64IA-ZALASR-NEXT: sd.rl a1, (a0) |
| 1894 | +; RV64IA-ZALASR-NEXT: ret |
1676 | 1895 | store atomic i64 %b, ptr %a seq_cst, align 8
|
1677 | 1896 | ret void
|
1678 | 1897 | }
|
0 commit comments