Skip to content

Commit 22f9f89

Browse files
zahiraamjsji
authored andcommitted
Add missing fpbuiltin math functions. (#15039)
This change due to llvm/llvm-project#98949.
1 parent c6519ef commit 22f9f89

File tree

2 files changed

+30
-24
lines changed

2 files changed

+30
-24
lines changed

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2750,7 +2750,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
27502750
case Builtin::BI__builtin_acosl:
27512751
case Builtin::BI__builtin_acosf128:
27522752
return RValue::get(emitUnaryMaybeConstrainedFPBuiltin(
2753-
*this, E, Intrinsic::acos, Intrinsic::experimental_constrained_acos));
2753+
*this, E, Intrinsic::acos, Intrinsic::experimental_constrained_acos,
2754+
Intrinsic::fpbuiltin_acos));
27542755

27552756
case Builtin::BIasin:
27562757
case Builtin::BIasinf:
@@ -2761,7 +2762,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
27612762
case Builtin::BI__builtin_asinl:
27622763
case Builtin::BI__builtin_asinf128:
27632764
return RValue::get(emitUnaryMaybeConstrainedFPBuiltin(
2764-
*this, E, Intrinsic::asin, Intrinsic::experimental_constrained_asin));
2765+
*this, E, Intrinsic::asin, Intrinsic::experimental_constrained_asin,
2766+
Intrinsic::fpbuiltin_asin));
27652767

27662768
case Builtin::BIatan:
27672769
case Builtin::BIatanf:
@@ -2772,7 +2774,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
27722774
case Builtin::BI__builtin_atanl:
27732775
case Builtin::BI__builtin_atanf128:
27742776
return RValue::get(emitUnaryMaybeConstrainedFPBuiltin(
2775-
*this, E, Intrinsic::atan, Intrinsic::experimental_constrained_atan));
2777+
*this, E, Intrinsic::atan, Intrinsic::experimental_constrained_atan,
2778+
Intrinsic::fpbuiltin_atan));
27762779

27772780
case Builtin::BIceil:
27782781
case Builtin::BIceilf:
@@ -2818,7 +2821,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
28182821
case Builtin::BI__builtin_coshl:
28192822
case Builtin::BI__builtin_coshf128:
28202823
return RValue::get(emitUnaryMaybeConstrainedFPBuiltin(
2821-
*this, E, Intrinsic::cosh, Intrinsic::experimental_constrained_cosh));
2824+
*this, E, Intrinsic::cosh, Intrinsic::experimental_constrained_cosh,
2825+
Intrinsic::fpbuiltin_cosh));
28222826

28232827
case Builtin::BIexp:
28242828
case Builtin::BIexpf:
@@ -3045,7 +3049,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
30453049
case Builtin::BI__builtin_sinhl:
30463050
case Builtin::BI__builtin_sinhf128:
30473051
return RValue::get(emitUnaryMaybeConstrainedFPBuiltin(
3048-
*this, E, Intrinsic::sinh, Intrinsic::experimental_constrained_sinh));
3052+
*this, E, Intrinsic::sinh, Intrinsic::experimental_constrained_sinh,
3053+
Intrinsic::fpbuiltin_sinh));
30493054

30503055
case Builtin::BIsqrt:
30513056
case Builtin::BIsqrtf:
@@ -3083,7 +3088,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
30833088
case Builtin::BI__builtin_tanhl:
30843089
case Builtin::BI__builtin_tanhf128:
30853090
return RValue::get(emitUnaryMaybeConstrainedFPBuiltin(
3086-
*this, E, Intrinsic::tanh, Intrinsic::experimental_constrained_tanh));
3091+
*this, E, Intrinsic::tanh, Intrinsic::experimental_constrained_tanh,
3092+
Intrinsic::fpbuiltin_tanh));
30873093

30883094
case Builtin::BItrunc:
30893095
case Builtin::BItruncf:

clang/test/CodeGen/fp-accuracy.c

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,15 @@ double rsqrt(double);
9797
// CHECK: call double @llvm.fpbuiltin.tanh.f64(double {{.*}}) #[[ATTR_HIGH]]
9898

9999
// CHECK-F1-LABEL: define dso_local void @f1
100-
// CHECK-F1: call double @acos(double {{.*}})
100+
// CHECK-F1: call double @llvm.acos.f64(double {{.*}})
101101
// CHECK-F1: call double @acosh(double {{.*}})
102-
// CHECK-F1: call double @asin(double {{.*}})
102+
// CHECK-F1: call double @llvm.asin.f64(double {{.*}})
103103
// CHECK-F1: call double @asinh(double {{.*}})
104-
// CHECK-F1: call double @atan(double {{.*}})
104+
// CHECK-F1: call double @llvm.atan.f64(double {{.*}})
105105
// CHECK-F1: call double @atan2(double {{.*}}, double {{.*}})
106106
// CHECK-F1: call double @atanh(double {{.*}})
107107
// CHECK-F1: call double @llvm.fpbuiltin.cos.f64(double {{.*}}) #[[ATTR_F1_HIGH:[0-9]+]]
108-
// CHECK-F1: call double @cosh(double {{.*}})
108+
// CHECK-F1: call double @llvm.cosh.f64(double {{.*}})
109109
// CHECK-F1: call double @erf(double {{.*}})
110110
// CHECK-F1: call double @erfc(double {{.*}})
111111
// CHECK-F1: call i32 (double, ...) @exp10(double {{.*}})
@@ -126,10 +126,10 @@ double rsqrt(double);
126126
// CHECK-F1: call i32 (double, ...) @rsqrt(double {{.*}})
127127
// CHECK-F1: call double @llvm.sin.f64(double {{.*}})
128128
// CHECK-F1: call void @llvm.fpbuiltin.sincos.f64(double {{.*}}, ptr {{.*}}, ptr {{.*}}) #[[ATTR_F1_MEDIUM]]
129-
// CHECK-F1: call double @sinh(double {{.*}})
129+
// CHECK-F1: call double @llvm.sinh.f64(double {{.*}})
130130
// CHECK-F1: call double @llvm.sqrt.f64(double {{.*}})
131131
// CHECK-F1: call double @llvm.fpbuiltin.tan.f64(double {{.*}}) #[[ATTR_F1_LOW:[0-9]+]]
132-
// CHECK-F1: call double @tanh(double {{.*}})
132+
// CHECK-F1: call double @llvm.tanh.f64(double {{.*}})
133133
//
134134
// CHECK-F2-LABEL: define dso_local void @f1
135135
// CHECK-F2: call double @llvm.fpbuiltin.acos.f64(double {{.*}}) #[[ATTR_F2_MEDIUM:[0-9]+]]
@@ -259,15 +259,15 @@ double rsqrt(double);
259259
// CHECK-F4: call double @llvm.fpbuiltin.tanh.f64(double {{.*}}) #[[ATTR_F4_MEDIUM]]
260260
//
261261
// CHECK-F5-LABEL: define dso_local void @f1
262-
// CHECK-F5: call double @acos(double {{.*}})
262+
// CHECK-F5: call double @llvm.acos.f64(double {{.*}})
263263
// CHECK-F5: call double @acosh(double {{.*}})
264-
// CHECK-F5: call double @asin(double {{.*}})
264+
// CHECK-F5: call double @llvm.asin.f64(double {{.*}})
265265
// CHECK-F5: call double @asinh(double {{.*}})
266-
// CHECK-F5: call double @atan(double {{.*}})
266+
// CHECK-F5: call double @llvm.atan.f64(double {{.*}})
267267
// CHECK-F5: call double @atan2(double {{.*}}, double {{.*}})
268268
// CHECK-F5: call double @atanh(double {{.*}})
269269
// CHECK-F5: call double @llvm.fpbuiltin.cos.f64(double {{.*}}) #[[ATTR_F5_MEDIUM:[0-9]+]]
270-
// CHECK-F5: call double @cosh(double {{.*}})
270+
// CHECK-F5: call double @llvm.cosh.f64(double {{.*}})
271271
// CHECK-F5: call double @erf(double {{.*}})
272272
// CHECK-F5: call double @erfc(double {{.*}})
273273
// CHECK-F5: call double @llvm.exp.f64(double {{.*}})
@@ -289,10 +289,10 @@ double rsqrt(double);
289289
// CHECK-F5: call i32 (double, ...) @rsqrt(double {{.*}})
290290
// CHECK-F5: call double @llvm.fpbuiltin.sin.f64(double {{.*}}) #[[ATTR_F5_HIGH:[0-9]+]]
291291
// CHECK-F5: call i32 (double, ptr, ptr, ...) @sincos(double {{.*}}, ptr {{.*}}, ptr {{.*}})
292-
// CHECK-F5: call double @sinh(double {{.*}})
292+
// CHECK-F5: call double @llvm.sinh.f64(double {{.*}})
293293
// CHECK-F5: call double @llvm.sqrt.f64(double {{.*}})
294294
// CHECK-F5: call double @llvm.fpbuiltin.tan.f64(double {{.*}}) #[[ATTR_F5_HIGH]]
295-
// CHECK-F5: call double @tanh(double {{.*}})
295+
// CHECK-F5: call double @llvm.tanh.f64(double {{.*}})
296296
//
297297
//
298298
// CHECK-F6-LABEL: define dso_local void @f1
@@ -560,15 +560,15 @@ void f1(float a, float b) {
560560
// CHECK-SPIR: attributes #[[ATTR_SYCL8]] = {{.*}}"fpbuiltin-max-error"="2.0"
561561

562562
// CHECK-DEFAULT-LABEL: define dso_local void @f1
563-
// CHECK-DEFAULT: call double @acos(double {{.*}})
563+
// CHECK-DEFAULT: call double @llvm.acos.f64(double {{.*}})
564564
// CHECK-DEFAULT: call double @acosh(double {{.*}})
565-
// CHECK-DEFAULT: call double @asin(double {{.*}})
565+
// CHECK-DEFAULT: call double @llvm.asin.f64(double {{.*}})
566566
// CHECK-DEFAULT: call double @asinh(double {{.*}})
567-
// CHECK-DEFAULT: call double @atan(double {{.*}})
567+
// CHECK-DEFAULT: call double @llvm.atan.f64(double {{.*}})
568568
// CHECK-DEFAULT: call double @atan2(double {{.*}}, double {{.*}})
569569
// CHECK-DEFAULT: call double @atanh(double {{.*}})
570570
// CHECK-DEFAULT: call double @llvm.cos.f64(double {{.*}})
571-
// CHECK-DEFAULT: call double @cosh(double {{.*}})
571+
// CHECK-DEFAULT: call double @llvm.cosh.f64(double {{.*}})
572572
// CHECK-DEFAULT: call double @erf(double {{.*}})
573573
// CHECK-DEFAULT: call double @erfc(double {{.*}})
574574
// CHECK-DEFAULT: call double @llvm.exp.f64(double {{.*}})
@@ -590,10 +590,10 @@ void f1(float a, float b) {
590590
// CHECK-DEFAULT: call i32 (double, ...) @rsqrt(double {{.*}})
591591
// CHECK-DEFAULT: call double @llvm.sin.f64(double {{.*}})
592592
// CHECK-DEFAULT: call i32 (double, ptr, ptr, ...) @sincos(double {{.*}}, ptr {{.*}}, ptr {{.*}})
593-
// CHECK-DEFAULT: call double @sinh(double {{.*}})
593+
// CHECK-DEFAULT: call double @llvm.sinh.f64(double {{.*}})
594594
// CHECK-DEFAULT: call double @llvm.sqrt.f64(double {{.*}})
595595
// CHECK-DEFAULT: call double @llvm.tan.f64(double {{.*}})
596-
// CHECK-DEFAULT: call double @tanh(double {{.*}})
596+
// CHECK-DEFAULT: call double @llvm.tanh.f64(double {{.*}})
597597
//
598598
// CHECK-DEFAULT-LABEL: define dso_local void @f2
599599
// CHECK-DEFAULT: call float @llvm.cos.f32(float {{.*}})

0 commit comments

Comments
 (0)