@@ -676,9 +676,9 @@ def : Pat<(binop_allwusers<sub> GPR:$rd, (mul
676
676
} // Predicates = [HasVendorXTHeadMac, IsRV64]
677
677
678
678
let Predicates = [HasVendorXTHeadMac, IsRV32] in {
679
- def : Pat<(i32 ( add GPR:$rd, (mul (sexti16 GPR:$rs1), (sexti16 GPR:$rs2) ))),
680
- (TH_MULAH GPR:$rd, GPR:$rs1, GPR:$rs2)>;
681
- def : Pat<(i32 ( sub GPR:$rd, (mul (sexti16 GPR:$rs1), (sexti16 GPR:$rs2) ))),
679
+ def : Pat<(add GPR:$rd, (mul (sexti16 GPR:$rs1), (sexti16 GPR:$rs2))),
680
+ (TH_MULAH GPR:$rd, GPR:$rs1, GPR:$rs2)>;
681
+ def : Pat<(sub GPR:$rd, (mul (sexti16 GPR:$rs1), (sexti16 GPR:$rs2))),
682
682
(TH_MULSH GPR:$rd, GPR:$rs1, GPR:$rs2)>;
683
683
} // Predicates = [HasVendorXTHeadMac, IsRV32]
684
684
@@ -761,15 +761,15 @@ def TH_SYNC_IS : THCacheInst_void<0b11011, "th.sync.is">;
761
761
762
762
def AddrRegRegScale : ComplexPattern<iPTR, 3, "SelectAddrRegRegScale<3>">;
763
763
def AddrRegZextRegScale
764
- : ComplexPattern<i64 , 3, "SelectAddrRegZextRegScale<3, 32>",
764
+ : ComplexPattern<iPTR , 3, "SelectAddrRegZextRegScale<3, 32>",
765
765
[], [], 10>;
766
766
767
767
multiclass LdIdxPat<PatFrag LoadOp, RVInst Inst, ValueType vt = XLenVT> {
768
768
def : Pat<(vt (LoadOp (AddrRegRegScale GPR:$rs1, GPR:$rs2, uimm2:$uimm2))),
769
769
(Inst GPR:$rs1, GPR:$rs2, uimm2:$uimm2)>;
770
770
}
771
771
772
- multiclass LdZextIdxPat<PatFrag LoadOp, RVInst Inst, ValueType vt = i64 > {
772
+ multiclass LdZextIdxPat<PatFrag LoadOp, RVInst Inst, ValueType vt = XLenVT > {
773
773
def : Pat<(vt (LoadOp (AddrRegZextRegScale GPR:$rs1, GPR:$rs2, uimm2:$uimm2))),
774
774
(Inst GPR:$rs1, GPR:$rs2, uimm2:$uimm2)>;
775
775
}
@@ -782,7 +782,7 @@ def : Pat<(StoreOp (vt StTy:$rd),
782
782
}
783
783
784
784
multiclass StZextIdxPat<PatFrag StoreOp, RVInst Inst, RegisterClass StTy,
785
- ValueType vt = i64 > {
785
+ ValueType vt = XLenVT > {
786
786
def : Pat<(StoreOp (vt StTy:$rd),
787
787
(AddrRegZextRegScale GPR:$rs1, GPR:$rs2, uimm2:$uimm2)),
788
788
(Inst StTy:$rd, GPR:$rs1, GPR:$rs2, uimm2:$uimm2)>;
@@ -802,8 +802,8 @@ defm : StIdxPat<truncstorei16, TH_SRH, GPR>;
802
802
}
803
803
804
804
let Predicates = [HasVendorXTHeadMemIdx, IsRV32] in {
805
- defm : LdIdxPat<load, TH_LRW, i32 >;
806
- defm : StIdxPat<store, TH_SRW, GPR, i32 >;
805
+ defm : LdIdxPat<load, TH_LRW>;
806
+ defm : StIdxPat<store, TH_SRW, GPR>;
807
807
}
808
808
809
809
let Predicates = [HasVendorXTHeadMemIdx, IsRV64] in {
@@ -815,22 +815,22 @@ defm : LdZextIdxPat<extloadi16, TH_LURH>;
815
815
defm : LdZextIdxPat<sextloadi16, TH_LURH>;
816
816
defm : LdZextIdxPat<zextloadi16, TH_LURHU>;
817
817
818
- defm : LdIdxPat<extloadi32, TH_LRW, i64 >;
819
- defm : LdIdxPat<sextloadi32, TH_LRW, i64 >;
820
- defm : LdIdxPat<zextloadi32, TH_LRWU, i64 >;
818
+ defm : LdIdxPat<extloadi32, TH_LRW>;
819
+ defm : LdIdxPat<sextloadi32, TH_LRW>;
820
+ defm : LdIdxPat<zextloadi32, TH_LRWU>;
821
821
822
822
defm : LdZextIdxPat<extloadi32, TH_LURW>;
823
823
defm : LdZextIdxPat<sextloadi32, TH_LURW>;
824
824
defm : LdZextIdxPat<zextloadi32, TH_LURWU>;
825
825
826
- defm : LdIdxPat<load, TH_LRD, i64 >;
826
+ defm : LdIdxPat<load, TH_LRD>;
827
827
defm : LdZextIdxPat<load, TH_LURD>;
828
828
829
829
defm : StZextIdxPat<truncstorei8, TH_SURB, GPR>;
830
830
defm : StZextIdxPat<truncstorei16, TH_SURH, GPR>;
831
- defm : StIdxPat<truncstorei32, TH_SRW, GPR, i64 >;
832
- defm : StZextIdxPat<truncstorei32, TH_SURW, GPR, i64 >;
833
- defm : StIdxPat<store, TH_SRD, GPR, i64 >;
831
+ defm : StIdxPat<truncstorei32, TH_SRW, GPR>;
832
+ defm : StZextIdxPat<truncstorei32, TH_SURW, GPR>;
833
+ defm : StIdxPat<store, TH_SRD, GPR>;
834
834
defm : StZextIdxPat<store, TH_SURD, GPR>;
835
835
}
836
836
0 commit comments