@@ -858,14 +858,13 @@ define i64 @lurwu(ptr %a, i32 %b) {
858
858
define i64 @lrd (ptr %a , i64 %b ) {
859
859
; RV32XTHEADMEMIDX-LABEL: lrd:
860
860
; RV32XTHEADMEMIDX: # %bb.0:
861
- ; RV32XTHEADMEMIDX-NEXT: slli a2, a1, 3
861
+ ; RV32XTHEADMEMIDX-NEXT: th.lrw a2, a0, a1, 3
862
+ ; RV32XTHEADMEMIDX-NEXT: addi a0, a0, 4
862
863
; RV32XTHEADMEMIDX-NEXT: th.lrw a1, a0, a1, 3
863
- ; RV32XTHEADMEMIDX-NEXT: add a0, a0, a2
864
- ; RV32XTHEADMEMIDX-NEXT: lw a2, 4(a0)
865
- ; RV32XTHEADMEMIDX-NEXT: add a0, a1, a1
866
- ; RV32XTHEADMEMIDX-NEXT: sltu a1, a0, a1
867
- ; RV32XTHEADMEMIDX-NEXT: add a2, a2, a2
868
- ; RV32XTHEADMEMIDX-NEXT: add a1, a2, a1
864
+ ; RV32XTHEADMEMIDX-NEXT: add a0, a2, a2
865
+ ; RV32XTHEADMEMIDX-NEXT: sltu a2, a0, a2
866
+ ; RV32XTHEADMEMIDX-NEXT: add a1, a1, a1
867
+ ; RV32XTHEADMEMIDX-NEXT: add a1, a1, a2
869
868
; RV32XTHEADMEMIDX-NEXT: ret
870
869
;
871
870
; RV64XTHEADMEMIDX-LABEL: lrd:
@@ -908,14 +907,13 @@ define i64 @lrd_2(ptr %a, i64 %b) {
908
907
define i64 @lurd (ptr %a , i32 %b ) {
909
908
; RV32XTHEADMEMIDX-LABEL: lurd:
910
909
; RV32XTHEADMEMIDX: # %bb.0:
911
- ; RV32XTHEADMEMIDX-NEXT: slli a2, a1, 3
910
+ ; RV32XTHEADMEMIDX-NEXT: th.lrw a2, a0, a1, 3
911
+ ; RV32XTHEADMEMIDX-NEXT: addi a0, a0, 4
912
912
; RV32XTHEADMEMIDX-NEXT: th.lrw a1, a0, a1, 3
913
- ; RV32XTHEADMEMIDX-NEXT: add a0, a0, a2
914
- ; RV32XTHEADMEMIDX-NEXT: lw a2, 4(a0)
915
- ; RV32XTHEADMEMIDX-NEXT: add a0, a1, a1
916
- ; RV32XTHEADMEMIDX-NEXT: sltu a1, a0, a1
917
- ; RV32XTHEADMEMIDX-NEXT: add a2, a2, a2
918
- ; RV32XTHEADMEMIDX-NEXT: add a1, a2, a1
913
+ ; RV32XTHEADMEMIDX-NEXT: add a0, a2, a2
914
+ ; RV32XTHEADMEMIDX-NEXT: sltu a2, a0, a2
915
+ ; RV32XTHEADMEMIDX-NEXT: add a1, a1, a1
916
+ ; RV32XTHEADMEMIDX-NEXT: add a1, a1, a2
919
917
; RV32XTHEADMEMIDX-NEXT: ret
920
918
;
921
919
; RV64XTHEADMEMIDX-LABEL: lurd:
@@ -1047,11 +1045,10 @@ define void @srd(ptr %a, i64 %b, i64 %c) {
1047
1045
; RV32XTHEADMEMIDX-NEXT: add a2, a3, a3
1048
1046
; RV32XTHEADMEMIDX-NEXT: add a4, a4, a4
1049
1047
; RV32XTHEADMEMIDX-NEXT: sltu a3, a2, a3
1050
- ; RV32XTHEADMEMIDX-NEXT: add a3, a4, a3
1051
- ; RV32XTHEADMEMIDX-NEXT: slli a4, a1, 3
1052
- ; RV32XTHEADMEMIDX-NEXT: add a4, a0, a4
1053
1048
; RV32XTHEADMEMIDX-NEXT: th.srw a2, a0, a1, 3
1054
- ; RV32XTHEADMEMIDX-NEXT: sw a3, 4(a4)
1049
+ ; RV32XTHEADMEMIDX-NEXT: add a3, a4, a3
1050
+ ; RV32XTHEADMEMIDX-NEXT: addi a0, a0, 4
1051
+ ; RV32XTHEADMEMIDX-NEXT: th.srw a3, a0, a1, 3
1055
1052
; RV32XTHEADMEMIDX-NEXT: ret
1056
1053
;
1057
1054
; RV64XTHEADMEMIDX-LABEL: srd:
@@ -1071,11 +1068,10 @@ define void @surd(ptr %a, i32 %b, i64 %c) {
1071
1068
; RV32XTHEADMEMIDX-NEXT: add a4, a2, a2
1072
1069
; RV32XTHEADMEMIDX-NEXT: add a3, a3, a3
1073
1070
; RV32XTHEADMEMIDX-NEXT: sltu a2, a4, a2
1074
- ; RV32XTHEADMEMIDX-NEXT: add a2, a3, a2
1075
- ; RV32XTHEADMEMIDX-NEXT: slli a3, a1, 3
1076
- ; RV32XTHEADMEMIDX-NEXT: add a3, a0, a3
1077
1071
; RV32XTHEADMEMIDX-NEXT: th.srw a4, a0, a1, 3
1078
- ; RV32XTHEADMEMIDX-NEXT: sw a2, 4(a3)
1072
+ ; RV32XTHEADMEMIDX-NEXT: add a2, a3, a2
1073
+ ; RV32XTHEADMEMIDX-NEXT: addi a0, a0, 4
1074
+ ; RV32XTHEADMEMIDX-NEXT: th.srw a2, a0, a1, 3
1079
1075
; RV32XTHEADMEMIDX-NEXT: ret
1080
1076
;
1081
1077
; RV64XTHEADMEMIDX-LABEL: surd:
0 commit comments