avx512fintrin.h (_mm512_mask_cvtepi32_storeu_epi8): New.
authorIlya Tocar <ilya.tocar@intel.com>
Mon, 27 Jan 2014 19:25:32 +0000 (19:25 +0000)
committerKirill Yukhin <kyukhin@gcc.gnu.org>
Mon, 27 Jan 2014 19:25:32 +0000 (19:25 +0000)
commitd256b8669e87efe692edcb1ae052cb0d2a839d29
tree9a7af5033a998b0cdef32beb05ea3fbeb00e7c99
parente711dffdfe0561e494636ea95abad5a3b419e6d9
avx512fintrin.h (_mm512_mask_cvtepi32_storeu_epi8): New.

gcc/
* 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.

testsuite/
* 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.

From-SVN: r207150
76 files changed:
gcc/ChangeLog
gcc/config/i386/avx512fintrin.h
gcc/config/i386/i386-builtin-types.def
gcc/config/i386/i386.c
gcc/config/i386/sse.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/avx512f-mask-type.h
gcc/testsuite/gcc.target/i386/avx512f-vexpandpd-1.c
gcc/testsuite/gcc.target/i386/avx512f-vexpandpd-2.c
gcc/testsuite/gcc.target/i386/avx512f-vexpandps-1.c
gcc/testsuite/gcc.target/i386/avx512f-vexpandps-2.c
gcc/testsuite/gcc.target/i386/avx512f-vmovdqu64-1.c
gcc/testsuite/gcc.target/i386/avx512f-vmovdqu64-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpcmpged-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpged-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeq-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeq-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeud-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeud-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeuq-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeuq-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpled-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpled-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpleq-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpleq-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpleud-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpleud-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpleuq-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpleuq-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpltd-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpltd-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpltq-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpltq-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpltud-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpltud-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpltuq-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpltuq-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqd-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqd-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqq-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqq-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequd-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequd-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequq-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequq-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vpmovdb-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovdb-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovdw-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovdw-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovqb-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovqb-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovqd-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovqd-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovqw-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovqw-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovsdb-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovsdb-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovsdw-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovsdw-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovsqb-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovsqb-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovsqd-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovsqd-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovsqw-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovsqw-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovusdb-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovusdb-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovusdw-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovusdw-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovusqb-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovusqb-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovusqd-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovusqd-2.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovusqw-1.c
gcc/testsuite/gcc.target/i386/avx512f-vpmovusqw-2.c
gcc/testsuite/gcc.target/i386/m128-check.h