@@ -1795,14 +1795,34 @@ bool AArch64LegalizerInfo::legalizeIntrinsic(LegalizerHelper &Helper,
1795
1795
MI.eraseFromParent ();
1796
1796
return true ;
1797
1797
}
1798
- case Intrinsic::aarch64_neon_sqadd:
1799
- return LowerBinOp (TargetOpcode::G_SADDSAT);
1800
- case Intrinsic::aarch64_neon_sqsub:
1801
- return LowerBinOp (TargetOpcode::G_SSUBSAT);
1802
- case Intrinsic::aarch64_neon_uqadd:
1803
- return LowerBinOp (TargetOpcode::G_UADDSAT);
1804
- case Intrinsic::aarch64_neon_uqsub:
1805
- return LowerBinOp (TargetOpcode::G_USUBSAT);
1798
+ case Intrinsic::aarch64_neon_sqadd: {
1799
+ MachineIRBuilder MIB (MI);
1800
+ if (MIB.getMRI ()->getType (MI.getOperand (0 ).getReg ()).isVector ())
1801
+ return LowerBinOp (TargetOpcode::G_SADDSAT);
1802
+
1803
+ break ;
1804
+ }
1805
+ case Intrinsic::aarch64_neon_sqsub: {
1806
+ MachineIRBuilder MIB (MI);
1807
+ if (MIB.getMRI ()->getType (MI.getOperand (0 ).getReg ()).isVector ())
1808
+ return LowerBinOp (TargetOpcode::G_SSUBSAT);
1809
+
1810
+ break ;
1811
+ }
1812
+ case Intrinsic::aarch64_neon_uqadd: {
1813
+ MachineIRBuilder MIB (MI);
1814
+ if (MIB.getMRI ()->getType (MI.getOperand (0 ).getReg ()).isVector ())
1815
+ return LowerBinOp (TargetOpcode::G_UADDSAT);
1816
+
1817
+ break ;
1818
+ }
1819
+ case Intrinsic::aarch64_neon_uqsub: {
1820
+ MachineIRBuilder MIB (MI);
1821
+ if (MIB.getMRI ()->getType (MI.getOperand (0 ).getReg ()).isVector ())
1822
+ return LowerBinOp (TargetOpcode::G_USUBSAT);
1823
+
1824
+ break ;
1825
+ }
1806
1826
1807
1827
case Intrinsic::vector_reverse:
1808
1828
// TODO: Add support for vector_reverse
0 commit comments