You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: llvm/test/CodeGen/RISCV/rvv/vl-opt-instrs.ll
+51-51Lines changed: 51 additions & 51 deletions
Original file line number
Diff line number
Diff line change
@@ -1122,16 +1122,16 @@ define <vscale x 4 x i32> @vrem_vx(<vscale x 4 x i32> %a, i32 %b, iXLen %vl) {
1122
1122
ret <vscale x 4 x i32> %2
1123
1123
}
1124
1124
1125
-
define <vscale x 4 x i32> @vwmacc_vv(<vscale x 4 x i32> %a, <vscale x 4 x i16> %b, <vscale x 4 x i16> %c, iXLen %vl) {
1126
-
; NOVLOPT-LABEL: vwmacc_vv:
1125
+
define <vscale x 4 x i32> @vwmacc_vv_propagate(<vscale x 4 x i32> %a, <vscale x 4 x i16> %b, <vscale x 4 x i16> %c, iXLen %vl) {
1126
+
; NOVLOPT-LABEL: vwmacc_vv_propagate:
1127
1127
; NOVLOPT: # %bb.0:
1128
1128
; NOVLOPT-NEXT: vsetvli a1, zero, e16, m1, tu, ma
1129
1129
; NOVLOPT-NEXT: vwmacc.vv v8, v10, v11
1130
1130
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1131
1131
; NOVLOPT-NEXT: vadd.vv v8, v8, v8
1132
1132
; NOVLOPT-NEXT: ret
1133
1133
;
1134
-
; VLOPT-LABEL: vwmacc_vv:
1134
+
; VLOPT-LABEL: vwmacc_vv_propagate:
1135
1135
; VLOPT: # %bb.0:
1136
1136
; VLOPT-NEXT: vsetvli zero, a0, e16, m1, tu, ma
1137
1137
; VLOPT-NEXT: vwmacc.vv v8, v10, v11
@@ -1143,16 +1143,41 @@ define <vscale x 4 x i32> @vwmacc_vv(<vscale x 4 x i32> %a, <vscale x 4 x i16> %
1143
1143
ret <vscale x 4 x i32> %2
1144
1144
}
1145
1145
1146
-
define <vscale x 4 x i32> @vwmacc_vx(<vscale x 4 x i32> %a, i16%b, <vscale x 4 x i16> %c, iXLen %vl) {
1147
-
; NOVLOPT-LABEL: vwmacc_vx:
1146
+
define <vscale x 4 x i64> @vwmacc_vv_nopropagate(<vscale x 4 x i32> %a, <vscale x 4 x i16> %b, <vscale x 4 x i16> %c, <vscale x 4 x i64> %d, iXLen %vl) {
1147
+
; NOVLOPT-LABEL: vwmacc_vv_nopropagate:
1148
+
; NOVLOPT: # %bb.0:
1149
+
; NOVLOPT-NEXT: vmv2r.v v16, v8
1150
+
; NOVLOPT-NEXT: vsetvli a1, zero, e16, m1, tu, ma
1151
+
; NOVLOPT-NEXT: vwmacc.vv v16, v10, v11
1152
+
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, tu, ma
1153
+
; NOVLOPT-NEXT: vwmacc.vv v12, v16, v8
1154
+
; NOVLOPT-NEXT: vmv4r.v v8, v12
1155
+
; NOVLOPT-NEXT: ret
1156
+
;
1157
+
; VLOPT-LABEL: vwmacc_vv_nopropagate:
1158
+
; VLOPT: # %bb.0:
1159
+
; VLOPT-NEXT: vmv2r.v v16, v8
1160
+
; VLOPT-NEXT: vsetvli a1, zero, e16, m1, tu, ma
1161
+
; VLOPT-NEXT: vwmacc.vv v16, v10, v11
1162
+
; VLOPT-NEXT: vsetvli zero, a0, e32, m2, tu, ma
1163
+
; VLOPT-NEXT: vwmacc.vv v12, v16, v8
1164
+
; VLOPT-NEXT: vmv4r.v v8, v12
1165
+
; VLOPT-NEXT: ret
1166
+
%1 = call <vscale x 4 x i32> @llvm.riscv.vwmacc.nxv4i32.nxv4i16(<vscale x 4 x i32> %a, <vscale x 4 x i16> %b, <vscale x 4 x i16> %c, iXLen -1, iXLen 0)
1167
+
%2 = call <vscale x 4 x i64> @llvm.riscv.vwmacc.nxv4i64.nxv4i32(<vscale x 4 x i64> %d, <vscale x 4 x i32> %1, <vscale x 4 x i32> %a, iXLen %vl, iXLen 0)
1168
+
ret <vscale x 4 x i64> %2
1169
+
}
1170
+
1171
+
define <vscale x 4 x i32> @vwmacc_vx_propagate(<vscale x 4 x i32> %a, i16%b, <vscale x 4 x i16> %c, iXLen %vl) {
1172
+
; NOVLOPT-LABEL: vwmacc_vx_propagate:
1148
1173
; NOVLOPT: # %bb.0:
1149
1174
; NOVLOPT-NEXT: vsetvli a2, zero, e16, m1, tu, ma
1150
1175
; NOVLOPT-NEXT: vwmacc.vx v8, a0, v10
1151
1176
; NOVLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1152
1177
; NOVLOPT-NEXT: vadd.vv v8, v8, v8
1153
1178
; NOVLOPT-NEXT: ret
1154
1179
;
1155
-
; VLOPT-LABEL: vwmacc_vx:
1180
+
; VLOPT-LABEL: vwmacc_vx_propagate:
1156
1181
; VLOPT: # %bb.0:
1157
1182
; VLOPT-NEXT: vsetvli zero, a1, e16, m1, tu, ma
1158
1183
; VLOPT-NEXT: vwmacc.vx v8, a0, v10
@@ -1164,33 +1189,29 @@ define <vscale x 4 x i32> @vwmacc_vx(<vscale x 4 x i32> %a, i16 %b, <vscale x 4
1164
1189
ret <vscale x 4 x i32> %2
1165
1190
}
1166
1191
1167
-
define <vscale x 4 x i64> @vwmaccu_vv_nopropagate(<vscale x 4 x i32> %a, <vscale x 4 x i16>%b, <vscale x 4 x i16> %c, <vscale x 4 x i64> %d, iXLen %vl) {
1168
-
; NOVLOPT-LABEL: vwmaccu_vv_nopropagate:
1192
+
define <vscale x 4 x i32> @vwmacc_vx_nopropagate(<vscale x 4 x i32> %a, i16%b, <vscale x 4 x i16> %c, iXLen %vl) {
1193
+
; NOVLOPT-LABEL: vwmacc_vx_nopropagate:
1169
1194
; NOVLOPT: # %bb.0:
1170
-
; NOVLOPT-NEXT: vmv2r.v v16, v8
1171
-
; NOVLOPT-NEXT: vsetvli a1, zero, e16, m1, tu, ma
1172
-
; NOVLOPT-NEXT: vwmaccu.vv v16, v10, v11
1173
-
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, tu, ma
1174
-
; NOVLOPT-NEXT: vwmaccu.vv v12, v16, v8
1175
-
; NOVLOPT-NEXT: vmv4r.v v8, v12
1195
+
; NOVLOPT-NEXT: vsetvli a2, zero, e16, m1, tu, ma
1196
+
; NOVLOPT-NEXT: vwmacc.vx v8, a0, v10
1197
+
; NOVLOPT-NEXT: vsetvli zero, a1, e16, m1, tu, ma
1198
+
; NOVLOPT-NEXT: vwmacc.vx v8, a0, v10
1176
1199
; NOVLOPT-NEXT: ret
1177
1200
;
1178
-
; VLOPT-LABEL: vwmaccu_vv_nopropagate:
1201
+
; VLOPT-LABEL: vwmacc_vx_nopropagate:
1179
1202
; VLOPT: # %bb.0:
1180
-
; VLOPT-NEXT: vmv2r.v v16, v8
1181
-
; VLOPT-NEXT: vsetvli a1, zero, e16, m1, tu, ma
1182
-
; VLOPT-NEXT: vwmaccu.vv v16, v10, v11
1183
-
; VLOPT-NEXT: vsetvli zero, a0, e32, m2, tu, ma
1184
-
; VLOPT-NEXT: vwmaccu.vv v12, v16, v8
1185
-
; VLOPT-NEXT: vmv4r.v v8, v12
1203
+
; VLOPT-NEXT: vsetvli a2, zero, e16, m1, tu, ma
1204
+
; VLOPT-NEXT: vwmacc.vx v8, a0, v10
1205
+
; VLOPT-NEXT: vsetvli zero, a1, e16, m1, tu, ma
1206
+
; VLOPT-NEXT: vwmacc.vx v8, a0, v10
1186
1207
; VLOPT-NEXT: ret
1187
-
%1 = call <vscale x 4 x i32> @llvm.riscv.vwmaccu.nxv4i32.nxv4i16(<vscale x 4 x i32> %a, <vscale x 4 x i16>%b, <vscale x 4 x i16> %c, iXLen -1, iXLen 0)
1188
-
%2 = call <vscale x 4 x i64> @llvm.riscv.vwmaccu.nxv4i64.nxv4i32(<vscale x 4 x i64> %d, <vscale x 4 x i32> %1, <vscale x 4 x i32> %a, iXLen %vl, iXLen 0)
1189
-
ret <vscale x 4 x i64> %2
1208
+
%1 = call <vscale x 4 x i32> @llvm.riscv.vwmacc.nxv4i32.i16(<vscale x 4 x i32> %a, i16%b, <vscale x 4 x i16> %c, iXLen -1, iXLen 0)
1209
+
%2 = call <vscale x 4 x i32> @llvm.riscv.vwmacc.nxv4i32.i16(<vscale x 4 x i32> %1, i16%b, <vscale x 4 x i16> %c, iXLen %vl, iXLen 0)
1210
+
ret <vscale x 4 x i32> %2
1190
1211
}
1191
1212
1192
-
define <vscale x 4 x i64> @vwmaccu_vv_propagate(<vscale x 4 x i32> %a, <vscale x 4 x i16> %b, <vscale x 4 x i16> %c, <vscale x 4 x i64> %d, iXLen %vl) {
1193
-
; NOVLOPT-LABEL: vwmaccu_vv_propagate:
1213
+
define <vscale x 4 x i64> @vwmaccu_vv(<vscale x 4 x i32> %a, <vscale x 4 x i16> %b, <vscale x 4 x i16> %c, <vscale x 4 x i64> %d, iXLen %vl) {
1214
+
; NOVLOPT-LABEL: vwmaccu_vv:
1194
1215
; NOVLOPT: # %bb.0:
1195
1216
; NOVLOPT-NEXT: vmv2r.v v16, v8
1196
1217
; NOVLOPT-NEXT: vsetvli a1, zero, e16, m1, tu, ma
@@ -1200,7 +1221,7 @@ define <vscale x 4 x i64> @vwmaccu_vv_propagate(<vscale x 4 x i32> %a, <vscale x
1200
1221
; NOVLOPT-NEXT: vmv4r.v v8, v12
1201
1222
; NOVLOPT-NEXT: ret
1202
1223
;
1203
-
; VLOPT-LABEL: vwmaccu_vv_propagate:
1224
+
; VLOPT-LABEL: vwmaccu_vv:
1204
1225
; VLOPT: # %bb.0:
1205
1226
; VLOPT-NEXT: vmv2r.v v16, v8
1206
1227
; VLOPT-NEXT: vsetvli zero, a0, e16, m1, tu, ma
@@ -1214,29 +1235,8 @@ define <vscale x 4 x i64> @vwmaccu_vv_propagate(<vscale x 4 x i32> %a, <vscale x
1214
1235
ret <vscale x 4 x i64> %2
1215
1236
}
1216
1237
1217
-
define <vscale x 4 x i32> @vwmaccu_vx_nopropagate(<vscale x 4 x i32> %a, i16%b, <vscale x 4 x i16> %c, <vscale x 4 x i16> %d, i16%e, iXLen %vl) {
1218
-
; NOVLOPT-LABEL: vwmaccu_vx_nopropagate:
1219
-
; NOVLOPT: # %bb.0:
1220
-
; NOVLOPT-NEXT: vsetvli a3, zero, e16, m1, tu, ma
1221
-
; NOVLOPT-NEXT: vwmaccu.vx v8, a0, v10
1222
-
; NOVLOPT-NEXT: vsetvli zero, a2, e16, m1, tu, ma
1223
-
; NOVLOPT-NEXT: vwmaccu.vx v8, a1, v11
1224
-
; NOVLOPT-NEXT: ret
1225
-
;
1226
-
; VLOPT-LABEL: vwmaccu_vx_nopropagate:
1227
-
; VLOPT: # %bb.0:
1228
-
; VLOPT-NEXT: vsetvli a3, zero, e16, m1, tu, ma
1229
-
; VLOPT-NEXT: vwmaccu.vx v8, a0, v10
1230
-
; VLOPT-NEXT: vsetvli zero, a2, e16, m1, tu, ma
1231
-
; VLOPT-NEXT: vwmaccu.vx v8, a1, v11
1232
-
; VLOPT-NEXT: ret
1233
-
%1 = call <vscale x 4 x i32> @llvm.riscv.vwmaccu.nxv4i32.i16(<vscale x 4 x i32> %a, i16%b, <vscale x 4 x i16> %c, iXLen -1, iXLen 0)
1234
-
%2 = call <vscale x 4 x i32> @llvm.riscv.vwmaccu.nxv4i32.i16(<vscale x 4 x i32> %1, i16%e, <vscale x 4 x i16> %d, iXLen %vl, iXLen 0)
1235
-
ret <vscale x 4 x i32> %2
1236
-
}
1237
-
1238
-
define <vscale x 4 x i64> @vwmaccu_vx_propagate(<vscale x 4 x i32> %a, i16%b, <vscale x 4 x i16> %c, <vscale x 4 x i64> %d, i32%e, iXLen %vl) {
1239
-
; NOVLOPT-LABEL: vwmaccu_vx_propagate:
1238
+
define <vscale x 4 x i64> @vwmaccu_vx(<vscale x 4 x i32> %a, i16%b, <vscale x 4 x i16> %c, <vscale x 4 x i64> %d, i32%e, iXLen %vl) {
1239
+
; NOVLOPT-LABEL: vwmaccu_vx:
1240
1240
; NOVLOPT: # %bb.0:
1241
1241
; NOVLOPT-NEXT: vsetvli a3, zero, e16, m1, tu, ma
1242
1242
; NOVLOPT-NEXT: vwmaccu.vx v8, a0, v10
@@ -1245,7 +1245,7 @@ define <vscale x 4 x i64> @vwmaccu_vx_propagate(<vscale x 4 x i32> %a, i16 %b, <
0 commit comments