wzssyqa wrote:
> Maybe should add support for elementwise builtins next
https://github.com/llvm/llvm-project/issues/112164
https://github.com/llvm/llvm-project/pull/96281
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/c
https://github.com/wzssyqa closed
https://github.com/llvm/llvm-project/pull/96281
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/wzssyqa updated
https://github.com/llvm/llvm-project/pull/96281
>From 98e909e0eff233c2ee3c5e7f3094e35004326bd0 Mon Sep 17 00:00:00 2001
From: YunQiang Su
Date: Fri, 21 Jun 2024 14:28:42 +0800
Subject: [PATCH 01/12] Clang: Support minimumnum and maximumnum intrinsics
We just
@@ -0,0 +1,55 @@
+// RUN: %clang_cc1 -std=c++17 -fsyntax-only -verify %s
+// FIXME: %clang_cc1 -std=c++17 -fsyntax-only -verify
-fexperimental-new-constant-interpreter %s
+// expected-no-diagnostics
+
+constexpr double NaN = __builtin_nan("");
+constexpr double Inf = __builtin_in
https://github.com/wzssyqa edited
https://github.com/llvm/llvm-project/pull/96281
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -0,0 +1,55 @@
+// RUN: %clang_cc1 -std=c++17 -fsyntax-only -verify %s
+// FIXME: %clang_cc1 -std=c++17 -fsyntax-only -verify
-fexperimental-new-constant-interpreter %s
+// expected-no-diagnostics
+
+constexpr double NaN = __builtin_nan("");
+constexpr double Inf = __builtin_in
arsenm wrote:
Maybe should add support for elementwise builtins next
https://github.com/llvm/llvm-project/pull/96281
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/arsenm approved this pull request.
https://github.com/llvm/llvm-project/pull/96281
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -0,0 +1,55 @@
+// RUN: %clang_cc1 -std=c++17 -fsyntax-only -verify %s
+// FIXME: %clang_cc1 -std=c++17 -fsyntax-only -verify
-fexperimental-new-constant-interpreter %s
+// expected-no-diagnostics
+
+constexpr double NaN = __builtin_nan("");
+constexpr double Inf = __builtin_in
https://github.com/wzssyqa updated
https://github.com/llvm/llvm-project/pull/96281
>From c08b0a8d34107dc4563c434485ba5f326ab8df93 Mon Sep 17 00:00:00 2001
From: YunQiang Su
Date: Fri, 21 Jun 2024 14:28:42 +0800
Subject: [PATCH 01/11] Clang: Support minimumnum and maximumnum intrinsics
We just
https://github.com/wzssyqa updated
https://github.com/llvm/llvm-project/pull/96281
>From c08b0a8d34107dc4563c434485ba5f326ab8df93 Mon Sep 17 00:00:00 2001
From: YunQiang Su
Date: Fri, 21 Jun 2024 14:28:42 +0800
Subject: [PATCH 01/11] Clang: Support minimumnum and maximumnum intrinsics
We just
@@ -372,6 +372,31 @@ void foo(double *d, float f, float *fp, long double *l,
int *i, const char *c) {
// HAS_MAYTRAP: declare float @llvm.experimental.constrained.minnum.f32(
// HAS_MAYTRAP: declare x86_fp80 @llvm.experimental.constrained.minnum.f80(
+ fmaximum_num(*d,*d);
@@ -372,6 +372,31 @@ void foo(double *d, float f, float *fp, long double *l,
int *i, const char *c) {
// HAS_MAYTRAP: declare float @llvm.experimental.constrained.minnum.f32(
// HAS_MAYTRAP: declare x86_fp80 @llvm.experimental.constrained.minnum.f80(
+ fmaximum_num(*d,*d);
https://github.com/wzssyqa edited
https://github.com/llvm/llvm-project/pull/96281
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -15314,6 +15314,32 @@ bool FloatExprEvaluator::VisitCallExpr(const CallExpr
*E) {
Result = RHS;
wzssyqa wrote:
I guess it was due to that the `APFloat::minnum` claims that it fellow
`IEEE-754 2019 minimumNumber semantics`.
and `fmin` needs to follow t
https://github.com/wzssyqa updated
https://github.com/llvm/llvm-project/pull/96281
>From c08b0a8d34107dc4563c434485ba5f326ab8df93 Mon Sep 17 00:00:00 2001
From: YunQiang Su
Date: Fri, 21 Jun 2024 14:28:42 +0800
Subject: [PATCH 01/10] Clang: Support minimumnum and maximumnum intrinsics
We just
wzssyqa wrote:
> > Can you add a test that passes a non-float value and checks that it's
> > rejected?
>
> Do you mean something like this?
>
> ```
> $ cat xx.c
> #include
>
> float f(char *a, char *b) {
> return fminimum_num(a, b);
> }
> $ ./bin/clang -std=c23 -O2 -S -emit-llvm xx.
https://github.com/wzssyqa updated
https://github.com/llvm/llvm-project/pull/96281
>From c08b0a8d34107dc4563c434485ba5f326ab8df93 Mon Sep 17 00:00:00 2001
From: YunQiang Su
Date: Fri, 21 Jun 2024 14:28:42 +0800
Subject: [PATCH 1/9] Clang: Support minimumnum and maximumnum intrinsics
We just in
@@ -15314,6 +15314,32 @@ bool FloatExprEvaluator::VisitCallExpr(const CallExpr
*E) {
Result = RHS;
return true;
}
+
+ case Builtin::BI__builtin_fmaximum_num:
+ case Builtin::BI__builtin_fmaximum_numf:
+ case Builtin::BI__builtin_fmaximum_numl:
+ case Builtin::B
https://github.com/wzssyqa updated
https://github.com/llvm/llvm-project/pull/96281
>From c08b0a8d34107dc4563c434485ba5f326ab8df93 Mon Sep 17 00:00:00 2001
From: YunQiang Su
Date: Fri, 21 Jun 2024 14:28:42 +0800
Subject: [PATCH 1/8] Clang: Support minimumnum and maximumnum intrinsics
We just in
@@ -15314,6 +15314,32 @@ bool FloatExprEvaluator::VisitCallExpr(const CallExpr
*E) {
Result = RHS;
return true;
}
+
+ case Builtin::BI__builtin_fmaximum_num:
+ case Builtin::BI__builtin_fmaximum_numf:
+ case Builtin::BI__builtin_fmaximum_numl:
+ case Builtin::B
@@ -15314,6 +15314,32 @@ bool FloatExprEvaluator::VisitCallExpr(const CallExpr
*E) {
Result = RHS;
return true;
}
+
+ case Builtin::BI__builtin_fmaximum_num:
+ case Builtin::BI__builtin_fmaximum_numf:
+ case Builtin::BI__builtin_fmaximum_numl:
+ case Builtin::B
https://github.com/wzssyqa updated
https://github.com/llvm/llvm-project/pull/96281
>From c08b0a8d34107dc4563c434485ba5f326ab8df93 Mon Sep 17 00:00:00 2001
From: YunQiang Su
Date: Fri, 21 Jun 2024 14:28:42 +0800
Subject: [PATCH 1/7] Clang: Support minimumnum and maximumnum intrinsics
We just in
wzssyqa wrote:
> Add it as a succcessful test then to check that the `EvaluateFloat` calls
> don't fail
done.
https://github.com/llvm/llvm-project/pull/96281
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailm
@@ -58,7 +58,9 @@
// Check __has_constexpr_builtin
#if !__has_constexpr_builtin(__builtin_fmax) || \
- !__has_constexpr_builtin(__builtin_fmin)
+ !__has_constexpr_builtin(__builtin_fmin) || \
+ !__has_constexpr_builtin(__builtin_fmaximum_num) || \
+ !__has_con
https://github.com/wzssyqa updated
https://github.com/llvm/llvm-project/pull/96281
>From c08b0a8d34107dc4563c434485ba5f326ab8df93 Mon Sep 17 00:00:00 2001
From: YunQiang Su
Date: Fri, 21 Jun 2024 14:28:42 +0800
Subject: [PATCH 1/6] Clang: Support minimumnum and maximumnum intrinsics
We just in
@@ -15314,6 +15314,32 @@ bool FloatExprEvaluator::VisitCallExpr(const CallExpr
*E) {
Result = RHS;
wzssyqa wrote:
I have no idea. I will try to fixed in future patches.
https://github.com/llvm/llvm-project/issues/111991
https://github.com/llvm/llvm-proje
https://github.com/wzssyqa updated
https://github.com/llvm/llvm-project/pull/96281
>From c08b0a8d34107dc4563c434485ba5f326ab8df93 Mon Sep 17 00:00:00 2001
From: YunQiang Su
Date: Fri, 21 Jun 2024 14:28:42 +0800
Subject: [PATCH 1/5] Clang: Support minimumnum and maximumnum intrinsics
We just in
@@ -475,6 +475,12 @@ SYMBOL(fmaxl, None, )
SYMBOL(fmin, None, )
SYMBOL(fminf, None, )
SYMBOL(fminl, None, )
+SYMBOL(fmaximum_num, None, )
wzssyqa wrote:
Oh, yes. It is autogenerated from
https://github.com/PeterFeicht/cppreference-doc/releases.
If we need to
@@ -15314,6 +15314,32 @@ bool FloatExprEvaluator::VisitCallExpr(const CallExpr
*E) {
Result = RHS;
return true;
}
+
+ case Builtin::BI__builtin_fmaximum_num:
+ case Builtin::BI__builtin_fmaximum_numf:
+ case Builtin::BI__builtin_fmaximum_numl:
+ case Builtin::B
@@ -475,6 +475,12 @@ SYMBOL(fmaxl, None, )
SYMBOL(fmin, None, )
SYMBOL(fminf, None, )
SYMBOL(fminl, None, )
+SYMBOL(fmaximum_num, None, )
arsenm wrote:
Not sure what this for, but this isn't tested?
https://github.com/llvm/llvm-project/pull/96281
@@ -1295,6 +1295,24 @@ SYMBOL(fminf, None, )
SYMBOL(fminl, std::, )
SYMBOL(fminl, None, )
SYMBOL(fminl, None, )
+SYMBOL(fmaximum_num, std::, )
arsenm wrote:
Not sure what this for, but this isn't tested?
https://github.com/llvm/llvm-project/pull/96281
__
@@ -372,6 +372,31 @@ void foo(double *d, float f, float *fp, long double *l,
int *i, const char *c) {
// HAS_MAYTRAP: declare float @llvm.experimental.constrained.minnum.f32(
// HAS_MAYTRAP: declare x86_fp80 @llvm.experimental.constrained.minnum.f80(
+ fmaximum_num(f,f);
@@ -15314,6 +15314,32 @@ bool FloatExprEvaluator::VisitCallExpr(const CallExpr
*E) {
Result = RHS;
arsenm wrote:
Unrelated, but why is up here reproducing logic that's already in APFloat?
https://github.com/llvm/llvm-project/pull/96281
_
tbaederr wrote:
Add it as a succcessful test then to check that the `EvaluateFloat` calls don't
fail
https://github.com/llvm/llvm-project/pull/96281
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinf
wzssyqa wrote:
>
> Yes, but also with an integer please
Clang can convert integer to float, so it won't be a failure.
https://github.com/llvm/llvm-project/pull/96281
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-b
tbaederr wrote:
> > Can you add a test that passes a non-float value and checks that it's
> > rejected?
>
> Do you mean something like this?
>
> ```
> $ cat xx.c
> #include
>
> float f(char *a, char *b) {
> return fminimum_num(a, b);
> }
> $ ./bin/clang -std=c23 -O2 -S -emit-llvm xx
wzssyqa wrote:
> Can you add a test that passes a non-float value and checks that it's
> rejected?
Do you mean something like this?
```
$ cat xx.c
#include
float f(char *a, char *b) {
return fminimum_num(a, b);
}
$ ./bin/clang -std=c23 -O2 -S -emit-llvm xx.c
xx.c:4:22: error: passin
tbaederr wrote:
It's not your fault
https://github.com/llvm/llvm-project/pull/96281
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
wzssyqa wrote:
I cannot reproduce the fail of `Driver/hip-partial-link.hip`. Any idea about it?
https://github.com/llvm/llvm-project/pull/96281
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-
@@ -3636,6 +3648,22 @@ def Fmin : FPMathTemplate, LibBuiltin<"math.h"> {
let OnlyBuiltinPrefixedAliasIsConstexpr = 1;
}
+def FmaximumNum : FPMathTemplate, LibBuiltin<"math.h"> {
wzssyqa wrote:
Yes. They are in C23: https://libc.llvm.org/c23.html
https://gi
@@ -3636,6 +3648,22 @@ def Fmin : FPMathTemplate, LibBuiltin<"math.h"> {
let OnlyBuiltinPrefixedAliasIsConstexpr = 1;
}
+def FmaximumNum : FPMathTemplate, LibBuiltin<"math.h"> {
philnik777 wrote:
In that case this should probably be a `GNULibBuiltin`. Or is
https://github.com/wzssyqa updated
https://github.com/llvm/llvm-project/pull/96281
>From 1f357abed9d9e304b12ddd05a525557a8b0082c6 Mon Sep 17 00:00:00 2001
From: YunQiang Su
Date: Fri, 21 Jun 2024 14:28:42 +0800
Subject: [PATCH 1/2] Clang: Support minimumnum and maximumnum intrinsics
We just in
@@ -3636,6 +3648,22 @@ def Fmin : FPMathTemplate, LibBuiltin<"math.h"> {
let OnlyBuiltinPrefixedAliasIsConstexpr = 1;
}
+def FmaximumNum : FPMathTemplate, LibBuiltin<"math.h"> {
wzssyqa wrote:
Oh, newer libc does have this function:
https://www.gnu.org/sof
@@ -3636,6 +3648,22 @@ def Fmin : FPMathTemplate, LibBuiltin<"math.h"> {
let OnlyBuiltinPrefixedAliasIsConstexpr = 1;
}
+def FmaximumNum : FPMathTemplate, LibBuiltin<"math.h"> {
philnik777 wrote:
Why is this a libbuiltin? IIUC this is only supposed to be an
@@ -215,6 +215,18 @@ def FminF16F128 : Builtin, F16F128MathTemplate {
let Prototype = "T(T, T)";
}
+def FmaximumNumF16F128 : Builtin, F16F128MathTemplate {
+ let Spellings = ["__builtin_fmaximum_num"];
+ let Attributes = [FunctionWithBuiltinPrefix, NoThrow, Const, Constexp
llvmbot wrote:
@llvm/pr-subscribers-clang
Author: YunQiang Su (wzssyqa)
Changes
We just introduce llvm.minimumnum and llvm.maximumnum intrinsics support to
llvm. Let's support them in Clang.
See: #93033
---
Full diff: https://github.com/llvm/llvm-project/pull/96281.diff
6 Files Affect
https://github.com/wzssyqa created
https://github.com/llvm/llvm-project/pull/96281
We just introduce llvm.minimumnum and llvm.maximumnum intrinsics support to
llvm. Let's support them in Clang.
See: #93033
>From 5605426ee61ec58cad701103a43922b67792ccaf Mon Sep 17 00:00:00 2001
From: YunQiang
48 matches
Mail list logo