@@ -875,11 +875,15 @@ define i64 @explode_8xi64(<8 x i64> %v) {
875
875
; RV32-NEXT: vsrl.vx v12, v8, a0
876
876
; RV32-NEXT: vmv.x.s a1, v12
877
877
; RV32-NEXT: vmv.x.s a2, v8
878
+ ; RV32-NEXT: vsetivli zero, 1, e64, m2, ta, ma
878
879
; RV32-NEXT: vslidedown.vi v12, v8, 1
879
- ; RV32-NEXT: vsrl.vx v16, v12, a0
880
- ; RV32-NEXT: vmv.x.s a3, v16
880
+ ; RV32-NEXT: vmv.x.s a3, v12
881
+ ; RV32-NEXT: vsetivli zero, 1, e64, m4, ta, ma
882
+ ; RV32-NEXT: vsrl.vx v12, v12, a0
881
883
; RV32-NEXT: vmv.x.s a4, v12
884
+ ; RV32-NEXT: vsetivli zero, 1, e64, m2, ta, ma
882
885
; RV32-NEXT: vslidedown.vi v12, v8, 2
886
+ ; RV32-NEXT: vsetivli zero, 1, e64, m4, ta, ma
883
887
; RV32-NEXT: vsrl.vx v16, v12, a0
884
888
; RV32-NEXT: vmv.x.s a5, v16
885
889
; RV32-NEXT: vmv.x.s a6, v12
@@ -903,19 +907,19 @@ define i64 @explode_8xi64(<8 x i64> %v) {
903
907
; RV32-NEXT: vsrl.vx v12, v8, a0
904
908
; RV32-NEXT: vmv.x.s a0, v12
905
909
; RV32-NEXT: vmv.x.s s0, v8
906
- ; RV32-NEXT: add a1, a1, a3
907
- ; RV32-NEXT: add a4 , a2, a4
908
- ; RV32-NEXT: sltu a2, a4 , a2
910
+ ; RV32-NEXT: add a1, a1, a4
911
+ ; RV32-NEXT: add a3 , a2, a3
912
+ ; RV32-NEXT: sltu a2, a3 , a2
909
913
; RV32-NEXT: add a1, a1, a2
910
- ; RV32-NEXT: add a6, a4 , a6
911
- ; RV32-NEXT: sltu a2, a6, a4
914
+ ; RV32-NEXT: add a6, a3 , a6
915
+ ; RV32-NEXT: sltu a2, a6, a3
912
916
; RV32-NEXT: add a1, a1, a5
913
- ; RV32-NEXT: add a2, a2, a7
914
- ; RV32-NEXT: add a1, a1, a2
915
917
; RV32-NEXT: add t0, a6, t0
916
- ; RV32-NEXT: sltu a2 , t0, a6
917
- ; RV32-NEXT: add a2, a2, t1
918
+ ; RV32-NEXT: sltu a3 , t0, a6
919
+ ; RV32-NEXT: add a2, a2, a7
918
920
; RV32-NEXT: add a1, a1, a2
921
+ ; RV32-NEXT: add a3, a3, t1
922
+ ; RV32-NEXT: add a1, a1, a3
919
923
; RV32-NEXT: add t2, t0, t2
920
924
; RV32-NEXT: sltu a2, t2, t0
921
925
; RV32-NEXT: add a2, a2, t3
@@ -1029,115 +1033,127 @@ define i64 @explode_16xi64(<16 x i64> %v) {
1029
1033
; RV32-NEXT: vmv.x.s a0, v16
1030
1034
; RV32-NEXT: sw a0, 8(sp) # 4-byte Folded Spill
1031
1035
; RV32-NEXT: vmv.x.s a0, v8
1036
+ ; RV32-NEXT: vsetivli zero, 1, e64, m2, ta, ma
1032
1037
; RV32-NEXT: vslidedown.vi v16, v8, 1
1038
+ ; RV32-NEXT: vmv.x.s a3, v16
1039
+ ; RV32-NEXT: vsetivli zero, 1, e64, m8, ta, ma
1040
+ ; RV32-NEXT: vsrl.vx v16, v16, a1
1041
+ ; RV32-NEXT: vmv.x.s a4, v16
1042
+ ; RV32-NEXT: vsetivli zero, 1, e64, m2, ta, ma
1043
+ ; RV32-NEXT: vslidedown.vi v16, v8, 2
1044
+ ; RV32-NEXT: vsetivli zero, 1, e64, m8, ta, ma
1033
1045
; RV32-NEXT: vsrl.vx v24, v16, a1
1034
1046
; RV32-NEXT: vmv.x.s a5, v24
1035
1047
; RV32-NEXT: vmv.x.s a6, v16
1036
- ; RV32-NEXT: vslidedown.vi v16, v8, 2
1037
- ; RV32-NEXT: vsrl.vx v24, v16, a1
1038
- ; RV32-NEXT: vmv.x.s a3, v24
1039
- ; RV32-NEXT: vmv.x.s a4, v16
1048
+ ; RV32-NEXT: vsetivli zero, 1, e64, m4, ta, ma
1040
1049
; RV32-NEXT: vslidedown.vi v16, v8, 3
1050
+ ; RV32-NEXT: vsetivli zero, 1, e64, m8, ta, ma
1041
1051
; RV32-NEXT: vsrl.vx v24, v16, a1
1042
- ; RV32-NEXT: vmv.x.s s2 , v24
1052
+ ; RV32-NEXT: vmv.x.s t0 , v24
1043
1053
; RV32-NEXT: vmv.x.s a7, v16
1054
+ ; RV32-NEXT: vsetivli zero, 1, e64, m4, ta, ma
1044
1055
; RV32-NEXT: vslidedown.vi v16, v8, 4
1045
- ; RV32-NEXT: vsrl.vx v24, v16, a1
1046
- ; RV32-NEXT: vmv.x.s s3, v24
1047
- ; RV32-NEXT: vmv.x.s t0, v16
1048
- ; RV32-NEXT: vslidedown.vi v16, v8, 5
1049
- ; RV32-NEXT: vsrl.vx v24, v16, a1
1050
- ; RV32-NEXT: vmv.x.s s4, v24
1051
1056
; RV32-NEXT: vmv.x.s t1, v16
1052
- ; RV32-NEXT: vslidedown.vi v16, v8, 6
1053
- ; RV32-NEXT: vsrl.vx v24, v16, a1
1054
- ; RV32-NEXT: vmv.x.s s5, v24
1057
+ ; RV32-NEXT: vsetivli zero, 1, e64, m8, ta, ma
1058
+ ; RV32-NEXT: vsrl.vx v16, v16, a1
1059
+ ; RV32-NEXT: vmv.x.s t3, v16
1060
+ ; RV32-NEXT: vsetivli zero, 1, e64, m4, ta, ma
1061
+ ; RV32-NEXT: vslidedown.vi v16, v8, 5
1055
1062
; RV32-NEXT: vmv.x.s t2, v16
1063
+ ; RV32-NEXT: vsetivli zero, 1, e64, m8, ta, ma
1064
+ ; RV32-NEXT: vsrl.vx v16, v16, a1
1065
+ ; RV32-NEXT: vmv.x.s t5, v16
1066
+ ; RV32-NEXT: vsetivli zero, 1, e64, m4, ta, ma
1067
+ ; RV32-NEXT: vslidedown.vi v16, v8, 6
1068
+ ; RV32-NEXT: vmv.x.s t4, v16
1069
+ ; RV32-NEXT: vsetivli zero, 1, e64, m8, ta, ma
1070
+ ; RV32-NEXT: vsrl.vx v16, v16, a1
1071
+ ; RV32-NEXT: vmv.x.s ra, v16
1056
1072
; RV32-NEXT: vslidedown.vi v16, v8, 7
1057
1073
; RV32-NEXT: vsrl.vx v24, v16, a1
1058
- ; RV32-NEXT: vmv.x.s s6 , v24
1059
- ; RV32-NEXT: vmv.x.s t3 , v16
1074
+ ; RV32-NEXT: vmv.x.s s5 , v24
1075
+ ; RV32-NEXT: vmv.x.s t6 , v16
1060
1076
; RV32-NEXT: vslidedown.vi v16, v8, 8
1061
1077
; RV32-NEXT: vsrl.vx v24, v16, a1
1062
- ; RV32-NEXT: vmv.x.s s7 , v24
1063
- ; RV32-NEXT: vmv.x.s t4 , v16
1078
+ ; RV32-NEXT: vmv.x.s s6 , v24
1079
+ ; RV32-NEXT: vmv.x.s s0 , v16
1064
1080
; RV32-NEXT: vslidedown.vi v16, v8, 9
1065
1081
; RV32-NEXT: vsrl.vx v24, v16, a1
1066
- ; RV32-NEXT: vmv.x.s s8 , v24
1067
- ; RV32-NEXT: vmv.x.s t5 , v16
1082
+ ; RV32-NEXT: vmv.x.s s7 , v24
1083
+ ; RV32-NEXT: vmv.x.s s1 , v16
1068
1084
; RV32-NEXT: vslidedown.vi v16, v8, 10
1069
1085
; RV32-NEXT: vsrl.vx v24, v16, a1
1070
- ; RV32-NEXT: vmv.x.s s9 , v24
1071
- ; RV32-NEXT: vmv.x.s t6 , v16
1086
+ ; RV32-NEXT: vmv.x.s s8 , v24
1087
+ ; RV32-NEXT: vmv.x.s s2 , v16
1072
1088
; RV32-NEXT: vslidedown.vi v16, v8, 11
1073
1089
; RV32-NEXT: vsrl.vx v24, v16, a1
1074
- ; RV32-NEXT: vmv.x.s s10 , v24
1075
- ; RV32-NEXT: vmv.x.s s0 , v16
1090
+ ; RV32-NEXT: vmv.x.s s9 , v24
1091
+ ; RV32-NEXT: vmv.x.s s3 , v16
1076
1092
; RV32-NEXT: vslidedown.vi v16, v8, 12
1077
1093
; RV32-NEXT: vsrl.vx v24, v16, a1
1078
- ; RV32-NEXT: vmv.x.s s11 , v24
1079
- ; RV32-NEXT: vmv.x.s s1 , v16
1094
+ ; RV32-NEXT: vmv.x.s s10 , v24
1095
+ ; RV32-NEXT: vmv.x.s s4 , v16
1080
1096
; RV32-NEXT: vslidedown.vi v0, v8, 13
1081
1097
; RV32-NEXT: vsrl.vx v16, v0, a1
1082
- ; RV32-NEXT: vmv.x.s ra , v16
1098
+ ; RV32-NEXT: vmv.x.s s11 , v16
1083
1099
; RV32-NEXT: vslidedown.vi v16, v8, 14
1084
1100
; RV32-NEXT: vsrl.vx v24, v16, a1
1085
1101
; RV32-NEXT: vslidedown.vi v8, v8, 15
1086
1102
; RV32-NEXT: vmv.x.s a2, v0
1087
1103
; RV32-NEXT: vsrl.vx v0, v8, a1
1088
1104
; RV32-NEXT: lw a1, 8(sp) # 4-byte Folded Reload
1089
- ; RV32-NEXT: add a5 , a1, a5
1090
- ; RV32-NEXT: add a6 , a0, a6
1091
- ; RV32-NEXT: sltu a0, a6 , a0
1092
- ; RV32-NEXT: add a0, a5 , a0
1093
- ; RV32-NEXT: add a0, a0, a3
1094
- ; RV32-NEXT: add a4, a6, a4
1095
- ; RV32-NEXT: sltu a1, a4, a6
1096
- ; RV32-NEXT: add a1, a1, s2
1105
+ ; RV32-NEXT: add a4 , a1, a4
1106
+ ; RV32-NEXT: add a3 , a0, a3
1107
+ ; RV32-NEXT: sltu a0, a3 , a0
1108
+ ; RV32-NEXT: add a0, a4 , a0
1109
+ ; RV32-NEXT: add a0, a0, a5
1110
+ ; RV32-NEXT: add a6, a3, a6
1111
+ ; RV32-NEXT: sltu a1, a6, a3
1112
+ ; RV32-NEXT: add a1, a1, t0
1097
1113
; RV32-NEXT: add a0, a0, a1
1098
- ; RV32-NEXT: add a7, a4 , a7
1099
- ; RV32-NEXT: sltu a1, a7, a4
1100
- ; RV32-NEXT: add a1, a1, s3
1114
+ ; RV32-NEXT: add a7, a6 , a7
1115
+ ; RV32-NEXT: sltu a1, a7, a6
1116
+ ; RV32-NEXT: add a1, a1, t3
1101
1117
; RV32-NEXT: add a0, a0, a1
1102
- ; RV32-NEXT: add t0, a7, t0
1103
- ; RV32-NEXT: sltu a1, t0, a7
1104
- ; RV32-NEXT: add a1, a1, s4
1105
- ; RV32-NEXT: add a0, a0, a1
1106
- ; RV32-NEXT: add t1, t0, t1
1107
- ; RV32-NEXT: sltu a1, t1, t0
1108
- ; RV32-NEXT: add a1, a1, s5
1118
+ ; RV32-NEXT: add t1, a7, t1
1119
+ ; RV32-NEXT: sltu a1, t1, a7
1120
+ ; RV32-NEXT: add a1, a1, t5
1109
1121
; RV32-NEXT: add a0, a0, a1
1110
1122
; RV32-NEXT: add t2, t1, t2
1111
1123
; RV32-NEXT: sltu a1, t2, t1
1124
+ ; RV32-NEXT: add a1, a1, ra
1125
+ ; RV32-NEXT: add a0, a0, a1
1126
+ ; RV32-NEXT: add t4, t2, t4
1127
+ ; RV32-NEXT: sltu a1, t4, t2
1128
+ ; RV32-NEXT: add a1, a1, s5
1129
+ ; RV32-NEXT: add a0, a0, a1
1130
+ ; RV32-NEXT: add t6, t4, t6
1131
+ ; RV32-NEXT: sltu a1, t6, t4
1112
1132
; RV32-NEXT: add a1, a1, s6
1113
1133
; RV32-NEXT: add a0, a0, a1
1114
- ; RV32-NEXT: add t3, t2, t3
1115
- ; RV32-NEXT: sltu a1, t3, t2
1134
+ ; RV32-NEXT: add s0, t6, s0
1135
+ ; RV32-NEXT: sltu a1, s0, t6
1116
1136
; RV32-NEXT: add a1, a1, s7
1117
1137
; RV32-NEXT: add a0, a0, a1
1118
- ; RV32-NEXT: add t4, t3, t4
1119
- ; RV32-NEXT: sltu a1, t4, t3
1138
+ ; RV32-NEXT: add s1, s0, s1
1139
+ ; RV32-NEXT: sltu a1, s1, s0
1120
1140
; RV32-NEXT: add a1, a1, s8
1121
1141
; RV32-NEXT: add a0, a0, a1
1122
- ; RV32-NEXT: add t5, t4, t5
1123
- ; RV32-NEXT: sltu a1, t5, t4
1142
+ ; RV32-NEXT: add s2, s1, s2
1143
+ ; RV32-NEXT: sltu a1, s2, s1
1124
1144
; RV32-NEXT: add a1, a1, s9
1125
1145
; RV32-NEXT: add a0, a0, a1
1126
- ; RV32-NEXT: add t6, t5, t6
1127
- ; RV32-NEXT: sltu a1, t6, t5
1146
+ ; RV32-NEXT: add s3, s2, s3
1147
+ ; RV32-NEXT: sltu a1, s3, s2
1128
1148
; RV32-NEXT: add a1, a1, s10
1129
1149
; RV32-NEXT: add a0, a0, a1
1130
- ; RV32-NEXT: add s0, t6, s0
1131
- ; RV32-NEXT: sltu a1, s0, t6
1150
+ ; RV32-NEXT: add s4, s3, s4
1151
+ ; RV32-NEXT: sltu a1, s4, s3
1132
1152
; RV32-NEXT: add a1, a1, s11
1133
1153
; RV32-NEXT: add a0, a0, a1
1134
- ; RV32-NEXT: add s1, s0, s1
1135
- ; RV32-NEXT: sltu a1, s1, s0
1136
- ; RV32-NEXT: add a1, a1, ra
1137
- ; RV32-NEXT: add a0, a0, a1
1138
1154
; RV32-NEXT: vmv.x.s a1, v24
1139
- ; RV32-NEXT: add a2, s1 , a2
1140
- ; RV32-NEXT: sltu a3, a2, s1
1155
+ ; RV32-NEXT: add a2, s4 , a2
1156
+ ; RV32-NEXT: sltu a3, a2, s4
1141
1157
; RV32-NEXT: add a1, a3, a1
1142
1158
; RV32-NEXT: vmv.x.s a3, v16
1143
1159
; RV32-NEXT: add a0, a0, a1
0 commit comments