https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109504

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Yeah.  Enable all the time and have say the
targetm.invalid_conversion, targetm.invalid_unary_op, targetm.invalid_binary_op
and something in argument/return value passing reject _Float16/__bf16 in
functions without SSE2.
That will not be enough though, we'll need to arrange e.g. for the spot where
we #undef/#define target  macros based on currently active ISA in pragmas to
also
do that for __STDCPP_FLOAT16_T__ and __STDCPP_BFLOAT16_T__ for C++, and change
libstdc++
such that for x86 it adds similarly to x86 intrin headers something like
#ifndef __SSE2__
#pragma GCC push_options
#pragma GCC target("sse2")
#define __DISABLE_SSE2__
#endif /* __SSE2__ */
...
#ifdef __DISABLE_SSE2__
#undef __DISABLE_SSE2__
#pragma GCC pop_options
#endif /* __DISABLE_SSE2__ */
around std::float16_t/std::bfloat16_t stuff.
Definitely not stage4 material I'm afraid.

Reply via email to