This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] x86: Update VFIXUPIMM* Intrinsics to align with the latest Intel SDM


Hi Uros and HJ,

I have updated the patch according to your remarks as attached.
Ok for trunk?

Thanks
Wei

    gcc/
    2018-11-2 Wei Xiao <wei3.xiao@intel.com>

        *config/i386/avx512fintrin.h: Update VFIXUPIMM* intrinsics.
        (_mm512_fixupimm_round_pd): Update parameters and builtin.
        (_mm512_maskz_fixupimm_round_pd): Ditto.
        (_mm512_fixupimm_round_ps): Ditto.
        (_mm512_maskz_fixupimm_round_ps): Ditto.
        (_mm_fixupimm_round_sd): Ditto.
        (_mm_maskz_fixupimm_round_sd): Ditto.
        (_mm_fixupimm_round_ss): Ditto.
        (_mm_maskz_fixupimm_round_ss): Ditto.
        (_mm512_fixupimm_pd): Ditto.
        (_mm512_maskz_fixupimm_pd): Ditto.
        (_mm512_fixupimm_ps): Ditto.
        (_mm512_maskz_fixupimm_ps): Ditto.
        (_mm_fixupimm_sd): Ditto.
        (_mm_maskz_fixupimm_sd): Ditto.
        (_mm_fixupimm_ss): Ditto.
        (_mm_maskz_fixupimm_ss): Ditto.
        (_mm512_mask_fixupimm_round_pd): Update builtin.
        (_mm512_mask_fixupimm_round_ps): Ditto.
        (_mm_mask_fixupimm_round_sd): Ditto.
        (_mm_mask_fixupimm_round_ss): Ditto.
        (_mm512_mask_fixupimm_pd): Ditto.
        (_mm512_mask_fixupimm_ps): Ditto.
        (_mm_mask_fixupimm_sd): Ditto.
        (_mm_mask_fixupimm_ss): Ditto.
        *config/i386/avx512vlintrin.h:
        (_mm256_fixupimm_pd): Update parameters and builtin.
        (_mm256_maskz_fixupimm_pd): Ditto.
        (_mm256_fixupimm_ps): Ditto.
        (_mm256_maskz_fixupimm_ps): Ditto.
        (_mm_fixupimm_pd): Ditto.
        (_mm_maskz_fixupimm_pd): Ditto.
        (_mm_fixupimm_ps): Ditto.
        (_mm_maskz_fixupimm_ps): Ditto.
        (_mm256_mask_fixupimm_pd): Update builtin.
        (_mm256_mask_fixupimm_ps): Ditto.
        (_mm_mask_fixupimm_pd): Ditto.
        (_mm_mask_fixupimm_ps): Ditto.
        *config/i386/i386-builtin-types.def: Add new types and remove
useless ones.
        *config/i386/i386-builtin.def: Update builtin definitions.
        *config/i386/i386.c: Handle new builtin types and remove useless ones.
        *config/i386/sse.md: Update VFIXUPIMM* patterns.
        (<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
        (<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
        (<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Update.
        (avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
        (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
        (avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Update.
        *config/i386/subst.md:
        (round_saeonly_sd_mask_operand4): Add new subst_attr.
        (round_saeonly_sd_mask_op4): Ditto.
        (round_saeonly_expand_operand5): Ditto.
        (round_saeonly_expand): Update.

    gcc/testsuite
    2018-11-2 Wei Xiao <wei3.xiao@intel.com>

        *gcc.target/i386/avx-1.c: Update tests for VFIXUPIMM* intrinsics.
        *gcc.target/i386/avx512f-vfixupimmpd-1.c: Ditto.
        *gcc.target/i386/avx512f-vfixupimmpd-2.c: Ditto.
        *gcc.target/i386/avx512f-vfixupimmps-1.c: Ditto.
        *gcc.target/i386/avx512f-vfixupimmsd-1.c: Ditto.
        *gcc.target/i386/avx512f-vfixupimmsd-2.c: Ditto.
        *gcc.target/i386/avx512f-vfixupimmss-1.c: Ditto.
        *gcc.target/i386/avx512f-vfixupimmss-2.c: Ditto.
        *gcc.target/i386/avx512vl-vfixupimmpd-1.c: Ditto.
        *gcc.target/i386/avx512vl-vfixupimmps-1.c: Ditto.
        *gcc.target/i386/sse-13.c: Ditto.
        *gcc.target/i386/sse-14.c: Ditto.
        *gcc.target/i386/sse-22.c: Ditto.
        *gcc.target/i386/sse-23.c: Ditto.
        *gcc.target/i386/testimm-10.c: Ditto.
        *gcc.target/i386/testround-1.c: Ditto.
Uros Bizjak <ubizjak@gmail.com> 于2018年11月2日周五 上午1:27写道:
>
> On Tue, Oct 30, 2018 at 10:12 AM Wei Xiao <wei.william.xiao@gmail.com> wrote:
> >
> > Hi,
> >
> > The attached patch updates VFIXUPIMM* Intrinsics to align with the
> > latest Intel® 64 and IA-32 Architectures Software Developer’s Manual
> > (SDM).
> > Tested with GCC regression test on x86, no regression.
>
> A couple of remarks:
>
> -_mm512_fixupimm_round_pd (__m512d __A, __m512d __B, __m512i __C,
> +_mm512_fixupimm_round_pd (__m512d __B, __m512i __C,
>
>  _mm512_mask_fixupimm_round_pd (__m512d __A, __mmask8 __U, __m512d __B,
>                     __m512i __C, const int __imm, const int __R)
>
> Some kind of the convention in avx512fintrin.h is that arguments are
> named like this:
>
> [ __m512. __W,] __mmask. __U, __m512x __A, __m512x __B, ..., const int
> _imm, const int __R]. Can we please keep the same approach here? I'
> mostly concerned that argument names don't start with __A.
>
> -BDESC (OPTION_MASK_ISA_AVX512VL, CODE_FOR_avx512vl_fixupimmv4df_mask,
> "__builtin_ia32_fixupimmpd256_mask", IX86_BUILTIN_FIXUPIMMPD256_MASK,
> UNKNOWN, (int) V4DF_FTYPE_V4DF_V4DF_V4DI_INT_UQI)
> ...
>
> You are removing the only users of e.g.
> V4DF_FTYPE_V4DF_V4DF_V4DI_INT_UQI (and other definitions). If there
> are no users left, can you also remove the relevant definitions?
>
> > Is it ok?
>
> Please repost the patch with above remarks addressed. These builtins
> are mostly Intel affair, so in the hope that extensive testsuite in
> this area catches all issues, I will just just rubber-stamp the
> updated patch OK and leave the final approval to HJ.
>
> Uros.
>
> > Thanks
> > Wei
> >
> >     gcc/
> >     2018-10-30 Wei Xiao <wei3.xiao@intel.com>
> >
> >         *config/i386/avx512fintrin.h: Update VFIXUPIMM* intrinsics.
> >         (_mm512_fixupimm_round_pd): Update parameters and builtin.
> >         (_mm512_maskz_fixupimm_round_pd): Ditto.
> >         (_mm512_fixupimm_round_ps): Ditto.
> >         (_mm512_maskz_fixupimm_round_ps): Ditto.
> >         (_mm_fixupimm_round_sd): Ditto.
> >         (_mm_maskz_fixupimm_round_sd): Ditto.
> >         (_mm_fixupimm_round_ss): Ditto.
> >         (_mm_maskz_fixupimm_round_ss): Ditto.
> >         (_mm512_fixupimm_pd): Ditto.
> >         (_mm512_maskz_fixupimm_pd): Ditto.
> >         (_mm512_fixupimm_ps): Ditto.
> >         (_mm512_maskz_fixupimm_ps): Ditto.
> >         (_mm_fixupimm_sd): Ditto.
> >         (_mm_maskz_fixupimm_sd): Ditto.
> >         (_mm_fixupimm_ss): Ditto.
> >         (_mm_maskz_fixupimm_ss): Ditto.
> >         (_mm512_mask_fixupimm_round_pd): Update builtin.
> >         (_mm512_mask_fixupimm_round_ps): Ditto.
> >         (_mm_mask_fixupimm_round_sd): Ditto.
> >         (_mm_mask_fixupimm_round_ss): Ditto.
> >         (_mm512_mask_fixupimm_pd): Ditto.
> >         (_mm512_mask_fixupimm_ps): Ditto.
> >         (_mm_mask_fixupimm_sd): Ditto.
> >         (_mm_mask_fixupimm_ss): Ditto.
> >         *config/i386/avx512vlintrin.h:
> >         (_mm256_fixupimm_pd): Update parameters and builtin.
> >         (_mm256_maskz_fixupimm_pd): Ditto.
> >         (_mm256_fixupimm_ps): Ditto.
> >         (_mm256_maskz_fixupimm_ps): Ditto.
> >         (_mm_fixupimm_pd): Ditto.
> >         (_mm_maskz_fixupimm_pd): Ditto.
> >         (_mm_fixupimm_ps): Ditto.
> >         (_mm_maskz_fixupimm_ps): Ditto.
> >         (_mm256_mask_fixupimm_pd): Update builtin.
> >         (_mm256_mask_fixupimm_ps): Ditto.
> >         (_mm_mask_fixupimm_pd): Ditto.
> >         (_mm_mask_fixupimm_ps): Ditto.
> >         *config/i386/i386-builtin-types.def: Add new builtin types.
> >         *config/i386/i386-builtin.def: Update builtin definitions.
> >         *config/i386/i386.c: Handle new builtin types.
> >         *config/i386/sse.md: Update VFIXUPIMM* patterns.
> >         (<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
> >         (<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
> >         (<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Update.
> >         (avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
> >         (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
> >         (avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Update.
> >         *config/i386/subst.md:
> >         (round_saeonly_sd_mask_operand4): Add new subst_attr.
> >         (round_saeonly_sd_mask_op4): Ditto.
> >         (round_saeonly_expand_operand5): Ditto.
> >         (round_saeonly_expand): Update.
> >
> >     gcc/testsuite
> >     2018-10-30 Wei Xiao <wei3.xiao@intel.com>
> >
> >         *gcc.target/i386/avx-1.c: Update tests for VFIXUPIMM* intrinsics.
> >         *gcc.target/i386/avx512f-vfixupimmpd-1.c: Ditto.
> >         *gcc.target/i386/avx512f-vfixupimmpd-2.c: Ditto.
> >         *gcc.target/i386/avx512f-vfixupimmps-1.c: Ditto.
> >         *gcc.target/i386/avx512f-vfixupimmsd-1.c: Ditto.
> >         *gcc.target/i386/avx512f-vfixupimmsd-2.c: Ditto.
> >         *gcc.target/i386/avx512f-vfixupimmss-1.c: Ditto.
> >         *gcc.target/i386/avx512f-vfixupimmss-2.c: Ditto.
> >         *gcc.target/i386/avx512vl-vfixupimmpd-1.c: Ditto.
> >         *gcc.target/i386/avx512vl-vfixupimmps-1.c: Ditto.
> >         *gcc.target/i386/sse-13.c: Ditto.
> >         *gcc.target/i386/sse-14.c: Ditto.
> >         *gcc.target/i386/sse-22.c: Ditto.
> >         *gcc.target/i386/sse-23.c: Ditto.
> >         *gcc.target/i386/testimm-10.c: Ditto.
> >         *gcc.target/i386/testround-1.c: Ditto.

Attachment: update-vfixupimm-v2.diff
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]