@@ -2727,6 +2727,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
27272727 case Builtin::BI__builtin_acosf16:
27282728 case Builtin::BI__builtin_acosl:
27292729 case Builtin::BI__builtin_acosf128:
2730+ case Builtin::BI__builtin_elementwise_acos:
27302731 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (
27312732 *this , E, Intrinsic::acos, Intrinsic::experimental_constrained_acos));
27322733
@@ -2738,6 +2739,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
27382739 case Builtin::BI__builtin_asinf16:
27392740 case Builtin::BI__builtin_asinl:
27402741 case Builtin::BI__builtin_asinf128:
2742+ case Builtin::BI__builtin_elementwise_asin:
27412743 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (
27422744 *this , E, Intrinsic::asin, Intrinsic::experimental_constrained_asin));
27432745
@@ -2749,6 +2751,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
27492751 case Builtin::BI__builtin_atanf16:
27502752 case Builtin::BI__builtin_atanl:
27512753 case Builtin::BI__builtin_atanf128:
2754+ case Builtin::BI__builtin_elementwise_atan:
27522755 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (
27532756 *this , E, Intrinsic::atan, Intrinsic::experimental_constrained_atan));
27542757
@@ -2760,6 +2763,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
27602763 case Builtin::BI__builtin_atan2f16:
27612764 case Builtin::BI__builtin_atan2l:
27622765 case Builtin::BI__builtin_atan2f128:
2766+ case Builtin::BI__builtin_elementwise_atan2:
27632767 return RValue::get (emitBinaryMaybeConstrainedFPBuiltin (
27642768 *this , E, Intrinsic::atan2,
27652769 Intrinsic::experimental_constrained_atan2));
@@ -2772,6 +2776,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
27722776 case Builtin::BI__builtin_ceilf16:
27732777 case Builtin::BI__builtin_ceill:
27742778 case Builtin::BI__builtin_ceilf128:
2779+ case Builtin::BI__builtin_elementwise_ceil:
27752780 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
27762781 Intrinsic::ceil,
27772782 Intrinsic::experimental_constrained_ceil));
@@ -2795,6 +2800,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
27952800 case Builtin::BI__builtin_cosf16:
27962801 case Builtin::BI__builtin_cosl:
27972802 case Builtin::BI__builtin_cosf128:
2803+ case Builtin::BI__builtin_elementwise_cos:
27982804 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
27992805 Intrinsic::cos,
28002806 Intrinsic::experimental_constrained_cos));
@@ -2807,6 +2813,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
28072813 case Builtin::BI__builtin_coshf16:
28082814 case Builtin::BI__builtin_coshl:
28092815 case Builtin::BI__builtin_coshf128:
2816+ case Builtin::BI__builtin_elementwise_cosh:
28102817 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (
28112818 *this , E, Intrinsic::cosh, Intrinsic::experimental_constrained_cosh));
28122819
@@ -2818,6 +2825,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
28182825 case Builtin::BI__builtin_expf16:
28192826 case Builtin::BI__builtin_expl:
28202827 case Builtin::BI__builtin_expf128:
2828+ case Builtin::BI__builtin_elementwise_exp:
28212829 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
28222830 Intrinsic::exp,
28232831 Intrinsic::experimental_constrained_exp));
@@ -2830,6 +2838,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
28302838 case Builtin::BI__builtin_exp2f16:
28312839 case Builtin::BI__builtin_exp2l:
28322840 case Builtin::BI__builtin_exp2f128:
2841+ case Builtin::BI__builtin_elementwise_exp2:
28332842 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
28342843 Intrinsic::exp2,
28352844 Intrinsic::experimental_constrained_exp2));
@@ -2838,6 +2847,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
28382847 case Builtin::BI__builtin_exp10f16:
28392848 case Builtin::BI__builtin_exp10l:
28402849 case Builtin::BI__builtin_exp10f128: {
2850+ case Builtin::BI__builtin_elementwise_exp10:
28412851 // TODO: strictfp support
28422852 if (Builder.getIsFPConstrained ())
28432853 break ;
@@ -2863,6 +2873,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
28632873 case Builtin::BI__builtin_floorf16:
28642874 case Builtin::BI__builtin_floorl:
28652875 case Builtin::BI__builtin_floorf128:
2876+ case Builtin::BI__builtin_elementwise_floor:
28662877 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
28672878 Intrinsic::floor,
28682879 Intrinsic::experimental_constrained_floor));
@@ -2875,6 +2886,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
28752886 case Builtin::BI__builtin_fmaf16:
28762887 case Builtin::BI__builtin_fmal:
28772888 case Builtin::BI__builtin_fmaf128:
2889+ case Builtin::BI__builtin_elementwise_fma:
28782890 return RValue::get (emitTernaryMaybeConstrainedFPBuiltin (*this , E,
28792891 Intrinsic::fma,
28802892 Intrinsic::experimental_constrained_fma));
@@ -2950,6 +2962,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
29502962 case Builtin::BI__builtin_logf16:
29512963 case Builtin::BI__builtin_logl:
29522964 case Builtin::BI__builtin_logf128:
2965+ case Builtin::BI__builtin_elementwise_log:
29532966 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
29542967 Intrinsic::log,
29552968 Intrinsic::experimental_constrained_log));
@@ -2962,6 +2975,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
29622975 case Builtin::BI__builtin_log10f16:
29632976 case Builtin::BI__builtin_log10l:
29642977 case Builtin::BI__builtin_log10f128:
2978+ case Builtin::BI__builtin_elementwise_log10:
29652979 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
29662980 Intrinsic::log10,
29672981 Intrinsic::experimental_constrained_log10));
@@ -2974,6 +2988,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
29742988 case Builtin::BI__builtin_log2f16:
29752989 case Builtin::BI__builtin_log2l:
29762990 case Builtin::BI__builtin_log2f128:
2991+ case Builtin::BI__builtin_elementwise_log2:
29772992 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
29782993 Intrinsic::log2,
29792994 Intrinsic::experimental_constrained_log2));
@@ -2985,6 +3000,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
29853000 case Builtin::BI__builtin_nearbyintf:
29863001 case Builtin::BI__builtin_nearbyintl:
29873002 case Builtin::BI__builtin_nearbyintf128:
3003+ case Builtin::BI__builtin_elementwise_nearbyint:
29883004 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
29893005 Intrinsic::nearbyint,
29903006 Intrinsic::experimental_constrained_nearbyint));
@@ -2997,6 +3013,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
29973013 case Builtin::BI__builtin_powf16:
29983014 case Builtin::BI__builtin_powl:
29993015 case Builtin::BI__builtin_powf128:
3016+ case Builtin::BI__builtin_elementwise_pow:
30003017 return RValue::get (emitBinaryMaybeConstrainedFPBuiltin (*this , E,
30013018 Intrinsic::pow,
30023019 Intrinsic::experimental_constrained_pow));
@@ -3009,6 +3026,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
30093026 case Builtin::BI__builtin_rintf16:
30103027 case Builtin::BI__builtin_rintl:
30113028 case Builtin::BI__builtin_rintf128:
3029+ case Builtin::BI__builtin_elementwise_rint:
30123030 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
30133031 Intrinsic::rint,
30143032 Intrinsic::experimental_constrained_rint));
@@ -3021,6 +3039,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
30213039 case Builtin::BI__builtin_roundf16:
30223040 case Builtin::BI__builtin_roundl:
30233041 case Builtin::BI__builtin_roundf128:
3042+ case Builtin::BI__builtin_elementwise_round:
30243043 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
30253044 Intrinsic::round,
30263045 Intrinsic::experimental_constrained_round));
@@ -3033,6 +3052,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
30333052 case Builtin::BI__builtin_roundevenf16:
30343053 case Builtin::BI__builtin_roundevenl:
30353054 case Builtin::BI__builtin_roundevenf128:
3055+ case Builtin::BI__builtin_elementwise_roundeven:
30363056 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
30373057 Intrinsic::roundeven,
30383058 Intrinsic::experimental_constrained_roundeven));
@@ -3045,6 +3065,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
30453065 case Builtin::BI__builtin_sinf16:
30463066 case Builtin::BI__builtin_sinl:
30473067 case Builtin::BI__builtin_sinf128:
3068+ case Builtin::BI__builtin_elementwise_sin:
30483069 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
30493070 Intrinsic::sin,
30503071 Intrinsic::experimental_constrained_sin));
@@ -3057,6 +3078,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
30573078 case Builtin::BI__builtin_sinhf16:
30583079 case Builtin::BI__builtin_sinhl:
30593080 case Builtin::BI__builtin_sinhf128:
3081+ case Builtin::BI__builtin_elementwise_sinh:
30603082 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (
30613083 *this , E, Intrinsic::sinh, Intrinsic::experimental_constrained_sinh));
30623084
@@ -3104,6 +3126,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
31043126 case Builtin::BI__builtin_tanf16:
31053127 case Builtin::BI__builtin_tanl:
31063128 case Builtin::BI__builtin_tanf128:
3129+ case Builtin::BI__builtin_elementwise_tan:
31073130 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (
31083131 *this , E, Intrinsic::tan, Intrinsic::experimental_constrained_tan));
31093132
@@ -3115,6 +3138,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
31153138 case Builtin::BI__builtin_tanhf16:
31163139 case Builtin::BI__builtin_tanhl:
31173140 case Builtin::BI__builtin_tanhf128:
3141+ case Builtin::BI__builtin_elementwise_tanh:
31183142 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (
31193143 *this , E, Intrinsic::tanh, Intrinsic::experimental_constrained_tanh));
31203144
@@ -3126,6 +3150,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
31263150 case Builtin::BI__builtin_truncf16:
31273151 case Builtin::BI__builtin_truncl:
31283152 case Builtin::BI__builtin_truncf128:
3153+ case Builtin::BI__builtin_elementwise_trunc:
31293154 return RValue::get (emitUnaryMaybeConstrainedFPBuiltin (*this , E,
31303155 Intrinsic::trunc,
31313156 Intrinsic::experimental_constrained_trunc));
@@ -3964,100 +3989,18 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
39643989
39653990 return RValue::get (Result);
39663991 }
3967- case Builtin::BI__builtin_elementwise_acos:
3968- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
3969- *this , E, Intrinsic::acos, " elt.acos" ));
3970- case Builtin::BI__builtin_elementwise_asin:
3971- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
3972- *this , E, Intrinsic::asin, " elt.asin" ));
3973- case Builtin::BI__builtin_elementwise_atan:
3974- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
3975- *this , E, Intrinsic::atan, " elt.atan" ));
3976- case Builtin::BI__builtin_elementwise_atan2:
3977- return RValue::get (emitBuiltinWithOneOverloadedType<2 >(
3978- *this , E, Intrinsic::atan2, " elt.atan2" ));
3979- case Builtin::BI__builtin_elementwise_ceil:
3980- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
3981- *this , E, Intrinsic::ceil, " elt.ceil" ));
3982- case Builtin::BI__builtin_elementwise_exp:
3983- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
3984- *this , E, Intrinsic::exp, " elt.exp" ));
3985- case Builtin::BI__builtin_elementwise_exp2:
3986- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
3987- *this , E, Intrinsic::exp2, " elt.exp2" ));
3988- case Builtin::BI__builtin_elementwise_exp10:
3989- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
3990- *this , E, Intrinsic::exp10, " elt.exp10" ));
3991- case Builtin::BI__builtin_elementwise_ldexp: {
3992- Value *Src = EmitScalarExpr (E->getArg (0 ));
3993- Value *Exp = EmitScalarExpr (E->getArg (1 ));
3994- Value *Result = Builder.CreateLdexp (Src, Exp, {}, " elt.ldexp" );
3995- return RValue::get (Result);
3996- }
3997- case Builtin::BI__builtin_elementwise_log:
3998- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
3999- *this , E, Intrinsic::log, " elt.log" ));
4000- case Builtin::BI__builtin_elementwise_log2:
4001- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4002- *this , E, Intrinsic::log2, " elt.log2" ));
4003- case Builtin::BI__builtin_elementwise_log10:
4004- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4005- *this , E, Intrinsic::log10, " elt.log10" ));
4006- case Builtin::BI__builtin_elementwise_pow: {
4007- return RValue::get (
4008- emitBuiltinWithOneOverloadedType<2 >(*this , E, Intrinsic::pow));
4009- }
40103992 case Builtin::BI__builtin_elementwise_bitreverse:
40113993 return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
40123994 *this , E, Intrinsic::bitreverse, " elt.bitreverse" ));
4013- case Builtin::BI__builtin_elementwise_cos:
4014- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4015- *this , E, Intrinsic::cos, " elt.cos" ));
4016- case Builtin::BI__builtin_elementwise_cosh:
4017- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4018- *this , E, Intrinsic::cosh, " elt.cosh" ));
4019- case Builtin::BI__builtin_elementwise_floor:
4020- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4021- *this , E, Intrinsic::floor, " elt.floor" ));
40223995 case Builtin::BI__builtin_elementwise_popcount:
40233996 return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
40243997 *this , E, Intrinsic::ctpop, " elt.ctpop" ));
4025- case Builtin::BI__builtin_elementwise_roundeven:
4026- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4027- *this , E, Intrinsic::roundeven, " elt.roundeven" ));
4028- case Builtin::BI__builtin_elementwise_round:
4029- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4030- *this , E, Intrinsic::round, " elt.round" ));
4031- case Builtin::BI__builtin_elementwise_rint:
4032- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4033- *this , E, Intrinsic::rint, " elt.rint" ));
4034- case Builtin::BI__builtin_elementwise_nearbyint:
4035- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4036- *this , E, Intrinsic::nearbyint, " elt.nearbyint" ));
4037- case Builtin::BI__builtin_elementwise_sin:
4038- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4039- *this , E, Intrinsic::sin, " elt.sin" ));
4040- case Builtin::BI__builtin_elementwise_sinh:
4041- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4042- *this , E, Intrinsic::sinh, " elt.sinh" ));
4043- case Builtin::BI__builtin_elementwise_tan:
4044- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4045- *this , E, Intrinsic::tan, " elt.tan" ));
4046- case Builtin::BI__builtin_elementwise_tanh:
4047- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4048- *this , E, Intrinsic::tanh, " elt.tanh" ));
4049- case Builtin::BI__builtin_elementwise_trunc:
4050- return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
4051- *this , E, Intrinsic::trunc, " elt.trunc" ));
40523998 case Builtin::BI__builtin_elementwise_canonicalize:
40533999 return RValue::get (emitBuiltinWithOneOverloadedType<1 >(
40544000 *this , E, Intrinsic::canonicalize, " elt.canonicalize" ));
40554001 case Builtin::BI__builtin_elementwise_copysign:
40564002 return RValue::get (
40574003 emitBuiltinWithOneOverloadedType<2 >(*this , E, Intrinsic::copysign));
4058- case Builtin::BI__builtin_elementwise_fma:
4059- return RValue::get (
4060- emitBuiltinWithOneOverloadedType<3 >(*this , E, Intrinsic::fma));
40614004 case Builtin::BI__builtin_elementwise_fshl:
40624005 return RValue::get (
40634006 emitBuiltinWithOneOverloadedType<3 >(*this , E, Intrinsic::fshl));
0 commit comments