Skip to content

Commit 1f6e3e5

Browse files
committed
start of tan intrinsic
copy over X86ISelLowering and x86 test cases from @junaire's https://reviews.llvm.org/D146905 fix test case run clang format fix unit test and documentation
1 parent 3e82442 commit 1f6e3e5

21 files changed

+354
-10
lines changed

llvm/include/llvm/Analysis/VecFuncs.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ TLI_DEFINE_VECFUNC("llvm.sin.f32", "vsinf", FIXED(4), "_ZGV_LLVM_N4v")
5454
TLI_DEFINE_VECFUNC("cosf", "vcosf", FIXED(4), "_ZGV_LLVM_N4v")
5555
TLI_DEFINE_VECFUNC("llvm.cos.f32", "vcosf", FIXED(4), "_ZGV_LLVM_N4v")
5656
TLI_DEFINE_VECFUNC("tanf", "vtanf", FIXED(4), "_ZGV_LLVM_N4v")
57+
TLI_DEFINE_VECFUNC("llvm.tan.f32", "vtanf", FIXED(4), "_ZGV_LLVM_N4v")
5758
TLI_DEFINE_VECFUNC("asinf", "vasinf", FIXED(4), "_ZGV_LLVM_N4v")
5859
TLI_DEFINE_VECFUNC("acosf", "vacosf", FIXED(4), "_ZGV_LLVM_N4v")
5960
TLI_DEFINE_VECFUNC("atanf", "vatanf", FIXED(4), "_ZGV_LLVM_N4v")

llvm/include/llvm/CodeGen/BasicTTIImpl.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1924,6 +1924,9 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
19241924
case Intrinsic::cos:
19251925
ISD = ISD::FCOS;
19261926
break;
1927+
case Intrinsic::tan:
1928+
ISD = ISD::FTAN;
1929+
break;
19271930
case Intrinsic::exp:
19281931
ISD = ISD::FEXP;
19291932
break;

llvm/include/llvm/CodeGen/ISDOpcodes.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,7 @@ enum NodeType {
415415
STRICT_FLDEXP,
416416
STRICT_FSIN,
417417
STRICT_FCOS,
418+
STRICT_FTAN,
418419
STRICT_FEXP,
419420
STRICT_FEXP2,
420421
STRICT_FLOG,
@@ -934,6 +935,7 @@ enum NodeType {
934935
FCBRT,
935936
FSIN,
936937
FCOS,
938+
FTAN,
937939
FPOW,
938940
FPOWI,
939941
/// FLDEXP - ldexp, inspired by libm (op0 * 2**op1).

llvm/include/llvm/IR/RuntimeLibcalls.def

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,11 @@ HANDLE_LIBCALL(COS_F64, "cos")
197197
HANDLE_LIBCALL(COS_F80, "cosl")
198198
HANDLE_LIBCALL(COS_F128, "cosl")
199199
HANDLE_LIBCALL(COS_PPCF128, "cosl")
200+
HANDLE_LIBCALL(TAN_F32, "tanf")
201+
HANDLE_LIBCALL(TAN_F64, "tan")
202+
HANDLE_LIBCALL(TAN_F80, "tanl")
203+
HANDLE_LIBCALL(TAN_F128,"tanl")
204+
HANDLE_LIBCALL(TAN_PPCF128, "tanl")
200205
HANDLE_LIBCALL(SINCOS_F32, nullptr)
201206
HANDLE_LIBCALL(SINCOS_F64, nullptr)
202207
HANDLE_LIBCALL(SINCOS_F80, nullptr)

llvm/include/llvm/Target/GlobalISel/SelectionDAGCompat.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ def : GINodeEquiv<G_BUILD_VECTOR, build_vector>;
148148
def : GINodeEquiv<G_FCEIL, fceil>;
149149
def : GINodeEquiv<G_FCOS, fcos>;
150150
def : GINodeEquiv<G_FSIN, fsin>;
151+
def : GINodeEquiv<G_FTAN, ftan>;
151152
def : GINodeEquiv<G_FABS, fabs>;
152153
def : GINodeEquiv<G_FSQRT, fsqrt>;
153154
def : GINodeEquiv<G_FFLOOR, ffloor>;

llvm/include/llvm/Target/TargetSelectionDAG.td

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,7 @@ def fneg : SDNode<"ISD::FNEG" , SDTFPUnaryOp>;
509509
def fsqrt : SDNode<"ISD::FSQRT" , SDTFPUnaryOp>;
510510
def fsin : SDNode<"ISD::FSIN" , SDTFPUnaryOp>;
511511
def fcos : SDNode<"ISD::FCOS" , SDTFPUnaryOp>;
512+
def ftan : SDNode<"ISD::FTAN" , SDTFPUnaryOp>;
512513
def fexp2 : SDNode<"ISD::FEXP2" , SDTFPUnaryOp>;
513514
def fexp10 : SDNode<"ISD::FEXP10" , SDTFPUnaryOp>;
514515
def fpow : SDNode<"ISD::FPOW" , SDTFPBinOp>;
@@ -562,6 +563,8 @@ def strict_fsin : SDNode<"ISD::STRICT_FSIN",
562563
SDTFPUnaryOp, [SDNPHasChain]>;
563564
def strict_fcos : SDNode<"ISD::STRICT_FCOS",
564565
SDTFPUnaryOp, [SDNPHasChain]>;
566+
def strict_ftan : SDNode<"ISD::STRICT_FTAN",
567+
SDTFPUnaryOp, [SDNPHasChain]>;
565568
def strict_fexp2 : SDNode<"ISD::STRICT_FEXP2",
566569
SDTFPUnaryOp, [SDNPHasChain]>;
567570
def strict_fpow : SDNode<"ISD::STRICT_FPOW",
@@ -1514,6 +1517,9 @@ def any_fsin : PatFrags<(ops node:$src),
15141517
def any_fcos : PatFrags<(ops node:$src),
15151518
[(strict_fcos node:$src),
15161519
(fcos node:$src)]>;
1520+
def any_ftan : PatFrags<(ops node:$src),
1521+
[(strict_ftan node:$src),
1522+
(ftan node:$src)]>;
15171523
def any_fexp2 : PatFrags<(ops node:$src),
15181524
[(strict_fexp2 node:$src),
15191525
(fexp2 node:$src)]>;

llvm/lib/Analysis/VectorUtils.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ bool llvm::isTriviallyVectorizable(Intrinsic::ID ID) {
6868
case Intrinsic::sqrt: // Begin floating-point.
6969
case Intrinsic::sin:
7070
case Intrinsic::cos:
71+
case Intrinsic::tan:
7172
case Intrinsic::exp:
7273
case Intrinsic::exp2:
7374
case Intrinsic::log:

llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,8 @@ static RTLIB::Libcall getRTLibDesc(unsigned Opcode, unsigned Size) {
448448
RTLIBCASE(SIN_F);
449449
case TargetOpcode::G_FCOS:
450450
RTLIBCASE(COS_F);
451+
case TargetOpcode::G_FTAN:
452+
RTLIBCASE(TAN_F);
451453
case TargetOpcode::G_FLOG10:
452454
RTLIBCASE(LOG10_F);
453455
case TargetOpcode::G_FLOG:
@@ -1036,6 +1038,7 @@ LegalizerHelper::libcall(MachineInstr &MI, LostDebugLocObserver &LocObserver) {
10361038
case TargetOpcode::G_FREM:
10371039
case TargetOpcode::G_FCOS:
10381040
case TargetOpcode::G_FSIN:
1041+
case TargetOpcode::G_FTAN:
10391042
case TargetOpcode::G_FLOG10:
10401043
case TargetOpcode::G_FLOG:
10411044
case TargetOpcode::G_FLOG2:
@@ -2890,6 +2893,7 @@ LegalizerHelper::widenScalar(MachineInstr &MI, unsigned TypeIdx, LLT WideTy) {
28902893
case TargetOpcode::G_FFLOOR:
28912894
case TargetOpcode::G_FCOS:
28922895
case TargetOpcode::G_FSIN:
2896+
case TargetOpcode::G_FTAN:
28932897
case TargetOpcode::G_FLOG10:
28942898
case TargetOpcode::G_FLOG:
28952899
case TargetOpcode::G_FLOG2:
@@ -4656,6 +4660,7 @@ LegalizerHelper::fewerElementsVector(MachineInstr &MI, unsigned TypeIdx,
46564660
case G_INTRINSIC_TRUNC:
46574661
case G_FCOS:
46584662
case G_FSIN:
4663+
case G_FTAN:
46594664
case G_FSQRT:
46604665
case G_BSWAP:
46614666
case G_BITREVERSE:

llvm/lib/CodeGen/GlobalISel/Utils.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,7 @@ bool llvm::isKnownNeverNaN(Register Val, const MachineRegisterInfo &MRI,
821821
case TargetOpcode::G_FREM:
822822
case TargetOpcode::G_FSIN:
823823
case TargetOpcode::G_FCOS:
824+
case TargetOpcode::G_FTAN:
824825
case TargetOpcode::G_FMA:
825826
case TargetOpcode::G_FMAD:
826827
if (SNaN)
@@ -1701,6 +1702,7 @@ bool llvm::isPreISelGenericFloatingPointOpcode(unsigned Opc) {
17011702
case TargetOpcode::G_FREM:
17021703
case TargetOpcode::G_FRINT:
17031704
case TargetOpcode::G_FSIN:
1705+
case TargetOpcode::G_FTAN:
17041706
case TargetOpcode::G_FSQRT:
17051707
case TargetOpcode::G_FSUB:
17061708
case TargetOpcode::G_INTRINSIC_ROUND:

llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4483,6 +4483,11 @@ void SelectionDAGLegalize::ConvertNodeToLibcall(SDNode *Node) {
44834483
RTLIB::COS_F80, RTLIB::COS_F128,
44844484
RTLIB::COS_PPCF128, Results);
44854485
break;
4486+
case ISD::FTAN:
4487+
case ISD::STRICT_FTAN:
4488+
ExpandFPLibCall(Node, RTLIB::TAN_F32, RTLIB::TAN_F64, RTLIB::TAN_F80,
4489+
RTLIB::TAN_F128, RTLIB::TAN_PPCF128, Results);
4490+
break;
44864491
case ISD::FSINCOS:
44874492
// Expand into sincos libcall.
44884493
ExpandSinCosLibCall(Node, Results);
@@ -5433,6 +5438,7 @@ void SelectionDAGLegalize::PromoteNode(SDNode *Node) {
54335438
case ISD::FSQRT:
54345439
case ISD::FSIN:
54355440
case ISD::FCOS:
5441+
case ISD::FTAN:
54365442
case ISD::FLOG:
54375443
case ISD::FLOG2:
54385444
case ISD::FLOG10:
@@ -5457,6 +5463,7 @@ void SelectionDAGLegalize::PromoteNode(SDNode *Node) {
54575463
case ISD::STRICT_FSQRT:
54585464
case ISD::STRICT_FSIN:
54595465
case ISD::STRICT_FCOS:
5466+
case ISD::STRICT_FTAN:
54605467
case ISD::STRICT_FLOG:
54615468
case ISD::STRICT_FLOG2:
54625469
case ISD::STRICT_FLOG10:

llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ void DAGTypeLegalizer::SoftenFloatResult(SDNode *N, unsigned ResNo) {
131131
case ISD::FSQRT: R = SoftenFloatRes_FSQRT(N); break;
132132
case ISD::STRICT_FSUB:
133133
case ISD::FSUB: R = SoftenFloatRes_FSUB(N); break;
134+
case ISD::STRICT_FTAN:
135+
case ISD::FTAN: R = SoftenFloatRes_FTAN(N); break;
134136
case ISD::STRICT_FTRUNC:
135137
case ISD::FTRUNC: R = SoftenFloatRes_FTRUNC(N); break;
136138
case ISD::LOAD: R = SoftenFloatRes_LOAD(N); break;
@@ -774,6 +776,12 @@ SDValue DAGTypeLegalizer::SoftenFloatRes_FSUB(SDNode *N) {
774776
RTLIB::SUB_PPCF128));
775777
}
776778

779+
SDValue DAGTypeLegalizer::SoftenFloatRes_FTAN(SDNode *N) {
780+
return SoftenFloatRes_Unary(
781+
N, GetFPLibCall(N->getValueType(0), RTLIB::TAN_F32, RTLIB::TAN_F64,
782+
RTLIB::TAN_F80, RTLIB::TAN_F128, RTLIB::TAN_PPCF128));
783+
}
784+
777785
SDValue DAGTypeLegalizer::SoftenFloatRes_FTRUNC(SDNode *N) {
778786
return SoftenFloatRes_Unary(N, GetFPLibCall(N->getValueType(0),
779787
RTLIB::TRUNC_F32,
@@ -1399,6 +1407,10 @@ void DAGTypeLegalizer::ExpandFloatResult(SDNode *N, unsigned ResNo) {
13991407
case ISD::FSQRT: ExpandFloatRes_FSQRT(N, Lo, Hi); break;
14001408
case ISD::STRICT_FSUB:
14011409
case ISD::FSUB: ExpandFloatRes_FSUB(N, Lo, Hi); break;
1410+
case ISD::STRICT_FTAN:
1411+
case ISD::FTAN:
1412+
ExpandFloatRes_FTAN(N, Lo, Hi);
1413+
break;
14021414
case ISD::STRICT_FTRUNC:
14031415
case ISD::FTRUNC: ExpandFloatRes_FTRUNC(N, Lo, Hi); break;
14041416
case ISD::LOAD: ExpandFloatRes_LOAD(N, Lo, Hi); break;
@@ -1768,6 +1780,15 @@ void DAGTypeLegalizer::ExpandFloatRes_FSUB(SDNode *N, SDValue &Lo,
17681780
RTLIB::SUB_PPCF128), Lo, Hi);
17691781
}
17701782

1783+
void DAGTypeLegalizer::ExpandFloatRes_FTAN(SDNode *N, SDValue &Lo,
1784+
SDValue &Hi) {
1785+
ExpandFloatRes_Unary(N,
1786+
GetFPLibCall(N->getValueType(0), RTLIB::TAN_F32,
1787+
RTLIB::TAN_F64, RTLIB::TAN_F80,
1788+
RTLIB::TAN_F128, RTLIB::TAN_PPCF128),
1789+
Lo, Hi);
1790+
}
1791+
17711792
void DAGTypeLegalizer::ExpandFloatRes_FTRUNC(SDNode *N,
17721793
SDValue &Lo, SDValue &Hi) {
17731794
ExpandFloatRes_Unary(N, GetFPLibCall(N->getValueType(0),
@@ -2479,6 +2500,7 @@ void DAGTypeLegalizer::PromoteFloatResult(SDNode *N, unsigned ResNo) {
24792500
case ISD::FSIN:
24802501
case ISD::FSQRT:
24812502
case ISD::FTRUNC:
2503+
case ISD::FTAN:
24822504
case ISD::FCANONICALIZE: R = PromoteFloatRes_UnaryOp(N); break;
24832505

24842506
// Binary FP Operations
@@ -2912,6 +2934,7 @@ void DAGTypeLegalizer::SoftPromoteHalfResult(SDNode *N, unsigned ResNo) {
29122934
case ISD::FSIN:
29132935
case ISD::FSQRT:
29142936
case ISD::FTRUNC:
2937+
case ISD::FTAN:
29152938
case ISD::FCANONICALIZE: R = SoftPromoteHalfRes_UnaryOp(N); break;
29162939

29172940
// Binary FP Operations

llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,7 @@ class LLVM_LIBRARY_VISIBILITY DAGTypeLegalizer {
567567
SDValue SoftenFloatRes_FSIN(SDNode *N);
568568
SDValue SoftenFloatRes_FSQRT(SDNode *N);
569569
SDValue SoftenFloatRes_FSUB(SDNode *N);
570+
SDValue SoftenFloatRes_FTAN(SDNode *N);
570571
SDValue SoftenFloatRes_FTRUNC(SDNode *N);
571572
SDValue SoftenFloatRes_LOAD(SDNode *N);
572573
SDValue SoftenFloatRes_ATOMIC_LOAD(SDNode *N);
@@ -648,6 +649,7 @@ class LLVM_LIBRARY_VISIBILITY DAGTypeLegalizer {
648649
void ExpandFloatRes_FSIN (SDNode *N, SDValue &Lo, SDValue &Hi);
649650
void ExpandFloatRes_FSQRT (SDNode *N, SDValue &Lo, SDValue &Hi);
650651
void ExpandFloatRes_FSUB (SDNode *N, SDValue &Lo, SDValue &Hi);
652+
void ExpandFloatRes_FTAN(SDNode *N, SDValue &Lo, SDValue &Hi);
651653
void ExpandFloatRes_FTRUNC (SDNode *N, SDValue &Lo, SDValue &Hi);
652654
void ExpandFloatRes_LOAD (SDNode *N, SDValue &Lo, SDValue &Hi);
653655
void ExpandFloatRes_XINT_TO_FP(SDNode *N, SDValue &Lo, SDValue &Hi);

llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,7 @@ SDValue VectorLegalizer::LegalizeOp(SDValue Op) {
395395
case ISD::FSQRT:
396396
case ISD::FSIN:
397397
case ISD::FCOS:
398+
case ISD::FTAN:
398399
case ISD::FLDEXP:
399400
case ISD::FPOWI:
400401
case ISD::FPOW:

llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ void DAGTypeLegalizer::ScalarizeVectorResult(SDNode *N, unsigned ResNo) {
108108
case ISD::FROUNDEVEN:
109109
case ISD::FSIN:
110110
case ISD::FSQRT:
111+
case ISD::FTAN:
111112
case ISD::FTRUNC:
112113
case ISD::SIGN_EXTEND:
113114
case ISD::SINT_TO_FP:
@@ -1140,6 +1141,7 @@ void DAGTypeLegalizer::SplitVectorResult(SDNode *N, unsigned ResNo) {
11401141
case ISD::VP_FROUNDEVEN:
11411142
case ISD::FSIN:
11421143
case ISD::FSQRT: case ISD::VP_SQRT:
1144+
case ISD::FTAN:
11431145
case ISD::FTRUNC:
11441146
case ISD::VP_FROUNDTOZERO:
11451147
case ISD::SINT_TO_FP:
@@ -4390,6 +4392,7 @@ void DAGTypeLegalizer::WidenVectorResult(SDNode *N, unsigned ResNo) {
43904392
case ISD::FROUNDEVEN:
43914393
case ISD::FSIN:
43924394
case ISD::FSQRT:
4395+
case ISD::FTAN:
43934396
case ISD::FTRUNC:
43944397
if (unrollExpandedOp())
43954398
break;

llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5303,6 +5303,7 @@ bool SelectionDAG::isKnownNeverNaN(SDValue Op, bool SNaN, unsigned Depth) const
53035303
case ISD::FREM:
53045304
case ISD::FSIN:
53055305
case ISD::FCOS:
5306+
case ISD::FTAN:
53065307
case ISD::FMA:
53075308
case ISD::FMAD: {
53085309
if (SNaN)

llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6690,6 +6690,7 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
66906690
case Intrinsic::fabs:
66916691
case Intrinsic::sin:
66926692
case Intrinsic::cos:
6693+
case Intrinsic::tan:
66936694
case Intrinsic::exp10:
66946695
case Intrinsic::floor:
66956696
case Intrinsic::ceil:
@@ -6706,6 +6707,9 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
67066707
case Intrinsic::fabs: Opcode = ISD::FABS; break;
67076708
case Intrinsic::sin: Opcode = ISD::FSIN; break;
67086709
case Intrinsic::cos: Opcode = ISD::FCOS; break;
6710+
case Intrinsic::tan:
6711+
Opcode = ISD::FTAN;
6712+
break;
67096713
case Intrinsic::exp10: Opcode = ISD::FEXP10; break;
67106714
case Intrinsic::floor: Opcode = ISD::FFLOOR; break;
67116715
case Intrinsic::ceil: Opcode = ISD::FCEIL; break;
@@ -9080,6 +9084,12 @@ void SelectionDAGBuilder::visitCall(const CallInst &I) {
90809084
if (visitUnaryFloatCall(I, ISD::FCOS))
90819085
return;
90829086
break;
9087+
case LibFunc_tan:
9088+
case LibFunc_tanf:
9089+
case LibFunc_tanl:
9090+
if (visitUnaryFloatCall(I, ISD::FTAN))
9091+
return;
9092+
break;
90839093
case LibFunc_sqrt:
90849094
case LibFunc_sqrtf:
90859095
case LibFunc_sqrtl:

llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,8 @@ std::string SDNode::getOperationName(const SelectionDAG *G) const {
210210
case ISD::FCOS: return "fcos";
211211
case ISD::STRICT_FCOS: return "strict_fcos";
212212
case ISD::FSINCOS: return "fsincos";
213+
case ISD::FTAN: return "ftan";
214+
case ISD::STRICT_FTAN: return "strict_ftan";
213215
case ISD::FTRUNC: return "ftrunc";
214216
case ISD::STRICT_FTRUNC: return "strict_ftrunc";
215217
case ISD::FFLOOR: return "ffloor";

llvm/lib/CodeGen/TargetLoweringBase.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ void TargetLoweringBase::InitLibcalls(const Triple &TT) {
141141
setLibcallName(RTLIB::EXP10_F128, "exp10f128");
142142
setLibcallName(RTLIB::SIN_F128, "sinf128");
143143
setLibcallName(RTLIB::COS_F128, "cosf128");
144+
setLibcallName(RTLIB::TAN_F128, "tanf128");
144145
setLibcallName(RTLIB::SINCOS_F128, "sincosf128");
145146
setLibcallName(RTLIB::POW_F128, "powf128");
146147
setLibcallName(RTLIB::POW_FINITE_F128, "__powf128_finite");
@@ -987,7 +988,8 @@ void TargetLoweringBase::initActions() {
987988
setOperationAction({ISD::FCBRT, ISD::FLOG, ISD::FLOG2, ISD::FLOG10, ISD::FEXP,
988989
ISD::FEXP2, ISD::FEXP10, ISD::FFLOOR, ISD::FNEARBYINT,
989990
ISD::FCEIL, ISD::FRINT, ISD::FTRUNC, ISD::LROUND,
990-
ISD::LLROUND, ISD::LRINT, ISD::LLRINT, ISD::FROUNDEVEN},
991+
ISD::LLROUND, ISD::LRINT, ISD::LLRINT, ISD::FROUNDEVEN,
992+
ISD::FTAN},
991993
{MVT::f32, MVT::f64, MVT::f128}, Expand);
992994

993995
// Default ISD::TRAP to expand (which turns it into abort).

0 commit comments

Comments
 (0)