Skip to content

Commit e09ad03

Browse files
committed
Update failing tests.
1 parent 9191aed commit e09ad03

File tree

4 files changed

+117
-120
lines changed

4 files changed

+117
-120
lines changed

llvm/test/CodeGen/AArch64/atomicrmw-cond-sub-clamp.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,15 +127,15 @@ define i32 @atomicrmw_usub_sat_i32(ptr %ptr, i32 %val) {
127127
define i64 @atomicrmw_usub_sat_i64(ptr %ptr, i64 %val) {
128128
; CHECK-LABEL: atomicrmw_usub_sat_i64:
129129
; CHECK: // %bb.0:
130-
; CHECK-NEXT: mov x8, x0
131130
; CHECK-NEXT: .LBB7_1: // %atomicrmw.start
132131
; CHECK-NEXT: // =>This Inner Loop Header: Depth=1
133-
; CHECK-NEXT: ldaxr x0, [x8]
134-
; CHECK-NEXT: subs x9, x0, x1
132+
; CHECK-NEXT: ldaxr x8, [x0]
133+
; CHECK-NEXT: subs x9, x8, x1
135134
; CHECK-NEXT: csel x9, x9, xzr, hs
136-
; CHECK-NEXT: stlxr w10, x9, [x8]
135+
; CHECK-NEXT: stlxr w10, x9, [x0]
137136
; CHECK-NEXT: cbnz w10, .LBB7_1
138137
; CHECK-NEXT: // %bb.2: // %atomicrmw.end
138+
; CHECK-NEXT: mov x0, x8
139139
; CHECK-NEXT: ret
140140
%result = atomicrmw usub_sat ptr %ptr, i64 %val seq_cst
141141
ret i64 %result

llvm/test/CodeGen/LoongArch/atomicrmw-cond-sub-clamp.ll

Lines changed: 110 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,39 @@
44
define i8 @atomicrmw_usub_cond_i8(ptr %ptr, i8 %val) {
55
; LA64-LABEL: atomicrmw_usub_cond_i8:
66
; LA64: # %bb.0:
7-
; LA64-NEXT: slli.d $a4, $a0, 3
7+
; LA64-NEXT: slli.d $a3, $a0, 3
88
; LA64-NEXT: bstrins.d $a0, $zero, 1, 0
9-
; LA64-NEXT: andi $a2, $a4, 24
10-
; LA64-NEXT: ori $a5, $zero, 255
11-
; LA64-NEXT: ld.w $a3, $a0, 0
12-
; LA64-NEXT: sll.w $a4, $a5, $a4
13-
; LA64-NEXT: nor $a4, $a4, $zero
14-
; LA64-NEXT: andi $a5, $a1, 255
9+
; LA64-NEXT: andi $a2, $a3, 24
10+
; LA64-NEXT: ori $a4, $zero, 255
11+
; LA64-NEXT: ld.w $a5, $a0, 0
12+
; LA64-NEXT: sll.w $a3, $a4, $a3
13+
; LA64-NEXT: nor $a3, $a3, $zero
14+
; LA64-NEXT: andi $a4, $a1, 255
1515
; LA64-NEXT: .p2align 4, , 16
1616
; LA64-NEXT: .LBB0_1: # %atomicrmw.start
1717
; LA64-NEXT: # =>This Loop Header: Depth=1
1818
; LA64-NEXT: # Child Loop BB0_3 Depth 2
19-
; LA64-NEXT: srl.w $a6, $a3, $a2
20-
; LA64-NEXT: addi.w $a7, $a3, 0
21-
; LA64-NEXT: andi $t0, $a6, 255
22-
; LA64-NEXT: sltu $t0, $t0, $a5
23-
; LA64-NEXT: xori $t0, $t0, 1
24-
; LA64-NEXT: sub.d $a6, $a6, $a1
25-
; LA64-NEXT: maskeqz $a6, $a6, $t0
26-
; LA64-NEXT: masknez $t0, $a1, $t0
27-
; LA64-NEXT: or $a6, $a6, $t0
28-
; LA64-NEXT: andi $a6, $a6, 255
29-
; LA64-NEXT: sll.w $a6, $a6, $a2
30-
; LA64-NEXT: and $a3, $a3, $a4
31-
; LA64-NEXT: or $a6, $a3, $a6
19+
; LA64-NEXT: move $a6, $a5
20+
; LA64-NEXT: srl.w $a5, $a5, $a2
21+
; LA64-NEXT: andi $a7, $a5, 255
22+
; LA64-NEXT: sltu $a7, $a7, $a4
23+
; LA64-NEXT: xori $a7, $a7, 1
24+
; LA64-NEXT: sub.d $a5, $a5, $a1
25+
; LA64-NEXT: maskeqz $a5, $a5, $a7
26+
; LA64-NEXT: masknez $a7, $a1, $a7
27+
; LA64-NEXT: or $a5, $a5, $a7
28+
; LA64-NEXT: andi $a5, $a5, 255
29+
; LA64-NEXT: sll.w $a5, $a5, $a2
30+
; LA64-NEXT: and $a7, $a6, $a3
31+
; LA64-NEXT: or $a7, $a7, $a5
3232
; LA64-NEXT: .LBB0_3: # %atomicrmw.start
3333
; LA64-NEXT: # Parent Loop BB0_1 Depth=1
3434
; LA64-NEXT: # => This Inner Loop Header: Depth=2
35-
; LA64-NEXT: ll.w $a3, $a0, 0
36-
; LA64-NEXT: bne $a3, $a7, .LBB0_5
35+
; LA64-NEXT: ll.w $a5, $a0, 0
36+
; LA64-NEXT: bne $a5, $a6, .LBB0_5
3737
; LA64-NEXT: # %bb.4: # %atomicrmw.start
3838
; LA64-NEXT: # in Loop: Header=BB0_3 Depth=2
39-
; LA64-NEXT: move $t0, $a6
39+
; LA64-NEXT: move $t0, $a7
4040
; LA64-NEXT: sc.w $t0, $a0, 0
4141
; LA64-NEXT: beqz $t0, .LBB0_3
4242
; LA64-NEXT: b .LBB0_6
@@ -45,9 +45,9 @@ define i8 @atomicrmw_usub_cond_i8(ptr %ptr, i8 %val) {
4545
; LA64-NEXT: dbar 20
4646
; LA64-NEXT: .LBB0_6: # %atomicrmw.start
4747
; LA64-NEXT: # in Loop: Header=BB0_1 Depth=1
48-
; LA64-NEXT: bne $a3, $a7, .LBB0_1
48+
; LA64-NEXT: bne $a5, $a6, .LBB0_1
4949
; LA64-NEXT: # %bb.2: # %atomicrmw.end
50-
; LA64-NEXT: srl.w $a0, $a3, $a2
50+
; LA64-NEXT: srl.w $a0, $a5, $a2
5151
; LA64-NEXT: ret
5252
%result = atomicrmw usub_cond ptr %ptr, i8 %val seq_cst
5353
ret i8 %result
@@ -56,40 +56,40 @@ define i8 @atomicrmw_usub_cond_i8(ptr %ptr, i8 %val) {
5656
define i16 @atomicrmw_usub_cond_i16(ptr %ptr, i16 %val) {
5757
; LA64-LABEL: atomicrmw_usub_cond_i16:
5858
; LA64: # %bb.0:
59-
; LA64-NEXT: slli.d $a4, $a0, 3
59+
; LA64-NEXT: slli.d $a3, $a0, 3
6060
; LA64-NEXT: bstrins.d $a0, $zero, 1, 0
61-
; LA64-NEXT: andi $a2, $a4, 24
62-
; LA64-NEXT: lu12i.w $a3, 15
63-
; LA64-NEXT: ori $a5, $a3, 4095
64-
; LA64-NEXT: ld.w $a3, $a0, 0
65-
; LA64-NEXT: sll.w $a4, $a5, $a4
66-
; LA64-NEXT: nor $a4, $a4, $zero
67-
; LA64-NEXT: bstrpick.d $a5, $a1, 15, 0
61+
; LA64-NEXT: andi $a2, $a3, 24
62+
; LA64-NEXT: lu12i.w $a4, 15
63+
; LA64-NEXT: ori $a4, $a4, 4095
64+
; LA64-NEXT: ld.w $a5, $a0, 0
65+
; LA64-NEXT: sll.w $a3, $a4, $a3
66+
; LA64-NEXT: nor $a3, $a3, $zero
67+
; LA64-NEXT: bstrpick.d $a4, $a1, 15, 0
6868
; LA64-NEXT: .p2align 4, , 16
6969
; LA64-NEXT: .LBB1_1: # %atomicrmw.start
7070
; LA64-NEXT: # =>This Loop Header: Depth=1
7171
; LA64-NEXT: # Child Loop BB1_3 Depth 2
72-
; LA64-NEXT: srl.w $a6, $a3, $a2
73-
; LA64-NEXT: addi.w $a7, $a3, 0
74-
; LA64-NEXT: bstrpick.d $t0, $a6, 15, 0
75-
; LA64-NEXT: sltu $t0, $t0, $a5
76-
; LA64-NEXT: xori $t0, $t0, 1
77-
; LA64-NEXT: sub.d $a6, $a6, $a1
78-
; LA64-NEXT: maskeqz $a6, $a6, $t0
79-
; LA64-NEXT: masknez $t0, $a1, $t0
80-
; LA64-NEXT: or $a6, $a6, $t0
81-
; LA64-NEXT: bstrpick.d $a6, $a6, 15, 0
82-
; LA64-NEXT: sll.w $a6, $a6, $a2
83-
; LA64-NEXT: and $a3, $a3, $a4
84-
; LA64-NEXT: or $a6, $a3, $a6
72+
; LA64-NEXT: move $a6, $a5
73+
; LA64-NEXT: srl.w $a5, $a5, $a2
74+
; LA64-NEXT: bstrpick.d $a7, $a5, 15, 0
75+
; LA64-NEXT: sltu $a7, $a7, $a4
76+
; LA64-NEXT: xori $a7, $a7, 1
77+
; LA64-NEXT: sub.d $a5, $a5, $a1
78+
; LA64-NEXT: maskeqz $a5, $a5, $a7
79+
; LA64-NEXT: masknez $a7, $a1, $a7
80+
; LA64-NEXT: or $a5, $a5, $a7
81+
; LA64-NEXT: bstrpick.d $a5, $a5, 15, 0
82+
; LA64-NEXT: sll.w $a5, $a5, $a2
83+
; LA64-NEXT: and $a7, $a6, $a3
84+
; LA64-NEXT: or $a7, $a7, $a5
8585
; LA64-NEXT: .LBB1_3: # %atomicrmw.start
8686
; LA64-NEXT: # Parent Loop BB1_1 Depth=1
8787
; LA64-NEXT: # => This Inner Loop Header: Depth=2
88-
; LA64-NEXT: ll.w $a3, $a0, 0
89-
; LA64-NEXT: bne $a3, $a7, .LBB1_5
88+
; LA64-NEXT: ll.w $a5, $a0, 0
89+
; LA64-NEXT: bne $a5, $a6, .LBB1_5
9090
; LA64-NEXT: # %bb.4: # %atomicrmw.start
9191
; LA64-NEXT: # in Loop: Header=BB1_3 Depth=2
92-
; LA64-NEXT: move $t0, $a6
92+
; LA64-NEXT: move $t0, $a7
9393
; LA64-NEXT: sc.w $t0, $a0, 0
9494
; LA64-NEXT: beqz $t0, .LBB1_3
9595
; LA64-NEXT: b .LBB1_6
@@ -98,9 +98,9 @@ define i16 @atomicrmw_usub_cond_i16(ptr %ptr, i16 %val) {
9898
; LA64-NEXT: dbar 20
9999
; LA64-NEXT: .LBB1_6: # %atomicrmw.start
100100
; LA64-NEXT: # in Loop: Header=BB1_1 Depth=1
101-
; LA64-NEXT: bne $a3, $a7, .LBB1_1
101+
; LA64-NEXT: bne $a5, $a6, .LBB1_1
102102
; LA64-NEXT: # %bb.2: # %atomicrmw.end
103-
; LA64-NEXT: srl.w $a0, $a3, $a2
103+
; LA64-NEXT: srl.w $a0, $a5, $a2
104104
; LA64-NEXT: ret
105105
%result = atomicrmw usub_cond ptr %ptr, i16 %val seq_cst
106106
ret i16 %result
@@ -115,13 +115,13 @@ define i32 @atomicrmw_usub_cond_i32(ptr %ptr, i32 %val) {
115115
; LA64-NEXT: .LBB2_1: # %atomicrmw.start
116116
; LA64-NEXT: # =>This Loop Header: Depth=1
117117
; LA64-NEXT: # Child Loop BB2_3 Depth 2
118-
; LA64-NEXT: addi.w $a4, $a2, 0
119-
; LA64-NEXT: sltu $a5, $a4, $a3
120-
; LA64-NEXT: xori $a5, $a5, 1
121-
; LA64-NEXT: sub.d $a2, $a2, $a1
122-
; LA64-NEXT: maskeqz $a2, $a2, $a5
123-
; LA64-NEXT: masknez $a5, $a1, $a5
124-
; LA64-NEXT: or $a5, $a2, $a5
118+
; LA64-NEXT: move $a4, $a2
119+
; LA64-NEXT: sltu $a2, $a2, $a3
120+
; LA64-NEXT: xori $a2, $a2, 1
121+
; LA64-NEXT: sub.w $a5, $a4, $a1
122+
; LA64-NEXT: maskeqz $a5, $a5, $a2
123+
; LA64-NEXT: masknez $a2, $a1, $a2
124+
; LA64-NEXT: or $a5, $a5, $a2
125125
; LA64-NEXT: .LBB2_3: # %atomicrmw.start
126126
; LA64-NEXT: # Parent Loop BB2_1 Depth=1
127127
; LA64-NEXT: # => This Inner Loop Header: Depth=2
@@ -188,37 +188,37 @@ define i64 @atomicrmw_usub_cond_i64(ptr %ptr, i64 %val) {
188188
define i8 @atomicrmw_usub_sat_i8(ptr %ptr, i8 %val) {
189189
; LA64-LABEL: atomicrmw_usub_sat_i8:
190190
; LA64: # %bb.0:
191-
; LA64-NEXT: slli.d $a4, $a0, 3
191+
; LA64-NEXT: slli.d $a3, $a0, 3
192192
; LA64-NEXT: bstrins.d $a0, $zero, 1, 0
193-
; LA64-NEXT: andi $a2, $a4, 24
194-
; LA64-NEXT: ori $a5, $zero, 255
195-
; LA64-NEXT: ld.w $a3, $a0, 0
196-
; LA64-NEXT: sll.w $a4, $a5, $a4
197-
; LA64-NEXT: nor $a4, $a4, $zero
198-
; LA64-NEXT: andi $a5, $a1, 255
193+
; LA64-NEXT: andi $a2, $a3, 24
194+
; LA64-NEXT: ori $a4, $zero, 255
195+
; LA64-NEXT: ld.w $a5, $a0, 0
196+
; LA64-NEXT: sll.w $a3, $a4, $a3
197+
; LA64-NEXT: nor $a3, $a3, $zero
198+
; LA64-NEXT: andi $a4, $a1, 255
199199
; LA64-NEXT: .p2align 4, , 16
200200
; LA64-NEXT: .LBB4_1: # %atomicrmw.start
201201
; LA64-NEXT: # =>This Loop Header: Depth=1
202202
; LA64-NEXT: # Child Loop BB4_3 Depth 2
203-
; LA64-NEXT: srl.w $a6, $a3, $a2
204-
; LA64-NEXT: addi.w $a7, $a3, 0
205-
; LA64-NEXT: andi $t0, $a6, 255
206-
; LA64-NEXT: sltu $t0, $t0, $a5
207-
; LA64-NEXT: xori $t0, $t0, 1
208-
; LA64-NEXT: sub.d $a6, $a6, $a1
209-
; LA64-NEXT: maskeqz $a6, $a6, $t0
210-
; LA64-NEXT: andi $a6, $a6, 255
211-
; LA64-NEXT: sll.w $a6, $a6, $a2
212-
; LA64-NEXT: and $a3, $a3, $a4
213-
; LA64-NEXT: or $a6, $a3, $a6
203+
; LA64-NEXT: move $a6, $a5
204+
; LA64-NEXT: srl.w $a5, $a5, $a2
205+
; LA64-NEXT: andi $a7, $a5, 255
206+
; LA64-NEXT: sltu $a7, $a7, $a4
207+
; LA64-NEXT: xori $a7, $a7, 1
208+
; LA64-NEXT: sub.d $a5, $a5, $a1
209+
; LA64-NEXT: maskeqz $a5, $a5, $a7
210+
; LA64-NEXT: andi $a5, $a5, 255
211+
; LA64-NEXT: sll.w $a5, $a5, $a2
212+
; LA64-NEXT: and $a7, $a6, $a3
213+
; LA64-NEXT: or $a7, $a7, $a5
214214
; LA64-NEXT: .LBB4_3: # %atomicrmw.start
215215
; LA64-NEXT: # Parent Loop BB4_1 Depth=1
216216
; LA64-NEXT: # => This Inner Loop Header: Depth=2
217-
; LA64-NEXT: ll.w $a3, $a0, 0
218-
; LA64-NEXT: bne $a3, $a7, .LBB4_5
217+
; LA64-NEXT: ll.w $a5, $a0, 0
218+
; LA64-NEXT: bne $a5, $a6, .LBB4_5
219219
; LA64-NEXT: # %bb.4: # %atomicrmw.start
220220
; LA64-NEXT: # in Loop: Header=BB4_3 Depth=2
221-
; LA64-NEXT: move $t0, $a6
221+
; LA64-NEXT: move $t0, $a7
222222
; LA64-NEXT: sc.w $t0, $a0, 0
223223
; LA64-NEXT: beqz $t0, .LBB4_3
224224
; LA64-NEXT: b .LBB4_6
@@ -227,9 +227,9 @@ define i8 @atomicrmw_usub_sat_i8(ptr %ptr, i8 %val) {
227227
; LA64-NEXT: dbar 20
228228
; LA64-NEXT: .LBB4_6: # %atomicrmw.start
229229
; LA64-NEXT: # in Loop: Header=BB4_1 Depth=1
230-
; LA64-NEXT: bne $a3, $a7, .LBB4_1
230+
; LA64-NEXT: bne $a5, $a6, .LBB4_1
231231
; LA64-NEXT: # %bb.2: # %atomicrmw.end
232-
; LA64-NEXT: srl.w $a0, $a3, $a2
232+
; LA64-NEXT: srl.w $a0, $a5, $a2
233233
; LA64-NEXT: ret
234234
%result = atomicrmw usub_sat ptr %ptr, i8 %val seq_cst
235235
ret i8 %result
@@ -238,38 +238,38 @@ define i8 @atomicrmw_usub_sat_i8(ptr %ptr, i8 %val) {
238238
define i16 @atomicrmw_usub_sat_i16(ptr %ptr, i16 %val) {
239239
; LA64-LABEL: atomicrmw_usub_sat_i16:
240240
; LA64: # %bb.0:
241-
; LA64-NEXT: slli.d $a4, $a0, 3
241+
; LA64-NEXT: slli.d $a3, $a0, 3
242242
; LA64-NEXT: bstrins.d $a0, $zero, 1, 0
243-
; LA64-NEXT: andi $a2, $a4, 24
244-
; LA64-NEXT: lu12i.w $a3, 15
245-
; LA64-NEXT: ori $a5, $a3, 4095
246-
; LA64-NEXT: ld.w $a3, $a0, 0
247-
; LA64-NEXT: sll.w $a4, $a5, $a4
248-
; LA64-NEXT: nor $a4, $a4, $zero
249-
; LA64-NEXT: bstrpick.d $a5, $a1, 15, 0
243+
; LA64-NEXT: andi $a2, $a3, 24
244+
; LA64-NEXT: lu12i.w $a4, 15
245+
; LA64-NEXT: ori $a4, $a4, 4095
246+
; LA64-NEXT: ld.w $a5, $a0, 0
247+
; LA64-NEXT: sll.w $a3, $a4, $a3
248+
; LA64-NEXT: nor $a3, $a3, $zero
249+
; LA64-NEXT: bstrpick.d $a4, $a1, 15, 0
250250
; LA64-NEXT: .p2align 4, , 16
251251
; LA64-NEXT: .LBB5_1: # %atomicrmw.start
252252
; LA64-NEXT: # =>This Loop Header: Depth=1
253253
; LA64-NEXT: # Child Loop BB5_3 Depth 2
254-
; LA64-NEXT: srl.w $a6, $a3, $a2
255-
; LA64-NEXT: addi.w $a7, $a3, 0
256-
; LA64-NEXT: bstrpick.d $t0, $a6, 15, 0
257-
; LA64-NEXT: sltu $t0, $t0, $a5
258-
; LA64-NEXT: xori $t0, $t0, 1
259-
; LA64-NEXT: sub.d $a6, $a6, $a1
260-
; LA64-NEXT: maskeqz $a6, $a6, $t0
261-
; LA64-NEXT: bstrpick.d $a6, $a6, 15, 0
262-
; LA64-NEXT: sll.w $a6, $a6, $a2
263-
; LA64-NEXT: and $a3, $a3, $a4
264-
; LA64-NEXT: or $a6, $a3, $a6
254+
; LA64-NEXT: move $a6, $a5
255+
; LA64-NEXT: srl.w $a5, $a5, $a2
256+
; LA64-NEXT: bstrpick.d $a7, $a5, 15, 0
257+
; LA64-NEXT: sltu $a7, $a7, $a4
258+
; LA64-NEXT: xori $a7, $a7, 1
259+
; LA64-NEXT: sub.d $a5, $a5, $a1
260+
; LA64-NEXT: maskeqz $a5, $a5, $a7
261+
; LA64-NEXT: bstrpick.d $a5, $a5, 15, 0
262+
; LA64-NEXT: sll.w $a5, $a5, $a2
263+
; LA64-NEXT: and $a7, $a6, $a3
264+
; LA64-NEXT: or $a7, $a7, $a5
265265
; LA64-NEXT: .LBB5_3: # %atomicrmw.start
266266
; LA64-NEXT: # Parent Loop BB5_1 Depth=1
267267
; LA64-NEXT: # => This Inner Loop Header: Depth=2
268-
; LA64-NEXT: ll.w $a3, $a0, 0
269-
; LA64-NEXT: bne $a3, $a7, .LBB5_5
268+
; LA64-NEXT: ll.w $a5, $a0, 0
269+
; LA64-NEXT: bne $a5, $a6, .LBB5_5
270270
; LA64-NEXT: # %bb.4: # %atomicrmw.start
271271
; LA64-NEXT: # in Loop: Header=BB5_3 Depth=2
272-
; LA64-NEXT: move $t0, $a6
272+
; LA64-NEXT: move $t0, $a7
273273
; LA64-NEXT: sc.w $t0, $a0, 0
274274
; LA64-NEXT: beqz $t0, .LBB5_3
275275
; LA64-NEXT: b .LBB5_6
@@ -278,9 +278,9 @@ define i16 @atomicrmw_usub_sat_i16(ptr %ptr, i16 %val) {
278278
; LA64-NEXT: dbar 20
279279
; LA64-NEXT: .LBB5_6: # %atomicrmw.start
280280
; LA64-NEXT: # in Loop: Header=BB5_1 Depth=1
281-
; LA64-NEXT: bne $a3, $a7, .LBB5_1
281+
; LA64-NEXT: bne $a5, $a6, .LBB5_1
282282
; LA64-NEXT: # %bb.2: # %atomicrmw.end
283-
; LA64-NEXT: srl.w $a0, $a3, $a2
283+
; LA64-NEXT: srl.w $a0, $a5, $a2
284284
; LA64-NEXT: ret
285285
%result = atomicrmw usub_sat ptr %ptr, i16 %val seq_cst
286286
ret i16 %result
@@ -295,11 +295,11 @@ define i32 @atomicrmw_usub_sat_i32(ptr %ptr, i32 %val) {
295295
; LA64-NEXT: .LBB6_1: # %atomicrmw.start
296296
; LA64-NEXT: # =>This Loop Header: Depth=1
297297
; LA64-NEXT: # Child Loop BB6_3 Depth 2
298-
; LA64-NEXT: addi.w $a4, $a2, 0
299-
; LA64-NEXT: sltu $a5, $a4, $a3
300-
; LA64-NEXT: xori $a5, $a5, 1
301-
; LA64-NEXT: sub.d $a2, $a2, $a1
302-
; LA64-NEXT: maskeqz $a5, $a2, $a5
298+
; LA64-NEXT: move $a4, $a2
299+
; LA64-NEXT: sltu $a2, $a2, $a3
300+
; LA64-NEXT: xori $a2, $a2, 1
301+
; LA64-NEXT: sub.w $a5, $a4, $a1
302+
; LA64-NEXT: maskeqz $a5, $a5, $a2
303303
; LA64-NEXT: .LBB6_3: # %atomicrmw.start
304304
; LA64-NEXT: # Parent Loop BB6_1 Depth=1
305305
; LA64-NEXT: # => This Inner Loop Header: Depth=2

llvm/test/CodeGen/RISCV/atomicrmw-cond-sub-clamp.ll

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,6 @@ define i32 @atomicrmw_usub_cond_i32(ptr %ptr, i32 %val) {
449449
; RV32IA-NEXT: j .LBB2_2
450450
; RV32IA-NEXT: .LBB2_1: # %atomicrmw.start
451451
; RV32IA-NEXT: # in Loop: Header=BB2_2 Depth=1
452-
; RV32IA-NEXT: mv a4, a1
453452
; RV32IA-NEXT: .LBB2_5: # %atomicrmw.start
454453
; RV32IA-NEXT: # Parent Loop BB2_2 Depth=1
455454
; RV32IA-NEXT: # => This Inner Loop Header: Depth=2
@@ -534,7 +533,6 @@ define i32 @atomicrmw_usub_cond_i32(ptr %ptr, i32 %val) {
534533
; RV64IA-NEXT: j .LBB2_2
535534
; RV64IA-NEXT: .LBB2_1: # %atomicrmw.start
536535
; RV64IA-NEXT: # in Loop: Header=BB2_2 Depth=1
537-
; RV64IA-NEXT: mv a5, a1
538536
; RV64IA-NEXT: .LBB2_5: # %atomicrmw.start
539537
; RV64IA-NEXT: # Parent Loop BB2_2 Depth=1
540538
; RV64IA-NEXT: # => This Inner Loop Header: Depth=2
@@ -738,7 +736,6 @@ define i64 @atomicrmw_usub_cond_i64(ptr %ptr, i64 %val) {
738736
; RV64IA-NEXT: j .LBB3_2
739737
; RV64IA-NEXT: .LBB3_1: # %atomicrmw.start
740738
; RV64IA-NEXT: # in Loop: Header=BB3_2 Depth=1
741-
; RV64IA-NEXT: mv a4, a1
742739
; RV64IA-NEXT: .LBB3_5: # %atomicrmw.start
743740
; RV64IA-NEXT: # Parent Loop BB3_2 Depth=1
744741
; RV64IA-NEXT: # => This Inner Loop Header: Depth=2
@@ -910,7 +907,7 @@ define i8 @atomicrmw_usub_sat_i8(ptr %ptr, i8 %val) {
910907
; RV64IA-NEXT: sext.w a7, a3
911908
; RV64IA-NEXT: andi t0, a6, 255
912909
; RV64IA-NEXT: sltu t0, t0, a5
913-
; RV64IA-NEXT: sub a6, a6, a1
910+
; RV64IA-NEXT: subw a6, a6, a1
914911
; RV64IA-NEXT: addi t0, t0, -1
915912
; RV64IA-NEXT: and a6, t0, a6
916913
; RV64IA-NEXT: andi a6, a6, 255
@@ -1082,7 +1079,7 @@ define i16 @atomicrmw_usub_sat_i16(ptr %ptr, i16 %val) {
10821079
; RV64IA-NEXT: sext.w t0, a4
10831080
; RV64IA-NEXT: and t1, a7, a3
10841081
; RV64IA-NEXT: sltu t1, t1, a6
1085-
; RV64IA-NEXT: sub a7, a7, a1
1082+
; RV64IA-NEXT: subw a7, a7, a1
10861083
; RV64IA-NEXT: addi t1, t1, -1
10871084
; RV64IA-NEXT: and a7, a7, a3
10881085
; RV64IA-NEXT: and a7, t1, a7

0 commit comments

Comments
 (0)