This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH][AVX512] Swap Yk and k constraints.
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: Ilya Tocar <tocarip dot intel at gmail dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>, Kirill Yukhin <kirill dot yukhin at gmail dot com>
- Date: Thu, 30 Jan 2014 17:11:03 +0100
- Subject: Re: [PATCH][AVX512] Swap Yk and k constraints.
- Authentication-results: sourceware.org; auth=none
- References: <20140130105437 dot GA105333 at msticlxl7 dot ims dot intel dot com>
On Thu, Jan 30, 2014 at 11:54 AM, Ilya Tocar <tocarip.intel@gmail.com> wrote:
> Turns out that for Icc meaning of Yk and k constraints
> (exposed through inline asm) is opposite to current GCC implementation.
> As Icc with such behavior was already releases and GCC wasn't. I propose
> to swap meaning of Yk and k constraints. Changes are pretty mechanical.
> Bootstraps/passes make check/SPEC2006. Ok for trunk?
>
> Here is ChangeLog:
>
> 2014-01-30 Ilya Tocar <ilya.tocar@intel.com>
>
> * config/i386/constraints.md (Yk): Swap meaning with k.
> * config/i386/i386.md (movhi_internal): Change Yk to k.
> (movqi_internal): Ditto.
> (*k<logic><mode>): Ditto.
> (*andhi_1): Ditto.
> (*andqi_1): Ditto.
> (kandn<mode>): Ditto.
> (*<code>hi_1): Ditto.
> (*<code>qi_1): Ditto.
> (kxnor<mode>): Ditto.
> (kortestzhi): Ditto.
> (kortestchi): Ditto.
> (kunpckhi): Ditto.
> (*one_cmplhi2_1): Ditto.
> (*one_cmplqi2_1): Ditto.
> * config/i386/sse.md (): Change k to Yk.
> (avx512f_load<mode>_mask): Ditto.
> (avx512f_blendm<mode>): Ditto.
> (avx512f_store<mode>_mask): Ditto.
> (avx512f_storeu<ssemodesuffix>512_mask): Ditto.
> (avx512f_storedqu<mode>_mask): Ditto.
> (avx512f_cmp<mode>3<mask_scalar_merge_name><round_saeonly_name>): Ditto.
> (avx512f_ucmp<mode>3<mask_scalar_merge_name>): Ditto.
> (avx512f_vmcmp<mode>3<round_saeonly_name>): Ditto.
> (avx512f_vmcmp<mode>3_mask<round_saeonly_name>): Ditto.
> (avx512f_maskcmp<mode>3): Ditto.
> (avx512f_fmadd_<mode>_mask<round_name>): Ditto.
> (avx512f_fmadd_<mode>_mask3<round_name>): Ditto.
> (avx512f_fmsub_<mode>_mask<round_name>): Ditto.
> (avx512f_fmsub_<mode>_mask3<round_name>): Ditto.
> (avx512f_fnmadd_<mode>_mask<round_name>): Ditto.
> (avx512f_fnmadd_<mode>_mask3<round_name>): Ditto.
> (avx512f_fnmsub_<mode>_mask<round_name>): Ditto.
> (avx512f_fnmsub_<mode>_mask3<round_name>): Ditto.
> (avx512f_fmaddsub_<mode>_mask<round_name>): Ditto.
> (avx512f_fmaddsub_<mode>_mask3<round_name>): Ditto.
> (avx512f_fmsubadd_<mode>_mask<round_name>): Ditto.
> (avx512f_fmsubadd_<mode>_mask3<round_name>): Ditto.
> (avx512f_vextract<shuffletype>32x4_1_maskm): Ditto.
> (vec_extract_lo_<mode>_maskm): Ditto.
> (vec_extract_hi_<mode>_maskm): Ditto.
> (avx512f_vternlog<mode>_mask): Ditto.
> (avx512f_fixupimm<mode>_mask<round_saeonly_name>): Ditto.
> (avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Ditto.
> (avx512f_<code><pmov_src_lower><mode>2_mask): Ditto.
> (avx512f_<code>v8div16qi2_mask): Ditto.
> (avx512f_<code>v8div16qi2_mask_store): Ditto.
> (avx512f_eq<mode>3<mask_scalar_merge_name>_1): Ditto.
> (avx512f_gt<mode>3<mask_scalar_merge_name>): Ditto.
> (avx512f_testm<mode>3<mask_scalar_merge_name>): Ditto.
> (avx512f_testnm<mode>3<mask_scalar_merge_name>): Ditto.
> (*avx512pf_gatherpf<mode>sf_mask): Ditto.
> (*avx512pf_gatherpf<mode>df_mask): Ditto.
> (*avx512pf_scatterpf<mode>sf_mask): Ditto.
> (*avx512pf_scatterpf<mode>df_mask): Ditto.
> (avx512cd_maskb_vec_dupv8di): Ditto.
> (avx512cd_maskw_vec_dupv16si): Ditto.
> (avx512f_vpermi2var<mode>3_maskz): Ditto.
> (avx512f_vpermi2var<mode>3_mask): Ditto.
> (avx512f_vpermi2var<mode>3_mask): Ditto.
> (avx512f_vpermt2var<mode>3_maskz): Ditto.
> (*avx512f_gathersi<mode>): Ditto.
> (*avx512f_gathersi<mode>_2): Ditto.
> (*avx512f_gatherdi<mode>): Ditto.
> (*avx512f_gatherdi<mode>_2): Ditto.
> (*avx512f_scattersi<mode>): Ditto.
> (*avx512f_scatterdi<mode>): Ditto.
> (avx512f_compress<mode>_mask): Ditto.
> (avx512f_compressstore<mode>_mask): Ditto.
> (avx512f_expand<mode>_mask): Ditto.
> * config/i386/subst.md (mask): Change k to Yk.
> (mask_scalar_merge): Ditto.
> (sd): Ditto.
>
> And for tests:
>
> 2014-01-30 Ilya Tocar <ilya.tocar@intel.com>
>
> * gcc.target/i386/avx512f-inline-asm.c: Swap Yk and k.
> * gcc.target/i386/avx512f-kmovw-1.c: Also allow k0.
OK.
Thanks,
Uros.