aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386/avx512bwintrin.h
AgeCommit message (Collapse)AuthorFilesLines
2024-01-03Update copyright years.Jakub Jelinek1-1/+1
2023-12-20i386: Allow 64 bit mask register for -mno-evex512Haochen Jiang1-21/+21
gcc/ChangeLog: * config/i386/avx512bwintrin.h: Allow 64 bit mask intrin usage for -mno-evex512. * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA2_EVEX512 for 64 bit mask builtins. * config/i386/i386.cc (ix86_hard_regno_mode_ok): Allow 64 bit mask register for -mno-evex512. * config/i386/i386.md (SWI1248_AVX512BWDQ_64): Remove TARGET_EVEX512. (*zero_extendsidi2): Change isa attribute to avx512bw. (kmov_isa): Ditto. (*anddi_1): Ditto. (*andn<mode>_1): Remove TARGET_EVEX512. (*one_cmplsi2_1_zext): Change isa attribute to avx512bw. (*ashl<mode>3_1): Ditto. (*lshr<mode>3_1): Ditto. * config/i386/sse.md (SWI1248_AVX512BWDQ): Remove TARGET_EVEX512. (SWI1248_AVX512BW): Ditto. (SWI1248_AVX512BWDQ2): Ditto. (*knotsi_1_zext): Ditto. (kunpckdi): Ditto. (SWI24_MASK): Removed. (vec_pack_trunc_<mode>): Change iterator from SWI24_MASK to SWI24. (vec_unpacks_lo_di): Remove TARGET_EVEX512. (SWI48x_MASK): Removed. (vec_unpacks_hi_<mode>): Change iterator from SWI48x_MASK to SWI48x. gcc/testsuite/ChangeLog: * gcc.target/i386/avx10_1-6.c: Remove check for errors. * gcc.target/i386/noevex512-2.c: Diito.
2023-11-06Push no-evex512 target for 128/256 bit intrinsHaochen Jiang1-2/+2
gcc/ChangeLog: PR target/111889 * config/i386/avx512bf16intrin.h: Push no-evex512 target. * config/i386/avx512bf16vlintrin.h: Ditto. * config/i386/avx512bitalgvlintrin.h: Ditto. * config/i386/avx512bwintrin.h: Ditto. * config/i386/avx512dqintrin.h: Ditto. * config/i386/avx512fintrin.h: Ditto. * config/i386/avx512fp16intrin.h: Ditto. * config/i386/avx512fp16vlintrin.h: Ditto. * config/i386/avx512ifmavlintrin.h: Ditto. * config/i386/avx512vbmi2vlintrin.h: Ditto. * config/i386/avx512vbmivlintrin.h: Ditto. * config/i386/avx512vlbwintrin.h: Ditto. * config/i386/avx512vldqintrin.h: Ditto. * config/i386/avx512vlintrin.h: Ditto. * config/i386/avx512vnnivlintrin.h: Ditto. * config/i386/avx512vp2intersectvlintrin.h: Ditto. * config/i386/avx512vpopcntdqvlintrin.h: Ditto. gcc/testsuite/ChangeLog: PR target/111889 * gcc.target/i386/pr111889.c: New test.
2023-11-06[PATCH 3/3] Change internal intrin call for AVX512 intrinsHaochen Jiang1-0/+26
gcc/ChangeLog: * config/i386/avx512bf16vlintrin.h (_mm_avx512_castsi128_ps): New. (_mm256_avx512_castsi256_ps): Ditto. (_mm_avx512_slli_epi32): Ditto. (_mm256_avx512_slli_epi32): Ditto. (_mm_avx512_cvtepi16_epi32): Ditto. (_mm256_avx512_cvtepi16_epi32): Ditto. (__attribute__): Change intrin call. * config/i386/avx512bwintrin.h (_mm_avx512_set_epi32): New. (_mm_avx512_set_epi16): Ditto. (_mm_avx512_set_epi8): Ditto. (__attribute__): Change intrin call. * config/i386/avx512fp16intrin.h: Ditto. * config/i386/avx512fp16vlintrin.h (_mm_avx512_set1_ps): New. (_mm256_avx512_set1_ps): Ditto. (_mm_avx512_and_si128): Ditto. (_mm256_avx512_and_si256): Ditto. (__attribute__): Change intrin call. * config/i386/avx512vlbwintrin.h (_mm_avx512_set1_epi32): New. (_mm_avx512_set1_epi16): Ditto. (_mm_avx512_set1_epi8): Ditto. (_mm256_avx512_set_epi16): Ditto. (_mm256_avx512_set_epi8): Ditto. (_mm256_avx512_set1_epi16): Ditto. (_mm256_avx512_set1_epi32): Ditto. (_mm256_avx512_set1_epi8): Ditto. (_mm_avx512_max_epi16): Ditto. (_mm_avx512_min_epi16): Ditto. (_mm_avx512_max_epu16): Ditto. (_mm_avx512_min_epu16): Ditto. (_mm_avx512_max_epi8): Ditto. (_mm_avx512_min_epi8): Ditto. (_mm_avx512_max_epu8): Ditto. (_mm_avx512_min_epu8): Ditto. (_mm256_avx512_max_epi16): Ditto. (_mm256_avx512_min_epi16): Ditto. (_mm256_avx512_max_epu16): Ditto. (_mm256_avx512_min_epu16): Ditto. (_mm256_avx512_insertf128_ps): Ditto. (_mm256_avx512_extractf128_pd): Ditto. (_mm256_avx512_extracti128_si256): Ditto. (_MM256_AVX512_REDUCE_OPERATOR_BASIC_EPI16): Ditto. (_MM256_AVX512_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto. (_MM256_AVX512_REDUCE_OPERATOR_BASIC_EPI8): Ditto. (_MM256_AVX512_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto. (__attribute__): Change intrin call.
2023-10-09[PATCH 4/5] Push evex512 target for 512 bit intrinsHaochen Jiang1-138/+153
gcc/ChangeLog: * config/i386/avx512bwintrin.h: Add evex512 target for 512 bit intrins.
2023-05-25i386: Fix incorrect intrinsic signature for AVX512 s{lli|rai|rli}Hu, Lin11-22/+25
This patch aims to fix incorrect intrinsic signature for _mm{512|256|}_s{lli|rai|rli}_epi*. gcc/ChangeLog: PR target/109173 PR target/109174 * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from int to const int or const int to const unsigned int. (_mm512_mask_srli_epi16): Ditto. (_mm512_slli_epi16): Ditto. (_mm512_mask_slli_epi16): Ditto. (_mm512_maskz_slli_epi16): Ditto. (_mm512_srai_epi16): Ditto. (_mm512_mask_srai_epi16): Ditto. (_mm512_maskz_srai_epi16): Ditto. * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto. (_mm512_mask_slli_epi64): Ditto. (_mm512_maskz_slli_epi64): Ditto. (_mm512_srli_epi64): Ditto. (_mm512_mask_srli_epi64): Ditto. (_mm512_maskz_srli_epi64): Ditto. (_mm512_srai_epi64): Ditto. (_mm512_mask_srai_epi64): Ditto. (_mm512_maskz_srai_epi64): Ditto. (_mm512_slli_epi32): Ditto. (_mm512_mask_slli_epi32): Ditto. (_mm512_maskz_slli_epi32): Ditto. (_mm512_srli_epi32): Ditto. (_mm512_mask_srli_epi32): Ditto. (_mm512_maskz_srli_epi32): Ditto. (_mm512_srai_epi32): Ditto. (_mm512_mask_srai_epi32): Ditto. (_mm512_maskz_srai_epi32): Ditto. * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto. (_mm256_maskz_srai_epi16): Ditto. (_mm_mask_srai_epi16): Ditto. (_mm_maskz_srai_epi16): Ditto. (_mm256_mask_slli_epi16): Ditto. (_mm256_maskz_slli_epi16): Ditto. (_mm_mask_slli_epi16): Ditto. (_mm_maskz_slli_epi16): Ditto. (_mm_maskz_srli_epi16): Ditto. * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto. (_mm256_maskz_srli_epi32): Ditto. (_mm_mask_srli_epi32): Ditto. (_mm_maskz_srli_epi32): Ditto. (_mm256_mask_srli_epi64): Ditto. (_mm256_maskz_srli_epi64): Ditto. (_mm_mask_srli_epi64): Ditto. (_mm_maskz_srli_epi64): Ditto. (_mm256_mask_srai_epi32): Ditto. (_mm256_maskz_srai_epi32): Ditto. (_mm_mask_srai_epi32): Ditto. (_mm_maskz_srai_epi32): Ditto. (_mm256_srai_epi64): Ditto. (_mm256_mask_srai_epi64): Ditto. (_mm256_maskz_srai_epi64): Ditto. (_mm_srai_epi64): Ditto. (_mm_mask_srai_epi64): Ditto. (_mm_maskz_srai_epi64): Ditto. (_mm_mask_slli_epi32): Ditto. (_mm_maskz_slli_epi32): Ditto. (_mm_mask_slli_epi64): Ditto. (_mm_maskz_slli_epi64): Ditto. (_mm256_mask_slli_epi32): Ditto. (_mm256_maskz_slli_epi32): Ditto. (_mm256_mask_slli_epi64): Ditto. (_mm256_maskz_slli_epi64): Ditto. gcc/testsuite/ChangeLog: PR target/109173 PR target/109174 * gcc.target/i386/pr109173-1.c: New test. * gcc.target/i386/pr109174-1.c: Ditto.
2023-01-16Update copyright years.Jakub Jelinek1-1/+1
2022-01-03Update copyright years.Jakub Jelinek1-1/+1
2021-01-04Update copyright years.Jakub Jelinek1-1/+1
2020-10-14x86: Add missing intrinsics [PR95483]Sunil K Pandey1-0/+32
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.
2020-04-29x86: Fix -O0 remaining intrinsic macros [PR94832]Jakub Jelinek1-3/+3
A few other macros seem to suffer from the same issue. What I've done was: cat gcc/config/i386/*intrin.h | sed -e ':x /\\$/ { N; s/\\\n//g ; bx }' \ | grep '^[[:blank:]]*#[[:blank:]]*define[[:blank:]].*(' | sed 's/[ ]\+/ /g' \ > /tmp/macros and then looking for regexps: )[a-zA-Z] ) [a-zA-Z] [a-zA-Z][-+*/%] [a-zA-Z] [-+*/%] [-+*/%][a-zA-Z] [-+*/%] [a-zA-Z] in the resulting file. 2020-04-29 Jakub Jelinek <jakub@redhat.com> PR target/94832 * config/i386/avx512bwintrin.h (_mm512_alignr_epi8, _mm512_mask_alignr_epi8, _mm512_maskz_alignr_epi8): Wrap macro operands used in casts into parens. * config/i386/avx512fintrin.h (_mm512_cvt_roundps_ph, _mm512_cvtps_ph, _mm512_mask_cvt_roundps_ph, _mm512_mask_cvtps_ph, _mm512_maskz_cvt_roundps_ph, _mm512_maskz_cvtps_ph, _mm512_mask_cmp_epi64_mask, _mm512_mask_cmp_epi32_mask, _mm512_mask_cmp_epu64_mask, _mm512_mask_cmp_epu32_mask, _mm512_mask_cmp_round_pd_mask, _mm512_mask_cmp_round_ps_mask, _mm512_mask_cmp_pd_mask, _mm512_mask_cmp_ps_mask): Likewise. * config/i386/avx512vlbwintrin.h (_mm256_mask_alignr_epi8, _mm256_maskz_alignr_epi8, _mm_mask_alignr_epi8, _mm_maskz_alignr_epi8, _mm256_mask_cmp_epu8_mask): Likewise. * config/i386/avx512vlintrin.h (_mm_mask_cvtps_ph, _mm_maskz_cvtps_ph, _mm256_mask_cvtps_ph, _mm256_maskz_cvtps_ph): Likewise. * config/i386/f16cintrin.h (_mm_cvtps_ph, _mm256_cvtps_ph): Likewise. * config/i386/shaintrin.h (_mm_sha1rnds4_epu32): Likewise.
2020-01-01Update copyright years.Jakub Jelinek1-1/+1
From-SVN: r279813
2019-01-01Update copyright years.Jakub Jelinek1-1/+1
From-SVN: r267494
2018-07-11avx512bitalgintrin.h (_mm512_mask_bitshuffle_epi64_mask): Use __mmask64 type ↵Jakub Jelinek1-2/+2
instead of __mmask8 for __M argument. * config/i386/avx512bitalgintrin.h (_mm512_mask_bitshuffle_epi64_mask): Use __mmask64 type instead of __mmask8 for __M argument. * config/i386/avx512fintrin.h (_mm512_mask_xor_epi64, _mm512_maskz_xor_epi64): Use __mmask8 type instead of __mmask16 for __U argument. (_mm512_mask_cmpneq_epi64_mask): Use __mmask8 type instead of __mmask16 for __M argument. (_mm512_maskz_insertf32x4, _mm512_maskz_inserti32x4, _mm512_mask_insertf32x4, _mm512_mask_inserti32x4): Cast last argument to __mmask16 instead of __mmask8. * config/i386/avx512vlintrin.h (_mm_mask_add_ps, _mm_maskz_add_ps, _mm256_mask_add_ps, _mm256_maskz_add_ps, _mm_mask_sub_ps, _mm_maskz_sub_ps, _mm256_mask_sub_ps, _mm256_maskz_sub_ps, _mm256_maskz_cvtepi32_ps, _mm_maskz_cvtepi32_ps): Use __mmask8 type instead of __mmask16 for __U argument. * config/i386/avx512vlbwintrin.h (_mm_mask_cmp_epi8_mask): Use __mmask16 instead of __mmask8 for __U argument. (_mm256_mask_cmp_epi8_mask): Use __mmask32 instead of __mmask16 for __U argument. (_mm256_cmp_epi8_mask): Use __mmask32 return type instead of __mmask16. (_mm_mask_cmp_epu8_mask): Use __mmask16 instead of __mmask8 for __U argument. (_mm256_mask_cmp_epu8_mask): Use __mmask32 instead of __mmask16 for __U argument. (_mm256_cmp_epu8_mask): Use __mmask32 return type instead of __mmask16. (_mm_mask_cmp_epi16_mask): Cast last argument to __mmask8 instead of __mmask16. (_mm256_mask_cvtepi8_epi16): Use __mmask16 instead of __mmask32 for __U argument. (_mm_mask_cvtepi8_epi16): Use __mmask8 instead of __mmask32 for __U argument. (_mm256_mask_cvtepu8_epi16): Use __mmask16 instead of __mmask32 for __U argument. (_mm_mask_cvtepu8_epi16): Use __mmask8 instead of __mmask32 for __U argument. (_mm256_mask_cmpneq_epu8_mask, _mm256_mask_cmplt_epu8_mask, _mm256_mask_cmpge_epu8_mask, _mm256_mask_cmple_epu8_mask): Change return type as well as __M argument type and all casts from __mmask8 to __mmask32. (_mm256_mask_cmpneq_epu16_mask, _mm256_mask_cmplt_epu16_mask, _mm256_mask_cmpge_epu16_mask, _mm256_mask_cmple_epu16_mask): Change return type as well as __M argument type and all casts from __mmask8 to __mmask16. (_mm256_mask_cmpneq_epi8_mask, _mm256_mask_cmplt_epi8_mask, _mm256_mask_cmpge_epi8_mask, _mm256_mask_cmple_epi8_mask): Change return type as well as __M argument type and all casts from __mmask8 to __mmask32. (_mm256_mask_cmpneq_epi16_mask, _mm256_mask_cmplt_epi16_mask, _mm256_mask_cmpge_epi16_mask, _mm256_mask_cmple_epi16_mask): Change return type as well as __M argument type and all casts from __mmask8 to __mmask16. * config/i386/avx512vbmi2vlintrin.h (_mm_mask_shrdi_epi32, _mm_mask_shldi_epi32): Cast last argument to __mmask8 instead of __mmask16. * gcc.target/i386/avx512bw-vpcmpb-2.c (CMP): Use SIZE macro instead of hardcoding size. Cast (rel) to MASK_TYPE. * gcc.target/i386/avx512bw-vpcmpub-2.c (CMP): Likewise. * gcc.target/i386/avx512f-vinserti32x4-3.c: New test. * gcc.target/i386/avx512f-vinsertf32x4-3.c: New test. * gcc.target/i386/avx512vl-vpcmpnequb-2.c: New test. * gcc.target/i386/avx512vl-vpcmpgeub-2.c: New test. * gcc.target/i386/avx512vl-vpcmpleb-2.c: New test. * gcc.target/i386/avx512vl-vpcmpgeb-2.c: New test. * gcc.target/i386/avx512vl-vpcmpltb-2.c: New test. * gcc.target/i386/avx512vl-vpcmpltub-2.c: New test. * gcc.target/i386/avx512vl-vpcmpleub-2.c: New test. * gcc.target/i386/avx512vl-vpcmpneqb-2.c: New test. * gcc.target/i386/avx512vl-vpcmpnequw-2.c: New test. * gcc.target/i386/avx512vl-vpcmpgeuw-2.c: New test. * gcc.target/i386/avx512vl-vpcmplew-2.c: New test. * gcc.target/i386/avx512vl-vpcmpgew-2.c: New test. * gcc.target/i386/avx512vl-vpcmpltw-2.c: New test. * gcc.target/i386/avx512vl-vpcmpltuw-2.c: New test. * gcc.target/i386/avx512vl-vpcmpleuw-2.c: New test. * gcc.target/i386/avx512vl-vpcmpneqw-2.c: New test. 2018-07-11 Grazvydas Ignotas <notasas@gmail.com> * config/i386/avx512bwintrin.h: (_mm512_mask_cmp_epi8_mask, _mm512_mask_cmp_epu8_mask): Use __mmask64 type instead of __mmask32 for __U argument. * gcc.target/i386/avx512bw-vpcmpb-2.c (SIZE): Define to (AVX512F_LEN / 8) instead of (AVX512F_LEN / 16). * gcc.target/i386/avx512bw-vpcmpub-2.c (SIZE): Likewise. From-SVN: r262566
2018-01-03Update copyright years.Jakub Jelinek1-1/+1
From-SVN: r256169
2017-06-08Add mov[us]wb store intrinsics.Julia Koval1-0/+21
gcc/ * config/i386/avx512bwintrin.h (_mm512_mask_cvtepi16_storeu_epi8, _mm512_mask_cvtsepi16_storeu_epi8, _mm512_mask_cvtusepi16_storeu_epi8): New intrinsics. * config/i386/avx512vlbwintrin.h (_mm256_mask_cvtepi16_storeu_epi8, _mm_mask_cvtsepi16_storeu_epi8, _mm256_mask_cvtsepi16_storeu_epi8, _mm_mask_cvtusepi16_storeu_epi8, _mm256_mask_cvtusepi16_storeu_epi8, _mm_mask_cvtepi16_storeu_epi8): New intrinsics. * config/i386/i386-builtin-types.def (PV8Q, V8QI): New pointer type. (VOID_FTYPE_PV32QI_V32HI_USI, VOID_FTYPE_PV8QI_V8HI_UQI, VOID_FTYPE_PV16QI_V16HI_UHI): New function types. * config/i386/i386-builtin.def (__builtin_ia32_pmovwb128mem_mask, __builtin_ia32_pmovwb256mem_mask, __builtin_ia32_pmovswb128mem_mask, __builtin_ia32_pmovswb256mem_mask, __builtin_ia32_pmovuswb128mem_mask, __builtin_ia32_pmovuswb256mem_mask, __builtin_ia32_pmovuswb512mem_mask, __builtin_ia32_pmovswb512mem_mask) __builtin_ia32_pmovwb512mem_mask): New builtins. gcc/testsuite/ * gcc.target/i386/avx512bw-vpmovswb-1.c: Add new intrinsics to test. * gcc.target/i386/avx512bw-vpmovswb-2.c: Ditto. * gcc.target/i386/avx512bw-vpmovuswb-1.c: Ditto. * gcc.target/i386/avx512bw-vpmovuswb-2.c: Ditto. * gcc.target/i386/avx512bw-vpmovwb-1.c: Ditto. * gcc.target/i386/avx512bw-vpmovwb-2.c: Ditto. From-SVN: r249012
2017-03-09re PR target/79932 (_mm512_packus_epi32 does not compile under -O0)Jakub Jelinek1-66/+66
PR target/79932 * config/i386/avx512bwintrin.h (_mm512_packs_epi32, _mm512_maskz_packs_epi32, _mm512_mask_packs_epi32, _mm512_packus_epi32, _mm512_maskz_packus_epi32, _mm512_mask_packus_epi32): Move definitions outside of __OPTIMIZE__ guarded section. * gcc.target/i386/pr79932-1.c: New test. From-SVN: r245989
2017-01-23Add AVX512 k-mask intrinsicsAndrew Senkevich1-0/+88
gcc/ * config/i386/avx512bwintrin.h: Add k-mask test, kortest intrinsics. * config/i386/avx512dqintrin.h: Ditto. * config/i386/avx512fintrin.h: Ditto. * gcc/config/i386/i386.c: Handle new builtins. * config/i386/i386-builtin.def: Add new builtins. * config/i386/sse.md (ktest<mode>, kortest<mode>): New. (UNSPEC_KORTEST, UNSPEC_KTEST): New. gcc/testsuite/ * gcc.target/i386/avx512bw-ktestd-1.c: New test. * gcc.target/i386/avx512bw-ktestq-1.c: Ditto. * gcc.target/i386/avx512dq-ktestb-1.c: Ditto. * gcc.target/i386/avx512f-ktestw-1.c: Ditto. * gcc.target/i386/avx512bw-kortestd-1.c: Ditto. * gcc.target/i386/avx512bw-kortestq-1.c: Ditto. * gcc.target/i386/avx512dq-kortestb-1.c: Ditto. * gcc.target/i386/avx512f-kortestw-1.c: Ditto. * gcc.target/i386/avx512bw-ktestd-2.c: Ditt * gcc.target/i386/avx512bw-ktestq-2.c: Ditto. * gcc.target/i386/avx512dq-ktestb-2.c: Ditto. * gcc.target/i386/avx512f-ktestw-2.c: Ditto. * gcc.target/i386/avx512bw-kortestd-2.c: Ditto. * gcc.target/i386/avx512bw-kortestq-2.c: Ditto. * gcc.target/i386/avx512dq-kortestb-2.c: Ditto. * gcc.target/i386/avx512f-kortestw-2.c: Ditto. From-SVN: r244801
2017-01-20Add AVX512 k-mask intrinsics.Andrew Senkevich1-0/+44
gcc/ * config/i386/avx512bwintrin.h: Add k-mask registers shift intrinsics. * config/i386/avx512dqintrin.h: Ditto. * config/i386/avx512fintrin.h: Ditto. * config/i386/i386-builtin-types.def: Add new types. * gcc/config/i386/i386.c: Handle new types. * config/i386/i386-builtin.def (__builtin_ia32_kshiftliqi) (__builtin_ia32_kshiftlihi, __builtin_ia32_kshiftlisi) (__builtin_ia32_kshiftlidi, __builtin_ia32_kshiftriqi) (__builtin_ia32_kshiftrihi, __builtin_ia32_kshiftrisi) (__builtin_ia32_kshiftridi): New. * config/i386/sse.md (k<code><mode>): Rename *k<code><mode>. gcc/testsuite/ * gcc.target/i386/avx512bw-kshiftld-1.c: New test. * gcc.target/i386/avx512bw-kshiftlq-1.c: Ditto. * gcc.target/i386/avx512dq-kshiftlb-1.c: Ditto. * gcc.target/i386/avx512f-kshiftlw-1.c: Ditto. * gcc.target/i386/avx512bw-kshiftrd-1.c: Ditto. * gcc.target/i386/avx512bw-kshiftrq-1.c: Ditto. * gcc.target/i386/avx512dq-kshiftrb-1.c: Ditto. * gcc.target/i386/avx512f-kshiftrw-1.c: Ditto. * gcc.target/i386/avx512bw-kshiftld-2.c: Ditto. * gcc.target/i386/avx512bw-kshiftlq-2.c: Ditto. * gcc.target/i386/avx512bw-kshiftrd-2.c: Ditto. * gcc.target/i386/avx512bw-kshiftrq-2.c: Ditto. * gcc.target/i386/avx512dq-kshiftlb-2.c: Ditto. * gcc.target/i386/avx512dq-kshiftrb-2.c: Ditto. * gcc.target/i386/avx512f-kshiftlw-2.c: Ditto. * gcc.target/i386/avx512f-kshiftrw-2.c: Ditto. * gcc.target/i386/avx-1.c: Test new intrinsics. * gcc.target/i386/sse-13.c: Ditto. * gcc.target/i386/sse-23.c: Ditto. From-SVN: r244685
2017-01-01Update copyright years.Jakub Jelinek1-1/+1
From-SVN: r243994
2016-12-17avx512bwintrin.h: Add new k-mask intrinsics.Andrew Senkevich1-0/+14
* config/i386/avx512bwintrin.h: Add new k-mask intrinsics. * config/i386/avx512dqintrin.h: Ditto. * config/i386/avx512fintrin.h: Ditto. * config/i386/i386-builtin.def (__builtin_ia32_kaddqi, __builtin_ia32_kaddhi, __builtin_ia32_kaddsi, __builtin_ia32_kadddi): New. * config/i386/sse.md (kadd<mode>): New. testsuite/ChangeLog: * gcc.target/i386/avx512bw-kaddd-1.c: New test. * gcc.target/i386/avx512bw-kaddq-1.c: Ditto. * gcc.target/i386/avx512dq-kaddb-1.c: Ditto. * gcc.target/i386/avx512f-kaddw-1.c: Ditto. From-SVN: r243774
2016-12-15avx512bwintrin.h: Add new k-mask intrinsics.Andrew Senkevich1-0/+56
* config/i386/avx512bwintrin.h: Add new k-mask intrinsics. * config/i386/avx512dqintrin.h: Ditto. * config/i386/avx512fintrin.h: Ditto. * config/i386/i386-builtin.def (__builtin_ia32_kmovb, __builtin_ia32_kmovd, __builtin_ia32_kmovq): New. (__builtin_ia32_kmov16): Rename to __builtin_ia32_kmovw. * config/i386/sse.md (kmov<mskmodesuffix>): New. testsuite/ChangeLog: * gcc.target/i386/avx512bw-kmovd-1.c: New test. * gcc.target/i386/avx512bw-kmovd-2.c: Ditto. * gcc.target/i386/avx512bw-kmovd-3.c: Ditto. * gcc.target/i386/avx512bw-kmovd-4.c: Ditto. * gcc.target/i386/avx512bw-kmovq-1.c: Ditto. * gcc.target/i386/avx512bw-kmovq-2.c: Ditto. * gcc.target/i386/avx512bw-kmovq-3.c: Ditto. * gcc.target/i386/avx512bw-kmovq-4.c: Ditto. * gcc.target/i386/avx512dq-kmovb-2.c: Ditto. * gcc.target/i386/avx512dq-kmovb-3.c: Ditto. * gcc.target/i386/avx512dq-kmovb-4.c: Ditto. * gcc.target/i386/avx512dq-kmovb-5.c: Ditto. * gcc.target/i386/avx512f-kmovw-2.c: Ditto. * gcc.target/i386/avx512f-kmovw-3.c: Ditto. * gcc.target/i386/avx512f-kmovw-4.c: Ditto. * gcc.target/i386/avx512f-kmovw-5.c: Ditto. From-SVN: r243728
2016-12-05Add AVX512 k-mask intrinsicsAndrew Senkevich1-0/+100
gcc/ 2016-12-05 Andrew Senkevich <andrew.senkevich@intel.com> * config/i386/avx512bwintrin.h: Add new k-mask intrinsics. * config/i386/avx512dqintrin.h: Ditto. * config/i386/avx512fintrin.h: Ditto. * config/i386/i386-builtin-types.def (UCHAR_FTYPE_UQI_UQI_PUCHAR, UCHAR_FTYPE_UHI_UHI_PUCHAR, UCHAR_FTYPE_USI_USI_PUCHAR, UCHAR_FTYPE_UDI_UDI_PUCHAR, UCHAR_FTYPE_UQI_UQI, UCHAR_FTYPE_UHI_UHI, UCHAR_FTYPE_USI_USI, UCHAR_FTYPE_UDI_UDI, UQI_FTYPE_UQI_INT, UHI_FTYPE_UHI_INT, USI_FTYPE_USI_INT, UDI_FTYPE_UDI_INT, UQI_FTYPE_UQI, USI_FTYPE_USI, UDI_FTYPE_UDI, UQI_FTYPE_UQI_UQI): New function types. * config/i386/i386-builtin.def (__builtin_ia32_knotqi, __builtin_ia32_knotsi, __builtin_ia32_knotdi, __builtin_ia32_korqi, __builtin_ia32_korsi, __builtin_ia32_kordi, __builtin_ia32_kxnorqi, __builtin_ia32_kxnorsi, __builtin_ia32_kxnordi, __builtin_ia32_kxorqi, __builtin_ia32_kxorsi, __builtin_ia32_kxordi, __builtin_ia32_kandqi, __builtin_ia32_kandsi, __builtin_ia32_kanddi, __builtin_ia32_kandnqi, __builtin_ia32_kandnsi, __builtin_ia32_kandndi): New. * config/i386/i386.c (ix86_expand_args_builtin): Handle new types. gcc/testsuite/ 2016-12-05 Andrew Senkevich <andrew.senkevich@intel.com> * gcc.target/i386/avx512bw-kandd-1.c: New. * gcc.target/i386/avx512bw-kandnd-1.c: Ditto. * gcc.target/i386/avx512bw-kandnq-1.c: Ditto. * gcc.target/i386/avx512bw-kandq-1.c: Ditto. * gcc.target/i386/avx512bw-knotd-1.c: Ditto. * gcc.target/i386/avx512bw-knotq-1.c: Ditto. * gcc.target/i386/avx512bw-kord-1.c: Ditto. * gcc.target/i386/avx512bw-korq-1.c: Ditto. * gcc.target/i386/avx512bw-kunpckdq-3.c: Ditto. * gcc.target/i386/avx512bw-kunpckwd-3.c: Ditto. * gcc.target/i386/avx512bw-kxnord-1.c: Ditto. * gcc.target/i386/avx512bw-kxnorq-1.c: Ditto. * gcc.target/i386/avx512bw-kxord-1.c: Ditto. * gcc.target/i386/avx512bw-kxorq-1.c: Ditto. * gcc.target/i386/avx512dq-kandb-1.c: Ditto. * gcc.target/i386/avx512dq-kandnb-1.c: Ditto. * gcc.target/i386/avx512dq-knotb-1.c: Ditto. * gcc.target/i386/avx512dq-korb-1.c: Ditto. * gcc.target/i386/avx512dq-kxnorb-1.c: Ditto. * gcc.target/i386/avx512dq-kxorb-1.c: Ditto. * gcc.target/i386/avx512f-kunpckbw-3.c: Ditto. * gcc.target/i386/avx512f-kandnw-1.c: Removed unneeded check. From-SVN: r243265
2016-11-22re PR target/78451 (FAIL: gcc.target/i386/sse-22a.c: error: inlining failed ↵Jakub Jelinek1-154/+139
in call to always_inline '_mm512_setzero_ps') PR target/78451 * config/i386/avx512bwintrin.h (_mm512_setzero_qi, _mm512_setzero_hi): Removed. (_mm512_maskz_mov_epi16, _mm512_maskz_loadu_epi16, _mm512_maskz_mov_epi8, _mm512_maskz_loadu_epi8, _mm512_maskz_broadcastb_epi8, _mm512_maskz_set1_epi8, _mm512_maskz_broadcastw_epi16, _mm512_maskz_set1_epi16, _mm512_mulhrs_epi16, _mm512_maskz_mulhrs_epi16, _mm512_mulhi_epi16, _mm512_maskz_mulhi_epi16, _mm512_mulhi_epu16, _mm512_maskz_mulhi_epu16, _mm512_maskz_mullo_epi16, _mm512_cvtepi8_epi16, _mm512_maskz_cvtepi8_epi16, _mm512_cvtepu8_epi16, _mm512_maskz_cvtepu8_epi16, _mm512_permutexvar_epi16, _mm512_maskz_permutexvar_epi16, _mm512_avg_epu8, _mm512_maskz_avg_epu8, _mm512_maskz_add_epi8, _mm512_maskz_sub_epi8, _mm512_avg_epu16, _mm512_maskz_avg_epu16, _mm512_subs_epi8, _mm512_maskz_subs_epi8, _mm512_subs_epu8, _mm512_maskz_subs_epu8, _mm512_adds_epi8, _mm512_maskz_adds_epi8, _mm512_adds_epu8, _mm512_maskz_adds_epu8, _mm512_maskz_sub_epi16, _mm512_subs_epi16, _mm512_maskz_subs_epi16, _mm512_subs_epu16, _mm512_maskz_subs_epu16, _mm512_maskz_add_epi16, _mm512_adds_epi16, _mm512_maskz_adds_epi16, _mm512_adds_epu16, _mm512_maskz_adds_epu16, _mm512_srl_epi16, _mm512_maskz_srl_epi16, _mm512_packs_epi16, _mm512_sll_epi16, _mm512_maskz_sll_epi16, _mm512_maddubs_epi16, _mm512_maskz_maddubs_epi16, _mm512_unpackhi_epi8, _mm512_maskz_unpackhi_epi8, _mm512_unpackhi_epi16, _mm512_maskz_unpackhi_epi16, _mm512_unpacklo_epi8, _mm512_maskz_unpacklo_epi8, _mm512_unpacklo_epi16, _mm512_maskz_unpacklo_epi16, _mm512_shuffle_epi8, _mm512_maskz_shuffle_epi8, _mm512_min_epu16, _mm512_maskz_min_epu16, _mm512_min_epi16, _mm512_maskz_min_epi16, _mm512_max_epu8, _mm512_maskz_max_epu8, _mm512_max_epi8, _mm512_maskz_max_epi8, _mm512_min_epu8, _mm512_maskz_min_epu8, _mm512_min_epi8, _mm512_maskz_min_epi8, _mm512_max_epi16, _mm512_maskz_max_epi16, _mm512_max_epu16, _mm512_maskz_max_epu16, _mm512_sra_epi16, _mm512_maskz_sra_epi16, _mm512_srav_epi16, _mm512_maskz_srav_epi16, _mm512_srlv_epi16, _mm512_maskz_srlv_epi16, _mm512_sllv_epi16, _mm512_maskz_sllv_epi16, _mm512_maskz_packs_epi16, _mm512_packus_epi16, _mm512_maskz_packus_epi16, _mm512_abs_epi8, _mm512_maskz_abs_epi8, _mm512_abs_epi16, _mm512_maskz_abs_epi16, _mm512_dbsad_epu8, _mm512_maskz_dbsad_epu8, _mm512_srli_epi16, _mm512_maskz_srli_epi16, _mm512_slli_epi16, _mm512_maskz_slli_epi16, _mm512_shufflehi_epi16, _mm512_maskz_shufflehi_epi16, _mm512_shufflelo_epi16, _mm512_maskz_shufflelo_epi16, _mm512_srai_epi16, _mm512_maskz_srai_epi16, _mm512_packs_epi32, _mm512_maskz_packs_epi32, _mm512_packus_epi32, _mm512_maskz_packus_epi32): Use _mm512_setzero_si512 instead of _mm512_setzero_qi or _mm512_setzero_hi. (_mm512_maskz_alignr_epi8, _mm512_dbsad_epu8, _mm512_maskz_dbsad_epu8): Formatting fixes. (_mm512_srli_epi16, _mm512_maskz_srli_epi16, _mm512_slli_epi16, _mm512_maskz_slli_epi16, _mm512_shufflehi_epi16, _mm512_maskz_shufflehi_epi16, _mm512_shufflelo_epi16, _mm512_maskz_shufflelo_epi16, _mm512_srai_epi16, _mm512_maskz_srai_epi16): Use _mm512_setzero_si512 instead of _mm512_setzero_qi or _mm512_setzero_hi. From-SVN: r242723
2016-08-14avx512bwintrin.h: Whitespace fixes.Uros Bizjak1-18/+17
* config/i386/avx512bwintrin.h: Whitespace fixes. * config/i386/avx512dqintrin.h: Ditto. From-SVN: r239454
2016-08-14re PR target/76342 (AVX512: _mm512_undefined_epi32() intrinsic missing ↵Uros Bizjak1-5/+4
(incorrectly named _mm512_undefined_si512)) PR target/76342 * config/i386/avx512fintrin.h (_mm512_undefined_epi32): Renamed from _mm512_undefined_si512. (_mm_undefined_si512): New definition. testsuite/ChangeLog: PR target/76342 * gcc.target/i386/pr76342.c: New test. From-SVN: r239453
2016-04-19Remove UNSPEC_LOADU and UNSPEC_STOREUH.J. Lu1-6/+6
Since *mov<mode>_internal and <avx512>_(load|store)<mode>_mask patterns can handle unaligned load and store, we can remove UNSPEC_LOADU and UNSPEC_STOREU. We use function prototypes with pointer to scalar for unaligned load/store builtin functions so that memory passed to *mov<mode>_internal is unaligned. gcc/ PR target/69201 * config/i386/avx512bwintrin.h (_mm512_mask_loadu_epi16): Pass const short * to __builtin_ia32_loaddquhi512_mask. (_mm512_maskz_loadu_epi16): Likewise. (_mm512_mask_storeu_epi16): Pass short * to __builtin_ia32_storedquhi512_mask. (_mm512_mask_loadu_epi8): Pass const char * to __builtin_ia32_loaddquqi512_mask. (_mm512_maskz_loadu_epi8): Likewise. (_mm512_mask_storeu_epi8): Pass char * to __builtin_ia32_storedquqi512_mask. * config/i386/avx512fintrin.h (_mm512_loadu_pd): Pass const double * to __builtin_ia32_loadupd512_mask. (_mm512_mask_loadu_pd): Likewise. (_mm512_maskz_loadu_pd): Likewise. (_mm512_storeu_pd): Pass double * to __builtin_ia32_storeupd512_mask. (_mm512_mask_storeu_pd): Likewise. (_mm512_loadu_ps): Pass const float * to __builtin_ia32_loadups512_mask. (_mm512_mask_loadu_ps): Likewise. (_mm512_maskz_loadu_ps): Likewise. (_mm512_storeu_ps): Pass float * to __builtin_ia32_storeups512_mask. (_mm512_mask_storeu_ps): Likewise. (_mm512_mask_loadu_epi64): Pass const long long * to __builtin_ia32_loaddqudi512_mask. (_mm512_maskz_loadu_epi64): Likewise. (_mm512_mask_storeu_epi64): Pass long long * to __builtin_ia32_storedqudi512_mask. (_mm512_loadu_si512): Pass const int * to __builtin_ia32_loaddqusi512_mask. (_mm512_mask_loadu_epi32): Likewise. (_mm512_maskz_loadu_epi32): Likewise. (_mm512_storeu_si512): Pass int * to __builtin_ia32_storedqusi512_mask. (_mm512_mask_storeu_epi32): Likewise. * config/i386/avx512vlbwintrin.h (_mm256_mask_storeu_epi8): Pass char * to __builtin_ia32_storedquqi256_mask. (_mm_mask_storeu_epi8): Likewise. (_mm256_mask_loadu_epi16): Pass const short * to __builtin_ia32_loaddquhi256_mask. (_mm256_maskz_loadu_epi16): Likewise. (_mm_mask_loadu_epi16): Pass const short * to __builtin_ia32_loaddquhi128_mask. (_mm_maskz_loadu_epi16): Likewise. (_mm256_mask_loadu_epi8): Pass const char * to __builtin_ia32_loaddquqi256_mask. (_mm256_maskz_loadu_epi8): Likewise. (_mm_mask_loadu_epi8): Pass const char * to __builtin_ia32_loaddquqi128_mask. (_mm_maskz_loadu_epi8): Likewise. (_mm256_mask_storeu_epi16): Pass short * to. __builtin_ia32_storedquhi256_mask. (_mm_mask_storeu_epi16): Pass short * to. __builtin_ia32_storedquhi128_mask. * config/i386/avx512vlintrin.h (_mm256_mask_loadu_pd): Pass const double * to __builtin_ia32_loadupd256_mask. (_mm256_maskz_loadu_pd): Likewise. (_mm_mask_loadu_pd): Pass onst double * to __builtin_ia32_loadupd128_mask. (_mm_maskz_loadu_pd): Likewise. (_mm256_mask_storeu_pd): Pass double * to __builtin_ia32_storeupd256_mask. (_mm_mask_storeu_pd): Pass double * to __builtin_ia32_storeupd128_mask. (_mm256_mask_loadu_ps): Pass const float * to __builtin_ia32_loadups256_mask. (_mm256_maskz_loadu_ps): Likewise. (_mm_mask_loadu_ps): Pass const float * to __builtin_ia32_loadups128_mask. (_mm_maskz_loadu_ps): Likewise. (_mm256_mask_storeu_ps): Pass float * to __builtin_ia32_storeups256_mask. (_mm_mask_storeu_ps): ass float * to __builtin_ia32_storeups128_mask. (_mm256_mask_loadu_epi64): Pass const long long * to __builtin_ia32_loaddqudi256_mask. (_mm256_maskz_loadu_epi64): Likewise. (_mm_mask_loadu_epi64): Pass const long long * to __builtin_ia32_loaddqudi128_mask. (_mm_maskz_loadu_epi64): Likewise. (_mm256_mask_storeu_epi64): Pass long long * to __builtin_ia32_storedqudi256_mask. (_mm_mask_storeu_epi64): Pass long long * to __builtin_ia32_storedqudi128_mask. (_mm256_mask_loadu_epi32): Pass const int * to __builtin_ia32_loaddqusi256_mask. (_mm256_maskz_loadu_epi32): Likewise. (_mm_mask_loadu_epi32): Pass const int * to __builtin_ia32_loaddqusi128_mask. (_mm_maskz_loadu_epi32): Likewise. (_mm256_mask_storeu_epi32): Pass int * to __builtin_ia32_storedqusi256_mask. (_mm_mask_storeu_epi32): Pass int * to __builtin_ia32_storedqusi128_mask. * config/i386/i386-builtin-types.def (PCSHORT): New. (PINT64): Likewise. (V64QI_FTYPE_PCCHAR_V64QI_UDI): Likewise. (V32HI_FTYPE_PCSHORT_V32HI_USI): Likewise. (V32QI_FTYPE_PCCHAR_V32QI_USI): Likewise. (V16SF_FTYPE_PCFLOAT_V16SF_UHI): Likewise. (V8DF_FTYPE_PCDOUBLE_V8DF_UQI): Likewise. (V16SI_FTYPE_PCINT_V16SI_UHI): Likewise. (V16HI_FTYPE_PCSHORT_V16HI_UHI): Likewise. (V16QI_FTYPE_PCCHAR_V16QI_UHI): Likewise. (V8SF_FTYPE_PCFLOAT_V8SF_UQI): Likewise. (V8DI_FTYPE_PCINT64_V8DI_UQI): Likewise. (V8SI_FTYPE_PCINT_V8SI_UQI): Likewise. (V8HI_FTYPE_PCSHORT_V8HI_UQI): Likewise. (V4DF_FTYPE_PCDOUBLE_V4DF_UQI): Likewise. (V4SF_FTYPE_PCFLOAT_V4SF_UQI): Likewise. (V4DI_FTYPE_PCINT64_V4DI_UQI): Likewise. (V4SI_FTYPE_PCINT_V4SI_UQI): Likewise. (V2DF_FTYPE_PCDOUBLE_V2DF_UQI): Likewise. (V2DI_FTYPE_PCINT64_V2DI_UQI): Likewise. (VOID_FTYPE_PDOUBLE_V8DF_UQI): Likewise. (VOID_FTYPE_PDOUBLE_V4DF_UQI): Likewise. (VOID_FTYPE_PDOUBLE_V2DF_UQI): Likewise. (VOID_FTYPE_PFLOAT_V16SF_UHI): Likewise. (VOID_FTYPE_PFLOAT_V8SF_UQI): Likewise. (VOID_FTYPE_PFLOAT_V4SF_UQI): Likewise. (VOID_FTYPE_PINT64_V8DI_UQI): Likewise. (VOID_FTYPE_PINT64_V4DI_UQI): Likewise. (VOID_FTYPE_PINT64_V2DI_UQI): Likewise. (VOID_FTYPE_PINT_V16SI_UHI): Likewise. (VOID_FTYPE_PINT_V8SI_UHI): Likewise. (VOID_FTYPE_PINT_V4SI_UHI): Likewise. (VOID_FTYPE_PSHORT_V32HI_USI): Likewise. (VOID_FTYPE_PSHORT_V16HI_UHI): Likewise. (VOID_FTYPE_PSHORT_V8HI_UQI): Likewise. (VOID_FTYPE_PCHAR_V64QI_UDI): Likewise. (VOID_FTYPE_PCHAR_V32QI_USI): Likewise. (VOID_FTYPE_PCHAR_V16QI_UHI): Likewise. (V64QI_FTYPE_PCV64QI_V64QI_UDI): Removed. (V32HI_FTYPE_PCV32HI_V32HI_USI): Likewise. (V32QI_FTYPE_PCV32QI_V32QI_USI): Likewise. (V16HI_FTYPE_PCV16HI_V16HI_UHI): Likewise. (V16QI_FTYPE_PCV16QI_V16QI_UHI): Likewise. (V8HI_FTYPE_PCV8HI_V8HI_UQI): Likewise. (VOID_FTYPE_PV32HI_V32HI_USI): Likewise. (VOID_FTYPE_PV16HI_V16HI_UHI): Likewise. (VOID_FTYPE_PV8HI_V8HI_UQI): Likewise. (VOID_FTYPE_PV64QI_V64QI_UDI): Likewise. (VOID_FTYPE_PV32QI_V32QI_USI): Likewise. (VOID_FTYPE_PV16QI_V16QI_UHI): Likewise. * config/i386/i386.c (ix86_emit_save_reg_using_mov): Don't use UNSPEC_STOREU. (ix86_emit_restore_sse_regs_using_mov): Don't use UNSPEC_LOADU. (ix86_avx256_split_vector_move_misalign): Don't use unaligned load nor store. (ix86_expand_vector_move_misalign): Likewise. (bdesc_special_args): Use CODE_FOR_movvNXY_internal and pointer to scalar function prototype for unaligned load/store builtins. (ix86_expand_special_args_builtin): Updated. * config/i386/sse.md (UNSPEC_LOADU): Removed. (UNSPEC_STOREU): Likewise. (VI_ULOADSTORE_BW_AVX512VL): Likewise. (VI_ULOADSTORE_F_AVX512VL): Likewise. (ssescalarsize): Handle V4TI, V2TI and V1TI. (<sse>_loadu<ssemodesuffix><avxsizesuffix><mask_name>): Likewise. (*<sse>_loadu<ssemodesuffix><avxsizesuffix><mask_name>): Likewise. (<sse>_storeu<ssemodesuffix><avxsizesuffix>): Likewise. (<avx512>_storeu<ssemodesuffix><avxsizesuffix>_mask): Likewise. (<sse2_avx_avx512f>_loaddqu<mode><mask_name>): Likewise. (*<sse2_avx_avx512f>_loaddqu<mode><mask_name>"): Likewise. (sse2_avx_avx512f>_storedqu<mode>): Likewise. (<avx512>_storedqu<mode>_mask): Likewise. (*sse4_2_pcmpestr_unaligned): Likewise. (*sse4_2_pcmpistr_unaligned): Likewise. (*mov<mode>_internal): Renamed to ... (mov<mode>_internal): This. Remove check of AVX and IAMCU on misaligned operand. Replace vmovdqu64 with vmovdqu<ssescalarsize>. (movsd/movhpd to movupd peephole): Don't use UNSPEC_LOADU. (movlpd/movhpd to movupd peephole): Don't use UNSPEC_STOREU. gcc/testsuite/ PR target/69201 * gcc.target/i386/avx256-unaligned-store-1.c (a): Make it extern to force it misaligned. (b): Likewise. (c): Likewise. (d): Likewise. Check vmovups.*movv8sf_internal/3 instead of avx_storeups256. Don't check `*' before movv4sf_internal. * gcc.target/i386/avx256-unaligned-store-2.c: Check vmovups.*movv32qi_internal/3 instead of avx_storeups256. Don't check `*' before movv16qi_internal. * gcc.target/i386/avx256-unaligned-store-3.c (a): Make it extern to force it misaligned. (b): Likewise. (c): Likewise. (d): Likewise. Check vmovups.*movv4df_internal/3 instead of avx_storeupd256. Don't check `*' before movv2df_internal. * gcc.target/i386/avx256-unaligned-store-4.c (a): Make it extern to force it misaligned. (b): Likewise. (c): Likewise. (d): Likewise. Check movv8sf_internal instead of avx_storeups256. Check movups.*movv4sf_internal/3 instead of avx_storeups256. From-SVN: r235209
2016-01-04Update copyright years.Jakub Jelinek1-1/+1
From-SVN: r232055
2015-01-05Update copyright years.Jakub Jelinek1-2/+1
From-SVN: r219188
2014-11-15xmmintrin.h (_mm_add_ps, [...]): Use vector extensions instead of builtins.Marc Glisse1-25/+5
2014-11-15 Marc Glisse <marc.glisse@inria.fr> gcc/ * config/i386/xmmintrin.h (_mm_add_ps, _mm_sub_ps, _mm_mul_ps, _mm_div_ps, _mm_store_ss, _mm_cvtss_f32): Use vector extensions instead of builtins. * config/i386/emmintrin.h (__v2du, __v4su, __v8hu, __v16qu): New typedefs. (_mm_sqrt_sd): Fix comment. (_mm_add_epi8, _mm_add_epi16, _mm_add_epi32, _mm_add_epi64, _mm_sub_epi8, _mm_sub_epi16, _mm_sub_epi32, _mm_sub_epi64, _mm_mullo_epi16, _mm_cmpeq_epi8, _mm_cmpeq_epi16, _mm_cmpeq_epi32, _mm_cmplt_epi8, _mm_cmplt_epi16, _mm_cmplt_epi32, _mm_cmpgt_epi8, _mm_cmpgt_epi16, _mm_cmpgt_epi32, _mm_and_si128, _mm_or_si128, _mm_xor_si128, _mm_store_sd, _mm_cvtsd_f64, _mm_storeh_pd, _mm_cvtsi128_si64, _mm_cvtsi128_si64x, _mm_add_pd, _mm_sub_pd, _mm_mul_pd, _mm_div_pd, _mm_storel_epi64, _mm_movepi64_pi64): Use vector extensions instead of builtins. * config/i386/smmintrin.h (_mm_cmpeq_epi64, _mm_cmpgt_epi64, _mm_mullo_epi32): Likewise. * config/i386/avxintrin.h (__v4du, __v8su, __v16hu, __v32qu): New typedefs. (_mm256_add_pd, _mm256_add_ps, _mm256_div_pd, _mm256_div_ps, _mm256_mul_pd, _mm256_mul_ps, _mm256_sub_pd, _mm256_sub_ps): Use vector extensions instead of builtins. * config/i386/avx2intrin.h (_mm256_cmpeq_epi8, _mm256_cmpeq_epi16, _mm256_cmpeq_epi32, _mm256_cmpeq_epi64, _mm256_cmpgt_epi8, _mm256_cmpgt_epi16, _mm256_cmpgt_epi32, _mm256_cmpgt_epi64, _mm256_and_si256, _mm256_or_si256, _mm256_xor_si256, _mm256_add_epi8, _mm256_add_epi16, _mm256_add_epi32, _mm256_add_epi64, _mm256_mullo_epi16, _mm256_mullo_epi32, _mm256_sub_epi8, _mm256_sub_epi16, _mm256_sub_epi32, _mm256_sub_epi64): Likewise. * config/i386/avx512fintrin.h (__v8du, __v16su, __v32hu, __v64qu): New typedefs. (_mm512_or_si512, _mm512_or_epi32, _mm512_or_epi64, _mm512_xor_si512, _mm512_xor_epi32, _mm512_xor_epi64, _mm512_and_si512, _mm512_and_epi32, _mm512_and_epi64, _mm512_mullo_epi32, _mm512_add_epi64, _mm512_sub_epi64, _mm512_add_epi32, _mm512_sub_epi32, _mm512_add_pd, _mm512_add_ps, _mm512_sub_pd, _mm512_sub_ps, _mm512_mul_pd, _mm512_mul_ps, _mm512_div_pd, _mm512_div_ps): Use vector extensions instead of builtins. * config/i386/avx512bwintrin.h (_mm512_mullo_epi16, _mm512_add_epi8, _mm512_sub_epi8, _mm512_sub_epi16, _mm512_add_epi16): Likewise. * config/i386/avx512dqintrin.h (_mm512_mullo_epi64): Likewise. * config/i386/avx512vldqintrin.h (_mm256_mullo_epi64, _mm_mullo_epi64): Likewise. gcc/testsuite/ * gcc.target/i386/intrinsics_opt-1.c: New testcase. * gcc.target/i386/intrinsics_opt-2.c: Likewise. * gcc.target/i386/intrinsics_opt-3.c: Likewise. * gcc.target/i386/intrinsics_opt-4.c: Likewise. From-SVN: r217608
2014-10-29AVX-512. 88/n. Add missed avx512bw/avx512vl cmp intrinsics.Alexander Ivchenko1-0/+360
gcc/ * config/i386/avx512bwintrin.h: Add new intrinsics. * config/i386/avx512vlbwintrin.h: Ditto. * config/i386/avx512vlintrin.h: Ditto. gcc/testsuite/ * gcc.target/i386/avx512bw-vpcmpequb-1.c: New. * gcc.target/i386/avx512bw-vpcmpequb-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpequw-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpequw-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpgeb-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpgeb-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpgeub-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpgeub-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpgeuw-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpgeuw-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpgew-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpgew-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpgtub-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpgtub-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpgtuw-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpgtuw-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpleb-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpleb-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpleub-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpleub-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpleuw-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpleuw-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmplew-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmplew-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpltb-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpltb-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpltub-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpltub-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpltuw-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpltuw-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpltw-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpltw-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpneqb-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpneqb-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpnequb-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpnequb-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpnequw-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpnequw-2.c: Ditto. * gcc.target/i386/avx512bw-vpcmpneqw-1.c: Ditto. * gcc.target/i386/avx512bw-vpcmpneqw-2.c: Ditto. * gcc.target/i386/avx512vl-vpcmpequb-2.c: Ditto. * gcc.target/i386/avx512vl-vpcmpequd-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpequd-2.c: Ditto. * gcc.target/i386/avx512vl-vpcmpequq-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpequq-2.c: Ditto. * gcc.target/i386/avx512vl-vpcmpequw-2.c: Ditto. * gcc.target/i386/avx512vl-vpcmpged-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpgeq-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpgeud-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpgeuq-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpgtub-2.c: Ditto. * gcc.target/i386/avx512vl-vpcmpgtud-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpgtud-2.c: Ditto. * gcc.target/i386/avx512vl-vpcmpgtuq-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpgtuq-2.c: Ditto. * gcc.target/i386/avx512vl-vpcmpgtuw-2.c: Ditto. * gcc.target/i386/avx512vl-vpcmpled-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpleq-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpleud-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpleuq-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpltd-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpltq-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpltud-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpltuq-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpneqd-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpneqq-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpnequd-1.c: Ditto. * gcc.target/i386/avx512vl-vpcmpnequq-1.c: Ditto. Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com> Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com> Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com> Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com> Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com> Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com> Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com> From-SVN: r216819
2014-10-28AVX-512. 85/n. Add intrinsics headers.Alexander Ivchenko1-0/+2656
gcc/ * config/i386/avx512bwintrin.h: New. * config/i386/avx512dqintrin.h: Ditto. * config/i386/avx512vlbwintrin.h: Ditto. * config/i386/avx512vldqintrin.h: Ditto. * config/i386/avx512vlintrin.h: Ditto. * config/i386/immintrin.h: Include avx512vlintrin.h, avx512bwintrin.h, avx512dqintrin.h, avx512vlbwintrin.h, avx512vldqintrin.h. Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com> Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com> Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com> Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com> Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com> Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com> Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com> From-SVN: r216798