Hi,
This patch enables VPSHLD instruction. The doc for isaset and instruction: 
https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

Ok for trunk?

gcc/
        config/i386/avx512vbmi2intrin.h (_mm512_shldi_epi16,
        _mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16, _mm512_shldi_epi32,
        _mm512_mask_shldi_epi32, _mm512_maskz_shldi_epi32, _mm512_shldi_epi64,
        _mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): New intrinsics.
        config/i386/avx512vbmi2vlintrin.h (_mm256_shldi_epi16,
        _mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16,
        _mm256_mask_shldi_epi32, _mm256_maskz_shldi_epi32, _mm256_shldi_epi32,
        _mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64, _mm256_shldi_epi64,
        _mm_mask_shldi_epi16, _mm_maskz_shldi_epi16, _mm_shldi_epi16,
        _mm_mask_shldi_epi32, _mm_maskz_shldi_epi32, _mm_shldi_epi32,
        _mm_mask_shldi_epi64, _mm_maskz_shldi_epi64, _mm_shldi_epi64): Ditto.
        config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_INT,
        V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT, V16SI_FTYPE_V16SI_V16SI_INT,
        V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT,
        V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT, V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT,
        V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT,
        V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT,
        V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT,
        V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT,
        V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT): New types.
        config/i386/i386-builtin.def (__builtin_ia32_vpshld_v32hi,
        __builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshld_v16hi,
        __builtin_ia32_vpshld_v16hi_mask, __builtin_ia32_vpshld_v8hi,
        __builtin_ia32_vpshld_v8hi_mask, __builtin_ia32_vpshld_v16si,
        __builtin_ia32_vpshld_v16si_mask, __builtin_ia32_vpshld_v8si,
        __builtin_ia32_vpshld_v8si_mask, __builtin_ia32_vpshld_v4si,
        __builtin_ia32_vpshld_v4si_mask, __builtin_ia32_vpshld_v8di,
        __builtin_ia32_vpshld_v8di_mask, __builtin_ia32_vpshld_v4di,
        __builtin_ia32_vpshld_v4di_mask, __builtin_ia32_vpshld_v2di,
        __builtin_ia32_vpshld_v2di_mask): New builtins.
        config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
        config/i386/sse.md (vpshld_<mode><mask_name>): New pattern.

gcc/testsuite/
        gcc.target/i386/avx-1.c: Handle new intrinics.
        gcc.target/i386/sse-13.c: Ditto.
        gcc.target/i386/sse-23.c: Ditto.
        gcc.target/i386/avx512f-vpshld-1.c: New test.
        gcc.target/i386/avx512f-vpshldd-2.c: Ditto.
        gcc.target/i386/avx512f-vpshldq-2.c: Ditto.
        gcc.target/i386/avx512vl-vpshld-1.c: Ditto.
        gcc.target/i386/avx512vl-vpshldd-2.c: Ditto.
        gcc.target/i386/avx512vl-vpshldq-2.c: Ditto.

Attachment: 0006-VPSHLD-instruction.patch
Description: 0006-VPSHLD-instruction.patch

Reply via email to