@@ -1373,23 +1373,6 @@ class VPseudoIStoreMask<VReg StClass, VReg IdxClass, int EEW, bits<3> LMUL,
1373
1373
let HasSEWOp = 1;
1374
1374
}
1375
1375
1376
- class VPseudoBinaryMask<VReg RetClass,
1377
- RegisterClass Op1Class,
1378
- DAGOperand Op2Class,
1379
- string Constraint> :
1380
- Pseudo<(outs GetVRegNoV0<RetClass>.R:$rd),
1381
- (ins GetVRegNoV0<RetClass>.R:$merge,
1382
- Op1Class:$rs2, Op2Class:$rs1,
1383
- VMaskOp:$vm, AVL:$vl, ixlenimm:$sew), []>,
1384
- RISCVVPseudo {
1385
- let mayLoad = 0;
1386
- let mayStore = 0;
1387
- let hasSideEffects = 0;
1388
- let Constraints = !interleave([Constraint, "$rd = $merge"], ",");
1389
- let HasVLOp = 1;
1390
- let HasSEWOp = 1;
1391
- }
1392
-
1393
1376
class VPseudoBinaryMaskPolicy<VReg RetClass,
1394
1377
RegisterClass Op1Class,
1395
1378
DAGOperand Op2Class,
@@ -1449,7 +1432,7 @@ class VPseudoTernaryMaskPolicyRoundingMode<VReg RetClass,
1449
1432
let UsesVXRM = 0;
1450
1433
}
1451
1434
1452
- // Like VPseudoBinaryMask , but output can be V0.
1435
+ // Like VPseudoBinaryMaskPolicy , but output can be V0 and there is no policy .
1453
1436
class VPseudoBinaryMOutMask<VReg RetClass,
1454
1437
RegisterClass Op1Class,
1455
1438
DAGOperand Op2Class,
@@ -1470,8 +1453,8 @@ class VPseudoBinaryMOutMask<VReg RetClass,
1470
1453
let UsesMaskPolicy = 1;
1471
1454
}
1472
1455
1473
- // Special version of VPseudoBinaryMask where we pretend the first source is
1474
- // tied to the destination so we can workaround the earlyclobber constraint.
1456
+ // Special version of VPseudoBinaryMaskPolicy where we pretend the first source
1457
+ // is tied to the destination so we can workaround the earlyclobber constraint.
1475
1458
// This allows maskedoff and rs2 to be the same register.
1476
1459
class VPseudoTiedBinaryMask<VReg RetClass,
1477
1460
DAGOperand Op2Class,
@@ -4375,28 +4358,6 @@ class VPatTiedBinaryMaskRoundingMode<string intrinsic_name,
4375
4358
(XLenVT timm:$round),
4376
4359
GPR:$vl, sew, (XLenVT timm:$policy))>;
4377
4360
4378
- class VPatTernaryNoMask<string intrinsic,
4379
- string inst,
4380
- string kind,
4381
- ValueType result_type,
4382
- ValueType op1_type,
4383
- ValueType op2_type,
4384
- int sew,
4385
- LMULInfo vlmul,
4386
- VReg result_reg_class,
4387
- RegisterClass op1_reg_class,
4388
- DAGOperand op2_kind> :
4389
- Pat<(result_type (!cast<Intrinsic>(intrinsic)
4390
- (result_type result_reg_class:$rs3),
4391
- (op1_type op1_reg_class:$rs1),
4392
- (op2_type op2_kind:$rs2),
4393
- VLOpFrag)),
4394
- (!cast<Instruction>(inst#"_"#kind#"_"#vlmul.MX)
4395
- result_reg_class:$rs3,
4396
- (op1_type op1_reg_class:$rs1),
4397
- op2_kind:$rs2,
4398
- GPR:$vl, sew)>;
4399
-
4400
4361
class VPatTernaryNoMaskTU<string intrinsic,
4401
4362
string inst,
4402
4363
string kind,
@@ -4492,31 +4453,6 @@ class VPatTernaryNoMaskWithPolicyRoundingMode<string intrinsic,
4492
4453
(XLenVT timm:$round),
4493
4454
GPR:$vl, log2sew, (XLenVT timm:$policy))>;
4494
4455
4495
- class VPatTernaryMask<string intrinsic,
4496
- string inst,
4497
- string kind,
4498
- ValueType result_type,
4499
- ValueType op1_type,
4500
- ValueType op2_type,
4501
- ValueType mask_type,
4502
- int sew,
4503
- LMULInfo vlmul,
4504
- VReg result_reg_class,
4505
- RegisterClass op1_reg_class,
4506
- DAGOperand op2_kind> :
4507
- Pat<(result_type (!cast<Intrinsic>(intrinsic#"_mask")
4508
- (result_type result_reg_class:$rs3),
4509
- (op1_type op1_reg_class:$rs1),
4510
- (op2_type op2_kind:$rs2),
4511
- (mask_type V0),
4512
- VLOpFrag)),
4513
- (!cast<Instruction>(inst#"_"#kind#"_"#vlmul.MX # "_MASK")
4514
- result_reg_class:$rs3,
4515
- (op1_type op1_reg_class:$rs1),
4516
- op2_kind:$rs2,
4517
- (mask_type V0),
4518
- GPR:$vl, sew)>;
4519
-
4520
4456
class VPatTernaryMaskPolicy<string intrinsic,
4521
4457
string inst,
4522
4458
string kind,
@@ -5513,46 +5449,6 @@ multiclass VPatBinaryM_V_X<string intrinsic, string instruction>
5513
5449
: VPatBinaryV_V<intrinsic, instruction>,
5514
5450
VPatBinaryV_X<intrinsic, instruction>;
5515
5451
5516
- multiclass VPatTernary<string intrinsic,
5517
- string inst,
5518
- string kind,
5519
- ValueType result_type,
5520
- ValueType op1_type,
5521
- ValueType op2_type,
5522
- ValueType mask_type,
5523
- int sew,
5524
- LMULInfo vlmul,
5525
- VReg result_reg_class,
5526
- RegisterClass op1_reg_class,
5527
- DAGOperand op2_kind> {
5528
- def : VPatTernaryNoMask<intrinsic, inst, kind, result_type, op1_type, op2_type,
5529
- sew, vlmul, result_reg_class, op1_reg_class,
5530
- op2_kind>;
5531
- def : VPatTernaryMask<intrinsic, inst, kind, result_type, op1_type, op2_type,
5532
- mask_type, sew, vlmul, result_reg_class, op1_reg_class,
5533
- op2_kind>;
5534
- }
5535
-
5536
- multiclass VPatTernaryNoMaskNoPolicy<string intrinsic,
5537
- string inst,
5538
- string kind,
5539
- ValueType result_type,
5540
- ValueType op1_type,
5541
- ValueType op2_type,
5542
- ValueType mask_type,
5543
- int sew,
5544
- LMULInfo vlmul,
5545
- VReg result_reg_class,
5546
- RegisterClass op1_reg_class,
5547
- DAGOperand op2_kind> {
5548
- def : VPatTernaryNoMask<intrinsic, inst, kind, result_type, op1_type, op2_type,
5549
- sew, vlmul, result_reg_class, op1_reg_class,
5550
- op2_kind>;
5551
- def : VPatTernaryMaskPolicy<intrinsic, inst, kind, result_type, op1_type, op2_type,
5552
- mask_type, sew, vlmul, result_reg_class, op1_reg_class,
5553
- op2_kind>;
5554
- }
5555
-
5556
5452
multiclass VPatTernaryWithPolicy<string intrinsic,
5557
5453
string inst,
5558
5454
string kind,
0 commit comments