public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h
@ 2023-04-13 18:58 vd.kraats at hccnet dot nl
  2023-04-13 21:30 ` [Bug target/109504] " pinskia at gcc dot gnu.org
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: vd.kraats at hccnet dot nl @ 2023-04-13 18:58 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 109504
           Summary: Compilation fails with pragma GCC target sse4.1 and
                    immintrin.h
           Product: gcc
           Version: 12.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vd.kraats at hccnet dot nl
  Target Milestone: ---

Problem occurs at Debian Bookworm (Testing) i686 (32 bit).
debian:~$ cat test.c
#pragma GCC target("sse4.1")
#include <immintrin.h>
int main(){return 0;}

debian:~$ gcc -v test.c 2>&1 | head -100
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/12/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian
12.2.0-14&apos; --with-bugurl=<span
style="color:#C01C28">file:///usr/share/doc/gcc-12/README.Bugs</span>
--enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr
--with-gcc-major-version-only --program-suffix=-12
--program-prefix=i686-linux-gnu- --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new
--enable-gnu-unique-object --disable-vtable-verify --enable-plugin
--enable-default-pie --with-system-zlib --enable-libphobos-checking=release
--with-target-system-zlib=auto --enable-objc-gc=auto --enable-targets=all
--enable-multiarch --disable-werror --with-arch-32=i686
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic
--enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu
--target=i686-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (Debian 12.2.0-14)
COLLECT_GCC_OPTIONS=&apos;-v&apos; &apos;-mtune=generic&apos;
&apos;-march=i686&apos; &apos;-dumpdir&apos; &apos;a-&apos;
 /usr/lib/gcc/i686-linux-gnu/12/cc1 -quiet -v -imultiarch i386-linux-gnu test.c
-quiet -dumpdir a- -dumpbase test.c -dumpbase-ext .c -mtune=generic -march=i686
-version -fasynchronous-unwind-tables -o /tmp/ccvTqsb4.s
GNU C17 (Debian 12.2.0-14) version 12.2.0 (i686-linux-gnu)
        compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version
4.1.1-p1, MPC version 1.3.1, isl version isl-0.25-GMP

warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory &quot;/usr/local/include/i386-linux-gnu&quot;
ignoring nonexistent directory
&quot;/usr/lib/gcc/i686-linux-gnu/12/include-fixed&quot;
ignoring nonexistent directory
&quot;/usr/lib/gcc/i686-linux-gnu/12/../../../../i686-linux-gnu/include&quot;
#include &quot;...&quot; search starts here:
#include &lt;...&gt; search starts here:
 /usr/lib/gcc/i686-linux-gnu/12/include
 /usr/local/include
 /usr/include/i386-linux-gnu
 /usr/include
End of search list.
GNU C17 (Debian 12.2.0-14) version 12.2.0 (i686-linux-gnu)
        compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version
4.1.1-p1, MPC version 1.3.1, isl version isl-0.25-GMP

warning: MPFR header version 4.1.1-p1 differs from library version 4.2.0.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: e1e0efc2c04a9ab28e35cf4254d1a7fe
In file included from /usr/lib/gcc/i686-linux-gnu/12/include/immintrin.h:98,
                 from test.c:2:
/usr/lib/gcc/i686-linux-gnu/12/include/avx512fp16intrin.h:38:9: error:
‘_Float16’ is not supported on this target
   38 | typedef _Float16 __v8hf __attribute__ ((__vector_size__ (16)));

This error should not be given.The current target  should be sse4.1,
because of the pragma. The error makes cross-compiling with a low target
machine (i686 in this case) not workable.

The  error only occurs at gcc-12, not at gcc-11. So this seeems to be
regression. The error disappears if compiling with option -msse2.

This error caused filezilla not being delivered anymore at latest upgrade of
Debian Bookworm.
I wrote bug-request https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1034195 .

This problem was noticed before at Debian. But Debian blaimed Filezilla,
and Filezila blaimed Debian/GCC, because nothing was changed in this
area since previous release.
See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1020327 and
https://trac.filezilla-project.org/ticket/12777 .

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/109504] Compilation fails with pragma GCC target sse4.1 and immintrin.h
  2023-04-13 18:58 [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h vd.kraats at hccnet dot nl
@ 2023-04-13 21:30 ` pinskia at gcc dot gnu.org
  2023-04-14  6:32 ` crazylht at gmail dot com
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-04-13 21:30 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|                            |i686-linux-gnu
           Keywords|                            |rejects-valid

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
testcae:
```
#pragma GCC target("sse4.1")
#include <immintrin.h>
int main(){return 0;}
```

Works on x86_64-linux-gnu with `-m32 -march=i686  -mno-sse`

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/109504] Compilation fails with pragma GCC target sse4.1 and immintrin.h
  2023-04-13 18:58 [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h vd.kraats at hccnet dot nl
  2023-04-13 21:30 ` [Bug target/109504] " pinskia at gcc dot gnu.org
@ 2023-04-14  6:32 ` crazylht at gmail dot com
  2023-04-14  7:32 ` crazylht at gmail dot com
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: crazylht at gmail dot com @ 2023-04-14  6:32 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Hongtao.liu <crazylht at gmail dot com> ---
_Float16 is supportted with target sse2, that's why it report an error.
It looks like you want to use just gpr intrinsics, for that case,
x86gprintrin.h can be used.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/109504] Compilation fails with pragma GCC target sse4.1 and immintrin.h
  2023-04-13 18:58 [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h vd.kraats at hccnet dot nl
  2023-04-13 21:30 ` [Bug target/109504] " pinskia at gcc dot gnu.org
  2023-04-14  6:32 ` crazylht at gmail dot com
@ 2023-04-14  7:32 ` crazylht at gmail dot com
  2023-04-14  7:38 ` [Bug target/109504] [12/13 Regression] " rguenth at gcc dot gnu.org
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: crazylht at gmail dot com @ 2023-04-14  7:32 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Hongtao.liu <crazylht at gmail dot com> ---
From pr108883, maybe we shouldnot restrict _Float16 under TARGET_SSE2.

Jakub Jelinek 2023-02-22 12:21:24 UTC
Created attachment 54506 [details]
gcc13-pr108883.patch

Untested fix on the compiler side of emit_support_tinfos.

That said, these fundamental types whose presence/absence depends on ISA flags
are quite problematic IMHO, as they are incompatible with the target
attribute/pragmas.  Whether they are available or not available depends on
whether in this case SSE2 is enabled during compiler initialization (aka after
parsing command line options) and then they are available or unavailable to
everything else based on that.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/109504] [12/13 Regression] Compilation fails with pragma GCC target sse4.1 and immintrin.h
  2023-04-13 18:58 [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h vd.kraats at hccnet dot nl
                   ` (2 preceding siblings ...)
  2023-04-14  7:32 ` crazylht at gmail dot com
@ 2023-04-14  7:38 ` rguenth at gcc dot gnu.org
  2023-04-14  8:01 ` jakub at gcc dot gnu.org
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-04-14  7:38 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |12.3
            Summary|Compilation fails with      |[12/13 Regression]
                   |pragma GCC target sse4.1    |Compilation fails with
                   |and immintrin.h             |pragma GCC target sse4.1
                   |                            |and immintrin.h

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/109504] [12/13 Regression] Compilation fails with pragma GCC target sse4.1 and immintrin.h
  2023-04-13 18:58 [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h vd.kraats at hccnet dot nl
                   ` (3 preceding siblings ...)
  2023-04-14  7:38 ` [Bug target/109504] [12/13 Regression] " rguenth at gcc dot gnu.org
@ 2023-04-14  8:01 ` jakub at gcc dot gnu.org
  2023-04-14  8:17 ` jakub at gcc dot gnu.org
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2023-04-14  8:01 UTC (permalink / raw)
  To: gcc-bugs

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.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/109504] [12/13 Regression] Compilation fails with pragma GCC target sse4.1 and immintrin.h
  2023-04-13 18:58 [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h vd.kraats at hccnet dot nl
                   ` (4 preceding siblings ...)
  2023-04-14  8:01 ` jakub at gcc dot gnu.org
@ 2023-04-14  8:17 ` jakub at gcc dot gnu.org
  2023-04-17  6:37 ` crazylht at gmail dot com
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2023-04-14  8:17 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Note, until then we could perhaps do something like:
--- gcc/config/i386/avx512fp16intrin.h.jj       2023-01-16 11:52:15.946736083
+0100
+++ gcc/config/i386/avx512fp16intrin.h  2023-04-14 10:13:30.054297659 +0200
@@ -28,6 +28,8 @@
 #ifndef __AVX512FP16INTRIN_H_INCLUDED
 #define __AVX512FP16INTRIN_H_INCLUDED

+#ifdef __FLT16_DIG__
+
 #ifndef __AVX512FP16__
 #pragma GCC push_options
 #pragma GCC target("avx512fp16")
@@ -7216,4 +7218,6 @@ _mm512_set1_pch (_Float16 _Complex __A)
 #pragma GCC pop_options
 #endif /* __DISABLE_AVX512FP16__ */

+#endif
+
 #endif /* __AVX512FP16INTRIN_H_INCLUDED */
--- gcc/config/i386/avx512fp16vlintrin.h.jj     2023-01-16 11:52:15.946736083
+0100
+++ gcc/config/i386/avx512fp16vlintrin.h        2023-04-14 10:13:54.152946427
+0200
@@ -28,6 +28,8 @@
 #ifndef __AVX512FP16VLINTRIN_H_INCLUDED
 #define __AVX512FP16VLINTRIN_H_INCLUDED

+#ifdef __FLT16_DIG__
+
 #if !defined(__AVX512VL__) || !defined(__AVX512FP16__)
 #pragma GCC push_options
 #pragma GCC target("avx512fp16,avx512vl")
@@ -3359,4 +3361,6 @@ _mm_set1_pch (_Float16 _Complex __A)
 #pragma GCC pop_options
 #endif /* __DISABLE_AVX512FP16VL__ */

+#endif
+
 #endif /* __AVX512FP16VLINTRIN_H_INCLUDED */
--- gcc/config/i386/avxneconvertintrin.h.jj     2023-01-16 11:52:15.949736039
+0100
+++ gcc/config/i386/avxneconvertintrin.h        2023-04-14 10:14:51.280113813
+0200
@@ -48,6 +48,7 @@ _mm256_bcstnebf16_ps (const void *__P)
   return (__m256) __builtin_ia32_vbcstnebf162ps256 ((const __bf16 *) __P);
 }

+#ifdef __FLT16_DIG__
 extern __inline __m128
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
 _mm_bcstnesh_ps (const void *__P)
@@ -61,6 +62,7 @@ _mm256_bcstnesh_ps (const void *__P)
 {
   return (__m256) __builtin_ia32_vbcstnesh2ps256 ((const _Float16 *) __P);
 }
+#endif

 extern __inline __m128
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))

i.e. if _Float16 type isn't usable, just hide all the _Float16 related stuff
from the headers.
But don't we need the same thing for __bf16 too?  There I'm afraid aren't
macros for that.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/109504] [12/13 Regression] Compilation fails with pragma GCC target sse4.1 and immintrin.h
  2023-04-13 18:58 [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h vd.kraats at hccnet dot nl
                   ` (5 preceding siblings ...)
  2023-04-14  8:17 ` jakub at gcc dot gnu.org
@ 2023-04-17  6:37 ` crazylht at gmail dot com
  2023-04-18  6:39 ` [Bug target/109504] [12/13/14 " crazylht at gmail dot com
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: crazylht at gmail dot com @ 2023-04-17  6:37 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from Hongtao.liu <crazylht at gmail dot com> ---
(In reply to Jakub Jelinek from comment #4)
> 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
Can we just cpp_undef _STDCPP_FLOAT16_T__ and __STDCPP_BFLOAT16_T__ for C++ in
ix86_target_macros when !TARGET_SSE2 so that no need to change libstdc++ part.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/109504] [12/13/14 Regression] Compilation fails with pragma GCC target sse4.1 and immintrin.h
  2023-04-13 18:58 [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h vd.kraats at hccnet dot nl
                   ` (6 preceding siblings ...)
  2023-04-17  6:37 ` crazylht at gmail dot com
@ 2023-04-18  6:39 ` crazylht at gmail dot com
  2023-05-08 12:26 ` rguenth at gcc dot gnu.org
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: crazylht at gmail dot com @ 2023-04-18  6:39 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from Hongtao.liu <crazylht at gmail dot com> ---
(In reply to Hongtao.liu from comment #6)
> (In reply to Jakub Jelinek from comment #4)
> > 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
> Can we just cpp_undef _STDCPP_FLOAT16_T__ and __STDCPP_BFLOAT16_T__ for C++
> in ix86_target_macros when !TARGET_SSE2 so that no need to change libstdc++
> part.

Also need to undef
__LIBGCC_HAS_%d_MODE__, __LIBGCC_%d_FUNC_EXT__,__LIBGCC_%d_MANT_DIG__,
__LIBGCC_%d_EXCESS_PRECISION__, __LIBGCC_%d_EPSILON__, __LIBGCC_%d_MAX__,
__LIBGCC_%d_MIN__

Which are used for building libgcc(found in libbid)

And then ix86_emit_support_tinfos is not needed any more since type is always
supported?

Or just adjust to

-      gcc_checking_assert (!float16_type_node && !bfloat16_type_node);
-      float16_type_node = ix86_float16_type_node;
-      bfloat16_type_node = ix86_bf16_type_node;
+      float16_type_node
+       = float16_type_node ? float16_type_node : ix86_float16_type_node;
+      bfloat16_type_node
+       = bfloat16_type_node ? bfloat16_type_node : ix86_bf16_type_node;

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/109504] [12/13/14 Regression] Compilation fails with pragma GCC target sse4.1 and immintrin.h
  2023-04-13 18:58 [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h vd.kraats at hccnet dot nl
                   ` (7 preceding siblings ...)
  2023-04-18  6:39 ` [Bug target/109504] [12/13/14 " crazylht at gmail dot com
@ 2023-05-08 12:26 ` rguenth at gcc dot gnu.org
  2023-07-19  1:36 ` cvs-commit at gcc dot gnu.org
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-05-08 12:26 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|12.3                        |12.4

--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
GCC 12.3 is being released, retargeting bugs to GCC 12.4.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/109504] [12/13/14 Regression] Compilation fails with pragma GCC target sse4.1 and immintrin.h
  2023-04-13 18:58 [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h vd.kraats at hccnet dot nl
                   ` (8 preceding siblings ...)
  2023-05-08 12:26 ` rguenth at gcc dot gnu.org
@ 2023-07-19  1:36 ` cvs-commit at gcc dot gnu.org
  2023-07-19  6:48 ` crazylht at gmail dot com
  2023-11-30 10:52 ` liuhongt at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-07-19  1:36 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #9 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by hongtao Liu <liuhongt@gcc.gnu.org>:

https://gcc.gnu.org/g:9a19fa8b616f83474c35cc5b34a3865073ced829

commit r14-2628-g9a19fa8b616f83474c35cc5b34a3865073ced829
Author: liuhongt <hongtao.liu@intel.com>
Date:   Tue Apr 18 14:53:04 2023 +0800

    Support type _Float16/__bf16 independent of SSE2.

    Enable _Float16 and __bf16 all the time but issue errors when the
    types are used in conversion, unary operation, binary operation,
    parameter passing or value return when TARGET_SSE2 is not available.

    Also undef macros which are used by libgcc/libstdc++ to check the
    backend support of the _Float16/__bf16 types when TARGET_SSE2 is not
    available.

    gcc/ChangeLog:

            PR target/109504
            * config/i386/i386-builtins.cc
            (ix86_register_float16_builtin_type): Remove TARGET_SSE2.
            (ix86_register_bf16_builtin_type): Ditto.
            * config/i386/i386-c.cc (ix86_target_macros): When TARGET_SSE2
            isn't available, undef the macros which are used to check the
            backend support of the _Float16/__bf16 types when building
            libstdc++ and libgcc.
            * config/i386/i386.cc (construct_container): Issue errors for
            HFmode/BFmode when TARGET_SSE2 is not available.
            (function_value_32): Ditto.
            (ix86_scalar_mode_supported_p): Remove TARGET_SSE2 for
HFmode/BFmode.
            (ix86_libgcc_floating_mode_supported_p): Ditto.
            (ix86_emit_support_tinfos): Adjust codes.
            (ix86_invalid_conversion): Return diagnostic message string
            when there's conversion from/to BF/HFmode w/o TARGET_SSE2.
            (ix86_invalid_unary_op): New function.
            (ix86_invalid_binary_op): Ditto.
            (TARGET_INVALID_UNARY_OP): Define.
            (TARGET_INVALID_BINARY_OP): Define.
            * config/i386/immintrin.h [__SSE2__]: Remove for fp16/bf16
            related instrinsics header files.
            * config/i386/i386.h (VALID_SSE2_TYPE_MODE): New macro.

    gcc/testsuite/ChangeLog:

            * gcc.target/i386/pr109504.c: New test.
            * gcc.target/i386/sse2-bfloat16-1.c: Adjust error info.
            * gcc.target/i386/sse2-float16-1.c: Ditto.
            * gcc.target/i386/sse2-float16-4.c: New test.
            * gcc.target/i386/sse2-float16-5.c: New test.
            * g++.target/i386/float16-1.C: Adjust error info.

    libgcc/ChangeLog:

            * config/i386/t-softfp: Add -msse2 to libbid HFtype related
            files.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/109504] [12/13/14 Regression] Compilation fails with pragma GCC target sse4.1 and immintrin.h
  2023-04-13 18:58 [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h vd.kraats at hccnet dot nl
                   ` (9 preceding siblings ...)
  2023-07-19  1:36 ` cvs-commit at gcc dot gnu.org
@ 2023-07-19  6:48 ` crazylht at gmail dot com
  2023-11-30 10:52 ` liuhongt at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: crazylht at gmail dot com @ 2023-07-19  6:48 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #10 from Hongtao.liu <crazylht at gmail dot com> ---
Fixed in GCC14.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Bug target/109504] [12/13/14 Regression] Compilation fails with pragma GCC target sse4.1 and immintrin.h
  2023-04-13 18:58 [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h vd.kraats at hccnet dot nl
                   ` (10 preceding siblings ...)
  2023-07-19  6:48 ` crazylht at gmail dot com
@ 2023-11-30 10:52 ` liuhongt at gcc dot gnu.org
  11 siblings, 0 replies; 13+ messages in thread
From: liuhongt at gcc dot gnu.org @ 2023-11-30 10:52 UTC (permalink / raw)
  To: gcc-bugs

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

liuhongt at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
                 CC|                            |liuhongt at gcc dot gnu.org
             Status|UNCONFIRMED                 |RESOLVED

--- Comment #11 from liuhongt at gcc dot gnu.org ---
.

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2023-11-30 10:52 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-13 18:58 [Bug c/109504] New: Compilation fails with pragma GCC target sse4.1 and immintrin.h vd.kraats at hccnet dot nl
2023-04-13 21:30 ` [Bug target/109504] " pinskia at gcc dot gnu.org
2023-04-14  6:32 ` crazylht at gmail dot com
2023-04-14  7:32 ` crazylht at gmail dot com
2023-04-14  7:38 ` [Bug target/109504] [12/13 Regression] " rguenth at gcc dot gnu.org
2023-04-14  8:01 ` jakub at gcc dot gnu.org
2023-04-14  8:17 ` jakub at gcc dot gnu.org
2023-04-17  6:37 ` crazylht at gmail dot com
2023-04-18  6:39 ` [Bug target/109504] [12/13/14 " crazylht at gmail dot com
2023-05-08 12:26 ` rguenth at gcc dot gnu.org
2023-07-19  1:36 ` cvs-commit at gcc dot gnu.org
2023-07-19  6:48 ` crazylht at gmail dot com
2023-11-30 10:52 ` liuhongt at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).