Skip to content

Commit 1af461c

Browse files
committed
only for vectors
1 parent ef9b896 commit 1af461c

File tree

1 file changed

+28
-8
lines changed

1 file changed

+28
-8
lines changed

llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1795,14 +1795,34 @@ bool AArch64LegalizerInfo::legalizeIntrinsic(LegalizerHelper &Helper,
17951795
MI.eraseFromParent();
17961796
return true;
17971797
}
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+
}
18061826

18071827
case Intrinsic::vector_reverse:
18081828
// TODO: Add support for vector_reverse

0 commit comments

Comments
 (0)