On Wed, Jan 22, 2014 at 2:55 PM, Ilya Tocar <tocarip.in...@gmail.com> wrote:
>> > I found out that we forgot to implement some of AVX512 intrinsics. >> > Here is a patch that adds them. Sorry for huge patch, but changes are >> > mostly trivial. >> > Ok for trunk? >> >> > +(define_insn "avx512f_<code><pmov_src_lower><mode>2_mask_store" >> > + [(set (match_operand:PMOV_DST_MODE 0 "nonimmediate_operand" "=m") >> > + (vec_merge:PMOV_DST_MODE >> > + (any_truncate:PMOV_DST_MODE >> > + (match_operand:<pmov_src_mode> 1 "register_operand" "v")) >> > + (match_dup 0) >> > + (match_operand:<avx512fmaskmode> 2 "register_operand" "k")))] >> > + "TARGET_AVX512F" >> > + "vpmov<trunsuffix><pmov_suff>\t{%1, %0%{%2%}|%0%{%2%}, %1}" >> > + [(set_attr "type" "ssemov") >> > + (set_attr "memory" "store") >> > + (set_attr "prefix" "evex") >> > + (set_attr "mode" "<sseinsnmode>")]) >> >> This is the same as the second alternative of the >> avx512f_<code><pmov_src_lower>2_mask pattern. Please change the above >> into an expander to reuse existing pattern. >> >> Uros. > > Fixed. > > Changelog: > > 2014-01-21 Ilya Tocar <ilya.to...@intel.com> > > * config/i386/avx512fintrin.h (_mm512_mask_cvtepi32_storeu_epi8): New. > (_mm512_mask_cvtsepi32_storeu_epi8): Ditto. > (_mm512_mask_cvtusepi32_storeu_epi8): Ditto. > (_mm512_mask_cvtepi32_storeu_epi16): Ditto. > (_mm512_mask_cvtsepi32_storeu_epi16): Ditto. > (_mm512_mask_cvtusepi32_storeu_epi16): Ditto. > (_mm512_mask_cvtepi64_storeu_epi32): Ditto. > (_mm512_mask_cvtsepi64_storeu_epi32): Ditto. > (_mm512_mask_cvtusepi64_storeu_epi32): Ditto. > (_mm512_mask_cvtepi64_storeu_epi16): Ditto. > (_mm512_mask_cvtsepi64_storeu_epi16): Ditto. > (_mm512_mask_cvtusepi64_storeu_epi16): Ditto. > (_mm512_mask_cvtepi64_storeu_epi8): Ditto. > (_mm512_mask_cvtsepi64_storeu_epi8): Ditto. > (_mm512_mask_cvtusepi64_storeu_epi8): Ditto. > (_mm512_storeu_epi64): Ditto. > (_mm512_cmpge_epi32_mask): Ditto. > (_mm512_cmpge_epu32_mask): Ditto. > (_mm512_cmpge_epi64_mask): Ditto. > (_mm512_cmpge_epu64_mask): Ditto. > (_mm512_cmple_epi32_mask): Ditto. > (_mm512_cmple_epu32_mask): Ditto. > (_mm512_cmple_epi64_mask): Ditto. > (_mm512_cmple_epu64_mask): Ditto. > (_mm512_cmplt_epi32_mask): Ditto. > (_mm512_cmplt_epu32_mask): Ditto. > (_mm512_cmplt_epi64_mask): Ditto. > (_mm512_cmplt_epu64_mask): Ditto. > (_mm512_cmpneq_epi32_mask): Ditto. > (_mm512_cmpneq_epu32_mask): Ditto. > (_mm512_cmpneq_epi64_mask): Ditto. > (_mm512_cmpneq_epu64_mask): Ditto. > (_mm512_expand_pd): Ditto. > (_mm512_expand_ps): Ditto. > * config/i386/i386-builtin-types.def: Add PV16QI, PV16QI, PV16HI, > VOID_PV8SI_V8DI_QI, VOID_PV8HI_V8DI_QI, VOID_PV16QI_V8DI_QI, > VOID_PV16QI_V16SI_HI, VOID_PV16HI_V16SI_HI. > * config/i386/i386.c (ix86_builtins): Add > IX86_BUILTIN_EXPANDPD512_NOMASK, IX86_BUILTIN_EXPANDPS512_NOMASK, > IX86_BUILTIN_PMOVDB512_MEM, IX86_BUILTIN_PMOVDW512_MEM, > IX86_BUILTIN_PMOVQB512_MEM, IX86_BUILTIN_PMOVQD512_MEM, > IX86_BUILTIN_PMOVQW512_MEM, IX86_BUILTIN_PMOVSDB512_MEM, > IX86_BUILTIN_PMOVSDW512_MEM, IX86_BUILTIN_PMOVSQB512_MEM, > IX86_BUILTIN_PMOVSQD512_MEM, IX86_BUILTIN_PMOVSQW512_MEM, > IX86_BUILTIN_PMOVUSDB512_MEM, IX86_BUILTIN_PMOVUSDW512_MEM, > IX86_BUILTIN_PMOVUSQB512_MEM, IX86_BUILTIN_PMOVUSQD512_MEM, > IX86_BUILTIN_PMOVUSQW512_MEM. > (bdesc_special_args): Add __builtin_ia32_pmovusqd512mem_mask, > __builtin_ia32_pmovsqd512mem_mask, > __builtin_ia32_pmovqd512mem_mask, > __builtin_ia32_pmovusqw512mem_mask, > __builtin_ia32_pmovsqw512mem_mask, > __builtin_ia32_pmovqw512mem_mask, > __builtin_ia32_pmovusdw512mem_mask, > __builtin_ia32_pmovsdw512mem_mask, > __builtin_ia32_pmovdw512mem_mask, > __builtin_ia32_pmovqb512mem_mask, > __builtin_ia32_pmovusqb512mem_mask, > __builtin_ia32_pmovsqb512mem_mask, > __builtin_ia32_pmovusdb512mem_mask, > __builtin_ia32_pmovsdb512mem_mask, > __builtin_ia32_pmovdb512mem_mask. > (bdesc_args): Add __builtin_ia32_expanddf512, > __builtin_ia32_expandsf512. > (ix86_expand_special_args_builtin): Handle VOID_FTYPE_PV8SI_V8DI_QI, > VOID_FTYPE_PV8HI_V8DI_QI, VOID_FTYPE_PV16HI_V16SI_HI, > VOID_FTYPE_PV16QI_V8DI_QI, VOID_FTYPE_PV16QI_V16SI_HI. > * config/i386/sse.md (unspec): Add UNSPEC_EXPAND_NOMASK. > (avx512f_<code><pmov_src_lower><mode>2_mask_store): New. > (*avx512f_<code>v8div16qi2_store_mask): Renamed to ... > (avx512f_<code>v8div16qi2_mask_store): This. > (avx512f_expand<mode>): New. > > > Chagelog for tests: > > 2014-01-21 Ilya Tocar <ilya.to...@intel.com> > > * gcc.target/i386/avx512f-vexpandpd-1.c: Also test _mm512_expand_pd. > * gcc.target/i386/avx512f-vexpandpd-2.c: Ditto. > * gcc.target/i386/avx512f-vexpandps-1.c: Also test _mm512_expand_ps. > * gcc.target/i386/avx512f-vexpandps-2.c: Ditto. > * gcc.target/i386/avx512f-vmovdqu64-1.c: Also test > _mm512_storeu_epi64. > * gcc.target/i386/avx512f-vmovdqu64-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpged-1.c: New. > * gcc.target/i386/avx512f-vpcmpged-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpgeq-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpgeq-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpgeud-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpgeud-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpgeuq-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpgeuq-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpled-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpled-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpleq-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpleq-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpleud-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpleud-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpleuq-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpleuq-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpltd-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpltd-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpltq-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpltq-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpltud-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpltud-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpltuq-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpltuq-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpneqd-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpneqd-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpneqq-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpneqq-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpnequd-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpnequd-2.c: Ditto. > * gcc.target/i386/avx512f-vpcmpnequq-1.c: Ditto. > * gcc.target/i386/avx512f-vpcmpnequq-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovdb-1.c: Also test > _mm512_mask_cvtepi32_storeu_epi8. > * gcc.target/i386/avx512f-vpmovdb-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovdw-1.c: Also test > _mm512_mask_cvtepi32_storeu_epi16. > * gcc.target/i386/avx512f-vpmovdw-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovqb-1.c: Also test > _mm512_mask_cvtepi64_storeu_epi8. > * gcc.target/i386/avx512f-vpmovqb-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovqw-1.c: Also test > _mm512_mask_cvtepi64_storeu_epi16. > * gcc.target/i386/avx512f-vpmovqw-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovqd-1.c: Also test > _mm512_mask_cvtepi64_storeu_epi32. > * gcc.target/i386/avx512f-vpmovqd-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovsdb-1.c: Also test > _mm512_mask_cvtsepi32_storeu_epi8. > * gcc.target/i386/avx512f-vpmovsdb-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovsdw-1.c: Also test > _mm512_mask_cvtsepi32_storeu_epi16. > * gcc.target/i386/avx512f-vpmovsdw-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovsqb-1.c: Also test > _mm512_mask_cvtsepi64_storeu_epi8. > * gcc.target/i386/avx512f-vpmovsqb-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovsqw-1.c: Also test > _mm512_mask_cvtsepi64_storeu_epi16. > * gcc.target/i386/avx512f-vpmovsqw-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovsqd-1.c: Also test > _mm512_mask_cvtsepi64_storeu_epi32. > * gcc.target/i386/avx512f-vpmovsqd-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovusdb-1.c: Also test > _mm512_mask_cvtusepi32_storeu_epi8. > * gcc.target/i386/avx512f-vpmovusdb-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovusdw-1.c: Also test > _mm512_mask_cvtusepi32_storeu_epi16. > * gcc.target/i386/avx512f-vpmovusdw-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovusqb-1.c: Also test > _mm512_mask_cvtusepi64_storeu_epi8. > * gcc.target/i386/avx512f-vpmovusqb-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovusqw-1.c: Also test > _mm512_mask_cvtusepi64_storeu_epi16. > * gcc.target/i386/avx512f-vpmovusqw-2.c: Ditto. > * gcc.target/i386/avx512f-vpmovusqd-1.c: Also test > _mm512_mask_cvtusepi64_storeu_epi32. > * gcc.target/i386/avx512f-vpmovusqd-2.c: Ditto. > * gcc.target/i386/m128-check.h: Add checkVs, checkVb. OK for mainline if tested properly (you didn't say how the patch was tested). Thanks, Uros.