@@ -811,9 +811,11 @@ define i64 @explode_4xi64(<4 x i64> %v) {
811
811
; RV32-NEXT: vsrl.vx v10, v8, a0
812
812
; RV32-NEXT: vmv.x.s a1, v10
813
813
; RV32-NEXT: vmv.x.s a2, v8
814
+ ; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma
814
815
; RV32-NEXT: vslidedown.vi v10, v8, 1
815
- ; RV32-NEXT: vsrl.vx v12, v10, a0
816
- ; RV32-NEXT: vmv.x.s a3, v12
816
+ ; RV32-NEXT: vmv.x.s a3, v10
817
+ ; RV32-NEXT: vsetivli zero, 1, e64, m2, ta, ma
818
+ ; RV32-NEXT: vsrl.vx v10, v10, a0
817
819
; RV32-NEXT: vmv.x.s a4, v10
818
820
; RV32-NEXT: vslidedown.vi v10, v8, 2
819
821
; RV32-NEXT: vsrl.vx v12, v10, a0
@@ -823,12 +825,12 @@ define i64 @explode_4xi64(<4 x i64> %v) {
823
825
; RV32-NEXT: vsrl.vx v10, v8, a0
824
826
; RV32-NEXT: vmv.x.s a0, v10
825
827
; RV32-NEXT: vmv.x.s a7, v8
826
- ; RV32-NEXT: add a1, a1, a3
827
- ; RV32-NEXT: add a4 , a2, a4
828
- ; RV32-NEXT: sltu a2, a4 , a2
828
+ ; RV32-NEXT: add a1, a1, a4
829
+ ; RV32-NEXT: add a3 , a2, a3
830
+ ; RV32-NEXT: sltu a2, a3 , a2
829
831
; RV32-NEXT: add a1, a1, a2
830
- ; RV32-NEXT: add a6, a4 , a6
831
- ; RV32-NEXT: sltu a2, a6, a4
832
+ ; RV32-NEXT: add a6, a3 , a6
833
+ ; RV32-NEXT: sltu a2, a6, a3
832
834
; RV32-NEXT: add a1, a1, a5
833
835
; RV32-NEXT: add a0, a2, a0
834
836
; RV32-NEXT: add a1, a1, a0
@@ -875,7 +877,7 @@ define i64 @explode_8xi64(<8 x i64> %v) {
875
877
; RV32-NEXT: vsrl.vx v12, v8, a0
876
878
; RV32-NEXT: vmv.x.s a1, v12
877
879
; RV32-NEXT: vmv.x.s a2, v8
878
- ; RV32-NEXT: vsetivli zero, 1, e64, m2 , ta, ma
880
+ ; RV32-NEXT: vsetivli zero, 1, e64, m1 , ta, ma
879
881
; RV32-NEXT: vslidedown.vi v12, v8, 1
880
882
; RV32-NEXT: vmv.x.s a3, v12
881
883
; RV32-NEXT: vsetivli zero, 1, e64, m4, ta, ma
@@ -887,7 +889,9 @@ define i64 @explode_8xi64(<8 x i64> %v) {
887
889
; RV32-NEXT: vsrl.vx v16, v12, a0
888
890
; RV32-NEXT: vmv.x.s a5, v16
889
891
; RV32-NEXT: vmv.x.s a6, v12
892
+ ; RV32-NEXT: vsetivli zero, 1, e64, m2, ta, ma
890
893
; RV32-NEXT: vslidedown.vi v12, v8, 3
894
+ ; RV32-NEXT: vsetivli zero, 1, e64, m4, ta, ma
891
895
; RV32-NEXT: vsrl.vx v16, v12, a0
892
896
; RV32-NEXT: vmv.x.s a7, v16
893
897
; RV32-NEXT: vmv.x.s t0, v12
@@ -1033,7 +1037,7 @@ define i64 @explode_16xi64(<16 x i64> %v) {
1033
1037
; RV32-NEXT: vmv.x.s a0, v16
1034
1038
; RV32-NEXT: sw a0, 8(sp) # 4-byte Folded Spill
1035
1039
; RV32-NEXT: vmv.x.s a0, v8
1036
- ; RV32-NEXT: vsetivli zero, 1, e64, m2 , ta, ma
1040
+ ; RV32-NEXT: vsetivli zero, 1, e64, m1 , ta, ma
1037
1041
; RV32-NEXT: vslidedown.vi v16, v8, 1
1038
1042
; RV32-NEXT: vmv.x.s a3, v16
1039
1043
; RV32-NEXT: vsetivli zero, 1, e64, m8, ta, ma
@@ -1045,7 +1049,7 @@ define i64 @explode_16xi64(<16 x i64> %v) {
1045
1049
; RV32-NEXT: vsrl.vx v24, v16, a1
1046
1050
; RV32-NEXT: vmv.x.s a5, v24
1047
1051
; RV32-NEXT: vmv.x.s a6, v16
1048
- ; RV32-NEXT: vsetivli zero, 1, e64, m4 , ta, ma
1052
+ ; RV32-NEXT: vsetivli zero, 1, e64, m2 , ta, ma
1049
1053
; RV32-NEXT: vslidedown.vi v16, v8, 3
1050
1054
; RV32-NEXT: vsetivli zero, 1, e64, m8, ta, ma
1051
1055
; RV32-NEXT: vsrl.vx v24, v16, a1
@@ -1068,31 +1072,33 @@ define i64 @explode_16xi64(<16 x i64> %v) {
1068
1072
; RV32-NEXT: vmv.x.s t4, v16
1069
1073
; RV32-NEXT: vsetivli zero, 1, e64, m8, ta, ma
1070
1074
; RV32-NEXT: vsrl.vx v16, v16, a1
1071
- ; RV32-NEXT: vmv.x.s ra, v16
1075
+ ; RV32-NEXT: vmv.x.s s0, v16
1076
+ ; RV32-NEXT: vsetivli zero, 1, e64, m4, ta, ma
1072
1077
; RV32-NEXT: vslidedown.vi v16, v8, 7
1073
- ; RV32-NEXT: vsrl.vx v24, v16, a1
1074
- ; RV32-NEXT: vmv.x.s s5, v24
1075
1078
; RV32-NEXT: vmv.x.s t6, v16
1079
+ ; RV32-NEXT: vsetivli zero, 1, e64, m8, ta, ma
1080
+ ; RV32-NEXT: vsrl.vx v16, v16, a1
1081
+ ; RV32-NEXT: vmv.x.s ra, v16
1076
1082
; RV32-NEXT: vslidedown.vi v16, v8, 8
1077
1083
; RV32-NEXT: vsrl.vx v24, v16, a1
1078
1084
; RV32-NEXT: vmv.x.s s6, v24
1079
- ; RV32-NEXT: vmv.x.s s0 , v16
1085
+ ; RV32-NEXT: vmv.x.s s1 , v16
1080
1086
; RV32-NEXT: vslidedown.vi v16, v8, 9
1081
1087
; RV32-NEXT: vsrl.vx v24, v16, a1
1082
1088
; RV32-NEXT: vmv.x.s s7, v24
1083
- ; RV32-NEXT: vmv.x.s s1 , v16
1089
+ ; RV32-NEXT: vmv.x.s s2 , v16
1084
1090
; RV32-NEXT: vslidedown.vi v16, v8, 10
1085
1091
; RV32-NEXT: vsrl.vx v24, v16, a1
1086
1092
; RV32-NEXT: vmv.x.s s8, v24
1087
- ; RV32-NEXT: vmv.x.s s2 , v16
1093
+ ; RV32-NEXT: vmv.x.s s3 , v16
1088
1094
; RV32-NEXT: vslidedown.vi v16, v8, 11
1089
1095
; RV32-NEXT: vsrl.vx v24, v16, a1
1090
1096
; RV32-NEXT: vmv.x.s s9, v24
1091
- ; RV32-NEXT: vmv.x.s s3 , v16
1097
+ ; RV32-NEXT: vmv.x.s s4 , v16
1092
1098
; RV32-NEXT: vslidedown.vi v16, v8, 12
1093
1099
; RV32-NEXT: vsrl.vx v24, v16, a1
1094
1100
; RV32-NEXT: vmv.x.s s10, v24
1095
- ; RV32-NEXT: vmv.x.s s4 , v16
1101
+ ; RV32-NEXT: vmv.x.s s5 , v16
1096
1102
; RV32-NEXT: vslidedown.vi v0, v8, 13
1097
1103
; RV32-NEXT: vsrl.vx v16, v0, a1
1098
1104
; RV32-NEXT: vmv.x.s s11, v16
@@ -1121,39 +1127,39 @@ define i64 @explode_16xi64(<16 x i64> %v) {
1121
1127
; RV32-NEXT: add a0, a0, a1
1122
1128
; RV32-NEXT: add t2, t1, t2
1123
1129
; RV32-NEXT: sltu a1, t2, t1
1124
- ; RV32-NEXT: add a1, a1, ra
1130
+ ; RV32-NEXT: add a1, a1, s0
1125
1131
; RV32-NEXT: add a0, a0, a1
1126
1132
; RV32-NEXT: add t4, t2, t4
1127
1133
; RV32-NEXT: sltu a1, t4, t2
1128
- ; RV32-NEXT: add a1, a1, s5
1134
+ ; RV32-NEXT: add a1, a1, ra
1129
1135
; RV32-NEXT: add a0, a0, a1
1130
1136
; RV32-NEXT: add t6, t4, t6
1131
1137
; RV32-NEXT: sltu a1, t6, t4
1132
1138
; RV32-NEXT: add a1, a1, s6
1133
1139
; RV32-NEXT: add a0, a0, a1
1134
- ; RV32-NEXT: add s0 , t6, s0
1135
- ; RV32-NEXT: sltu a1, s0 , t6
1140
+ ; RV32-NEXT: add s1 , t6, s1
1141
+ ; RV32-NEXT: sltu a1, s1 , t6
1136
1142
; RV32-NEXT: add a1, a1, s7
1137
1143
; RV32-NEXT: add a0, a0, a1
1138
- ; RV32-NEXT: add s1, s0, s1
1139
- ; RV32-NEXT: sltu a1, s1, s0
1140
- ; RV32-NEXT: add a1, a1, s8
1141
- ; RV32-NEXT: add a0, a0, a1
1142
1144
; RV32-NEXT: add s2, s1, s2
1143
1145
; RV32-NEXT: sltu a1, s2, s1
1144
- ; RV32-NEXT: add a1, a1, s9
1146
+ ; RV32-NEXT: add a1, a1, s8
1145
1147
; RV32-NEXT: add a0, a0, a1
1146
1148
; RV32-NEXT: add s3, s2, s3
1147
1149
; RV32-NEXT: sltu a1, s3, s2
1148
- ; RV32-NEXT: add a1, a1, s10
1150
+ ; RV32-NEXT: add a1, a1, s9
1149
1151
; RV32-NEXT: add a0, a0, a1
1150
1152
; RV32-NEXT: add s4, s3, s4
1151
1153
; RV32-NEXT: sltu a1, s4, s3
1154
+ ; RV32-NEXT: add a1, a1, s10
1155
+ ; RV32-NEXT: add a0, a0, a1
1156
+ ; RV32-NEXT: add s5, s4, s5
1157
+ ; RV32-NEXT: sltu a1, s5, s4
1152
1158
; RV32-NEXT: add a1, a1, s11
1153
1159
; RV32-NEXT: add a0, a0, a1
1154
1160
; RV32-NEXT: vmv.x.s a1, v24
1155
- ; RV32-NEXT: add a2, s4 , a2
1156
- ; RV32-NEXT: sltu a3, a2, s4
1161
+ ; RV32-NEXT: add a2, s5 , a2
1162
+ ; RV32-NEXT: sltu a3, a2, s5
1157
1163
; RV32-NEXT: add a1, a3, a1
1158
1164
; RV32-NEXT: vmv.x.s a3, v16
1159
1165
; RV32-NEXT: add a0, a0, a1
0 commit comments