@@ -119,7 +119,8 @@ define i32 @atomicrmw_xchg_i32_acquire(ptr %a, i32 %b) nounwind {
119
119
;
120
120
; LA64-LABEL: atomicrmw_xchg_i32_acquire:
121
121
; LA64: # %bb.0:
122
- ; LA64-NEXT: amswap_db.w $a0, $a1, $a0
122
+ ; LA64-NEXT: amswap_db.w $a2, $a1, $a0
123
+ ; LA64-NEXT: move $a0, $a2
123
124
; LA64-NEXT: ret
124
125
%1 = atomicrmw xchg ptr %a , i32 %b acquire
125
126
ret i32 %1
@@ -138,7 +139,8 @@ define i64 @atomicrmw_xchg_i64_acquire(ptr %a, i64 %b) nounwind {
138
139
;
139
140
; LA64-LABEL: atomicrmw_xchg_i64_acquire:
140
141
; LA64: # %bb.0:
141
- ; LA64-NEXT: amswap_db.d $a0, $a1, $a0
142
+ ; LA64-NEXT: amswap_db.d $a2, $a1, $a0
143
+ ; LA64-NEXT: move $a0, $a2
142
144
; LA64-NEXT: ret
143
145
%1 = atomicrmw xchg ptr %a , i64 %b acquire
144
146
ret i64 %1
@@ -261,7 +263,8 @@ define i32 @atomicrmw_add_i32_acquire(ptr %a, i32 %b) nounwind {
261
263
;
262
264
; LA64-LABEL: atomicrmw_add_i32_acquire:
263
265
; LA64: # %bb.0:
264
- ; LA64-NEXT: amadd_db.w $a0, $a1, $a0
266
+ ; LA64-NEXT: amadd_db.w $a2, $a1, $a0
267
+ ; LA64-NEXT: move $a0, $a2
265
268
; LA64-NEXT: ret
266
269
%1 = atomicrmw add ptr %a , i32 %b acquire
267
270
ret i32 %1
@@ -280,7 +283,8 @@ define i64 @atomicrmw_add_i64_acquire(ptr %a, i64 %b) nounwind {
280
283
;
281
284
; LA64-LABEL: atomicrmw_add_i64_acquire:
282
285
; LA64: # %bb.0:
283
- ; LA64-NEXT: amadd_db.d $a0, $a1, $a0
286
+ ; LA64-NEXT: amadd_db.d $a2, $a1, $a0
287
+ ; LA64-NEXT: move $a0, $a2
284
288
; LA64-NEXT: ret
285
289
%1 = atomicrmw add ptr %a , i64 %b acquire
286
290
ret i64 %1
@@ -403,8 +407,9 @@ define i32 @atomicrmw_sub_i32_acquire(ptr %a, i32 %b) nounwind {
403
407
;
404
408
; LA64-LABEL: atomicrmw_sub_i32_acquire:
405
409
; LA64: # %bb.0:
406
- ; LA64-NEXT: sub.w $a1, $zero, $a1
407
- ; LA64-NEXT: amadd_db.w $a0, $a1, $a0
410
+ ; LA64-NEXT: sub.w $a2, $zero, $a1
411
+ ; LA64-NEXT: amadd_db.w $a1, $a2, $a0
412
+ ; LA64-NEXT: move $a0, $a1
408
413
; LA64-NEXT: ret
409
414
%1 = atomicrmw sub ptr %a , i32 %b acquire
410
415
ret i32 %1
@@ -423,8 +428,9 @@ define i64 @atomicrmw_sub_i64_acquire(ptr %a, i64 %b) nounwind {
423
428
;
424
429
; LA64-LABEL: atomicrmw_sub_i64_acquire:
425
430
; LA64: # %bb.0:
426
- ; LA64-NEXT: sub.d $a1, $zero, $a1
427
- ; LA64-NEXT: amadd_db.d $a0, $a1, $a0
431
+ ; LA64-NEXT: sub.d $a2, $zero, $a1
432
+ ; LA64-NEXT: amadd_db.d $a1, $a2, $a0
433
+ ; LA64-NEXT: move $a0, $a1
428
434
; LA64-NEXT: ret
429
435
%1 = atomicrmw sub ptr %a , i64 %b acquire
430
436
ret i64 %1
@@ -624,8 +630,8 @@ define i8 @atomicrmw_and_i8_acquire(ptr %a, i8 %b) nounwind {
624
630
; LA64-NEXT: orn $a1, $a1, $a3
625
631
; LA64-NEXT: addi.w $a3, $zero, -4
626
632
; LA64-NEXT: and $a0, $a0, $a3
627
- ; LA64-NEXT: amand_db.w $a0 , $a1, $a0
628
- ; LA64-NEXT: srl.w $a0, $a0 , $a2
633
+ ; LA64-NEXT: amand_db.w $a3 , $a1, $a0
634
+ ; LA64-NEXT: srl.w $a0, $a3 , $a2
629
635
; LA64-NEXT: ret
630
636
%1 = atomicrmw and ptr %a , i8 %b acquire
631
637
ret i8 %1
@@ -664,8 +670,8 @@ define i16 @atomicrmw_and_i16_acquire(ptr %a, i16 %b) nounwind {
664
670
; LA64-NEXT: orn $a1, $a1, $a2
665
671
; LA64-NEXT: addi.w $a2, $zero, -4
666
672
; LA64-NEXT: and $a0, $a0, $a2
667
- ; LA64-NEXT: amand_db.w $a0 , $a1, $a0
668
- ; LA64-NEXT: srl.w $a0, $a0 , $a3
673
+ ; LA64-NEXT: amand_db.w $a2 , $a1, $a0
674
+ ; LA64-NEXT: srl.w $a0, $a2 , $a3
669
675
; LA64-NEXT: ret
670
676
%1 = atomicrmw and ptr %a , i16 %b acquire
671
677
ret i16 %1
@@ -686,7 +692,8 @@ define i32 @atomicrmw_and_i32_acquire(ptr %a, i32 %b) nounwind {
686
692
;
687
693
; LA64-LABEL: atomicrmw_and_i32_acquire:
688
694
; LA64: # %bb.0:
689
- ; LA64-NEXT: amand_db.w $a0, $a1, $a0
695
+ ; LA64-NEXT: amand_db.w $a2, $a1, $a0
696
+ ; LA64-NEXT: move $a0, $a2
690
697
; LA64-NEXT: ret
691
698
%1 = atomicrmw and ptr %a , i32 %b acquire
692
699
ret i32 %1
@@ -705,7 +712,8 @@ define i64 @atomicrmw_and_i64_acquire(ptr %a, i64 %b) nounwind {
705
712
;
706
713
; LA64-LABEL: atomicrmw_and_i64_acquire:
707
714
; LA64: # %bb.0:
708
- ; LA64-NEXT: amand_db.d $a0, $a1, $a0
715
+ ; LA64-NEXT: amand_db.d $a2, $a1, $a0
716
+ ; LA64-NEXT: move $a0, $a2
709
717
; LA64-NEXT: ret
710
718
%1 = atomicrmw and ptr %a , i64 %b acquire
711
719
ret i64 %1
@@ -736,8 +744,8 @@ define i8 @atomicrmw_or_i8_acquire(ptr %a, i8 %b) nounwind {
736
744
; LA64-NEXT: slli.d $a0, $a0, 3
737
745
; LA64-NEXT: andi $a1, $a1, 255
738
746
; LA64-NEXT: sll.w $a1, $a1, $a0
739
- ; LA64-NEXT: amor_db.w $a1 , $a1, $a2
740
- ; LA64-NEXT: srl.w $a0, $a1 , $a0
747
+ ; LA64-NEXT: amor_db.w $a3 , $a1, $a2
748
+ ; LA64-NEXT: srl.w $a0, $a3 , $a0
741
749
; LA64-NEXT: ret
742
750
%1 = atomicrmw or ptr %a , i8 %b acquire
743
751
ret i8 %1
@@ -768,8 +776,8 @@ define i16 @atomicrmw_or_i16_acquire(ptr %a, i16 %b) nounwind {
768
776
; LA64-NEXT: slli.d $a0, $a0, 3
769
777
; LA64-NEXT: bstrpick.d $a1, $a1, 15, 0
770
778
; LA64-NEXT: sll.w $a1, $a1, $a0
771
- ; LA64-NEXT: amor_db.w $a1 , $a1, $a2
772
- ; LA64-NEXT: srl.w $a0, $a1 , $a0
779
+ ; LA64-NEXT: amor_db.w $a3 , $a1, $a2
780
+ ; LA64-NEXT: srl.w $a0, $a3 , $a0
773
781
; LA64-NEXT: ret
774
782
%1 = atomicrmw or ptr %a , i16 %b acquire
775
783
ret i16 %1
@@ -790,7 +798,8 @@ define i32 @atomicrmw_or_i32_acquire(ptr %a, i32 %b) nounwind {
790
798
;
791
799
; LA64-LABEL: atomicrmw_or_i32_acquire:
792
800
; LA64: # %bb.0:
793
- ; LA64-NEXT: amor_db.w $a0, $a1, $a0
801
+ ; LA64-NEXT: amor_db.w $a2, $a1, $a0
802
+ ; LA64-NEXT: move $a0, $a2
794
803
; LA64-NEXT: ret
795
804
%1 = atomicrmw or ptr %a , i32 %b acquire
796
805
ret i32 %1
@@ -809,7 +818,8 @@ define i64 @atomicrmw_or_i64_acquire(ptr %a, i64 %b) nounwind {
809
818
;
810
819
; LA64-LABEL: atomicrmw_or_i64_acquire:
811
820
; LA64: # %bb.0:
812
- ; LA64-NEXT: amor_db.d $a0, $a1, $a0
821
+ ; LA64-NEXT: amor_db.d $a2, $a1, $a0
822
+ ; LA64-NEXT: move $a0, $a2
813
823
; LA64-NEXT: ret
814
824
%1 = atomicrmw or ptr %a , i64 %b acquire
815
825
ret i64 %1
@@ -840,8 +850,8 @@ define i8 @atomicrmw_xor_i8_acquire(ptr %a, i8 %b) nounwind {
840
850
; LA64-NEXT: slli.d $a0, $a0, 3
841
851
; LA64-NEXT: andi $a1, $a1, 255
842
852
; LA64-NEXT: sll.w $a1, $a1, $a0
843
- ; LA64-NEXT: amxor_db.w $a1 , $a1, $a2
844
- ; LA64-NEXT: srl.w $a0, $a1 , $a0
853
+ ; LA64-NEXT: amxor_db.w $a3 , $a1, $a2
854
+ ; LA64-NEXT: srl.w $a0, $a3 , $a0
845
855
; LA64-NEXT: ret
846
856
%1 = atomicrmw xor ptr %a , i8 %b acquire
847
857
ret i8 %1
@@ -872,8 +882,8 @@ define i16 @atomicrmw_xor_i16_acquire(ptr %a, i16 %b) nounwind {
872
882
; LA64-NEXT: slli.d $a0, $a0, 3
873
883
; LA64-NEXT: bstrpick.d $a1, $a1, 15, 0
874
884
; LA64-NEXT: sll.w $a1, $a1, $a0
875
- ; LA64-NEXT: amxor_db.w $a1 , $a1, $a2
876
- ; LA64-NEXT: srl.w $a0, $a1 , $a0
885
+ ; LA64-NEXT: amxor_db.w $a3 , $a1, $a2
886
+ ; LA64-NEXT: srl.w $a0, $a3 , $a0
877
887
; LA64-NEXT: ret
878
888
%1 = atomicrmw xor ptr %a , i16 %b acquire
879
889
ret i16 %1
@@ -894,7 +904,8 @@ define i32 @atomicrmw_xor_i32_acquire(ptr %a, i32 %b) nounwind {
894
904
;
895
905
; LA64-LABEL: atomicrmw_xor_i32_acquire:
896
906
; LA64: # %bb.0:
897
- ; LA64-NEXT: amxor_db.w $a0, $a1, $a0
907
+ ; LA64-NEXT: amxor_db.w $a2, $a1, $a0
908
+ ; LA64-NEXT: move $a0, $a2
898
909
; LA64-NEXT: ret
899
910
%1 = atomicrmw xor ptr %a , i32 %b acquire
900
911
ret i32 %1
@@ -913,7 +924,8 @@ define i64 @atomicrmw_xor_i64_acquire(ptr %a, i64 %b) nounwind {
913
924
;
914
925
; LA64-LABEL: atomicrmw_xor_i64_acquire:
915
926
; LA64: # %bb.0:
916
- ; LA64-NEXT: amxor_db.d $a0, $a1, $a0
927
+ ; LA64-NEXT: amxor_db.d $a2, $a1, $a0
928
+ ; LA64-NEXT: move $a0, $a2
917
929
; LA64-NEXT: ret
918
930
%1 = atomicrmw xor ptr %a , i64 %b acquire
919
931
ret i64 %1
0 commit comments