https://github.com/RKSimon updated 
https://github.com/llvm/llvm-project/pull/180013

>From 3a3881f3e963811d3aef2fa23d6114796c71cf9b Mon Sep 17 00:00:00 2001
From: NagaChaitanya Vellanki <[email protected]>
Date: Thu, 5 Feb 2026 10:55:57 -0800
Subject: [PATCH] [NFC][clang][X86] Add tests for NaN,Denormal,Inf and rounding
 modes

Follow up: #171966
---
 .../SemaCXX/constexpr-x86-avx-builtins.cpp    |  92 +++++++++++++
 .../constexpr-x86-avx512f-builtins.cpp        | 128 ++++++++++++++++++
 .../SemaCXX/constexpr-x86-sse2-builtins.cpp   | 116 ++++++++++++++++
 3 files changed, 336 insertions(+)

diff --git a/clang/test/SemaCXX/constexpr-x86-avx-builtins.cpp 
b/clang/test/SemaCXX/constexpr-x86-avx-builtins.cpp
index 724aff3011ded..1eedf6072ecdb 100644
--- a/clang/test/SemaCXX/constexpr-x86-avx-builtins.cpp
+++ b/clang/test/SemaCXX/constexpr-x86-avx-builtins.cpp
@@ -16,3 +16,95 @@ constexpr __m128 r = _mm256_cvtpd_ps(a);
 // expected-note@-3 {{in call to '_mm256_cvtpd_ps({1.000000e+00, 0.000000e+00, 
0.000000e+00, 0.000000e+00})'}}
 }
 }
+
+namespace Test_mm256_min_ps {
+namespace OK {
+constexpr __m256 a = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
+constexpr __m256 b = { 8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+TEST_CONSTEXPR(match_m256(_mm256_min_ps(a, b), 1.0f, 2.0f, 3.0f, 4.0f, 4.0f, 
3.0f, 2.0f, 1.0f));
+}
+namespace NaN_A {
+constexpr __m256 a = { __builtin_nanf(""), 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 
8.0f };
+constexpr __m256 b = { 8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+constexpr __m256 r = _mm256_min_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Inf_B {
+constexpr __m256 a = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
+constexpr __m256 b = { 8.0f, -__builtin_huge_valf(), 6.0f, 5.0f, 4.0f, 3.0f, 
2.0f, 1.0f };
+constexpr __m256 r = _mm256_min_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Denormal_A {
+constexpr __m256 a = { 1e-40f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
+constexpr __m256 b = { 8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+constexpr __m256 r = _mm256_min_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+}
+
+namespace Test_mm256_max_ps {
+namespace OK {
+constexpr __m256 a = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
+constexpr __m256 b = { 8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+TEST_CONSTEXPR(match_m256(_mm256_max_ps(a, b), 8.0f, 7.0f, 6.0f, 5.0f, 5.0f, 
6.0f, 7.0f, 8.0f));
+}
+namespace NaN_B {
+constexpr __m256 a = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
+constexpr __m256 b = { 8.0f, 7.0f, __builtin_nanf(""), 5.0f, 4.0f, 3.0f, 2.0f, 
1.0f };
+constexpr __m256 r = _mm256_max_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Inf_A {
+constexpr __m256 a = { __builtin_huge_valf(), 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 
7.0f, 8.0f };
+constexpr __m256 b = { 8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+constexpr __m256 r = _mm256_max_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+}
+
+namespace Test_mm256_min_pd {
+namespace OK {
+constexpr __m256d a = { 1.0, 2.0, 3.0, 4.0 };
+constexpr __m256d b = { 4.0, 3.0, 2.0, 1.0 };
+TEST_CONSTEXPR(match_m256d(_mm256_min_pd(a, b), 1.0, 2.0, 2.0, 1.0));
+}
+namespace NaN_A {
+constexpr __m256d a = { __builtin_nan(""), 2.0, 3.0, 4.0 };
+constexpr __m256d b = { 4.0, 3.0, 2.0, 1.0 };
+constexpr __m256d r = _mm256_min_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Inf_B {
+constexpr __m256d a = { 1.0, 2.0, 3.0, 4.0 };
+constexpr __m256d b = { 4.0, 3.0, -__builtin_huge_val(), 1.0 };
+constexpr __m256d r = _mm256_min_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Denormal_B {
+constexpr __m256d a = { 1.0, 2.0, 3.0, 4.0 };
+constexpr __m256d b = { 4.0, 3.0, 2.0, -1e-310 };
+constexpr __m256d r = _mm256_min_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+}
+
+namespace Test_mm256_max_pd {
+namespace OK {
+constexpr __m256d a = { 1.0, 2.0, 3.0, 4.0 };
+constexpr __m256d b = { 4.0, 3.0, 2.0, 1.0 };
+TEST_CONSTEXPR(match_m256d(_mm256_max_pd(a, b), 4.0, 3.0, 3.0, 4.0));
+}
+namespace NaN_B {
+constexpr __m256d a = { 1.0, 2.0, 3.0, 4.0 };
+constexpr __m256d b = { 4.0, __builtin_nan(""), 2.0, 1.0 };
+constexpr __m256d r = _mm256_max_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Inf_A {
+constexpr __m256d a = { 1.0, __builtin_huge_val(), 3.0, 4.0 };
+constexpr __m256d b = { 4.0, 3.0, 2.0, 1.0 };
+constexpr __m256d r = _mm256_max_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+}
diff --git a/clang/test/SemaCXX/constexpr-x86-avx512f-builtins.cpp 
b/clang/test/SemaCXX/constexpr-x86-avx512f-builtins.cpp
index 95d26bc44b9a3..b101f84596d9e 100644
--- a/clang/test/SemaCXX/constexpr-x86-avx512f-builtins.cpp
+++ b/clang/test/SemaCXX/constexpr-x86-avx512f-builtins.cpp
@@ -743,3 +743,131 @@ constexpr __m128d a = (__m128d)(__v2df){-__builtin_inf(), 
20.0};
 constexpr __m128d b = (__m128d)(__v2df){100.0, 200.0};
 constexpr __m128d result = _mm_max_sd(a, b); // expected-error {{must be 
initialized by a constant expression}}
 }
+
+namespace Test_mm512_min_ps {
+namespace OK {
+constexpr __m512 a = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 
10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f };
+constexpr __m512 b = { 16.0f, 15.0f, 14.0f, 13.0f, 12.0f, 11.0f, 10.0f, 9.0f, 
8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+TEST_CONSTEXPR(match_m512(_mm512_min_ps(a, b), 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 
6.0f, 7.0f, 8.0f, 8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f));
+}
+namespace NaN_A {
+constexpr __m512 a = { __builtin_nanf(""), 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 
8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f };
+constexpr __m512 b = { 16.0f, 15.0f, 14.0f, 13.0f, 12.0f, 11.0f, 10.0f, 9.0f, 
8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+constexpr __m512 r = _mm512_min_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Inf_B {
+constexpr __m512 a = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 
10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f };
+constexpr __m512 b = { 16.0f, -__builtin_huge_valf(), 14.0f, 13.0f, 12.0f, 
11.0f, 10.0f, 9.0f, 8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+constexpr __m512 r = _mm512_min_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Denormal_A {
+constexpr __m512 a = { 1e-40f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 
10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f };
+constexpr __m512 b = { 16.0f, 15.0f, 14.0f, 13.0f, 12.0f, 11.0f, 10.0f, 9.0f, 
8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+constexpr __m512 r = _mm512_min_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+}
+
+namespace Test_mm512_max_ps {
+namespace OK {
+constexpr __m512 a = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 
10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f };
+constexpr __m512 b = { 16.0f, 15.0f, 14.0f, 13.0f, 12.0f, 11.0f, 10.0f, 9.0f, 
8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+TEST_CONSTEXPR(match_m512(_mm512_max_ps(a, b), 16.0f, 15.0f, 14.0f, 13.0f, 
12.0f, 11.0f, 10.0f, 9.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 
16.0f));
+}
+namespace NaN_B {
+constexpr __m512 a = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 
10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f };
+constexpr __m512 b = { 16.0f, 15.0f, __builtin_nanf(""), 13.0f, 12.0f, 11.0f, 
10.0f, 9.0f, 8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+constexpr __m512 r = _mm512_max_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Inf_A {
+constexpr __m512 a = { __builtin_huge_valf(), 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 
7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f };
+constexpr __m512 b = { 16.0f, 15.0f, 14.0f, 13.0f, 12.0f, 11.0f, 10.0f, 9.0f, 
8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+constexpr __m512 r = _mm512_max_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+}
+
+namespace Test_mm512_max_round_ps {
+namespace InvalidRounding {
+constexpr __m512 a = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 
10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f };
+constexpr __m512 b = { 16.0f, 15.0f, 14.0f, 13.0f, 12.0f, 11.0f, 10.0f, 9.0f, 
8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+constexpr __m512 r = _mm512_max_round_ps(a, b, _MM_FROUND_TO_ZERO);
+// expected-error@-1 {{invalid rounding argument}}
+}
+}
+
+namespace Test_mm512_min_pd {
+namespace OK {
+constexpr __m512d a = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
+constexpr __m512d b = { 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0 };
+TEST_CONSTEXPR(match_m512d(_mm512_min_pd(a, b), 1.0, 2.0, 3.0, 4.0, 4.0, 3.0, 
2.0, 1.0));
+}
+namespace NaN_A {
+constexpr __m512d a = { __builtin_nan(""), 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
+constexpr __m512d b = { 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0 };
+constexpr __m512d r = _mm512_min_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Inf_B {
+constexpr __m512d a = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
+constexpr __m512d b = { 8.0, 7.0, -__builtin_huge_val(), 5.0, 4.0, 3.0, 2.0, 
1.0 };
+constexpr __m512d r = _mm512_min_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Denormal_B {
+constexpr __m512d a = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
+constexpr __m512d b = { 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, -1e-310 };
+constexpr __m512d r = _mm512_min_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+}
+
+namespace Test_mm512_min_round_pd {
+namespace InvalidRounding {
+constexpr __m512d a = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
+constexpr __m512d b = { 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0 };
+constexpr __m512d r = _mm512_min_round_pd(a, b, _MM_FROUND_TO_ZERO);
+// expected-error@-1 {{invalid rounding argument}}
+}
+}
+
+namespace Test_mm512_min_round_ps {
+namespace InvalidRounding {
+constexpr __m512 a = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 
10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f };
+constexpr __m512 b = { 16.0f, 15.0f, 14.0f, 13.0f, 12.0f, 11.0f, 10.0f, 9.0f, 
8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f };
+constexpr __m512 r = _mm512_min_round_ps(a, b, _MM_FROUND_TO_NEG_INF);
+// expected-error@-1 {{invalid rounding argument}}
+}
+}
+
+namespace Test_mm512_max_pd {
+namespace OK {
+constexpr __m512d a = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
+constexpr __m512d b = { 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0 };
+TEST_CONSTEXPR(match_m512d(_mm512_max_pd(a, b), 8.0, 7.0, 6.0, 5.0, 5.0, 6.0, 
7.0, 8.0));
+}
+namespace NaN_B {
+constexpr __m512d a = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
+constexpr __m512d b = { 8.0, __builtin_nan(""), 6.0, 5.0, 4.0, 3.0, 2.0, 1.0 };
+constexpr __m512d r = _mm512_max_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Inf_A {
+constexpr __m512d a = { 1.0, __builtin_huge_val(), 3.0, 4.0, 5.0, 6.0, 7.0, 
8.0 };
+constexpr __m512d b = { 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0 };
+constexpr __m512d r = _mm512_max_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+}
+
+namespace Test_mm512_max_round_pd {
+namespace InvalidRounding {
+constexpr __m512d a = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
+constexpr __m512d b = { 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0 };
+constexpr __m512d r = _mm512_max_round_pd(a, b, _MM_FROUND_TO_POS_INF);
+// expected-error@-1 {{invalid rounding argument}}
+}
+}
diff --git a/clang/test/SemaCXX/constexpr-x86-sse2-builtins.cpp 
b/clang/test/SemaCXX/constexpr-x86-sse2-builtins.cpp
index 319a3b02a94f9..251b46be7e7ff 100644
--- a/clang/test/SemaCXX/constexpr-x86-sse2-builtins.cpp
+++ b/clang/test/SemaCXX/constexpr-x86-sse2-builtins.cpp
@@ -77,3 +77,119 @@ constexpr __m128 r = _mm_cvtpd_ps(a);
 // expected-note@-3 {{in call to '_mm_cvtpd_ps({1.000000e-310, 
0.000000e+00})'}}
 }
 }
+
+namespace Test_mm_min_ps {
+namespace OK {
+constexpr __m128 a = { 1.0f, 2.0f, 3.0f, 4.0f };
+constexpr __m128 b = { 4.0f, 3.0f, 2.0f, 1.0f };
+TEST_CONSTEXPR(match_m128(_mm_min_ps(a, b), 1.0f, 2.0f, 2.0f, 1.0f));
+}
+namespace NaN_A {
+constexpr __m128 a = { __builtin_nanf(""), 2.0f, 3.0f, 4.0f };
+constexpr __m128 b = { 4.0f, 3.0f, 2.0f, 1.0f };
+constexpr __m128 r = _mm_min_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Inf_B {
+constexpr __m128 a = { 1.0f, 2.0f, 3.0f, 4.0f };
+constexpr __m128 b = { 4.0f, 3.0f, -__builtin_huge_valf(), 1.0f };
+constexpr __m128 r = _mm_min_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Denormal_A {
+constexpr __m128 a = { 1e-40f, 2.0f, 3.0f, 4.0f };
+constexpr __m128 b = { 4.0f, 3.0f, 2.0f, 1.0f };
+constexpr __m128 r = _mm_min_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+}
+
+namespace Test_mm_max_ps {
+namespace OK {
+constexpr __m128 a = { 1.0f, 2.0f, 3.0f, 4.0f };
+constexpr __m128 b = { 4.0f, 3.0f, 2.0f, 1.0f };
+TEST_CONSTEXPR(match_m128(_mm_max_ps(a, b), 4.0f, 3.0f, 3.0f, 4.0f));
+}
+namespace NaN_B {
+constexpr __m128 a = { 1.0f, 2.0f, 3.0f, 4.0f };
+constexpr __m128 b = { 4.0f, __builtin_nanf(""), 2.0f, 1.0f };
+constexpr __m128 r = _mm_max_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Inf_A {
+constexpr __m128 a = { __builtin_huge_valf(), 2.0f, 3.0f, 4.0f };
+constexpr __m128 b = { 4.0f, 3.0f, 2.0f, 1.0f };
+constexpr __m128 r = _mm_max_ps(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+}
+
+namespace Test_mm_min_pd {
+namespace OK {
+constexpr __m128d a = { 1.0, 2.0 };
+constexpr __m128d b = { 2.0, 1.0 };
+TEST_CONSTEXPR(match_m128d(_mm_min_pd(a, b), 1.0, 1.0));
+}
+namespace NaN_A {
+constexpr __m128d a = { __builtin_nan(""), 2.0 };
+constexpr __m128d b = { 2.0, 1.0 };
+constexpr __m128d r = _mm_min_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace NaN_B {
+constexpr __m128d a = { 1.0, 2.0 };
+constexpr __m128d b = { 2.0, __builtin_nan("") };
+constexpr __m128d r = _mm_min_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Inf_A {
+constexpr __m128d a = { __builtin_huge_val(), 2.0 };
+constexpr __m128d b = { 2.0, 1.0 };
+constexpr __m128d r = _mm_min_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Inf_B {
+constexpr __m128d a = { 1.0, 2.0 };
+constexpr __m128d b = { 2.0, -__builtin_huge_val() };
+constexpr __m128d r = _mm_min_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Denormal_A {
+constexpr __m128d a = { 1e-310, 2.0 };
+constexpr __m128d b = { 2.0, 1.0 };
+constexpr __m128d r = _mm_min_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Denormal_B {
+constexpr __m128d a = { 1.0, 2.0 };
+constexpr __m128d b = { 2.0, -1e-310 };
+constexpr __m128d r = _mm_min_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+}
+
+namespace Test_mm_max_pd {
+namespace OK {
+constexpr __m128d a = { 1.0, 2.0 };
+constexpr __m128d b = { 2.0, 1.0 };
+TEST_CONSTEXPR(match_m128d(_mm_max_pd(a, b), 2.0, 2.0));
+}
+namespace NaN_A {
+constexpr __m128d a = { __builtin_nan(""), 2.0 };
+constexpr __m128d b = { 2.0, 1.0 };
+constexpr __m128d r = _mm_max_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Inf_A {
+constexpr __m128d a = { __builtin_huge_val(), 2.0 };
+constexpr __m128d b = { 2.0, 1.0 };
+constexpr __m128d r = _mm_max_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+namespace Denormal_A {
+constexpr __m128d a = { 1e-310, 2.0 };
+constexpr __m128d b = { 2.0, 1.0 };
+constexpr __m128d r = _mm_max_pd(a, b);
+// expected-error@-1 {{must be initialized by a constant expression}}
+}
+}

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to