On Thu, Jan 30, 2014 at 11:54 AM, Ilya Tocar <tocarip.in...@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.to...@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.to...@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.