================ @@ -0,0 +1,191 @@ +// RUN: %clang_cc1 -fexperimental-new-constant-interpreter -verify -std=c++20 %s +// RUN: %clang_cc1 -verify -std=c++20 %s + + +static_assert(__builtin_nearbyint(1.1) == 1.0); +static_assert(__builtin_nearbyint(1.9) == 2.0); +static_assert(__builtin_nearbyint(-1.1) == -1.0); +static_assert(__builtin_nearbyint(-1.9) == -2.0); + +static_assert(__builtin_nearbyintf(1.1f) == 1.0f); +static_assert(__builtin_nearbyintl(1.1l) == 1.0l); + +// Test ties to even (default rounding mode) +static_assert(__builtin_nearbyint(1.5) == 2.0); +static_assert(__builtin_nearbyint(2.5) == 2.0); + +// rint tests +static_assert(__builtin_rint(1.1) == 1.0); +static_assert(__builtin_rint(1.9) == 2.0); +static_assert(__builtin_rintf(1.1f) == 1.0f); +static_assert(__builtin_rintl(1.1l) == 1.0l); +static_assert(__builtin_rintf16(1.1f16) == 1.0f16); +static_assert(__builtin_rintf128(1.1) == 1.0); + +// lrint tests +static_assert(__builtin_lrint(1.1) == 1); +static_assert(__builtin_lrint(1.9) == 2); +static_assert(__builtin_lrintf(1.1f) == 1); +static_assert(__builtin_lrintl(1.1l) == 1); +static_assert(__builtin_lrintf128(1.1) == 1); + +// llrint tests +static_assert(__builtin_llrint(1.1) == 1LL); +static_assert(__builtin_llrint(1.9) == 2LL); +static_assert(__builtin_llrintf(1.1f) == 1LL); +static_assert(__builtin_llrintl(1.1l) == 1LL); +static_assert(__builtin_llrintf128(1.1) == 1LL); + +// round tests +static_assert(__builtin_round(1.1) == 1.0); +static_assert(__builtin_round(1.5) == 2.0); +static_assert(__builtin_round(1.9) == 2.0); +static_assert(__builtin_round(-1.5) == -2.0); + +// lround tests +static_assert(__builtin_lround(1.1) == 1); +static_assert(__builtin_lround(1.5) == 2); +static_assert(__builtin_lround(-1.5) == -2); + +// llround tests +static_assert(__builtin_llround(1.1) == 1LL); +static_assert(__builtin_llround(1.5) == 2LL); +static_assert(__builtin_llround(-1.5) == -2LL); + +// ceil tests +static_assert(__builtin_ceil(1.1) == 2.0); +static_assert(__builtin_ceil(-1.1) == -1.0); +static_assert(__builtin_ceilf(1.1f) == 2.0f); + +// floor tests +static_assert(__builtin_floor(1.1) == 1.0); +static_assert(__builtin_floor(-1.1) == -2.0); +static_assert(__builtin_floorf(1.1f) == 1.0f); + +// trunc tests +static_assert(__builtin_trunc(1.1) == 1.0); +static_assert(__builtin_trunc(-1.1) == -1.0); +static_assert(__builtin_truncf(1.1f) == 1.0f); + +// fdim tests +static_assert(__builtin_fdim(3.0, 1.0) == 2.0); +static_assert(__builtin_fdim(1.0, 3.0) == 0.0); +static_assert(__builtin_fdimf(3.0f, 1.0f) == 2.0f); + +// fma tests +static_assert(__builtin_fma(2.0, 3.0, 4.0) == 10.0); +static_assert(__builtin_fmaf(2.0f, 3.0f, 4.0f) == 10.0f); + +// fmod tests +static_assert(__builtin_fmod(5.5, 3.0) == 2.5); +static_assert(__builtin_fmodf(5.5f, 3.0f) == 2.5f); + +// remainder tests +static_assert(__builtin_remainder(5.5, 3.0) == -0.5); +static_assert(__builtin_remainderf(5.5f, 3.0f) == -0.5f); + +// nextafter tests +static_assert(__builtin_nextafter(1.0, 2.0) > 1.0); +static_assert(__builtin_nextafter(1.0, 0.0) < 1.0); +static_assert(__builtin_nextafter(1.0, 1.0) == 1.0); +static_assert(__builtin_nextafter(0.0, 1.0) > 0.0); +static_assert(__builtin_nextafter(0.0, -1.0) < 0.0); + +// nexttoward tests +static_assert(__builtin_nexttoward(1.0, 2.0L) > 1.0); +static_assert(__builtin_nexttoward(1.0, 1.0L) == 1.0); + +// scalbn tests +static_assert(__builtin_scalbn(1.0, 2) == 4.0); ---------------- Serosh-commits wrote:
done https://github.com/llvm/llvm-project/pull/194327 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
