@@ -1337,84 +1337,84 @@ let Predicates = [HasVLX, HasBWI] in {
1337
1337
// AVX-512 BROADCAST SUBVECTORS
1338
1338
//
1339
1339
1340
- defm VBROADCASTI32X4 : avx512_subvec_broadcast_rm<0x5a, "vbroadcasti32x4",
1341
- X86SubVBroadcastld128, v16i32_info, v4i32x_info>,
1342
- EVEX_V512, EVEX_CD8<32, CD8VT4>;
1343
- defm VBROADCASTF32X4 : avx512_subvec_broadcast_rm<0x1a, "vbroadcastf32x4",
1344
- X86SubVBroadcastld128, v16f32_info, v4f32x_info>,
1345
- EVEX_V512, EVEX_CD8<32, CD8VT4>;
1346
- defm VBROADCASTI64X4 : avx512_subvec_broadcast_rm<0x5b, "vbroadcasti64x4",
1347
- X86SubVBroadcastld256, v8i64_info, v4i64x_info>, REX_W,
1348
- EVEX_V512, EVEX_CD8<64, CD8VT4>;
1349
- defm VBROADCASTF64X4 : avx512_subvec_broadcast_rm<0x1b, "vbroadcastf64x4",
1350
- X86SubVBroadcastld256, v8f64_info, v4f64x_info>, REX_W,
1351
- EVEX_V512, EVEX_CD8<64, CD8VT4>;
1340
+ defm VBROADCASTI32X4Z : avx512_subvec_broadcast_rm<0x5a, "vbroadcasti32x4",
1341
+ X86SubVBroadcastld128, v16i32_info, v4i32x_info>,
1342
+ EVEX_V512, EVEX_CD8<32, CD8VT4>;
1343
+ defm VBROADCASTF32X4Z : avx512_subvec_broadcast_rm<0x1a, "vbroadcastf32x4",
1344
+ X86SubVBroadcastld128, v16f32_info, v4f32x_info>,
1345
+ EVEX_V512, EVEX_CD8<32, CD8VT4>;
1346
+ defm VBROADCASTI64X4Z : avx512_subvec_broadcast_rm<0x5b, "vbroadcasti64x4",
1347
+ X86SubVBroadcastld256, v8i64_info, v4i64x_info>, REX_W,
1348
+ EVEX_V512, EVEX_CD8<64, CD8VT4>;
1349
+ defm VBROADCASTF64X4Z : avx512_subvec_broadcast_rm<0x1b, "vbroadcastf64x4",
1350
+ X86SubVBroadcastld256, v8f64_info, v4f64x_info>, REX_W,
1351
+ EVEX_V512, EVEX_CD8<64, CD8VT4>;
1352
1352
1353
1353
let Predicates = [HasAVX512] in {
1354
1354
def : Pat<(v8f64 (X86SubVBroadcastld256 addr:$src)),
1355
- (VBROADCASTF64X4rm addr:$src)>;
1355
+ (VBROADCASTF64X4Zrm addr:$src)>;
1356
1356
def : Pat<(v16f32 (X86SubVBroadcastld256 addr:$src)),
1357
- (VBROADCASTF64X4rm addr:$src)>;
1357
+ (VBROADCASTF64X4Zrm addr:$src)>;
1358
1358
def : Pat<(v32f16 (X86SubVBroadcastld256 addr:$src)),
1359
- (VBROADCASTF64X4rm addr:$src)>;
1359
+ (VBROADCASTF64X4Zrm addr:$src)>;
1360
1360
def : Pat<(v8i64 (X86SubVBroadcastld256 addr:$src)),
1361
- (VBROADCASTI64X4rm addr:$src)>;
1361
+ (VBROADCASTI64X4Zrm addr:$src)>;
1362
1362
def : Pat<(v16i32 (X86SubVBroadcastld256 addr:$src)),
1363
- (VBROADCASTI64X4rm addr:$src)>;
1363
+ (VBROADCASTI64X4Zrm addr:$src)>;
1364
1364
def : Pat<(v32i16 (X86SubVBroadcastld256 addr:$src)),
1365
- (VBROADCASTI64X4rm addr:$src)>;
1365
+ (VBROADCASTI64X4Zrm addr:$src)>;
1366
1366
def : Pat<(v64i8 (X86SubVBroadcastld256 addr:$src)),
1367
- (VBROADCASTI64X4rm addr:$src)>;
1367
+ (VBROADCASTI64X4Zrm addr:$src)>;
1368
1368
1369
1369
def : Pat<(v8f64 (X86SubVBroadcastld128 addr:$src)),
1370
- (VBROADCASTF32X4rm addr:$src)>;
1370
+ (VBROADCASTF32X4Zrm addr:$src)>;
1371
1371
def : Pat<(v16f32 (X86SubVBroadcastld128 addr:$src)),
1372
- (VBROADCASTF32X4rm addr:$src)>;
1372
+ (VBROADCASTF32X4Zrm addr:$src)>;
1373
1373
def : Pat<(v32f16 (X86SubVBroadcastld128 addr:$src)),
1374
- (VBROADCASTF32X4rm addr:$src)>;
1374
+ (VBROADCASTF32X4Zrm addr:$src)>;
1375
1375
def : Pat<(v8i64 (X86SubVBroadcastld128 addr:$src)),
1376
- (VBROADCASTI32X4rm addr:$src)>;
1376
+ (VBROADCASTI32X4Zrm addr:$src)>;
1377
1377
def : Pat<(v16i32 (X86SubVBroadcastld128 addr:$src)),
1378
- (VBROADCASTI32X4rm addr:$src)>;
1378
+ (VBROADCASTI32X4Zrm addr:$src)>;
1379
1379
def : Pat<(v32i16 (X86SubVBroadcastld128 addr:$src)),
1380
- (VBROADCASTI32X4rm addr:$src)>;
1380
+ (VBROADCASTI32X4Zrm addr:$src)>;
1381
1381
def : Pat<(v64i8 (X86SubVBroadcastld128 addr:$src)),
1382
- (VBROADCASTI32X4rm addr:$src)>;
1382
+ (VBROADCASTI32X4Zrm addr:$src)>;
1383
1383
1384
1384
// Patterns for selects of bitcasted operations.
1385
1385
def : Pat<(vselect_mask VK16WM:$mask,
1386
1386
(bc_v16f32 (v8f64 (X86SubVBroadcastld128 addr:$src))),
1387
1387
(v16f32 immAllZerosV)),
1388
- (VBROADCASTF32X4rmkz VK16WM:$mask, addr:$src)>;
1388
+ (VBROADCASTF32X4Zrmkz VK16WM:$mask, addr:$src)>;
1389
1389
def : Pat<(vselect_mask VK16WM:$mask,
1390
1390
(bc_v16f32 (v8f64 (X86SubVBroadcastld128 addr:$src))),
1391
1391
VR512:$src0),
1392
- (VBROADCASTF32X4rmk VR512:$src0, VK16WM:$mask, addr:$src)>;
1392
+ (VBROADCASTF32X4Zrmk VR512:$src0, VK16WM:$mask, addr:$src)>;
1393
1393
def : Pat<(vselect_mask VK16WM:$mask,
1394
1394
(bc_v16i32 (v8i64 (X86SubVBroadcastld128 addr:$src))),
1395
1395
(v16i32 immAllZerosV)),
1396
- (VBROADCASTI32X4rmkz VK16WM:$mask, addr:$src)>;
1396
+ (VBROADCASTI32X4Zrmkz VK16WM:$mask, addr:$src)>;
1397
1397
def : Pat<(vselect_mask VK16WM:$mask,
1398
1398
(bc_v16i32 (v8i64 (X86SubVBroadcastld128 addr:$src))),
1399
1399
VR512:$src0),
1400
- (VBROADCASTI32X4rmk VR512:$src0, VK16WM:$mask, addr:$src)>;
1400
+ (VBROADCASTI32X4Zrmk VR512:$src0, VK16WM:$mask, addr:$src)>;
1401
1401
1402
1402
def : Pat<(vselect_mask VK8WM:$mask,
1403
1403
(bc_v8f64 (v16f32 (X86SubVBroadcastld256 addr:$src))),
1404
1404
(v8f64 immAllZerosV)),
1405
- (VBROADCASTF64X4rmkz VK8WM:$mask, addr:$src)>;
1405
+ (VBROADCASTF64X4Zrmkz VK8WM:$mask, addr:$src)>;
1406
1406
def : Pat<(vselect_mask VK8WM:$mask,
1407
1407
(bc_v8f64 (v16f32 (X86SubVBroadcastld256 addr:$src))),
1408
1408
VR512:$src0),
1409
- (VBROADCASTF64X4rmk VR512:$src0, VK8WM:$mask, addr:$src)>;
1409
+ (VBROADCASTF64X4Zrmk VR512:$src0, VK8WM:$mask, addr:$src)>;
1410
1410
def : Pat<(vselect_mask VK8WM:$mask,
1411
1411
(bc_v8i64 (v16i32 (X86SubVBroadcastld256 addr:$src))),
1412
1412
(v8i64 immAllZerosV)),
1413
- (VBROADCASTI64X4rmkz VK8WM:$mask, addr:$src)>;
1413
+ (VBROADCASTI64X4Zrmkz VK8WM:$mask, addr:$src)>;
1414
1414
def : Pat<(vselect_mask VK8WM:$mask,
1415
1415
(bc_v8i64 (v16i32 (X86SubVBroadcastld256 addr:$src))),
1416
1416
VR512:$src0),
1417
- (VBROADCASTI64X4rmk VR512:$src0, VK8WM:$mask, addr:$src)>;
1417
+ (VBROADCASTI64X4Zrmk VR512:$src0, VK8WM:$mask, addr:$src)>;
1418
1418
}
1419
1419
1420
1420
let Predicates = [HasVLX] in {
@@ -1461,90 +1461,90 @@ def : Pat<(vselect_mask VK8WM:$mask,
1461
1461
1462
1462
let Predicates = [HasBF16] in {
1463
1463
def : Pat<(v32bf16 (X86SubVBroadcastld256 addr:$src)),
1464
- (VBROADCASTF64X4rm addr:$src)>;
1464
+ (VBROADCASTF64X4Zrm addr:$src)>;
1465
1465
def : Pat<(v32bf16 (X86SubVBroadcastld128 addr:$src)),
1466
- (VBROADCASTF32X4rm addr:$src)>;
1466
+ (VBROADCASTF32X4Zrm addr:$src)>;
1467
1467
}
1468
1468
1469
1469
let Predicates = [HasBF16, HasVLX] in
1470
1470
def : Pat<(v16bf16 (X86SubVBroadcastld128 addr:$src)),
1471
1471
(VBROADCASTF32X4Z256rm addr:$src)>;
1472
1472
1473
1473
let Predicates = [HasVLX, HasDQI] in {
1474
- defm VBROADCASTI64X2Z128 : avx512_subvec_broadcast_rm_dq<0x5a, "vbroadcasti64x2",
1474
+ defm VBROADCASTI64X2Z256 : avx512_subvec_broadcast_rm_dq<0x5a, "vbroadcasti64x2",
1475
1475
X86SubVBroadcastld128, v4i64x_info, v2i64x_info>,
1476
1476
EVEX_V256, EVEX_CD8<64, CD8VT2>, REX_W;
1477
- defm VBROADCASTF64X2Z128 : avx512_subvec_broadcast_rm_dq<0x1a, "vbroadcastf64x2",
1477
+ defm VBROADCASTF64X2Z256 : avx512_subvec_broadcast_rm_dq<0x1a, "vbroadcastf64x2",
1478
1478
X86SubVBroadcastld128, v4f64x_info, v2f64x_info>,
1479
1479
EVEX_V256, EVEX_CD8<64, CD8VT2>, REX_W;
1480
1480
1481
1481
// Patterns for selects of bitcasted operations.
1482
1482
def : Pat<(vselect_mask VK4WM:$mask,
1483
1483
(bc_v4f64 (v8f32 (X86SubVBroadcastld128 addr:$src))),
1484
1484
(v4f64 immAllZerosV)),
1485
- (VBROADCASTF64X2Z128rmkz VK4WM:$mask, addr:$src)>;
1485
+ (VBROADCASTF64X2Z256rmkz VK4WM:$mask, addr:$src)>;
1486
1486
def : Pat<(vselect_mask VK4WM:$mask,
1487
1487
(bc_v4f64 (v8f32 (X86SubVBroadcastld128 addr:$src))),
1488
1488
VR256X:$src0),
1489
- (VBROADCASTF64X2Z128rmk VR256X:$src0, VK4WM:$mask, addr:$src)>;
1489
+ (VBROADCASTF64X2Z256rmk VR256X:$src0, VK4WM:$mask, addr:$src)>;
1490
1490
def : Pat<(vselect_mask VK4WM:$mask,
1491
1491
(bc_v4i64 (v8i32 (X86SubVBroadcastld128 addr:$src))),
1492
1492
(v4i64 immAllZerosV)),
1493
- (VBROADCASTI64X2Z128rmkz VK4WM:$mask, addr:$src)>;
1493
+ (VBROADCASTI64X2Z256rmkz VK4WM:$mask, addr:$src)>;
1494
1494
def : Pat<(vselect_mask VK4WM:$mask,
1495
1495
(bc_v4i64 (v8i32 (X86SubVBroadcastld128 addr:$src))),
1496
1496
VR256X:$src0),
1497
- (VBROADCASTI64X2Z128rmk VR256X:$src0, VK4WM:$mask, addr:$src)>;
1497
+ (VBROADCASTI64X2Z256rmk VR256X:$src0, VK4WM:$mask, addr:$src)>;
1498
1498
}
1499
1499
1500
1500
let Predicates = [HasDQI] in {
1501
- defm VBROADCASTI64X2 : avx512_subvec_broadcast_rm_dq<0x5a, "vbroadcasti64x2",
1502
- X86SubVBroadcastld128, v8i64_info, v2i64x_info>, REX_W,
1503
- EVEX_V512, EVEX_CD8<64, CD8VT2>;
1504
- defm VBROADCASTI32X8 : avx512_subvec_broadcast_rm_dq<0x5b, "vbroadcasti32x8",
1505
- X86SubVBroadcastld256, v16i32_info, v8i32x_info>,
1506
- EVEX_V512, EVEX_CD8<32, CD8VT8>;
1507
- defm VBROADCASTF64X2 : avx512_subvec_broadcast_rm_dq<0x1a, "vbroadcastf64x2",
1508
- X86SubVBroadcastld128, v8f64_info, v2f64x_info>, REX_W,
1509
- EVEX_V512, EVEX_CD8<64, CD8VT2>;
1510
- defm VBROADCASTF32X8 : avx512_subvec_broadcast_rm_dq<0x1b, "vbroadcastf32x8",
1511
- X86SubVBroadcastld256, v16f32_info, v8f32x_info>,
1512
- EVEX_V512, EVEX_CD8<32, CD8VT8>;
1501
+ defm VBROADCASTI64X2Z : avx512_subvec_broadcast_rm_dq<0x5a, "vbroadcasti64x2",
1502
+ X86SubVBroadcastld128, v8i64_info, v2i64x_info>, REX_W,
1503
+ EVEX_V512, EVEX_CD8<64, CD8VT2>;
1504
+ defm VBROADCASTI32X8Z : avx512_subvec_broadcast_rm_dq<0x5b, "vbroadcasti32x8",
1505
+ X86SubVBroadcastld256, v16i32_info, v8i32x_info>,
1506
+ EVEX_V512, EVEX_CD8<32, CD8VT8>;
1507
+ defm VBROADCASTF64X2Z : avx512_subvec_broadcast_rm_dq<0x1a, "vbroadcastf64x2",
1508
+ X86SubVBroadcastld128, v8f64_info, v2f64x_info>, REX_W,
1509
+ EVEX_V512, EVEX_CD8<64, CD8VT2>;
1510
+ defm VBROADCASTF32X8Z : avx512_subvec_broadcast_rm_dq<0x1b, "vbroadcastf32x8",
1511
+ X86SubVBroadcastld256, v16f32_info, v8f32x_info>,
1512
+ EVEX_V512, EVEX_CD8<32, CD8VT8>;
1513
1513
1514
1514
// Patterns for selects of bitcasted operations.
1515
1515
def : Pat<(vselect_mask VK16WM:$mask,
1516
1516
(bc_v16f32 (v8f64 (X86SubVBroadcastld256 addr:$src))),
1517
1517
(v16f32 immAllZerosV)),
1518
- (VBROADCASTF32X8rmkz VK16WM:$mask, addr:$src)>;
1518
+ (VBROADCASTF32X8Zrmkz VK16WM:$mask, addr:$src)>;
1519
1519
def : Pat<(vselect_mask VK16WM:$mask,
1520
1520
(bc_v16f32 (v8f64 (X86SubVBroadcastld256 addr:$src))),
1521
1521
VR512:$src0),
1522
- (VBROADCASTF32X8rmk VR512:$src0, VK16WM:$mask, addr:$src)>;
1522
+ (VBROADCASTF32X8Zrmk VR512:$src0, VK16WM:$mask, addr:$src)>;
1523
1523
def : Pat<(vselect_mask VK16WM:$mask,
1524
1524
(bc_v16i32 (v8i64 (X86SubVBroadcastld256 addr:$src))),
1525
1525
(v16i32 immAllZerosV)),
1526
- (VBROADCASTI32X8rmkz VK16WM:$mask, addr:$src)>;
1526
+ (VBROADCASTI32X8Zrmkz VK16WM:$mask, addr:$src)>;
1527
1527
def : Pat<(vselect_mask VK16WM:$mask,
1528
1528
(bc_v16i32 (v8i64 (X86SubVBroadcastld256 addr:$src))),
1529
1529
VR512:$src0),
1530
- (VBROADCASTI32X8rmk VR512:$src0, VK16WM:$mask, addr:$src)>;
1530
+ (VBROADCASTI32X8Zrmk VR512:$src0, VK16WM:$mask, addr:$src)>;
1531
1531
1532
1532
def : Pat<(vselect_mask VK8WM:$mask,
1533
1533
(bc_v8f64 (v16f32 (X86SubVBroadcastld128 addr:$src))),
1534
1534
(v8f64 immAllZerosV)),
1535
- (VBROADCASTF64X2rmkz VK8WM:$mask, addr:$src)>;
1535
+ (VBROADCASTF64X2Zrmkz VK8WM:$mask, addr:$src)>;
1536
1536
def : Pat<(vselect_mask VK8WM:$mask,
1537
1537
(bc_v8f64 (v16f32 (X86SubVBroadcastld128 addr:$src))),
1538
1538
VR512:$src0),
1539
- (VBROADCASTF64X2rmk VR512:$src0, VK8WM:$mask, addr:$src)>;
1539
+ (VBROADCASTF64X2Zrmk VR512:$src0, VK8WM:$mask, addr:$src)>;
1540
1540
def : Pat<(vselect_mask VK8WM:$mask,
1541
1541
(bc_v8i64 (v16i32 (X86SubVBroadcastld128 addr:$src))),
1542
1542
(v8i64 immAllZerosV)),
1543
- (VBROADCASTI64X2rmkz VK8WM:$mask, addr:$src)>;
1543
+ (VBROADCASTI64X2Zrmkz VK8WM:$mask, addr:$src)>;
1544
1544
def : Pat<(vselect_mask VK8WM:$mask,
1545
1545
(bc_v8i64 (v16i32 (X86SubVBroadcastld128 addr:$src))),
1546
1546
VR512:$src0),
1547
- (VBROADCASTI64X2rmk VR512:$src0, VK8WM:$mask, addr:$src)>;
1547
+ (VBROADCASTI64X2Zrmk VR512:$src0, VK8WM:$mask, addr:$src)>;
1548
1548
}
1549
1549
1550
1550
multiclass avx512_common_broadcast_32x2<bits<8> opc, string OpcodeStr,
0 commit comments