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: e...@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