@@ -218,6 +218,8 @@ def I1toI32: OutPatFrag<(ops node:$Rs), (C2_muxii (i1 $Rs), 1, 0)>;
218
218
def I32toI1: OutPatFrag<(ops node:$Rs), (i1 (C2_cmpgtui (i32 $Rs), (i32 0)))>;
219
219
def ToZext64: OutPatFrag<(ops node:$Rs), (i64 (A4_combineir 0, (i32 $Rs)))>;
220
220
def ToSext64: OutPatFrag<(ops node:$Rs), (i64 (A2_sxtw (i32 $Rs)))>;
221
+ def ToAext64: OutPatFrag<(ops node:$Rs),
222
+ (REG_SEQUENCE DoubleRegs, (i32 (IMPLICIT_DEF)), isub_hi, (i32 $Rs), isub_lo)>;
221
223
222
224
def Combinew: OutPatFrag<(ops node:$Rs, node:$Rt),
223
225
(REG_SEQUENCE DoubleRegs, $Rs, isub_hi, $Rt, isub_lo)>;
@@ -811,9 +813,9 @@ def: Pat<(select (not I1:$Pu), F32:$Rt, f32ImmPred:$I),
811
813
(C2_muxri I1:$Pu, (ftoi $I), F32:$Rt)>;
812
814
813
815
def: Pat<(select I1:$Pu, V4I8:$Rs, V4I8:$Rt),
814
- (LoReg (C2_vmux I1:$Pu, (ToZext64 $Rs), (ToZext64 $Rt)))>;
816
+ (LoReg (C2_vmux I1:$Pu, (ToAext64 $Rs), (ToAext64 $Rt)))>;
815
817
def: Pat<(select I1:$Pu, V2I16:$Rs, V2I16:$Rt),
816
- (LoReg (C2_vmux I1:$Pu, (ToZext64 $Rs), (ToZext64 $Rt)))>;
818
+ (LoReg (C2_vmux I1:$Pu, (ToAext64 $Rs), (ToAext64 $Rt)))>;
817
819
def: Pat<(select I1:$Pu, V2I32:$Rs, V2I32:$Rt),
818
820
(Combinew (C2_mux I1:$Pu, (HiReg $Rs), (HiReg $Rt)),
819
821
(C2_mux I1:$Pu, (LoReg $Rs), (LoReg $Rt)))>;
@@ -1512,9 +1514,9 @@ def: Pat<(add V2I32:$Rx, (mul V2I32:$Rs, V2I32:$Rt)),
1512
1514
// Add/subtract two v4i8: Hexagon does not have an insn for this one, so
1513
1515
// we use the double add v8i8, and use only the low part of the result.
1514
1516
def: Pat<(add V4I8:$Rs, V4I8:$Rt),
1515
- (LoReg (A2_vaddub (ToZext64 $Rs), (ToZext64 $Rt)))>;
1517
+ (LoReg (A2_vaddub (ToAext64 $Rs), (ToAext64 $Rt)))>;
1516
1518
def: Pat<(sub V4I8:$Rs, V4I8:$Rt),
1517
- (LoReg (A2_vsubub (ToZext64 $Rs), (ToZext64 $Rt)))>;
1519
+ (LoReg (A2_vsubub (ToAext64 $Rs), (ToAext64 $Rt)))>;
1518
1520
1519
1521
// Use M2_vmpy2s_s0 for half-word vector multiply. It multiplies two
1520
1522
// half-words, and saturates the result to a 32-bit value, except the
@@ -1863,10 +1865,10 @@ let AddedComplexity = 20 in {
1863
1865
}
1864
1866
1865
1867
let AddedComplexity = 30 in {
1866
- defm: Loadxim_pat<extloadi1, i64, ToZext64 , anyimm0, L2_loadrub_io>;
1867
- defm: Loadxim_pat<extloadi8, i64, ToZext64 , anyimm0, L2_loadrub_io>;
1868
- defm: Loadxim_pat<extloadi16, i64, ToZext64 , anyimm1, L2_loadruh_io>;
1869
- defm: Loadxim_pat<extloadi32, i64, ToZext64 , anyimm2, L2_loadri_io>;
1868
+ defm: Loadxim_pat<extloadi1, i64, ToAext64 , anyimm0, L2_loadrub_io>;
1869
+ defm: Loadxim_pat<extloadi8, i64, ToAext64 , anyimm0, L2_loadrub_io>;
1870
+ defm: Loadxim_pat<extloadi16, i64, ToAext64 , anyimm1, L2_loadruh_io>;
1871
+ defm: Loadxim_pat<extloadi32, i64, ToAext64 , anyimm2, L2_loadri_io>;
1870
1872
defm: Loadxim_pat<zextloadi1, i64, ToZext64, anyimm0, L2_loadrub_io>;
1871
1873
defm: Loadxim_pat<zextloadi8, i64, ToZext64, anyimm0, L2_loadrub_io>;
1872
1874
defm: Loadxim_pat<zextloadi16, i64, ToZext64, anyimm1, L2_loadruh_io>;
@@ -1901,13 +1903,13 @@ let AddedComplexity = 60 in {
1901
1903
1902
1904
def: Loadxum_pat<sextloadi8, i64, anyimm0, ToSext64, L4_loadrb_ur>;
1903
1905
def: Loadxum_pat<zextloadi8, i64, anyimm0, ToZext64, L4_loadrub_ur>;
1904
- def: Loadxum_pat<extloadi8, i64, anyimm0, ToZext64 , L4_loadrub_ur>;
1906
+ def: Loadxum_pat<extloadi8, i64, anyimm0, ToAext64 , L4_loadrub_ur>;
1905
1907
def: Loadxum_pat<sextloadi16, i64, anyimm1, ToSext64, L4_loadrh_ur>;
1906
1908
def: Loadxum_pat<zextloadi16, i64, anyimm1, ToZext64, L4_loadruh_ur>;
1907
- def: Loadxum_pat<extloadi16, i64, anyimm1, ToZext64 , L4_loadruh_ur>;
1909
+ def: Loadxum_pat<extloadi16, i64, anyimm1, ToAext64 , L4_loadruh_ur>;
1908
1910
def: Loadxum_pat<sextloadi32, i64, anyimm2, ToSext64, L4_loadri_ur>;
1909
1911
def: Loadxum_pat<zextloadi32, i64, anyimm2, ToZext64, L4_loadri_ur>;
1910
- def: Loadxum_pat<extloadi32, i64, anyimm2, ToZext64 , L4_loadri_ur>;
1912
+ def: Loadxum_pat<extloadi32, i64, anyimm2, ToAext64 , L4_loadri_ur>;
1911
1913
}
1912
1914
1913
1915
let AddedComplexity = 40 in {
@@ -1947,25 +1949,25 @@ let AddedComplexity = 20 in {
1947
1949
}
1948
1950
1949
1951
let AddedComplexity = 40 in {
1950
- def: Loadxrm_shl_pat<extloadi8, i64, ToZext64 , L4_loadrub_rr>;
1952
+ def: Loadxrm_shl_pat<extloadi8, i64, ToAext64 , L4_loadrub_rr>;
1951
1953
def: Loadxrm_shl_pat<zextloadi8, i64, ToZext64, L4_loadrub_rr>;
1952
1954
def: Loadxrm_shl_pat<sextloadi8, i64, ToSext64, L4_loadrb_rr>;
1953
- def: Loadxrm_shl_pat<extloadi16, i64, ToZext64 , L4_loadruh_rr>;
1955
+ def: Loadxrm_shl_pat<extloadi16, i64, ToAext64 , L4_loadruh_rr>;
1954
1956
def: Loadxrm_shl_pat<zextloadi16, i64, ToZext64, L4_loadruh_rr>;
1955
1957
def: Loadxrm_shl_pat<sextloadi16, i64, ToSext64, L4_loadrh_rr>;
1956
- def: Loadxrm_shl_pat<extloadi32, i64, ToZext64 , L4_loadri_rr>;
1958
+ def: Loadxrm_shl_pat<extloadi32, i64, ToAext64 , L4_loadri_rr>;
1957
1959
def: Loadxrm_shl_pat<zextloadi32, i64, ToZext64, L4_loadri_rr>;
1958
1960
def: Loadxrm_shl_pat<sextloadi32, i64, ToSext64, L4_loadri_rr>;
1959
1961
}
1960
1962
1961
1963
let AddedComplexity = 20 in {
1962
- def: Loadxrm_add_pat<extloadi8, i64, ToZext64 , L4_loadrub_rr>;
1964
+ def: Loadxrm_add_pat<extloadi8, i64, ToAext64 , L4_loadrub_rr>;
1963
1965
def: Loadxrm_add_pat<zextloadi8, i64, ToZext64, L4_loadrub_rr>;
1964
1966
def: Loadxrm_add_pat<sextloadi8, i64, ToSext64, L4_loadrb_rr>;
1965
- def: Loadxrm_add_pat<extloadi16, i64, ToZext64 , L4_loadruh_rr>;
1967
+ def: Loadxrm_add_pat<extloadi16, i64, ToAext64 , L4_loadruh_rr>;
1966
1968
def: Loadxrm_add_pat<zextloadi16, i64, ToZext64, L4_loadruh_rr>;
1967
1969
def: Loadxrm_add_pat<sextloadi16, i64, ToSext64, L4_loadrh_rr>;
1968
- def: Loadxrm_add_pat<extloadi32, i64, ToZext64 , L4_loadri_rr>;
1970
+ def: Loadxrm_add_pat<extloadi32, i64, ToAext64 , L4_loadri_rr>;
1969
1971
def: Loadxrm_add_pat<zextloadi32, i64, ToZext64, L4_loadri_rr>;
1970
1972
def: Loadxrm_add_pat<sextloadi32, i64, ToSext64, L4_loadri_rr>;
1971
1973
}
@@ -1997,13 +1999,13 @@ let AddedComplexity = 60 in {
1997
1999
}
1998
2000
1999
2001
let AddedComplexity = 30 in {
2000
- def: Loadam_pat<extloadi8, i64, anyimm0, ToZext64 , PS_loadrubabs>;
2002
+ def: Loadam_pat<extloadi8, i64, anyimm0, ToAext64 , PS_loadrubabs>;
2001
2003
def: Loadam_pat<sextloadi8, i64, anyimm0, ToSext64, PS_loadrbabs>;
2002
2004
def: Loadam_pat<zextloadi8, i64, anyimm0, ToZext64, PS_loadrubabs>;
2003
- def: Loadam_pat<extloadi16, i64, anyimm1, ToZext64 , PS_loadruhabs>;
2005
+ def: Loadam_pat<extloadi16, i64, anyimm1, ToAext64 , PS_loadruhabs>;
2004
2006
def: Loadam_pat<sextloadi16, i64, anyimm1, ToSext64, PS_loadrhabs>;
2005
2007
def: Loadam_pat<zextloadi16, i64, anyimm1, ToZext64, PS_loadruhabs>;
2006
- def: Loadam_pat<extloadi32, i64, anyimm2, ToZext64 , PS_loadriabs>;
2008
+ def: Loadam_pat<extloadi32, i64, anyimm2, ToAext64 , PS_loadriabs>;
2007
2009
def: Loadam_pat<sextloadi32, i64, anyimm2, ToSext64, PS_loadriabs>;
2008
2010
def: Loadam_pat<zextloadi32, i64, anyimm2, ToZext64, PS_loadriabs>;
2009
2011
@@ -2039,13 +2041,13 @@ let AddedComplexity = 100 in {
2039
2041
}
2040
2042
2041
2043
let AddedComplexity = 70 in {
2042
- def: Loadam_pat<extloadi8, i64, addrgp, ToZext64 , L2_loadrubgp>;
2044
+ def: Loadam_pat<extloadi8, i64, addrgp, ToAext64 , L2_loadrubgp>;
2043
2045
def: Loadam_pat<sextloadi8, i64, addrgp, ToSext64, L2_loadrbgp>;
2044
2046
def: Loadam_pat<zextloadi8, i64, addrgp, ToZext64, L2_loadrubgp>;
2045
- def: Loadam_pat<extloadi16, i64, addrgp, ToZext64 , L2_loadruhgp>;
2047
+ def: Loadam_pat<extloadi16, i64, addrgp, ToAext64 , L2_loadruhgp>;
2046
2048
def: Loadam_pat<sextloadi16, i64, addrgp, ToSext64, L2_loadrhgp>;
2047
2049
def: Loadam_pat<zextloadi16, i64, addrgp, ToZext64, L2_loadruhgp>;
2048
- def: Loadam_pat<extloadi32, i64, addrgp, ToZext64 , L2_loadrigp>;
2050
+ def: Loadam_pat<extloadi32, i64, addrgp, ToAext64 , L2_loadrigp>;
2049
2051
def: Loadam_pat<sextloadi32, i64, addrgp, ToSext64, L2_loadrigp>;
2050
2052
def: Loadam_pat<zextloadi32, i64, addrgp, ToZext64, L2_loadrigp>;
2051
2053
0 commit comments