From 698f8c2f01ea549d77d7dc3338a12e04c11057b9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:02:58 +0200 Subject: Adding upstream version 1.64.0+dfsg1. Signed-off-by: Daniel Baumann --- src/test/ui/simd/libm_no_std_cant_float.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/test/ui/simd/libm_no_std_cant_float.rs (limited to 'src/test/ui/simd/libm_no_std_cant_float.rs') diff --git a/src/test/ui/simd/libm_no_std_cant_float.rs b/src/test/ui/simd/libm_no_std_cant_float.rs new file mode 100644 index 000000000..50ac8e208 --- /dev/null +++ b/src/test/ui/simd/libm_no_std_cant_float.rs @@ -0,0 +1,22 @@ +#![crate_type = "rlib"] +#![no_std] +#![feature(portable_simd)] +use core::simd::f32x4; +use core::simd::SimdFloat; + +// For SIMD float ops, the LLIR version which is used to implement the portable +// forms of them may become calls to math.h AKA libm. So, we can't guarantee +// we can compile them for #![no_std] crates. +// Someday we may solve this. +// Until then, this test at least guarantees these functions require std. +fn guarantee_no_std_nolibm_calls() -> f32x4 { + let x = f32x4::from_array([0.1, 0.5, 0.6, -1.5]); + let x2 = x + x; + let _xc = x.ceil(); //~ ERROR E0599 + let _xf = x.floor(); //~ ERROR E0599 + let _xr = x.round(); //~ ERROR E0599 + let _xt = x.trunc(); //~ ERROR E0599 + let _xfma = x.mul_add(x, x); //~ ERROR E0599 + let _xsqrt = x.sqrt(); //~ ERROR E0599 + x2.abs() * x2 +} -- cgit v1.2.3