@@ -61,8 +61,8 @@ define void @cmpxchg_i8_monotonic_monotonic(i8* %ptr, i8 %cmp, i8 %val) {
61
61
;
62
62
; RV64IA-LABEL: cmpxchg_i8_monotonic_monotonic:
63
63
; RV64IA: # %bb.0:
64
- ; RV64IA-NEXT: andi a3, a0, 3
65
- ; RV64IA-NEXT: slli a3, a3, 3
64
+ ; RV64IA-NEXT: slli a3, a0, 3
65
+ ; RV64IA-NEXT: andi a3, a3, 24
66
66
; RV64IA-NEXT: addi a4, zero, 255
67
67
; RV64IA-NEXT: sllw a4, a4, a3
68
68
; RV64IA-NEXT: andi a2, a2, 255
@@ -139,8 +139,8 @@ define void @cmpxchg_i8_acquire_monotonic(i8* %ptr, i8 %cmp, i8 %val) {
139
139
;
140
140
; RV64IA-LABEL: cmpxchg_i8_acquire_monotonic:
141
141
; RV64IA: # %bb.0:
142
- ; RV64IA-NEXT: andi a3, a0, 3
143
- ; RV64IA-NEXT: slli a3, a3, 3
142
+ ; RV64IA-NEXT: slli a3, a0, 3
143
+ ; RV64IA-NEXT: andi a3, a3, 24
144
144
; RV64IA-NEXT: addi a4, zero, 255
145
145
; RV64IA-NEXT: sllw a4, a4, a3
146
146
; RV64IA-NEXT: andi a2, a2, 255
@@ -217,8 +217,8 @@ define void @cmpxchg_i8_acquire_acquire(i8* %ptr, i8 %cmp, i8 %val) {
217
217
;
218
218
; RV64IA-LABEL: cmpxchg_i8_acquire_acquire:
219
219
; RV64IA: # %bb.0:
220
- ; RV64IA-NEXT: andi a3, a0, 3
221
- ; RV64IA-NEXT: slli a3, a3, 3
220
+ ; RV64IA-NEXT: slli a3, a0, 3
221
+ ; RV64IA-NEXT: andi a3, a3, 24
222
222
; RV64IA-NEXT: addi a4, zero, 255
223
223
; RV64IA-NEXT: sllw a4, a4, a3
224
224
; RV64IA-NEXT: andi a2, a2, 255
@@ -295,8 +295,8 @@ define void @cmpxchg_i8_release_monotonic(i8* %ptr, i8 %cmp, i8 %val) {
295
295
;
296
296
; RV64IA-LABEL: cmpxchg_i8_release_monotonic:
297
297
; RV64IA: # %bb.0:
298
- ; RV64IA-NEXT: andi a3, a0, 3
299
- ; RV64IA-NEXT: slli a3, a3, 3
298
+ ; RV64IA-NEXT: slli a3, a0, 3
299
+ ; RV64IA-NEXT: andi a3, a3, 24
300
300
; RV64IA-NEXT: addi a4, zero, 255
301
301
; RV64IA-NEXT: sllw a4, a4, a3
302
302
; RV64IA-NEXT: andi a2, a2, 255
@@ -373,8 +373,8 @@ define void @cmpxchg_i8_release_acquire(i8* %ptr, i8 %cmp, i8 %val) {
373
373
;
374
374
; RV64IA-LABEL: cmpxchg_i8_release_acquire:
375
375
; RV64IA: # %bb.0:
376
- ; RV64IA-NEXT: andi a3, a0, 3
377
- ; RV64IA-NEXT: slli a3, a3, 3
376
+ ; RV64IA-NEXT: slli a3, a0, 3
377
+ ; RV64IA-NEXT: andi a3, a3, 24
378
378
; RV64IA-NEXT: addi a4, zero, 255
379
379
; RV64IA-NEXT: sllw a4, a4, a3
380
380
; RV64IA-NEXT: andi a2, a2, 255
@@ -451,8 +451,8 @@ define void @cmpxchg_i8_acq_rel_monotonic(i8* %ptr, i8 %cmp, i8 %val) {
451
451
;
452
452
; RV64IA-LABEL: cmpxchg_i8_acq_rel_monotonic:
453
453
; RV64IA: # %bb.0:
454
- ; RV64IA-NEXT: andi a3, a0, 3
455
- ; RV64IA-NEXT: slli a3, a3, 3
454
+ ; RV64IA-NEXT: slli a3, a0, 3
455
+ ; RV64IA-NEXT: andi a3, a3, 24
456
456
; RV64IA-NEXT: addi a4, zero, 255
457
457
; RV64IA-NEXT: sllw a4, a4, a3
458
458
; RV64IA-NEXT: andi a2, a2, 255
@@ -529,8 +529,8 @@ define void @cmpxchg_i8_acq_rel_acquire(i8* %ptr, i8 %cmp, i8 %val) {
529
529
;
530
530
; RV64IA-LABEL: cmpxchg_i8_acq_rel_acquire:
531
531
; RV64IA: # %bb.0:
532
- ; RV64IA-NEXT: andi a3, a0, 3
533
- ; RV64IA-NEXT: slli a3, a3, 3
532
+ ; RV64IA-NEXT: slli a3, a0, 3
533
+ ; RV64IA-NEXT: andi a3, a3, 24
534
534
; RV64IA-NEXT: addi a4, zero, 255
535
535
; RV64IA-NEXT: sllw a4, a4, a3
536
536
; RV64IA-NEXT: andi a2, a2, 255
@@ -607,8 +607,8 @@ define void @cmpxchg_i8_seq_cst_monotonic(i8* %ptr, i8 %cmp, i8 %val) {
607
607
;
608
608
; RV64IA-LABEL: cmpxchg_i8_seq_cst_monotonic:
609
609
; RV64IA: # %bb.0:
610
- ; RV64IA-NEXT: andi a3, a0, 3
611
- ; RV64IA-NEXT: slli a3, a3, 3
610
+ ; RV64IA-NEXT: slli a3, a0, 3
611
+ ; RV64IA-NEXT: andi a3, a3, 24
612
612
; RV64IA-NEXT: addi a4, zero, 255
613
613
; RV64IA-NEXT: sllw a4, a4, a3
614
614
; RV64IA-NEXT: andi a2, a2, 255
@@ -685,8 +685,8 @@ define void @cmpxchg_i8_seq_cst_acquire(i8* %ptr, i8 %cmp, i8 %val) {
685
685
;
686
686
; RV64IA-LABEL: cmpxchg_i8_seq_cst_acquire:
687
687
; RV64IA: # %bb.0:
688
- ; RV64IA-NEXT: andi a3, a0, 3
689
- ; RV64IA-NEXT: slli a3, a3, 3
688
+ ; RV64IA-NEXT: slli a3, a0, 3
689
+ ; RV64IA-NEXT: andi a3, a3, 24
690
690
; RV64IA-NEXT: addi a4, zero, 255
691
691
; RV64IA-NEXT: sllw a4, a4, a3
692
692
; RV64IA-NEXT: andi a2, a2, 255
@@ -763,8 +763,8 @@ define void @cmpxchg_i8_seq_cst_seq_cst(i8* %ptr, i8 %cmp, i8 %val) {
763
763
;
764
764
; RV64IA-LABEL: cmpxchg_i8_seq_cst_seq_cst:
765
765
; RV64IA: # %bb.0:
766
- ; RV64IA-NEXT: andi a3, a0, 3
767
- ; RV64IA-NEXT: slli a3, a3, 3
766
+ ; RV64IA-NEXT: slli a3, a0, 3
767
+ ; RV64IA-NEXT: andi a3, a3, 24
768
768
; RV64IA-NEXT: addi a4, zero, 255
769
769
; RV64IA-NEXT: sllw a4, a4, a3
770
770
; RV64IA-NEXT: andi a2, a2, 255
@@ -846,8 +846,8 @@ define void @cmpxchg_i16_monotonic_monotonic(i16* %ptr, i16 %cmp, i16 %val) {
846
846
; RV64IA-NEXT: addiw a3, a3, -1
847
847
; RV64IA-NEXT: and a1, a1, a3
848
848
; RV64IA-NEXT: and a2, a2, a3
849
- ; RV64IA-NEXT: andi a4, a0, 3
850
- ; RV64IA-NEXT: slli a4, a4, 3
849
+ ; RV64IA-NEXT: slli a4, a0, 3
850
+ ; RV64IA-NEXT: andi a4, a4, 24
851
851
; RV64IA-NEXT: sllw a3, a3, a4
852
852
; RV64IA-NEXT: sllw a2, a2, a4
853
853
; RV64IA-NEXT: sllw a1, a1, a4
@@ -926,8 +926,8 @@ define void @cmpxchg_i16_acquire_monotonic(i16* %ptr, i16 %cmp, i16 %val) {
926
926
; RV64IA-NEXT: addiw a3, a3, -1
927
927
; RV64IA-NEXT: and a1, a1, a3
928
928
; RV64IA-NEXT: and a2, a2, a3
929
- ; RV64IA-NEXT: andi a4, a0, 3
930
- ; RV64IA-NEXT: slli a4, a4, 3
929
+ ; RV64IA-NEXT: slli a4, a0, 3
930
+ ; RV64IA-NEXT: andi a4, a4, 24
931
931
; RV64IA-NEXT: sllw a3, a3, a4
932
932
; RV64IA-NEXT: sllw a2, a2, a4
933
933
; RV64IA-NEXT: sllw a1, a1, a4
@@ -1006,8 +1006,8 @@ define void @cmpxchg_i16_acquire_acquire(i16* %ptr, i16 %cmp, i16 %val) {
1006
1006
; RV64IA-NEXT: addiw a3, a3, -1
1007
1007
; RV64IA-NEXT: and a1, a1, a3
1008
1008
; RV64IA-NEXT: and a2, a2, a3
1009
- ; RV64IA-NEXT: andi a4, a0, 3
1010
- ; RV64IA-NEXT: slli a4, a4, 3
1009
+ ; RV64IA-NEXT: slli a4, a0, 3
1010
+ ; RV64IA-NEXT: andi a4, a4, 24
1011
1011
; RV64IA-NEXT: sllw a3, a3, a4
1012
1012
; RV64IA-NEXT: sllw a2, a2, a4
1013
1013
; RV64IA-NEXT: sllw a1, a1, a4
@@ -1086,8 +1086,8 @@ define void @cmpxchg_i16_release_monotonic(i16* %ptr, i16 %cmp, i16 %val) {
1086
1086
; RV64IA-NEXT: addiw a3, a3, -1
1087
1087
; RV64IA-NEXT: and a1, a1, a3
1088
1088
; RV64IA-NEXT: and a2, a2, a3
1089
- ; RV64IA-NEXT: andi a4, a0, 3
1090
- ; RV64IA-NEXT: slli a4, a4, 3
1089
+ ; RV64IA-NEXT: slli a4, a0, 3
1090
+ ; RV64IA-NEXT: andi a4, a4, 24
1091
1091
; RV64IA-NEXT: sllw a3, a3, a4
1092
1092
; RV64IA-NEXT: sllw a2, a2, a4
1093
1093
; RV64IA-NEXT: sllw a1, a1, a4
@@ -1166,8 +1166,8 @@ define void @cmpxchg_i16_release_acquire(i16* %ptr, i16 %cmp, i16 %val) {
1166
1166
; RV64IA-NEXT: addiw a3, a3, -1
1167
1167
; RV64IA-NEXT: and a1, a1, a3
1168
1168
; RV64IA-NEXT: and a2, a2, a3
1169
- ; RV64IA-NEXT: andi a4, a0, 3
1170
- ; RV64IA-NEXT: slli a4, a4, 3
1169
+ ; RV64IA-NEXT: slli a4, a0, 3
1170
+ ; RV64IA-NEXT: andi a4, a4, 24
1171
1171
; RV64IA-NEXT: sllw a3, a3, a4
1172
1172
; RV64IA-NEXT: sllw a2, a2, a4
1173
1173
; RV64IA-NEXT: sllw a1, a1, a4
@@ -1246,8 +1246,8 @@ define void @cmpxchg_i16_acq_rel_monotonic(i16* %ptr, i16 %cmp, i16 %val) {
1246
1246
; RV64IA-NEXT: addiw a3, a3, -1
1247
1247
; RV64IA-NEXT: and a1, a1, a3
1248
1248
; RV64IA-NEXT: and a2, a2, a3
1249
- ; RV64IA-NEXT: andi a4, a0, 3
1250
- ; RV64IA-NEXT: slli a4, a4, 3
1249
+ ; RV64IA-NEXT: slli a4, a0, 3
1250
+ ; RV64IA-NEXT: andi a4, a4, 24
1251
1251
; RV64IA-NEXT: sllw a3, a3, a4
1252
1252
; RV64IA-NEXT: sllw a2, a2, a4
1253
1253
; RV64IA-NEXT: sllw a1, a1, a4
@@ -1326,8 +1326,8 @@ define void @cmpxchg_i16_acq_rel_acquire(i16* %ptr, i16 %cmp, i16 %val) {
1326
1326
; RV64IA-NEXT: addiw a3, a3, -1
1327
1327
; RV64IA-NEXT: and a1, a1, a3
1328
1328
; RV64IA-NEXT: and a2, a2, a3
1329
- ; RV64IA-NEXT: andi a4, a0, 3
1330
- ; RV64IA-NEXT: slli a4, a4, 3
1329
+ ; RV64IA-NEXT: slli a4, a0, 3
1330
+ ; RV64IA-NEXT: andi a4, a4, 24
1331
1331
; RV64IA-NEXT: sllw a3, a3, a4
1332
1332
; RV64IA-NEXT: sllw a2, a2, a4
1333
1333
; RV64IA-NEXT: sllw a1, a1, a4
@@ -1406,8 +1406,8 @@ define void @cmpxchg_i16_seq_cst_monotonic(i16* %ptr, i16 %cmp, i16 %val) {
1406
1406
; RV64IA-NEXT: addiw a3, a3, -1
1407
1407
; RV64IA-NEXT: and a1, a1, a3
1408
1408
; RV64IA-NEXT: and a2, a2, a3
1409
- ; RV64IA-NEXT: andi a4, a0, 3
1410
- ; RV64IA-NEXT: slli a4, a4, 3
1409
+ ; RV64IA-NEXT: slli a4, a0, 3
1410
+ ; RV64IA-NEXT: andi a4, a4, 24
1411
1411
; RV64IA-NEXT: sllw a3, a3, a4
1412
1412
; RV64IA-NEXT: sllw a2, a2, a4
1413
1413
; RV64IA-NEXT: sllw a1, a1, a4
@@ -1486,8 +1486,8 @@ define void @cmpxchg_i16_seq_cst_acquire(i16* %ptr, i16 %cmp, i16 %val) {
1486
1486
; RV64IA-NEXT: addiw a3, a3, -1
1487
1487
; RV64IA-NEXT: and a1, a1, a3
1488
1488
; RV64IA-NEXT: and a2, a2, a3
1489
- ; RV64IA-NEXT: andi a4, a0, 3
1490
- ; RV64IA-NEXT: slli a4, a4, 3
1489
+ ; RV64IA-NEXT: slli a4, a0, 3
1490
+ ; RV64IA-NEXT: andi a4, a4, 24
1491
1491
; RV64IA-NEXT: sllw a3, a3, a4
1492
1492
; RV64IA-NEXT: sllw a2, a2, a4
1493
1493
; RV64IA-NEXT: sllw a1, a1, a4
@@ -1566,8 +1566,8 @@ define void @cmpxchg_i16_seq_cst_seq_cst(i16* %ptr, i16 %cmp, i16 %val) {
1566
1566
; RV64IA-NEXT: addiw a3, a3, -1
1567
1567
; RV64IA-NEXT: and a1, a1, a3
1568
1568
; RV64IA-NEXT: and a2, a2, a3
1569
- ; RV64IA-NEXT: andi a4, a0, 3
1570
- ; RV64IA-NEXT: slli a4, a4, 3
1569
+ ; RV64IA-NEXT: slli a4, a0, 3
1570
+ ; RV64IA-NEXT: andi a4, a4, 24
1571
1571
; RV64IA-NEXT: sllw a3, a3, a4
1572
1572
; RV64IA-NEXT: sllw a2, a2, a4
1573
1573
; RV64IA-NEXT: sllw a1, a1, a4
0 commit comments