Skip to content

Commit 70b2561

Browse files
committed
small change
1 parent 961c4b9 commit 70b2561

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

llvm/lib/Target/LoongArch/LoongArchExpandAtomicPseudoInsts.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,7 @@ bool LoongArchExpandAtomicPseudo::expandAtomicCmpXchg128(
654654
BuildMI(LoopHeadMBB, DL, TII->get(LoongArch::LL_D), DestLoReg)
655655
.addReg(AddrReg)
656656
.addImm(0);
657+
BuildMI(LoopHeadMBB, DL, TII->get(LoongArch::DBAR)).addImm(0b10100);
657658
BuildMI(LoopHeadMBB, DL, TII->get(LoongArch::LD_D), DestHiReg)
658659
.addReg(AddrReg)
659660
.addImm(8);

llvm/lib/TargetParser/Host.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2135,12 +2135,12 @@ const StringMap<bool> sys::getHostCPUFeatures() {
21352135
Features["div32"] = cpucfg2 & (1U << 26); // CPUCFG.2.DIV32
21362136
Features["lam-bh"] = cpucfg2 & (1U << 27); // CPUCFG.2.LAM_BH
21372137
Features["lamcas"] = cpucfg2 & (1U << 28); // CPUCFG.2.LAMCAS
2138+
Features["scq"] = cpucfg2 & (1U << 30); // CPUCFG.2.SCQLL
21382139

21392140
Features["ld-seq-sa"] = cpucfg3 & (1U << 23); // CPUCFG.3.LD_SEQ_SA
21402141

21412142
// TODO: Need to complete.
21422143
// Features["llacq-screl"] = cpucfg2 & (1U << 29); // CPUCFG.2.LLACQ_SCREL
2143-
// Features["scq"] = cpucfg2 & (1U << 30); // CPUCFG.2.SCQ
21442144
return Features;
21452145
}
21462146
#elif defined(__linux__) && defined(__riscv)

llvm/test/CodeGen/LoongArch/ir-instruction/atomic-cmpxchg-128.ll

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ define void @cmpxchg_i128_acquire_acquire(ptr %ptr, i128 %cmp, i128 %val) nounwi
2525
; LA64-SCQ: # %bb.0:
2626
; LA64-SCQ-NEXT: .LBB0_1: # =>This Inner Loop Header: Depth=1
2727
; LA64-SCQ-NEXT: ll.d $a5, $a0, 0
28+
; LA64-SCQ-NEXT: dbar 20
2829
; LA64-SCQ-NEXT: ld.d $a6, $a0, 8
2930
; LA64-SCQ-NEXT: bne $a5, $a1, .LBB0_3
3031
; LA64-SCQ-NEXT: bne $a6, $a2, .LBB0_3
@@ -63,6 +64,7 @@ define void @cmpxchg_i128_acquire_monotonic(ptr %ptr, i128 %cmp, i128 %val) noun
6364
; LA64-SCQ: # %bb.0:
6465
; LA64-SCQ-NEXT: .LBB1_1: # =>This Inner Loop Header: Depth=1
6566
; LA64-SCQ-NEXT: ll.d $a5, $a0, 0
67+
; LA64-SCQ-NEXT: dbar 20
6668
; LA64-SCQ-NEXT: ld.d $a6, $a0, 8
6769
; LA64-SCQ-NEXT: bne $a5, $a1, .LBB1_3
6870
; LA64-SCQ-NEXT: bne $a6, $a2, .LBB1_3
@@ -103,6 +105,7 @@ define i128 @cmpxchg_i128_acquire_acquire_reti128(ptr %ptr, i128 %cmp, i128 %val
103105
; LA64-SCQ: # %bb.0:
104106
; LA64-SCQ-NEXT: .LBB2_1: # =>This Inner Loop Header: Depth=1
105107
; LA64-SCQ-NEXT: ll.d $a5, $a0, 0
108+
; LA64-SCQ-NEXT: dbar 20
106109
; LA64-SCQ-NEXT: ld.d $a6, $a0, 8
107110
; LA64-SCQ-NEXT: bne $a5, $a1, .LBB2_3
108111
; LA64-SCQ-NEXT: bne $a6, $a2, .LBB2_3
@@ -144,6 +147,7 @@ define i1 @cmpxchg_i128_acquire_acquire_reti1(ptr %ptr, i128 %cmp, i128 %val) no
144147
; LA64-SCQ: # %bb.0:
145148
; LA64-SCQ-NEXT: .LBB3_1: # =>This Inner Loop Header: Depth=1
146149
; LA64-SCQ-NEXT: ll.d $a5, $a0, 0
150+
; LA64-SCQ-NEXT: dbar 20
147151
; LA64-SCQ-NEXT: ld.d $a6, $a0, 8
148152
; LA64-SCQ-NEXT: bne $a5, $a1, .LBB3_3
149153
; LA64-SCQ-NEXT: bne $a6, $a2, .LBB3_3
@@ -187,6 +191,7 @@ define void @cmpxchg_i128_monotonic_monotonic(ptr %ptr, i128 %cmp, i128 %val) no
187191
; NO-LD-SEQ-SA: # %bb.0:
188192
; NO-LD-SEQ-SA-NEXT: .LBB4_1: # =>This Inner Loop Header: Depth=1
189193
; NO-LD-SEQ-SA-NEXT: ll.d $a5, $a0, 0
194+
; NO-LD-SEQ-SA-NEXT: dbar 20
190195
; NO-LD-SEQ-SA-NEXT: ld.d $a6, $a0, 8
191196
; NO-LD-SEQ-SA-NEXT: bne $a5, $a1, .LBB4_3
192197
; NO-LD-SEQ-SA-NEXT: bne $a6, $a2, .LBB4_3
@@ -204,6 +209,7 @@ define void @cmpxchg_i128_monotonic_monotonic(ptr %ptr, i128 %cmp, i128 %val) no
204209
; LD-SEQ-SA: # %bb.0:
205210
; LD-SEQ-SA-NEXT: .LBB4_1: # =>This Inner Loop Header: Depth=1
206211
; LD-SEQ-SA-NEXT: ll.d $a5, $a0, 0
212+
; LD-SEQ-SA-NEXT: dbar 20
207213
; LD-SEQ-SA-NEXT: ld.d $a6, $a0, 8
208214
; LD-SEQ-SA-NEXT: bne $a5, $a1, .LBB4_3
209215
; LD-SEQ-SA-NEXT: bne $a6, $a2, .LBB4_3
@@ -242,6 +248,7 @@ define i128 @cmpxchg_i128_monotonic_monotonic_reti128(ptr %ptr, i128 %cmp, i128
242248
; NO-LD-SEQ-SA: # %bb.0:
243249
; NO-LD-SEQ-SA-NEXT: .LBB5_1: # =>This Inner Loop Header: Depth=1
244250
; NO-LD-SEQ-SA-NEXT: ll.d $a5, $a0, 0
251+
; NO-LD-SEQ-SA-NEXT: dbar 20
245252
; NO-LD-SEQ-SA-NEXT: ld.d $a6, $a0, 8
246253
; NO-LD-SEQ-SA-NEXT: bne $a5, $a1, .LBB5_3
247254
; NO-LD-SEQ-SA-NEXT: bne $a6, $a2, .LBB5_3
@@ -261,6 +268,7 @@ define i128 @cmpxchg_i128_monotonic_monotonic_reti128(ptr %ptr, i128 %cmp, i128
261268
; LD-SEQ-SA: # %bb.0:
262269
; LD-SEQ-SA-NEXT: .LBB5_1: # =>This Inner Loop Header: Depth=1
263270
; LD-SEQ-SA-NEXT: ll.d $a5, $a0, 0
271+
; LD-SEQ-SA-NEXT: dbar 20
264272
; LD-SEQ-SA-NEXT: ld.d $a6, $a0, 8
265273
; LD-SEQ-SA-NEXT: bne $a5, $a1, .LBB5_3
266274
; LD-SEQ-SA-NEXT: bne $a6, $a2, .LBB5_3
@@ -300,6 +308,7 @@ define i1 @cmpxchg_i128_monotonic_monotonic_reti1(ptr %ptr, i128 %cmp, i128 %val
300308
; NO-LD-SEQ-SA: # %bb.0:
301309
; NO-LD-SEQ-SA-NEXT: .LBB6_1: # =>This Inner Loop Header: Depth=1
302310
; NO-LD-SEQ-SA-NEXT: ll.d $a5, $a0, 0
311+
; NO-LD-SEQ-SA-NEXT: dbar 20
303312
; NO-LD-SEQ-SA-NEXT: ld.d $a6, $a0, 8
304313
; NO-LD-SEQ-SA-NEXT: bne $a5, $a1, .LBB6_3
305314
; NO-LD-SEQ-SA-NEXT: bne $a6, $a2, .LBB6_3
@@ -321,6 +330,7 @@ define i1 @cmpxchg_i128_monotonic_monotonic_reti1(ptr %ptr, i128 %cmp, i128 %val
321330
; LD-SEQ-SA: # %bb.0:
322331
; LD-SEQ-SA-NEXT: .LBB6_1: # =>This Inner Loop Header: Depth=1
323332
; LD-SEQ-SA-NEXT: ll.d $a5, $a0, 0
333+
; LD-SEQ-SA-NEXT: dbar 20
324334
; LD-SEQ-SA-NEXT: ld.d $a6, $a0, 8
325335
; LD-SEQ-SA-NEXT: bne $a5, $a1, .LBB6_3
326336
; LD-SEQ-SA-NEXT: bne $a6, $a2, .LBB6_3

0 commit comments

Comments
 (0)