public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/95483] New: [i386] Missing SIMD functions
@ 2020-06-02 17:21 evan@coeus-group.com
  2020-06-03  4:46 ` [Bug target/95483] " marxin at gcc dot gnu.org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: evan@coeus-group.com @ 2020-06-02 17:21 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 95483
           Summary: [i386] Missing SIMD functions
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: evan@coeus-group.com
  Target Milestone: ---

Created attachment 48663
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48663&action=edit
Script to generate the list

I noticed the _mm_loadu_epi* functions were missing, so I threw together a
trivial script to look for missing functions based on the XML data backing the
Intel Intrinsics Guide
<https://software.intel.com/sites/landingpage/IntrinsicsGuide/>.  After
filtering out the the SVML and Other functions it came up with 122 results.

I attached the script in case anyone wants to reproduce.  It's ugly and slow
(it was really meant to be a throw-away), but it seems to work.  Just run it in
gcc/config/i386, and pass it the location of the IIG XML.

Here is the list:

  AVX _mm256_cvtsi256_si32
  AVX2 _mm_broadcastsd_pd
  AVX2 _mm_broadcastsi128_si256
  AVX-512 _mm512_storeu_epi16
  AVX-512 _mm512_storeu_epi8
  AVX-512 _mm256_storeu_epi16
  AVX-512 _mm256_storeu_epi8
  AVX-512 _mm_storeu_epi16
  AVX-512 _mm_storeu_epi8
  AVX-512 _mm512_loadu_epi16
  AVX-512 _mm512_loadu_epi8
  AVX-512 _mm256_loadu_epi16
  AVX-512 _mm256_loadu_epi8
  AVX-512 _mm_loadu_epi16
  AVX-512 _mm_loadu_epi8
  AVX-512 _mm512_mask_reduce_round_pd
  AVX-512 _mm512_maskz_reduce_round_pd
  AVX-512 _mm512_reduce_round_pd
  AVX-512 _mm512_mask_reduce_round_ps
  AVX-512 _mm512_maskz_reduce_round_ps
  AVX-512 _mm512_reduce_round_ps
  AVX-512 _mm_mask_reduce_round_sd
  AVX-512 _mm_maskz_reduce_round_sd
  AVX-512 _mm_reduce_round_sd
  AVX-512 _mm_mask_reduce_round_ss
  AVX-512 _mm_maskz_reduce_round_ss
  AVX-512 _mm_reduce_round_ss
  AVX-512 _mm_mask_rcp28_round_sd
  AVX-512 _mm_mask_rcp28_sd
  AVX-512 _mm_maskz_rcp28_round_sd
  AVX-512 _mm_maskz_rcp28_sd
  AVX-512 _mm_mask_rcp28_round_ss
  AVX-512 _mm_mask_rcp28_ss
  AVX-512 _mm_maskz_rcp28_round_ss
  AVX-512 _mm_maskz_rcp28_ss
  AVX-512 _mm_mask_rsqrt28_round_sd
  AVX-512 _mm_mask_rsqrt28_sd
  AVX-512 _mm_maskz_rsqrt28_round_sd
  AVX-512 _mm_maskz_rsqrt28_sd
  AVX-512 _mm_mask_rsqrt28_round_ss
  AVX-512 _mm_mask_rsqrt28_ss
  AVX-512 _mm_maskz_rsqrt28_round_ss
  AVX-512 _mm_maskz_rsqrt28_ss
  AVX-512 _mm256_mask_cvt_roundps_ph
  AVX-512 _mm256_maskz_cvt_roundps_ph
  AVX-512 _mm_mask_cvt_roundps_ph
  AVX-512 _mm_maskz_cvt_roundps_ph
  AVX-512 _mm256_store_epi32
  AVX-512 _mm_store_epi32
  AVX-512 _mm256_loadu_epi64
  AVX-512 _mm256_loadu_epi32
  AVX-512 _mm_loadu_epi64
  AVX-512 _mm_loadu_epi32
  AVX-512 _mm256_load_epi64
  AVX-512 _mm256_load_epi32
  AVX-512 _mm_load_epi64
  AVX-512 _mm_load_epi32
  AVX-512 _mm_cvtsd_i32
  AVX-512 _mm_cvtsd_i64
  AVX-512 _mm_mask_cvt_roundsd_ss
  AVX-512 _mm_mask_cvtsd_ss
  AVX-512 _mm_maskz_cvt_roundsd_ss
  AVX-512 _mm_maskz_cvtsd_ss
  AVX-512 _mm_cvti32_sd
  AVX-512 _mm_cvti64_sd
  AVX-512 _mm_cvti32_ss
  AVX-512 _mm_cvti64_ss
  AVX-512 _mm_mask_cvt_roundss_sd
  AVX-512 _mm_mask_cvtss_sd
  AVX-512 _mm_maskz_cvt_roundss_sd
  AVX-512 _mm_maskz_cvtss_sd
  AVX-512 _mm_cvtss_i32
  AVX-512 _mm_cvtss_i64
  AVX-512 _mm_mask_scalef_sd
  AVX-512 _mm_maskz_scalef_sd
  AVX-512 _mm_mask_scalef_ss
  AVX-512 _mm_maskz_scalef_ss
  AVX-512 _mm_mask_sqrt_sd
  AVX-512 _mm_maskz_sqrt_sd
  AVX-512 _mm_mask_sqrt_ss
  AVX-512 _mm_maskz_sqrt_ss
  AVX-512 _mm512_cvtsi512_si32
  AVX-512/KNC _mm512_mask_permutevar_epi32
  AVX-512/KNC _mm512_permutevar_epi32
  AVX-512/KNC _mm512_cvtpslo_pd
  AVX-512/KNC _mm512_mask_cvtpslo_pd
  AVX-512/KNC _mm512_cvtepi32lo_pd
  AVX-512/KNC _mm512_mask_cvtepi32lo_pd
  AVX-512/KNC _mm512_cvtepu32lo_pd
  AVX-512/KNC _mm512_mask_cvtepu32lo_pd
  AVX-512/KNC _mm512_i32extgather_epi32
  AVX-512/KNC _mm512_mask_i32extgather_epi32
  AVX-512/KNC _mm512_i32loextgather_epi64
  AVX-512/KNC _mm512_mask_i32loextgather_epi64
  AVX-512/KNC _mm512_i32extgather_ps
  AVX-512/KNC _mm512_mask_i32extgather_ps
  AVX-512/KNC _mm512_i32loextgather_pd
  AVX-512/KNC _mm512_mask_i32loextgather_pd
  AVX-512/KNC _mm512_i32extscatter_ps
  AVX-512/KNC _mm512_mask_i32extscatter_ps
  AVX-512/KNC _mm512_i32loextscatter_pd
  AVX-512/KNC _mm512_mask_i32loextscatter_pd
  AVX-512/KNC _mm512_i32loextscatter_epi64
  AVX-512/KNC _mm512_mask_i32loextscatter_epi64
  AVX-512/KNC _mm512_cvtpd_pslo
  AVX-512/KNC _mm512_mask_cvtpd_pslo
  AVX-512/KNC _mm512_i32logather_epi64
  AVX-512/KNC _mm512_mask_i32logather_epi64
  AVX-512/KNC _mm512_i32logather_pd
  AVX-512/KNC _mm512_mask_i32logather_pd
  AVX-512/KNC _mm512_i32loscatter_pd
  AVX-512/KNC _mm512_mask_i32loscatter_pd
  AVX-512/KNC _mm512_i32extscatter_epi32
  AVX-512/KNC _mm512_mask_i32extscatter_epi32
  AVX-512/KNC _mm512_prefetch_i32extgather_ps
  AVX-512/KNC _mm512_mask_prefetch_i32extgather_ps
  AVX-512/KNC _mm512_prefetch_i32extscatter_ps
  AVX-512/KNC _mm512_mask_prefetch_i32extscatter_ps
  SSE _mm_storeu_si16
  SSE _mm_loadu_si16
  SSE2 _mm_loadu_si32
  SSE2 _mm_storeu_si32

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

* [Bug target/95483] [i386] Missing SIMD functions
  2020-06-02 17:21 [Bug target/95483] New: [i386] Missing SIMD functions evan@coeus-group.com
@ 2020-06-03  4:46 ` marxin at gcc dot gnu.org
  2020-08-05  0:25 ` thiago at kde dot org
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: marxin at gcc dot gnu.org @ 2020-06-03  4:46 UTC (permalink / raw)
  To: gcc-bugs

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

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hjl.tools at gmail dot com,
                   |                            |jakub at gcc dot gnu.org,
                   |                            |marxin at gcc dot gnu.org,
                   |                            |uros at gcc dot gnu.org
   Last reconfirmed|                            |2020-06-03
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW

--- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> ---
Thank you very much for the report. I'm adding target maintainers to CC.

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

* [Bug target/95483] [i386] Missing SIMD functions
  2020-06-02 17:21 [Bug target/95483] New: [i386] Missing SIMD functions evan@coeus-group.com
  2020-06-03  4:46 ` [Bug target/95483] " marxin at gcc dot gnu.org
@ 2020-08-05  0:25 ` thiago at kde dot org
  2020-10-14 18:39 ` cvs-commit at gcc dot gnu.org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: thiago at kde dot org @ 2020-08-05  0:25 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Thiago Macieira <thiago at kde dot org> ---
Hello Evan

I was about to report that _mm_loadu_epi16 is missing, but I'm glad you've got
a more complete listing. FYI, here's a Godbolt link showing ICC and Clang with
this intrinsic: https://gcc.godbolt.org/z/8nMcPE. I'll only have to report to
Microsoft and will reference this bug report so they check their own
implementation.

FYI, for anyone stumbling upon this report when their code failed: most of the
missing intrinsics can be worked around by combining one or more and will
result in the same code.

(In reply to Evan Nemerson from comment #0)
> Here is the list:
> 
>   AVX _mm256_cvtsi256_si32
>   AVX-512 _mm512_cvtsi512_si32

_mm256_extract_epi32
 or
_mm_cvtsi128_si32(mm256_castsi256_si128(x))

Ditto for 512-bit.

>   AVX2 _mm_broadcastsd_pd

If using AVX2 is acceptable, one can use _mm_broadcastq_epi64 with suitable
casting between __m128i and __m128d.

>   AVX2 _mm_broadcastsi128_si256

Looks like a typo; this one exists as _mm256 and so it should be.

>   AVX-512 _mm512_storeu_epi16
>   AVX-512 _mm512_storeu_epi8
>   AVX-512 _mm256_storeu_epi16
>   AVX-512 _mm256_storeu_epi8
>   AVX-512 _mm_storeu_epi16
>   AVX-512 _mm_storeu_epi8
>   AVX-512 _mm512_loadu_epi16
>   AVX-512 _mm512_loadu_epi8
>   AVX-512 _mm256_loadu_epi16
>   AVX-512 _mm256_loadu_epi8
>   AVX-512 _mm_loadu_epi16
>   AVX-512 _mm_loadu_epi8
>   AVX-512 _mm256_store_epi32
>   AVX-512 _mm_store_epi32
>   AVX-512 _mm256_loadu_epi64
>   AVX-512 _mm256_loadu_epi32
>   AVX-512 _mm_loadu_epi64
>   AVX-512 _mm_loadu_epi32
>   AVX-512 _mm256_load_epi64
>   AVX-512 _mm256_load_epi32
>   AVX-512 _mm_load_epi64
>   AVX-512 _mm_load_epi32

All of these can be implemented as the mask (for storing) or maskz (for
loading) equivalents with a mask of ~0 (UINT64_MAX for the epi8 ones). For
example
  _mm256_loadu_epi16(ptr)
becomes
  _mm256_maskz_loadu_epi16(~0, ptr)

>   AVX-512 _mm_cvtsd_i32
>   AVX-512 _mm_cvtsd_i64
>   AVX-512 _mm_cvtss_i32
>   AVX-512 _mm_cvtss_i64
>   AVX-512 _mm_cvti32_sd
>   AVX-512 _mm_cvti64_sd
>   AVX-512 _mm_cvti32_ss
>   AVX-512 _mm_cvti64_ss

Not sure why those are needed; they generate the same instruction as
_mm_cvtsX_siYY. Clang's header is even:

#define _mm_cvtss_i32 _mm_cvtss_si32
#define _mm_cvtsd_i32 _mm_cvtsd_si32
#define _mm_cvti32_sd _mm_cvtsi32_sd
#define _mm_cvti32_ss _mm_cvtsi32_ss
#ifdef __x86_64__
#define _mm_cvtss_i64 _mm_cvtss_si64
#define _mm_cvtsd_i64 _mm_cvtsd_si64
#define _mm_cvti64_sd _mm_cvtsi64_sd
#define _mm_cvti64_ss _mm_cvtsi64_ss
#endif

ICC does the same.

>   SSE _mm_storeu_si16
>   SSE2 _mm_storeu_si32

With casting of the pointer:
*dest = _mm_cvtsi128_si16(mm)

If the casting is too scary or triggers aliasing warnings, then:

  uintXX_t val = _mm_cvtsi128_siXX(mm);
  memcpy(dest, &val, sizeof(val));

GCC optimises the memcpy and reg-reg MOVD into a single MOVD into memory.

>   SSE _mm_loadu_si16
>   SSE2 _mm_loadu_si32

Ditto for the _mm_cvtsiXX_si128.

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

* [Bug target/95483] [i386] Missing SIMD functions
  2020-06-02 17:21 [Bug target/95483] New: [i386] Missing SIMD functions evan@coeus-group.com
  2020-06-03  4:46 ` [Bug target/95483] " marxin at gcc dot gnu.org
  2020-08-05  0:25 ` thiago at kde dot org
@ 2020-10-14 18:39 ` cvs-commit at gcc dot gnu.org
  2020-10-14 18:41 ` hjl.tools at gmail dot com
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-10-14 18:39 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by H.J. Lu <hjl@gcc.gnu.org>:

https://gcc.gnu.org/g:93103603fd66a9fcf3ea2d8b52657e4b2496f544

commit r11-3891-g93103603fd66a9fcf3ea2d8b52657e4b2496f544
Author: Sunil K Pandey <skpgkp2@gmail.com>
Date:   Wed Oct 14 11:36:39 2020 -0700

    x86: Add missing intrinsics [PR95483]

    Tested on x86-64.

    gcc/ChangeLog:

            PR target/95483
            * config/i386/avx2intrin.h (_mm_broadcastsi128_si256): New
intrinsics.
            (_mm_broadcastsd_pd): Ditto.
            * config/i386/avx512bwintrin.h (_mm512_loadu_epi16): New
intrinsics.
            (_mm512_storeu_epi16): Ditto.
            (_mm512_loadu_epi8): Ditto.
            (_mm512_storeu_epi8): Ditto.
            * config/i386/avx512dqintrin.h (_mm_reduce_round_sd): New
intrinsics.
            (_mm_mask_reduce_round_sd): Ditto.
            (_mm_maskz_reduce_round_sd): Ditto.
            (_mm_reduce_round_ss): Ditto.
            (_mm_mask_reduce_round_ss): Ditto.
            (_mm_maskz_reduce_round_ss): Ditto.
            (_mm512_reduce_round_pd): Ditto.
            (_mm512_mask_reduce_round_pd): Ditto.
            (_mm512_maskz_reduce_round_pd): Ditto.
            (_mm512_reduce_round_ps): Ditto.
            (_mm512_mask_reduce_round_ps): Ditto.
            (_mm512_maskz_reduce_round_ps): Ditto.
            * config/i386/avx512erintrin.h
            (_mm_mask_rcp28_round_sd): New intrinsics.
            (_mm_maskz_rcp28_round_sd): Ditto.
            (_mm_mask_rcp28_round_ss): Ditto.
            (_mm_maskz_rcp28_round_ss): Ditto.
            (_mm_mask_rsqrt28_round_sd): Ditto.
            (_mm_maskz_rsqrt28_round_sd): Ditto.
            (_mm_mask_rsqrt28_round_ss): Ditto.
            (_mm_maskz_rsqrt28_round_ss): Ditto.
            (_mm_mask_rcp28_sd): Ditto.
            (_mm_maskz_rcp28_sd): Ditto.
            (_mm_mask_rcp28_ss): Ditto.
            (_mm_maskz_rcp28_ss): Ditto.
            (_mm_mask_rsqrt28_sd): Ditto.
            (_mm_maskz_rsqrt28_sd): Ditto.
            (_mm_mask_rsqrt28_ss): Ditto.
            (_mm_maskz_rsqrt28_ss): Ditto.
            * config/i386/avx512fintrin.h (_mm_mask_sqrt_sd): New intrinsics.
            (_mm_maskz_sqrt_sd): Ditto.
            (_mm_mask_sqrt_ss): Ditto.
            (_mm_maskz_sqrt_ss): Ditto.
            (_mm_mask_scalef_sd): Ditto.
            (_mm_maskz_scalef_sd): Ditto.
            (_mm_mask_scalef_ss): Ditto.
            (_mm_maskz_scalef_ss): Ditto.
            (_mm_mask_cvt_roundsd_ss): Ditto.
            (_mm_maskz_cvt_roundsd_ss): Ditto.
            (_mm_mask_cvt_roundss_sd): Ditto.
            (_mm_maskz_cvt_roundss_sd): Ditto.
            (_mm_mask_cvtss_sd): Ditto.
            (_mm_maskz_cvtss_sd): Ditto.
            (_mm_mask_cvtsd_ss): Ditto.
            (_mm_maskz_cvtsd_ss): Ditto.
            (_mm512_cvtsi512_si32): Ditto.
            (_mm_cvtsd_i32): Ditto.
            (_mm_cvtss_i32): Ditto.
            (_mm_cvti32_sd): Ditto.
            (_mm_cvti32_ss): Ditto.
            (_mm_cvtsd_i64): Ditto.
            (_mm_cvtss_i64): Ditto.
            (_mm_cvti64_sd): Ditto.
            (_mm_cvti64_ss): Ditto.
            * config/i386/avx512vlbwintrin.h (_mm256_storeu_epi8): New
intrinsics.
            (_mm_storeu_epi8): Ditto.
            (_mm256_loadu_epi16): Ditto.
            (_mm_loadu_epi16): Ditto.
            (_mm256_loadu_epi8): Ditto.
            (_mm_loadu_epi8): Ditto.
            (_mm256_storeu_epi16): Ditto.
            (_mm_storeu_epi16): Ditto.
            * config/i386/avx512vlintrin.h (_mm256_load_epi64): New intrinsics.
            (_mm_load_epi64): Ditto.
            (_mm256_load_epi32): Ditto.
            (_mm_load_epi32): Ditto.
            (_mm256_store_epi32): Ditto.
            (_mm_store_epi32): Ditto.
            (_mm256_loadu_epi64): Ditto.
            (_mm_loadu_epi64): Ditto.
            (_mm256_loadu_epi32): Ditto.
            (_mm_loadu_epi32): Ditto.
            (_mm256_mask_cvt_roundps_ph): Ditto.
            (_mm256_maskz_cvt_roundps_ph): Ditto.
            (_mm_mask_cvt_roundps_ph): Ditto.
            (_mm_maskz_cvt_roundps_ph): Ditto.
            * config/i386/avxintrin.h (_mm256_cvtsi256_si32): New intrinsics.
            * config/i386/emmintrin.h (_mm_loadu_si32): New intrinsics.
            (_mm_loadu_si16): Ditto.
            (_mm_storeu_si32): Ditto.
            (_mm_storeu_si16): Ditto.
            * config/i386/i386-builtin-types.def
            (V8DF_FTYPE_V8DF_INT_V8DF_UQI_INT): Add new type.
            (V16SF_FTYPE_V16SF_INT_V16SF_UHI_INT): Ditto.
            (V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT): Ditto.
            (V2DF_FTYPE_V2DF_V4SF_V2DF_UQI_INT): Ditto.
            * config/i386/i386-builtin.def
            (__builtin_ia32_cvtsd2ss_mask_round): New builtin.
            (__builtin_ia32_cvtss2sd_mask_round): Ditto.
            (__builtin_ia32_rcp28sd_mask_round): Ditto.
            (__builtin_ia32_rcp28ss_mask_round): Ditto.
            (__builtin_ia32_rsqrt28sd_mask_round): Ditto.
            (__builtin_ia32_rsqrt28ss_mask_round): Ditto.
            (__builtin_ia32_reducepd512_mask_round): Ditto.
            (__builtin_ia32_reduceps512_mask_round): Ditto.
            (__builtin_ia32_reducesd_mask_round): Ditto.
            (__builtin_ia32_reducess_mask_round): Ditto.
            * config/i386/i386-expand.c
            (ix86_expand_round_builtin): Expand round builtin for new type.
            (V8DF_FTYPE_V8DF_INT_V8DF_UQI_INT)
            (V16SF_FTYPE_V16SF_INT_V16SF_UHI_INT)
            (V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT)
            (V2DF_FTYPE_V2DF_V4SF_V2DF_UQI_INT)
            * config/i386/mmintrin.h ()
            Define datatype __m32 and __m16.
            Define datatype __m32_u and __m16_u.
            * config/i386/sse.md: Adjust pattern.
            (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>):
Adjust.
            (reduces<mode><mask_scalar_name><round_saeonly_scalar_name>):
Ditto.
            (sse2_cvtsd2ss<mask_name><round_name>): Ditto.
            (sse2_cvtss2sd<mask_name><round_saeonly_name>): Ditto.
            (avx512er_vmrcp28<mode><mask_name><round_saeonly_name>): Ditto.
            (avx512er_vmrsqrt28<mode><mask_name><round_saeonly_name>): Ditto.

    gcc/testsuite/ChangeLog:

            PR target/95483
            * gcc.target/i386/avx-1.c: Add test.
            * gcc.target/i386/avx2-vbroadcastsi128-1.c: Ditto.
            * gcc.target/i386/avx2-vbroadcastsi128-2.c: Ditto.
            * gcc.target/i386/avx512bw-vmovdqu16-1.c: Ditto.
            * gcc.target/i386/avx512bw-vmovdqu8-1.c: Ditto.
            * gcc.target/i386/avx512dq-vreducesd-1.c: Ditto.
            * gcc.target/i386/avx512dq-vreducesd-2.c: Ditto.
            * gcc.target/i386/avx512dq-vreducess-1.c: Ditto.
            * gcc.target/i386/avx512dq-vreducess-2.c: Ditto.
            * gcc.target/i386/avx512er-vrcp28sd-1.c: Ditto.
            * gcc.target/i386/avx512er-vrcp28sd-2.c: Ditto.
            * gcc.target/i386/avx512er-vrcp28ss-1.c: Ditto.
            * gcc.target/i386/avx512er-vrcp28ss-2.c: Ditto.
            * gcc.target/i386/avx512er-vrsqrt28sd-1.c: Ditto.
            * gcc.target/i386/avx512er-vrsqrt28sd-2.c: Ditto.
            * gcc.target/i386/avx512er-vrsqrt28ss-1.c: Ditto.
            * gcc.target/i386/avx512er-vrsqrt28ss-2.c: Ditto.
            * gcc.target/i386/avx512f-vcvtsd2si-1.c: Ditto.
            * gcc.target/i386/avx512f-vcvtsd2si64-1.c: Ditto.
            * gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto.
            * gcc.target/i386/avx512f-vcvtsi2sd64-1.c: Ditto.
            * gcc.target/i386/avx512f-vcvtsi2ss-1.c: Ditto.
            * gcc.target/i386/avx512f-vcvtsi2ss64-1.c: Ditto.
            * gcc.target/i386/avx512f-vcvtss2sd-1.c: Ditto.
            * gcc.target/i386/avx512f-vcvtss2si-1.c: Ditto.
            * gcc.target/i386/avx512f-vcvtss2si64-1.c: Ditto.
            * gcc.target/i386/avx512f-vscalefsd-1.c: Ditto.
            * gcc.target/i386/avx512f-vscalefsd-2.c: Ditto.
            * gcc.target/i386/avx512f-vscalefss-1.c: Ditto.
            * gcc.target/i386/avx512f-vscalefss-2.c: Ditto.
            * gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto.
            * gcc.target/i386/avx512f-vsqrtsd-2.c: Ditto.
            * gcc.target/i386/avx512f-vsqrtss-1.c: Ditto.
            * gcc.target/i386/avx512f-vsqrtss-2.c: Ditto.
            * gcc.target/i386/avx512vl-vmovdqa32-1.c: Ditto.
            * gcc.target/i386/avx512vl-vmovdqa64-1.c: Ditto.
            * gcc.target/i386/sse-13.c: Ditto.
            * gcc.target/i386/sse-23.c: Ditto.
            * gcc.target/i386/avx512dq-vreducepd-3.c: New test.
            * gcc.target/i386/avx512dq-vreducepd-4.c: New test.
            * gcc.target/i386/avx512dq-vreduceps-3.c: New test.
            * gcc.target/i386/avx512dq-vreduceps-4.c: New test.
            * gcc.target/i386/avx512f-vcvtsi2sd-1.c: New test.
            * gcc.target/i386/pr95483-1.c: New test.
            * gcc.target/i386/pr95483-2.c: New test.
            * gcc.target/i386/pr95483-3.c: New test.
            * gcc.target/i386/pr95483-4.c: New test.
            * gcc.target/i386/pr95483-5.c: New test.
            * gcc.target/i386/pr95483-6.c: New test.
            * gcc.target/i386/pr95483-7.c: New test.

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

* [Bug target/95483] [i386] Missing SIMD functions
  2020-06-02 17:21 [Bug target/95483] New: [i386] Missing SIMD functions evan@coeus-group.com
                   ` (2 preceding siblings ...)
  2020-10-14 18:39 ` cvs-commit at gcc dot gnu.org
@ 2020-10-14 18:41 ` hjl.tools at gmail dot com
  2021-07-21 20:07 ` hjl.tools at gmail dot com
  2021-08-03  3:30 ` pinskia at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: hjl.tools at gmail dot com @ 2020-10-14 18:41 UTC (permalink / raw)
  To: gcc-bugs

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

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED
   Target Milestone|---                         |11.0

--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> ---
Fixed for GCC 11.

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

* [Bug target/95483] [i386] Missing SIMD functions
  2020-06-02 17:21 [Bug target/95483] New: [i386] Missing SIMD functions evan@coeus-group.com
                   ` (3 preceding siblings ...)
  2020-10-14 18:41 ` hjl.tools at gmail dot com
@ 2021-07-21 20:07 ` hjl.tools at gmail dot com
  2021-08-03  3:30 ` pinskia at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: hjl.tools at gmail dot com @ 2021-07-21 20:07 UTC (permalink / raw)
  To: gcc-bugs

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

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jbeulich at suse dot com

--- Comment #5 from H.J. Lu <hjl.tools at gmail dot com> ---
*** Bug 88035 has been marked as a duplicate of this bug. ***

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

* [Bug target/95483] [i386] Missing SIMD functions
  2020-06-02 17:21 [Bug target/95483] New: [i386] Missing SIMD functions evan@coeus-group.com
                   ` (4 preceding siblings ...)
  2021-07-21 20:07 ` hjl.tools at gmail dot com
@ 2021-08-03  3:30 ` pinskia at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-08-03  3:30 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |DrTroll at gmx dot de

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
*** Bug 92013 has been marked as a duplicate of this bug. ***

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

end of thread, other threads:[~2021-08-03  3:30 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-02 17:21 [Bug target/95483] New: [i386] Missing SIMD functions evan@coeus-group.com
2020-06-03  4:46 ` [Bug target/95483] " marxin at gcc dot gnu.org
2020-08-05  0:25 ` thiago at kde dot org
2020-10-14 18:39 ` cvs-commit at gcc dot gnu.org
2020-10-14 18:41 ` hjl.tools at gmail dot com
2021-07-21 20:07 ` hjl.tools at gmail dot com
2021-08-03  3:30 ` pinskia 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).