@@ -548,65 +548,66 @@ def : Pat<(add_non_imm12 sh3add_op:$rs1, (XLenVT GPR:$rs2)),
548
548
(TH_ADDSL GPR:$rs2, sh3add_op:$rs1, 3)>;
549
549
550
550
def : Pat<(add (mul_oneuse GPR:$rs1, (XLenVT 6)), GPR:$rs2),
551
- (TH_ADDSL GPR:$rs2, (TH_ADDSL GPR:$rs1, GPR:$rs1, 1), 1)>;
551
+ (TH_ADDSL GPR:$rs2, (XLenVT ( TH_ADDSL GPR:$rs1, GPR:$rs1, 1) ), 1)>;
552
552
def : Pat<(add (mul_oneuse GPR:$rs1, (XLenVT 10)), GPR:$rs2),
553
- (TH_ADDSL GPR:$rs2, (TH_ADDSL GPR:$rs1, GPR:$rs1, 2), 1)>;
553
+ (TH_ADDSL GPR:$rs2, (XLenVT ( TH_ADDSL GPR:$rs1, GPR:$rs1, 2) ), 1)>;
554
554
def : Pat<(add (mul_oneuse GPR:$rs1, (XLenVT 18)), GPR:$rs2),
555
- (TH_ADDSL GPR:$rs2, (TH_ADDSL GPR:$rs1, GPR:$rs1, 3), 1)>;
555
+ (TH_ADDSL GPR:$rs2, (XLenVT ( TH_ADDSL GPR:$rs1, GPR:$rs1, 3) ), 1)>;
556
556
def : Pat<(add (mul_oneuse GPR:$rs1, (XLenVT 12)), GPR:$rs2),
557
- (TH_ADDSL GPR:$rs2, (TH_ADDSL GPR:$rs1, GPR:$rs1, 1), 2)>;
557
+ (TH_ADDSL GPR:$rs2, (XLenVT ( TH_ADDSL GPR:$rs1, GPR:$rs1, 1) ), 2)>;
558
558
def : Pat<(add (mul_oneuse GPR:$rs1, (XLenVT 20)), GPR:$rs2),
559
- (TH_ADDSL GPR:$rs2, (TH_ADDSL GPR:$rs1, GPR:$rs1, 2), 2)>;
559
+ (TH_ADDSL GPR:$rs2, (XLenVT ( TH_ADDSL GPR:$rs1, GPR:$rs1, 2) ), 2)>;
560
560
def : Pat<(add (mul_oneuse GPR:$rs1, (XLenVT 36)), GPR:$rs2),
561
- (TH_ADDSL GPR:$rs2, (TH_ADDSL GPR:$rs1, GPR:$rs1, 3), 2)>;
561
+ (TH_ADDSL GPR:$rs2, (XLenVT ( TH_ADDSL GPR:$rs1, GPR:$rs1, 3) ), 2)>;
562
562
def : Pat<(add (mul_oneuse GPR:$rs1, (XLenVT 24)), GPR:$rs2),
563
- (TH_ADDSL GPR:$rs2, (TH_ADDSL GPR:$rs1, GPR:$rs1, 1), 3)>;
563
+ (TH_ADDSL GPR:$rs2, (XLenVT ( TH_ADDSL GPR:$rs1, GPR:$rs1, 1) ), 3)>;
564
564
def : Pat<(add (mul_oneuse GPR:$rs1, (XLenVT 40)), GPR:$rs2),
565
- (TH_ADDSL GPR:$rs2, (TH_ADDSL GPR:$rs1, GPR:$rs1, 2), 3)>;
565
+ (TH_ADDSL GPR:$rs2, (XLenVT ( TH_ADDSL GPR:$rs1, GPR:$rs1, 2) ), 3)>;
566
566
def : Pat<(add (mul_oneuse GPR:$rs1, (XLenVT 72)), GPR:$rs2),
567
- (TH_ADDSL GPR:$rs2, (TH_ADDSL GPR:$rs1, GPR:$rs1, 3), 3)>;
567
+ (TH_ADDSL GPR:$rs2, (XLenVT ( TH_ADDSL GPR:$rs1, GPR:$rs1, 3) ), 3)>;
568
568
569
569
def : Pat<(add (XLenVT GPR:$r), CSImm12MulBy4:$i),
570
- (TH_ADDSL GPR:$r, (ADDI (XLenVT X0), (SimmShiftRightBy2XForm CSImm12MulBy4:$i)), 2)>;
570
+ (TH_ADDSL GPR:$r, (XLenVT ( ADDI (XLenVT X0), (SimmShiftRightBy2XForm CSImm12MulBy4:$i) )), 2)>;
571
571
def : Pat<(add (XLenVT GPR:$r), CSImm12MulBy8:$i),
572
- (TH_ADDSL GPR:$r, (ADDI (XLenVT X0), (SimmShiftRightBy3XForm CSImm12MulBy8:$i)), 3)>;
572
+ (TH_ADDSL GPR:$r, (XLenVT ( ADDI (XLenVT X0), (SimmShiftRightBy3XForm CSImm12MulBy8:$i) )), 3)>;
573
573
574
574
def : Pat<(mul (XLenVT GPR:$r), C3LeftShift:$i),
575
- (SLLI (TH_ADDSL GPR:$r, GPR:$r, 1),
575
+ (SLLI (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 1) ),
576
576
(TrailingZeros C3LeftShift:$i))>;
577
577
def : Pat<(mul (XLenVT GPR:$r), C5LeftShift:$i),
578
- (SLLI (TH_ADDSL GPR:$r, GPR:$r, 2),
578
+ (SLLI (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 2) ),
579
579
(TrailingZeros C5LeftShift:$i))>;
580
580
def : Pat<(mul (XLenVT GPR:$r), C9LeftShift:$i),
581
- (SLLI (TH_ADDSL GPR:$r, GPR:$r, 3),
581
+ (SLLI (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 3) ),
582
582
(TrailingZeros C9LeftShift:$i))>;
583
583
584
584
def : Pat<(mul_const_oneuse GPR:$r, (XLenVT 11)),
585
- (TH_ADDSL GPR:$r, (TH_ADDSL GPR:$r, GPR:$r, 2), 1)>;
585
+ (TH_ADDSL GPR:$r, (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 2) ), 1)>;
586
586
def : Pat<(mul_const_oneuse GPR:$r, (XLenVT 19)),
587
- (TH_ADDSL GPR:$r, (TH_ADDSL GPR:$r, GPR:$r, 3), 1)>;
587
+ (TH_ADDSL GPR:$r, (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 3) ), 1)>;
588
588
def : Pat<(mul_const_oneuse GPR:$r, (XLenVT 13)),
589
- (TH_ADDSL GPR:$r, (TH_ADDSL GPR:$r, GPR:$r, 1), 2)>;
589
+ (TH_ADDSL GPR:$r, (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 1) ), 2)>;
590
590
def : Pat<(mul_const_oneuse GPR:$r, (XLenVT 21)),
591
- (TH_ADDSL GPR:$r, (TH_ADDSL GPR:$r, GPR:$r, 2), 2)>;
591
+ (TH_ADDSL GPR:$r, (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 2) ), 2)>;
592
592
def : Pat<(mul_const_oneuse GPR:$r, (XLenVT 37)),
593
- (TH_ADDSL GPR:$r, (TH_ADDSL GPR:$r, GPR:$r, 3), 2)>;
593
+ (TH_ADDSL GPR:$r, (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 3) ), 2)>;
594
594
def : Pat<(mul_const_oneuse GPR:$r, (XLenVT 25)),
595
- (TH_ADDSL (TH_ADDSL GPR:$r, GPR:$r, 2), (TH_ADDSL GPR:$r, GPR:$r, 2), 2)>;
595
+ (TH_ADDSL (XLenVT (TH_ADDSL GPR:$r, GPR:$r, 2)),
596
+ (XLenVT (TH_ADDSL GPR:$r, GPR:$r, 2)), 2)>;
596
597
def : Pat<(mul_const_oneuse GPR:$r, (XLenVT 41)),
597
- (TH_ADDSL GPR:$r, (TH_ADDSL GPR:$r, GPR:$r, 2), 3)>;
598
+ (TH_ADDSL GPR:$r, (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 2) ), 3)>;
598
599
def : Pat<(mul_const_oneuse GPR:$r, (XLenVT 73)),
599
- (TH_ADDSL GPR:$r, (TH_ADDSL GPR:$r, GPR:$r, 3), 3)>;
600
+ (TH_ADDSL GPR:$r, (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 3) ), 3)>;
600
601
def : Pat<(mul_const_oneuse GPR:$r, (XLenVT 27)),
601
- (TH_ADDSL (TH_ADDSL GPR:$r, GPR:$r, 3), (TH_ADDSL GPR:$r, GPR:$r, 3), 1)>;
602
+ (TH_ADDSL (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 3)) , (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 3) ), 1)>;
602
603
def : Pat<(mul_const_oneuse GPR:$r, (XLenVT 45)),
603
- (TH_ADDSL (TH_ADDSL GPR:$r, GPR:$r, 3), (TH_ADDSL GPR:$r, GPR:$r, 3), 2)>;
604
+ (TH_ADDSL (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 3)) , (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 3) ), 2)>;
604
605
def : Pat<(mul_const_oneuse GPR:$r, (XLenVT 81)),
605
- (TH_ADDSL (TH_ADDSL GPR:$r, GPR:$r, 3), (TH_ADDSL GPR:$r, GPR:$r, 3), 3)>;
606
+ (TH_ADDSL (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 3)) , (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 3) ), 3)>;
606
607
607
608
def : Pat<(mul_const_oneuse GPR:$r, (XLenVT 200)),
608
- (SLLI (TH_ADDSL (TH_ADDSL GPR:$r, GPR:$r, 2),
609
- ( TH_ADDSL GPR:$r, GPR:$r, 2), 2), 3)>;
609
+ (SLLI (XLenVT ( TH_ADDSL (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 2) ),
610
+ (XLenVT ( TH_ADDSL GPR:$r, GPR:$r, 2)) , 2) ), 3)>;
610
611
} // Predicates = [HasVendorXTHeadBa]
611
612
612
613
let Predicates = [HasVendorXTHeadBb] in {
@@ -633,14 +634,14 @@ def : Pat<(sra (bswap i64:$rs1), (i64 32)),
633
634
def : Pat<(binop_allwusers<srl> (bswap i64:$rs1), (i64 32)),
634
635
(TH_REVW i64:$rs1)>;
635
636
def : Pat<(riscv_clzw i64:$rs1),
636
- (TH_FF0 (SLLI (XORI i64:$rs1, -1), 32))>;
637
+ (TH_FF0 (i64 ( SLLI (i64 ( XORI i64:$rs1, -1)) , 32) ))>;
637
638
} // Predicates = [HasVendorXTHeadBb, IsRV64]
638
639
639
640
let Predicates = [HasVendorXTHeadBs] in {
640
641
def : Pat<(and (srl (XLenVT GPR:$rs1), uimmlog2xlen:$shamt), 1),
641
642
(TH_TST GPR:$rs1, uimmlog2xlen:$shamt)>;
642
643
def : Pat<(XLenVT (seteq (and (XLenVT GPR:$rs1), SingleBitSetMask:$mask), 0)),
643
- (TH_TST (XORI GPR:$rs1, -1), SingleBitSetMask:$mask)>;
644
+ (TH_TST (XLenVT ( XORI GPR:$rs1, -1) ), SingleBitSetMask:$mask)>;
644
645
} // Predicates = [HasVendorXTHeadBs]
645
646
646
647
let Predicates = [HasVendorXTHeadCondMov] in {
0 commit comments