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
+21-21Lines changed: 21 additions & 21 deletions
Original file line number
Diff line number
Diff line change
@@ -1275,18 +1275,18 @@ define <vscale x 4 x i32> @vmacc_vv(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b
1275
1275
; NOVLOPT-NEXT: vsetvli a1, zero, e32, m2, tu, ma
1276
1276
; NOVLOPT-NEXT: vmacc.vv v8, v8, v10
1277
1277
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
1278
-
; NOVLOPT-NEXT: vmul.vv v8, v8, v10
1278
+
; NOVLOPT-NEXT: vadd.vv v8, v8, v10
1279
1279
; NOVLOPT-NEXT: ret
1280
1280
;
1281
1281
; VLOPT-LABEL: vmacc_vv:
1282
1282
; VLOPT: # %bb.0:
1283
1283
; VLOPT-NEXT: vsetvli zero, a0, e32, m2, tu, ma
1284
1284
; VLOPT-NEXT: vmacc.vv v8, v8, v10
1285
1285
; VLOPT-NEXT: vsetvli zero, zero, e32, m2, ta, ma
1286
-
; VLOPT-NEXT: vmul.vv v8, v8, v10
1286
+
; VLOPT-NEXT: vadd.vv v8, v8, v10
1287
1287
; VLOPT-NEXT: ret
1288
1288
%1 = call <vscale x 4 x i32> @llvm.riscv.vmacc.nxv4i32.nxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen -1, iXLen 0)
1289
-
%2 = call <vscale x 4 x i32> @llvm.riscv.vmul.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %b, iXLen %vl)
1289
+
%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> %b, iXLen %vl)
1290
1290
ret <vscale x 4 x i32> %2
1291
1291
}
1292
1292
@@ -1314,23 +1314,23 @@ define <vscale x 4 x i32> @vmacc_vv_use(<vscale x 4 x i32> %a, <vscale x 4 x i32
1314
1314
define <vscale x 4 x i32> @vmacc_vx(<vscale x 4 x i32> %a, i32%b, iXLen %vl) {
1315
1315
; NOVLOPT-LABEL: vmacc_vx:
1316
1316
; NOVLOPT: # %bb.0:
1317
-
; NOVLOPT-NEXT: vmv2r.v v10, v8
1318
1317
; NOVLOPT-NEXT: vsetvli a2, zero, e32, m2, tu, ma
1318
+
; NOVLOPT-NEXT: vmv2r.v v10, v8
1319
1319
; NOVLOPT-NEXT: vmacc.vx v10, a0, v8
1320
1320
; NOVLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1321
-
; NOVLOPT-NEXT: vmul.vv v8, v10, v8
1321
+
; NOVLOPT-NEXT: vadd.vv v8, v10, v8
1322
1322
; NOVLOPT-NEXT: ret
1323
1323
;
1324
1324
; VLOPT-LABEL: vmacc_vx:
1325
1325
; VLOPT: # %bb.0:
1326
-
; VLOPT-NEXT: vmv2r.v v10, v8
1327
1326
; VLOPT-NEXT: vsetvli zero, a1, e32, m2, tu, ma
1327
+
; VLOPT-NEXT: vmv2r.v v10, v8
1328
1328
; VLOPT-NEXT: vmacc.vx v10, a0, v8
1329
1329
; VLOPT-NEXT: vsetvli zero, zero, e32, m2, ta, ma
1330
-
; VLOPT-NEXT: vmul.vv v8, v10, v8
1330
+
; VLOPT-NEXT: vadd.vv v8, v10, v8
1331
1331
; VLOPT-NEXT: ret
1332
-
%1 = call <vscale x 4 x i32> @llvm.riscv.vmacc.nxv4i32.nxv4i32(<vscale x 4 x i32> %a, i32%b, <vscale x 4 x i32> %a, iXLen -1, iXLen 0)
1333
-
%2 = call <vscale x 4 x i32> @llvm.riscv.vmul.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %a, iXLen %vl)
1332
+
%1 = call <vscale x 4 x i32> @llvm.riscv.vmacc.nxv4i32.i32(<vscale x 4 x i32> %a, i32%b, <vscale x 4 x i32> %a, iXLen -1, iXLen 0)
1333
+
%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> %a, iXLen %vl)
1334
1334
ret <vscale x 4 x i32> %2
1335
1335
}
1336
1336
@@ -1351,30 +1351,30 @@ define <vscale x 4 x i32> @vmadd_vv(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b
1351
1351
; VLOPT-NEXT: vmul.vv v8, v8, v10
1352
1352
; VLOPT-NEXT: ret
1353
1353
%1 = call <vscale x 4 x i32> @llvm.riscv.vmadd.nxv4i32.nxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen -1, iXLen 0)
1354
-
%2 = call <vscale x 4 x i32> @llvm.riscv.vmul.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %b, iXLen %vl)
1354
+
%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> %b, iXLen %vl)
1355
1355
ret <vscale x 4 x i32> %2
1356
1356
}
1357
1357
1358
1358
define <vscale x 4 x i32> @vmadd_vx(<vscale x 4 x i32> %a, i32%b, iXLen %vl) {
1359
1359
; NOVLOPT-LABEL: vmadd_vx:
1360
1360
; NOVLOPT: # %bb.0:
1361
-
; NOVLOPT-NEXT: vmv2r.v v10, v8
1362
1361
; NOVLOPT-NEXT: vsetvli a2, zero, e32, m2, tu, ma
1362
+
; NOVLOPT-NEXT: vmv2r.v v10, v8
1363
1363
; NOVLOPT-NEXT: vmadd.vx v10, a0, v8
1364
1364
; NOVLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1365
1365
; NOVLOPT-NEXT: vmul.vv v8, v10, v8
1366
1366
; NOVLOPT-NEXT: ret
1367
1367
;
1368
1368
; VLOPT-LABEL: vmadd_vx:
1369
1369
; VLOPT: # %bb.0:
1370
-
; VLOPT-NEXT: vmv2r.v v10, v8
1371
1370
; VLOPT-NEXT: vsetvli zero, a1, e32, m2, tu, ma
1371
+
; VLOPT-NEXT: vmv2r.v v10, v8
1372
1372
; VLOPT-NEXT: vmadd.vx v10, a0, v8
1373
1373
; VLOPT-NEXT: vsetvli zero, zero, e32, m2, ta, ma
1374
1374
; VLOPT-NEXT: vmul.vv v8, v10, v8
1375
1375
; VLOPT-NEXT: ret
1376
1376
%1 = call <vscale x 4 x i32> @llvm.riscv.vmadd.nxv4i32.nxv4i32(<vscale x 4 x i32> %a, i32%b, <vscale x 4 x i32> %a, iXLen -1, iXLen 0)
1377
-
%2 = call <vscale x 4 x i32> @llvm.riscv.vmul.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %a, iXLen %vl)
1377
+
%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> %a, iXLen %vl)
1378
1378
ret <vscale x 4 x i32> %2
1379
1379
}
1380
1380
@@ -1395,30 +1395,30 @@ define <vscale x 4 x i32> @vnmsac_vv(<vscale x 4 x i32> %a, <vscale x 4 x i32> %
1395
1395
; VLOPT-NEXT: vmul.vv v8, v8, v10
1396
1396
; VLOPT-NEXT: ret
1397
1397
%1 = call <vscale x 4 x i32> @llvm.riscv.vnmsac.nxv4i32.nxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen -1, iXLen 0)
1398
-
%2 = call <vscale x 4 x i32> @llvm.riscv.vmul.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %b, iXLen %vl)
1398
+
%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> %b, iXLen %vl)
1399
1399
ret <vscale x 4 x i32> %2
1400
1400
}
1401
1401
1402
1402
define <vscale x 4 x i32> @vnmsac_vx(<vscale x 4 x i32> %a, i32%b, iXLen %vl) {
1403
1403
; NOVLOPT-LABEL: vnmsac_vx:
1404
1404
; NOVLOPT: # %bb.0:
1405
-
; NOVLOPT-NEXT: vmv2r.v v10, v8
1406
1405
; NOVLOPT-NEXT: vsetvli a2, zero, e32, m2, tu, ma
1406
+
; NOVLOPT-NEXT: vmv2r.v v10, v8
1407
1407
; NOVLOPT-NEXT: vnmsac.vx v10, a0, v8
1408
1408
; NOVLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1409
1409
; NOVLOPT-NEXT: vmul.vv v8, v10, v8
1410
1410
; NOVLOPT-NEXT: ret
1411
1411
;
1412
1412
; VLOPT-LABEL: vnmsac_vx:
1413
1413
; VLOPT: # %bb.0:
1414
-
; VLOPT-NEXT: vmv2r.v v10, v8
1415
1414
; VLOPT-NEXT: vsetvli zero, a1, e32, m2, tu, ma
1415
+
; VLOPT-NEXT: vmv2r.v v10, v8
1416
1416
; VLOPT-NEXT: vnmsac.vx v10, a0, v8
1417
1417
; VLOPT-NEXT: vsetvli zero, zero, e32, m2, ta, ma
1418
1418
; VLOPT-NEXT: vmul.vv v8, v10, v8
1419
1419
; VLOPT-NEXT: ret
1420
1420
%1 = call <vscale x 4 x i32> @llvm.riscv.vnmsac.nxv4i32.nxv4i32(<vscale x 4 x i32> %a, i32%b, <vscale x 4 x i32> %a, iXLen -1, iXLen 0)
1421
-
%2 = call <vscale x 4 x i32> @llvm.riscv.vmul.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %a, iXLen %vl)
1421
+
%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> %a, iXLen %vl)
1422
1422
ret <vscale x 4 x i32> %2
1423
1423
}
1424
1424
@@ -1439,30 +1439,30 @@ define <vscale x 4 x i32> @vnmsub_vv(<vscale x 4 x i32> %a, <vscale x 4 x i32> %
1439
1439
; VLOPT-NEXT: vmul.vv v8, v8, v10
1440
1440
; VLOPT-NEXT: ret
1441
1441
%1 = call <vscale x 4 x i32> @llvm.riscv.vnmsub.nxv4i32.nxv4i32(<vscale x 4 x i32> %a, <vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen -1, iXLen 0)
1442
-
%2 = call <vscale x 4 x i32> @llvm.riscv.vmul.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %b, iXLen %vl)
1442
+
%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> %b, iXLen %vl)
1443
1443
ret <vscale x 4 x i32> %2
1444
1444
}
1445
1445
1446
1446
define <vscale x 4 x i32> @vnmsub_vx(<vscale x 4 x i32> %a, i32%b, iXLen %vl) {
1447
1447
; NOVLOPT-LABEL: vnmsub_vx:
1448
1448
; NOVLOPT: # %bb.0:
1449
-
; NOVLOPT-NEXT: vmv2r.v v10, v8
1450
1449
; NOVLOPT-NEXT: vsetvli a2, zero, e32, m2, tu, ma
1450
+
; NOVLOPT-NEXT: vmv2r.v v10, v8
1451
1451
; NOVLOPT-NEXT: vnmsub.vx v10, a0, v8
1452
1452
; NOVLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
1453
1453
; NOVLOPT-NEXT: vmul.vv v8, v10, v8
1454
1454
; NOVLOPT-NEXT: ret
1455
1455
;
1456
1456
; VLOPT-LABEL: vnmsub_vx:
1457
1457
; VLOPT: # %bb.0:
1458
-
; VLOPT-NEXT: vmv2r.v v10, v8
1459
1458
; VLOPT-NEXT: vsetvli zero, a1, e32, m2, tu, ma
1459
+
; VLOPT-NEXT: vmv2r.v v10, v8
1460
1460
; VLOPT-NEXT: vnmsub.vx v10, a0, v8
1461
1461
; VLOPT-NEXT: vsetvli zero, zero, e32, m2, ta, ma
1462
1462
; VLOPT-NEXT: vmul.vv v8, v10, v8
1463
1463
; VLOPT-NEXT: ret
1464
1464
%1 = call <vscale x 4 x i32> @llvm.riscv.vnmsub.nxv4i32.nxv4i32(<vscale x 4 x i32> %a, i32%b, <vscale x 4 x i32> %a, iXLen -1, iXLen 0)
1465
-
%2 = call <vscale x 4 x i32> @llvm.riscv.vmul.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %a, iXLen %vl)
1465
+
%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> %a, iXLen %vl)
0 commit comments