Skip to content

Commit fb347ac

Browse files
fixup! test getOperandInfo for sources
1 parent 53726c4 commit fb347ac

File tree

1 file changed

+73
-21
lines changed

1 file changed

+73
-21
lines changed

llvm/test/CodeGen/RISCV/rvv/vl-opt-instrs.ll

Lines changed: 73 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,48 +1164,100 @@ define <vscale x 4 x i32> @vwmacc_vx(<vscale x 4 x i32> %a, i16 %b, <vscale x 4
11641164
ret <vscale x 4 x i32> %2
11651165
}
11661166

1167-
define <vscale x 4 x i32> @vwmaccu_vv(<vscale x 4 x i32> %a, <vscale x 4 x i16> %b, <vscale x 4 x i16> %c, iXLen %vl) {
1168-
; NOVLOPT-LABEL: vwmaccu_vv:
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:
11691169
; NOVLOPT: # %bb.0:
1170+
; NOVLOPT-NEXT: vmv2r.v v16, v8
11701171
; NOVLOPT-NEXT: vsetvli a1, zero, e16, m1, tu, ma
1171-
; NOVLOPT-NEXT: vwmaccu.vv v8, v10, v11
1172-
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1173-
; NOVLOPT-NEXT: vadd.vv v8, v8, v8
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
1176+
; NOVLOPT-NEXT: ret
1177+
;
1178+
; VLOPT-LABEL: vwmaccu_vv_nopropagate:
1179+
; 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
1186+
; 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
1190+
}
1191+
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:
1194+
; NOVLOPT: # %bb.0:
1195+
; NOVLOPT-NEXT: vmv2r.v v16, v8
1196+
; NOVLOPT-NEXT: vsetvli a1, zero, e16, m1, tu, ma
1197+
; NOVLOPT-NEXT: vwmaccu.vv v16, v10, v11
1198+
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, tu, ma
1199+
; NOVLOPT-NEXT: vwmaccu.vv v12, v8, v16
1200+
; NOVLOPT-NEXT: vmv4r.v v8, v12
11741201
; NOVLOPT-NEXT: ret
11751202
;
1176-
; VLOPT-LABEL: vwmaccu_vv:
1203+
; VLOPT-LABEL: vwmaccu_vv_propagate:
11771204
; VLOPT: # %bb.0:
1205+
; VLOPT-NEXT: vmv2r.v v16, v8
11781206
; VLOPT-NEXT: vsetvli zero, a0, e16, m1, tu, ma
1179-
; VLOPT-NEXT: vwmaccu.vv v8, v10, v11
1180-
; VLOPT-NEXT: vsetvli zero, zero, e32, m2, ta, ma
1181-
; VLOPT-NEXT: vadd.vv v8, v8, v8
1207+
; VLOPT-NEXT: vwmaccu.vv v16, v10, v11
1208+
; VLOPT-NEXT: vsetvli zero, zero, e32, m2, tu, ma
1209+
; VLOPT-NEXT: vwmaccu.vv v12, v8, v16
1210+
; VLOPT-NEXT: vmv4r.v v8, v12
11821211
; VLOPT-NEXT: ret
11831212
%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)
1184-
%2 = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %1, iXLen %vl)
1185-
ret <vscale x 4 x i32> %2
1213+
%2 = call <vscale x 4 x i64> @llvm.riscv.vwmaccu.nxv4i64.nxv4i32(<vscale x 4 x i64> %d, <vscale x 4 x i32> %a, <vscale x 4 x i32> %1, iXLen %vl, iXLen 0)
1214+
ret <vscale x 4 x i64> %2
11861215
}
11871216

1188-
define <vscale x 4 x i32> @vwmaccu_vx(<vscale x 4 x i32> %a, i16 %b, <vscale x 4 x i16> %c, iXLen %vl) {
1189-
; NOVLOPT-LABEL: vwmaccu_vx:
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:
11901219
; NOVLOPT: # %bb.0:
1191-
; NOVLOPT-NEXT: vsetvli a2, zero, e16, m1, tu, ma
1220+
; NOVLOPT-NEXT: vsetvli a3, zero, e16, m1, tu, ma
11921221
; NOVLOPT-NEXT: vwmaccu.vx v8, a0, v10
1193-
; NOVLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1194-
; NOVLOPT-NEXT: vadd.vv v8, v8, v8
1222+
; NOVLOPT-NEXT: vsetvli zero, a2, e16, m1, tu, ma
1223+
; NOVLOPT-NEXT: vwmaccu.vx v8, a1, v11
11951224
; NOVLOPT-NEXT: ret
11961225
;
1197-
; VLOPT-LABEL: vwmaccu_vx:
1226+
; VLOPT-LABEL: vwmaccu_vx_nopropagate:
11981227
; VLOPT: # %bb.0:
1199-
; VLOPT-NEXT: vsetvli zero, a1, e16, m1, tu, ma
1228+
; VLOPT-NEXT: vsetvli a3, zero, e16, m1, tu, ma
12001229
; VLOPT-NEXT: vwmaccu.vx v8, a0, v10
1201-
; VLOPT-NEXT: vsetvli zero, zero, e32, m2, ta, ma
1202-
; VLOPT-NEXT: vadd.vv v8, v8, v8
1230+
; VLOPT-NEXT: vsetvli zero, a2, e16, m1, tu, ma
1231+
; VLOPT-NEXT: vwmaccu.vx v8, a1, v11
12031232
; VLOPT-NEXT: ret
12041233
%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)
1205-
%2 = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %1, iXLen %vl)
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)
12061235
ret <vscale x 4 x i32> %2
12071236
}
12081237

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:
1240+
; NOVLOPT: # %bb.0:
1241+
; NOVLOPT-NEXT: vsetvli a3, zero, e16, m1, tu, ma
1242+
; NOVLOPT-NEXT: vwmaccu.vx v8, a0, v10
1243+
; NOVLOPT-NEXT: vsetvli zero, a2, e32, m2, tu, ma
1244+
; NOVLOPT-NEXT: vwmaccu.vx v12, a1, v8
1245+
; NOVLOPT-NEXT: vmv4r.v v8, v12
1246+
; NOVLOPT-NEXT: ret
1247+
;
1248+
; VLOPT-LABEL: vwmaccu_vx_propagate:
1249+
; VLOPT: # %bb.0:
1250+
; VLOPT-NEXT: vsetvli zero, a2, e16, m1, tu, ma
1251+
; VLOPT-NEXT: vwmaccu.vx v8, a0, v10
1252+
; VLOPT-NEXT: vsetvli zero, zero, e32, m2, tu, ma
1253+
; VLOPT-NEXT: vwmaccu.vx v12, a1, v8
1254+
; VLOPT-NEXT: vmv4r.v v8, v12
1255+
; VLOPT-NEXT: ret
1256+
%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)
1257+
%2 = call <vscale x 4 x i64> @llvm.riscv.vwmaccu.nxv4i64.i32(<vscale x 4 x i64> %d, i32 %e, <vscale x 4 x i32> %1, iXLen %vl, iXLen 0)
1258+
ret <vscale x 4 x i64> %2
1259+
}
1260+
12091261
define <vscale x 4 x i32> @vwmaccsu_vv(<vscale x 4 x i32> %a, <vscale x 4 x i16> %b, <vscale x 4 x i16> %c, iXLen %vl) {
12101262
; NOVLOPT-LABEL: vwmaccsu_vv:
12111263
; NOVLOPT: # %bb.0:

0 commit comments

Comments
 (0)