@@ -492,101 +492,62 @@ def SDTRVVVecReduce : SDTypeProfile<1, 6, [
492
492
SDTCisVT<6, XLenVT>
493
493
]>;
494
494
495
- def riscv_add_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
496
- node:$E),
497
- (riscv_add_vl node:$A, node:$B, node:$C,
498
- node:$D, node:$E), [{
499
- return N->hasOneUse();
500
- }]>;
501
-
502
- def riscv_sub_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
503
- node:$E),
504
- (riscv_sub_vl node:$A, node:$B, node:$C,
505
- node:$D, node:$E), [{
506
- return N->hasOneUse();
507
- }]>;
508
-
509
- def riscv_mul_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
510
- node:$E),
511
- (riscv_mul_vl node:$A, node:$B, node:$C,
512
- node:$D, node:$E), [{
513
- return N->hasOneUse();
514
- }]>;
515
-
516
- def riscv_vwmul_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
495
+ let HasOneUse = 1 in {
496
+ def riscv_add_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
517
497
node:$E),
518
- (riscv_vwmul_vl node:$A, node:$B, node:$C,
519
- node:$D, node:$E), [{
520
- return N->hasOneUse();
521
- }]>;
522
-
523
- def riscv_vwmulu_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
524
- node:$E),
525
- (riscv_vwmulu_vl node:$A, node:$B, node:$C,
526
- node:$D, node:$E), [{
527
- return N->hasOneUse();
528
- }]>;
529
-
530
- def riscv_vwmulsu_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
498
+ (riscv_add_vl node:$A, node:$B, node:$C,
499
+ node:$D, node:$E)>;
500
+ def riscv_sub_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
501
+ node:$E),
502
+ (riscv_sub_vl node:$A, node:$B, node:$C,
503
+ node:$D, node:$E)>;
504
+ def riscv_mul_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
505
+ node:$E),
506
+ (riscv_mul_vl node:$A, node:$B, node:$C,
507
+ node:$D, node:$E)>;
508
+ def riscv_vwmul_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
531
509
node:$E),
532
- (riscv_vwmulsu_vl node:$A, node:$B, node:$C,
533
- node:$D, node:$E), [{
534
- return N->hasOneUse();
535
- }]>;
536
-
537
- def riscv_sext_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C),
538
- (riscv_sext_vl node:$A, node:$B, node:$C), [{
539
- return N->hasOneUse();
540
- }]>;
541
-
542
- def riscv_zext_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C),
543
- (riscv_zext_vl node:$A, node:$B, node:$C), [{
544
- return N->hasOneUse();
545
- }]>;
546
-
547
- def riscv_ext_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C),
548
- (riscv_ext_vl node:$A, node:$B, node:$C), [{
549
- return N->hasOneUse();
550
- }]>;
551
-
552
- def riscv_fpextend_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C),
553
- (riscv_fpextend_vl node:$A, node:$B, node:$C), [{
554
- return N->hasOneUse();
555
- }]>;
510
+ (riscv_vwmul_vl node:$A, node:$B, node:$C,
511
+ node:$D, node:$E)>;
512
+ def riscv_vwmulu_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
513
+ node:$E),
514
+ (riscv_vwmulu_vl node:$A, node:$B, node:$C,
515
+ node:$D, node:$E)>;
516
+ def riscv_vwmulsu_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
517
+ node:$E),
518
+ (riscv_vwmulsu_vl node:$A, node:$B, node:$C,
519
+ node:$D, node:$E)>;
520
+ def riscv_sext_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C),
521
+ (riscv_sext_vl node:$A, node:$B, node:$C)>;
522
+ def riscv_zext_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C),
523
+ (riscv_zext_vl node:$A, node:$B, node:$C)>;
524
+ def riscv_ext_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C),
525
+ (riscv_ext_vl node:$A, node:$B, node:$C)>;
526
+ def riscv_fpextend_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C),
527
+ (riscv_fpextend_vl node:$A, node:$B, node:$C)>;
528
+ def riscv_vfmadd_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
529
+ node:$E),
530
+ (riscv_vfmadd_vl node:$A, node:$B,
531
+ node:$C, node:$D, node:$E)>;
532
+ def riscv_vfnmadd_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
533
+ node:$E),
534
+ (riscv_vfnmadd_vl node:$A, node:$B,
535
+ node:$C, node:$D, node:$E)>;
536
+ def riscv_vfmsub_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
537
+ node:$E),
538
+ (riscv_vfmsub_vl node:$A, node:$B,
539
+ node:$C, node:$D, node:$E)>;
540
+ def riscv_vfnmsub_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
541
+ node:$E),
542
+ (riscv_vfnmsub_vl node:$A, node:$B,
543
+ node:$C, node:$D, node:$E)>;
544
+ } // HasOneUse = 1
556
545
557
546
def riscv_fpextend_vl_sameuser : PatFrag<(ops node:$A, node:$B, node:$C),
558
547
(riscv_fpextend_vl node:$A, node:$B, node:$C), [{
559
548
return !N->use_empty() && all_equal(N->users());
560
549
}]>;
561
550
562
- def riscv_vfmadd_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
563
- node:$E),
564
- (riscv_vfmadd_vl node:$A, node:$B,
565
- node:$C, node:$D, node:$E), [{
566
- return N->hasOneUse();
567
- }]>;
568
-
569
- def riscv_vfnmadd_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
570
- node:$E),
571
- (riscv_vfnmadd_vl node:$A, node:$B,
572
- node:$C, node:$D, node:$E), [{
573
- return N->hasOneUse();
574
- }]>;
575
-
576
- def riscv_vfmsub_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
577
- node:$E),
578
- (riscv_vfmsub_vl node:$A, node:$B,
579
- node:$C, node:$D, node:$E), [{
580
- return N->hasOneUse();
581
- }]>;
582
-
583
- def riscv_vfnmsub_vl_oneuse : PatFrag<(ops node:$A, node:$B, node:$C, node:$D,
584
- node:$E),
585
- (riscv_vfnmsub_vl node:$A, node:$B,
586
- node:$C, node:$D, node:$E), [{
587
- return N->hasOneUse();
588
- }]>;
589
-
590
551
foreach kind = ["ADD", "UMAX", "SMAX", "UMIN", "SMIN", "AND", "OR", "XOR",
591
552
"FADD", "SEQ_FADD", "FMIN", "FMAX"] in
592
553
def rvv_vecreduce_#kind#_vl : SDNode<"RISCVISD::VECREDUCE_"#kind#"_VL", SDTRVVVecReduce>;
0 commit comments