@@ -6782,44 +6782,45 @@ def : Pat <(f64 (uint_to_fp (i32
6782
6782
// Advanced SIMD three different-sized vector instructions.
6783
6783
//===----------------------------------------------------------------------===//
6784
6784
6785
- defm ADDHN : SIMDNarrowThreeVectorBHS<0,0b0100,"addhn", int_aarch64_neon_addhn>;
6786
- defm SUBHN : SIMDNarrowThreeVectorBHS<0,0b0110,"subhn", int_aarch64_neon_subhn>;
6787
- defm RADDHN : SIMDNarrowThreeVectorBHS<1,0b0100,"raddhn",int_aarch64_neon_raddhn>;
6788
- defm RSUBHN : SIMDNarrowThreeVectorBHS<1,0b0110,"rsubhn",int_aarch64_neon_rsubhn>;
6785
+ defm ADDHN : SIMDNarrowThreeVectorBHS<0,0b0100,"addhn", int_aarch64_neon_addhn>;
6786
+ defm SUBHN : SIMDNarrowThreeVectorBHS<0,0b0110,"subhn", int_aarch64_neon_subhn>;
6787
+ defm RADDHN : SIMDNarrowThreeVectorBHS<1,0b0100,"raddhn",int_aarch64_neon_raddhn>;
6788
+ defm RSUBHN : SIMDNarrowThreeVectorBHS<1,0b0110,"rsubhn",int_aarch64_neon_rsubhn>;
6789
6789
let isCommutable = 1 in
6790
- defm PMULL : SIMDDifferentThreeVectorBD<0,0b1110,"pmull", AArch64pmull>;
6791
- defm SABAL : SIMDLongThreeVectorTiedBHSabal<0,0b0101,"sabal", abds>;
6790
+ defm PMULL : SIMDDifferentThreeVectorBD<0,0b1110,"pmull", AArch64pmull>;
6791
+ defm SABAL : SIMDLongThreeVectorTiedBHS<0,0b0101,"sabal",
6792
+ TriOpFrag<(add node:$LHS, (zext (abds node:$MHS, node:$RHS)))>>;
6792
6793
defm SABDL : SIMDLongThreeVectorBHS<0, 0b0111, "sabdl",
6793
6794
BinOpFrag<(zext (abds node:$LHS, node:$RHS))>>;
6794
6795
defm SADDL : SIMDLongThreeVectorBHS< 0, 0b0000, "saddl",
6795
- BinOpFrag<(add (sext node:$LHS), (sext node:$RHS))>>;
6796
+ BinOpFrag<(add (sext node:$LHS), (sext node:$RHS))>>;
6796
6797
defm SADDW : SIMDWideThreeVectorBHS< 0, 0b0001, "saddw",
6797
6798
BinOpFrag<(add node:$LHS, (sext node:$RHS))>>;
6798
6799
defm SMLAL : SIMDLongThreeVectorTiedBHS<0, 0b1000, "smlal",
6799
- TriOpFrag<(add node:$LHS, (AArch64smull node:$MHS, node:$RHS))>>;
6800
+ TriOpFrag<(add node:$LHS, (AArch64smull node:$MHS, node:$RHS))>>;
6800
6801
defm SMLSL : SIMDLongThreeVectorTiedBHS<0, 0b1010, "smlsl",
6801
- TriOpFrag<(sub node:$LHS, (AArch64smull node:$MHS, node:$RHS))>>;
6802
+ TriOpFrag<(sub node:$LHS, (AArch64smull node:$MHS, node:$RHS))>>;
6802
6803
defm SMULL : SIMDLongThreeVectorBHS<0, 0b1100, "smull", AArch64smull>;
6803
6804
defm SQDMLAL : SIMDLongThreeVectorSQDMLXTiedHS<0, 0b1001, "sqdmlal", saddsat>;
6804
6805
defm SQDMLSL : SIMDLongThreeVectorSQDMLXTiedHS<0, 0b1011, "sqdmlsl", ssubsat>;
6805
- defm SQDMULL : SIMDLongThreeVectorHS<0, 0b1101, "sqdmull",
6806
- int_aarch64_neon_sqdmull>;
6806
+ defm SQDMULL : SIMDLongThreeVectorHS<0, 0b1101, "sqdmull", int_aarch64_neon_sqdmull>;
6807
6807
let isCommutable = 0 in
6808
6808
defm SSUBL : SIMDLongThreeVectorBHS<0, 0b0010, "ssubl",
6809
6809
BinOpFrag<(sub (sext node:$LHS), (sext node:$RHS))>>;
6810
6810
defm SSUBW : SIMDWideThreeVectorBHS<0, 0b0011, "ssubw",
6811
6811
BinOpFrag<(sub node:$LHS, (sext node:$RHS))>>;
6812
- defm UABAL : SIMDLongThreeVectorTiedBHSabal<1, 0b0101, "uabal", abdu>;
6812
+ defm UABAL : SIMDLongThreeVectorTiedBHS<1, 0b0101, "uabal",
6813
+ TriOpFrag<(add node:$LHS, (zext (abdu node:$MHS, node:$RHS)))>>;
6813
6814
defm UABDL : SIMDLongThreeVectorBHS<1, 0b0111, "uabdl",
6814
6815
BinOpFrag<(zext (abdu node:$LHS, node:$RHS))>>;
6815
6816
defm UADDL : SIMDLongThreeVectorBHS<1, 0b0000, "uaddl",
6816
6817
BinOpFrag<(add (zanyext node:$LHS), (zanyext node:$RHS))>>;
6817
6818
defm UADDW : SIMDWideThreeVectorBHS<1, 0b0001, "uaddw",
6818
6819
BinOpFrag<(add node:$LHS, (zanyext node:$RHS))>>;
6819
6820
defm UMLAL : SIMDLongThreeVectorTiedBHS<1, 0b1000, "umlal",
6820
- TriOpFrag<(add node:$LHS, (AArch64umull node:$MHS, node:$RHS))>>;
6821
+ TriOpFrag<(add node:$LHS, (AArch64umull node:$MHS, node:$RHS))>>;
6821
6822
defm UMLSL : SIMDLongThreeVectorTiedBHS<1, 0b1010, "umlsl",
6822
- TriOpFrag<(sub node:$LHS, (AArch64umull node:$MHS, node:$RHS))>>;
6823
+ TriOpFrag<(sub node:$LHS, (AArch64umull node:$MHS, node:$RHS))>>;
6823
6824
defm UMULL : SIMDLongThreeVectorBHS<1, 0b1100, "umull", AArch64umull>;
6824
6825
let isCommutable = 0 in
6825
6826
defm USUBL : SIMDLongThreeVectorBHS<1, 0b0010, "usubl",
0 commit comments