@@ -858,14 +858,13 @@ define i64 @lurwu(ptr %a, i32 %b) {
858858define i64 @lrd (ptr %a , i64 %b ) {
859859; RV32XTHEADMEMIDX-LABEL: lrd:
860860; 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
862863; 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
869868; RV32XTHEADMEMIDX-NEXT: ret
870869;
871870; RV64XTHEADMEMIDX-LABEL: lrd:
@@ -908,14 +907,13 @@ define i64 @lrd_2(ptr %a, i64 %b) {
908907define i64 @lurd (ptr %a , i32 %b ) {
909908; RV32XTHEADMEMIDX-LABEL: lurd:
910909; 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
912912; 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
919917; RV32XTHEADMEMIDX-NEXT: ret
920918;
921919; RV64XTHEADMEMIDX-LABEL: lurd:
@@ -1047,11 +1045,10 @@ define void @srd(ptr %a, i64 %b, i64 %c) {
10471045; RV32XTHEADMEMIDX-NEXT: add a2, a3, a3
10481046; RV32XTHEADMEMIDX-NEXT: add a4, a4, a4
10491047; 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
10531048; 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
10551052; RV32XTHEADMEMIDX-NEXT: ret
10561053;
10571054; RV64XTHEADMEMIDX-LABEL: srd:
@@ -1071,11 +1068,10 @@ define void @surd(ptr %a, i32 %b, i64 %c) {
10711068; RV32XTHEADMEMIDX-NEXT: add a4, a2, a2
10721069; RV32XTHEADMEMIDX-NEXT: add a3, a3, a3
10731070; 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
10771071; 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
10791075; RV32XTHEADMEMIDX-NEXT: ret
10801076;
10811077; RV64XTHEADMEMIDX-LABEL: surd:
0 commit comments