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: [email protected]
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