@@ -543,6 +543,7 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
543
543
setOperationAction(ISD::FSINCOS, MVT::f128, Expand);
544
544
setOperationAction(ISD::FSQRT, MVT::f128, Expand);
545
545
setOperationAction(ISD::FSUB, MVT::f128, LibCall);
546
+ setOperationAction(ISD::FTAN, MVT::f128, Expand);
546
547
setOperationAction(ISD::FTRUNC, MVT::f128, Expand);
547
548
setOperationAction(ISD::SETCC, MVT::f128, Custom);
548
549
setOperationAction(ISD::STRICT_FSETCC, MVT::f128, Custom);
@@ -727,14 +728,14 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
727
728
setOperationAction(ISD::FCOPYSIGN, MVT::bf16, Promote);
728
729
}
729
730
730
- for (auto Op : {ISD::FREM, ISD::FPOW, ISD::FPOWI,
731
- ISD::FCOS, ISD::FSIN, ISD::FSINCOS,
732
- ISD::FEXP , ISD::FEXP2 , ISD::FEXP10 ,
733
- ISD::FLOG , ISD::FLOG2 , ISD::FLOG10 ,
734
- ISD::STRICT_FREM,
735
- ISD::STRICT_FPOW , ISD::STRICT_FPOWI, ISD::STRICT_FCOS ,
736
- ISD::STRICT_FSIN, ISD::STRICT_FEXP, ISD::STRICT_FEXP2 ,
737
- ISD::STRICT_FLOG, ISD:: STRICT_FLOG2, ISD::STRICT_FLOG10}) {
731
+ for (auto Op : {ISD::FREM, ISD::FPOW, ISD::FPOWI,
732
+ ISD::FCOS, ISD::FSIN, ISD::FSINCOS,
733
+ ISD::FTAN , ISD::FEXP , ISD::FEXP2 ,
734
+ ISD::FEXP10 , ISD::FLOG , ISD::FLOG2 ,
735
+ ISD::FLOG10, ISD:: STRICT_FREM, ISD::STRICT_FPOW ,
736
+ ISD::STRICT_FPOWI , ISD::STRICT_FCOS, ISD::STRICT_FSIN ,
737
+ ISD::STRICT_FEXP, ISD::STRICT_FEXP2, ISD::STRICT_FLOG ,
738
+ ISD::STRICT_FLOG2, ISD::STRICT_FLOG10}) {
738
739
setOperationAction(Op, MVT::f16, Promote);
739
740
setOperationAction(Op, MVT::v4f16, Expand);
740
741
setOperationAction(Op, MVT::v8f16, Expand);
@@ -1171,26 +1172,27 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
1171
1172
if (Subtarget->isNeonAvailable()) {
1172
1173
// FIXME: v1f64 shouldn't be legal if we can avoid it, because it leads to
1173
1174
// silliness like this:
1175
+ // clang-format off
1174
1176
for (auto Op :
1175
- {ISD::SELECT, ISD::SELECT_CC,
1176
- ISD::BR_CC, ISD::FADD, ISD::FSUB,
1177
- ISD::FMUL, ISD::FDIV, ISD::FMA,
1178
- ISD::FNEG, ISD::FABS, ISD::FCEIL,
1179
- ISD::FSQRT, ISD::FFLOOR, ISD::FNEARBYINT,
1180
- ISD::FSIN, ISD::FCOS, ISD::FPOW ,
1181
- ISD::FLOG , ISD::FLOG2 , ISD::FLOG10,
1182
- ISD::FEXP , ISD::FEXP2 , ISD::FEXP10 ,
1183
- ISD::FRINT , ISD::FROUND , ISD::FROUNDEVEN ,
1184
- ISD::FTRUNC , ISD::FMINNUM , ISD::FMAXNUM ,
1185
- ISD::FMINIMUM , ISD::FMAXIMUM , ISD::STRICT_FADD ,
1186
- ISD::STRICT_FSUB , ISD::STRICT_FMUL , ISD::STRICT_FDIV ,
1187
- ISD::STRICT_FMA , ISD::STRICT_FCEIL , ISD::STRICT_FFLOOR ,
1188
- ISD::STRICT_FSQRT , ISD::STRICT_FRINT , ISD::STRICT_FNEARBYINT ,
1189
- ISD::STRICT_FROUND, ISD::STRICT_FTRUNC , ISD::STRICT_FROUNDEVEN,
1190
- ISD::STRICT_FMINNUM , ISD::STRICT_FMAXNUM , ISD::STRICT_FMINIMUM ,
1191
- ISD::STRICT_FMAXIMUM})
1177
+ {ISD::SELECT, ISD::SELECT_CC,
1178
+ ISD::BR_CC, ISD::FADD, ISD::FSUB,
1179
+ ISD::FMUL, ISD::FDIV, ISD::FMA,
1180
+ ISD::FNEG, ISD::FABS, ISD::FCEIL,
1181
+ ISD::FSQRT, ISD::FFLOOR, ISD::FNEARBYINT,
1182
+ ISD::FSIN, ISD::FCOS, ISD::FTAN ,
1183
+ ISD::FPOW , ISD::FLOG , ISD::FLOG2,
1184
+ ISD::FLOG10 , ISD::FEXP , ISD::FEXP2 ,
1185
+ ISD::FEXP10 , ISD::FRINT , ISD::FROUND ,
1186
+ ISD::FROUNDEVEN , ISD::FTRUNC , ISD::FMINNUM ,
1187
+ ISD::FMAXNUM , ISD::FMINIMUM , ISD::FMAXIMUM ,
1188
+ ISD::STRICT_FADD , ISD::STRICT_FSUB , ISD::STRICT_FMUL ,
1189
+ ISD::STRICT_FDIV , ISD::STRICT_FMA , ISD::STRICT_FCEIL ,
1190
+ ISD::STRICT_FFLOOR , ISD::STRICT_FSQRT , ISD::STRICT_FRINT ,
1191
+ ISD::STRICT_FNEARBYINT, ISD::STRICT_FROUND , ISD::STRICT_FTRUNC,
1192
+ ISD::STRICT_FROUNDEVEN , ISD::STRICT_FMINNUM , ISD::STRICT_FMAXNUM ,
1193
+ ISD::STRICT_FMINIMUM, ISD:: STRICT_FMAXIMUM})
1192
1194
setOperationAction(Op, MVT::v1f64, Expand);
1193
-
1195
+ // clang-format on
1194
1196
for (auto Op :
1195
1197
{ISD::FP_TO_SINT, ISD::FP_TO_UINT, ISD::SINT_TO_FP, ISD::UINT_TO_FP,
1196
1198
ISD::FP_ROUND, ISD::FP_TO_SINT_SAT, ISD::FP_TO_UINT_SAT, ISD::MUL,
@@ -1622,6 +1624,7 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
1622
1624
setOperationAction(ISD::FCOS, VT, Expand);
1623
1625
setOperationAction(ISD::FSIN, VT, Expand);
1624
1626
setOperationAction(ISD::FSINCOS, VT, Expand);
1627
+ setOperationAction(ISD::FTAN, VT, Expand);
1625
1628
setOperationAction(ISD::FEXP, VT, Expand);
1626
1629
setOperationAction(ISD::FEXP2, VT, Expand);
1627
1630
setOperationAction(ISD::FEXP10, VT, Expand);
@@ -1803,6 +1806,7 @@ void AArch64TargetLowering::addTypeForNEON(MVT VT) {
1803
1806
if (VT == MVT::v2f32 || VT == MVT::v4f32 || VT == MVT::v2f64) {
1804
1807
setOperationAction(ISD::FSIN, VT, Expand);
1805
1808
setOperationAction(ISD::FCOS, VT, Expand);
1809
+ setOperationAction(ISD::FTAN, VT, Expand);
1806
1810
setOperationAction(ISD::FPOW, VT, Expand);
1807
1811
setOperationAction(ISD::FLOG, VT, Expand);
1808
1812
setOperationAction(ISD::FLOG2, VT, Expand);
0 commit comments