summaryrefslogtreecommitdiff
path: root/gcc/config/i386/subst.md
Commit message (Collapse)AuthorAgeFilesLines
* Add missing intrinsics for VGETMANT[SD,SS] and VGETEXP[SD,SS]kyukhin2017-07-061-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ * config/i386/avx512fintrin.h (_mm_mask_getexp_round_ss, _mm_maskz_getexp_round_ss, _mm_mask_getexp_round_sd, _mm_maskz_getexp_round_sd, _mm_mask_getmant_round_sd, _mm_maskz_getmant_round_sd, _mm_mask_getmant_round_ss, _mm_maskz_getmant_round_ss, _mm_mask_getexp_ss, _mm_maskz_getexp_ss, _mm_mask_getexp_sd, _mm_maskz_getexp_sd, _mm_mask_getmant_sd, _mm_maskz_getmant_sd, _mm_mask_getmant_ss, _mm_maskz_getmant_ss): New intrinsics. (__builtin_ia32_getexpss128_mask): Changed to ... __builtin_ia32_getexpss128_round ... this. (__builtin_ia32_getexpsd128_mask): Changed to ... __builtin_ia32_getexpsd128_round ... this. * config/i386/i386-builtin-types.def ((V2DF, V2DF, V2DF, INT, V2DF, UQI, INT), (V4SF, V4SF, V4SF, INT, V4SF, UQI, INT)): New function type aliases. * config/i386/i386-builtin.def (__builtin_ia32_getexpsd_mask_round, __builtin_ia32_getexpss_mask_round, __builtin_ia32_getmantsd_mask_round, __builtin_ia32_getmantss_mask_round): New builtins. * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_INT_V2DF_UQI_INT, V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT): Handle new types. (CODE_FOR_avx512f_vgetmantv2df_mask_round, CODE_FOR_avx512f_vgetmantv4sf_mask_round): New cases. * config/i386/sse.md (avx512f_sgetexp<mode><round_saeonly_name>): Changed to ... avx512f_sgetexp<mode><mask_scalar_name> <round_saeonly_scalar_name> ... this. (vgetexp<ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0| %0, %1, %2<round_saeonly_op3>}): Changed to ... vgetexp<ssescalarmodesuffix> \t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>| %0<mask_scalar_operand3>, %1, %2<round_saeonly_scalar_mask_op3>} ... this. (avx512f_vgetmant<mode><round_saeonly_name>): Changed to ... avx512f_vgetmant<mode><mask_scalar_name> <round_saeonly_scalar_name> ... this. (vgetmant<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0| %0, %1, %2<round_saeonly_op4>, %3}): Changed to ... vgetmant<ssescalarmodesuffix> \t{%3, <round_saeonly_scalar_mask_op4>%2, %1, %0<mask_scalar_operand4>| %0<mask_scalar_operand4>, %1, %2 <round_saeonly_scalar_mask_op4>, %3} ... this. * config/i386/subst.md (mask_scalar_operand4, round_saeonly_scalar_mask_operand4, round_saeonly_scalar_mask_op4, round_saeonly_scalar_nimm_predicate): New subst attributes. gcc/testsuite/ * gcc.target/i386/avx512f-vgetexpsd-1.c (_mm_mask_getexp_sd, _mm_maskz_getexp_sd, _mm_mask_getexp_round_sd, _mm_maskz_getexp_round_sd): Test new intrinsics. * gcc.target/i386/avx512f-vgetexpss-1.c (_mm_mask_getexp_ss, _mm_maskz_getexp_ss, _mm_mask_getexp_round_ss, _mm_maskz_getexp_round_ss): Ditto. * gcc.target/i386/avx512f-vgetmantsd-1.c (_mm_mask_getmant_sd, _mm_maskz_getmant_sd, _mm_mask_getmant_round_sd, _mm_maskz_getmant_round_sd): Ditto. * gcc.target/i386/avx512f-vgetmantss-1.c (_mm_mask_getmant_ss, _mm_maskz_getmant_ss, _mm_mask_getmant_round_ss, _mm_maskz_getmant_round_ss): Ditto. * gcc.target/i386/avx512f-vgetexpsd-2.c (_mm_mask_getexp_sd, _mm_maskz_getexp_sd, _mm_getexp_round_sd, _mm_mask_getexp_round_sd, _mm_maskz_getexp_round_sd): New runtime tests. * gcc.target/i386/avx512f-vgetexpss-2.c (_mm_mask_getexp_ss, _mm_maskz_getexp_ss, _mm_getexp_round_ss, _mm_mask_getexp_round_ss, _mm_maskz_getexp_round_ss): Ditto. * gcc.target/i386/avx512f-vgetmantsd-2.c (_mm_mask_getmant_sd, _mm_maskz_getmant_sd, _mm_getmant_round_sd, _mm_mask_getmant_round_sd, _mm_maskz_getmant_round_sd): Ditto. * gcc.target/i386/avx512f-vgetmantss-2.c (_mm_mask_getmant_ss, _mm_maskz_getmant_ss, _mm_getmant_round_ss, _mm_mask_getmant_round_ss, _mm_maskz_getmant_round_ss): Ditto. * gcc.target/i386/avx-1.c (__builtin_ia32_getexpsd_mask_round, __builtin_ia32_getexpss_mask_round, __builtin_ia32_getmantsd_mask_round, __builtin_ia32_getmantss_mask_round): Test new builtins. * gcc.target/i386/sse-13.c : Ditto. * gcc.target/i386/sse-23.c: Ditto. * gcc.target/i386/sse-14.c (_mm_maskz_getexp_round_sd, _mm_maskz_getexp_round_ss, _mm_mask_getmant_round_sd, _mm_maskz_getmant_round_sd, _mm_mask_getmant_round_ss, _mm_maskz_getmant_round_ss, _mm_mask_getexp_round_sd, _mm_mask_getexp_round_ss): Test new intrinsics. * gcc.target/i386/testround-1.c: Ditto. * gcc.target/i386/sse-22.c (_mm_maskz_getmant_round_sd, _mm_maskz_getmant_round_ss, _mm_mask_getmant_round_sd, _mm_mask_getmant_round_ss): Test new intrinsics * gcc.target/i386/testimm-10.c (_mm_mask_getmant_sd, _mm_maskz_getmant_sd, _mm_mask_getmant_ss, _mm_maskz_getmant_ss): Test new intrinsics. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250018 138bc75d-0d04-0410-961f-82ee72b054a4
* Scalar mask and round RTL templateskyukhin2017-07-051-0/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ * config/i386/subst.md (mask_scalar, round_scalar, round_saeonly_scalar): New meta-templates. (mask_scalar_name, mask_scalar_operand3, round_scalar_name, round_scalar_mask_operand3, round_scalar_mask_op3, round_scalar_constraint, round_scalar_prefix, round_saeonly_scalar_name, round_saeonly_scalar_mask_operand3, round_saeonly_scalar_mask_op3, round_saeonly_scalar_constraint, round_saeonly_scalar_prefix): New subst attribute. * config/i386/sse.md (<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): Renamed to ... <sse>_vm<plusminus_insn><mode>3<mask_scalar_name> <round_scalar_name> ... this. (<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): Renamed to ... <sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name> <round_scalar_name> ... this. (<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): Renamed to ... <sse>_vm<code><mode>3<mask_scalar_name> <round_saeonly_scalar_name> ... this. (v<plusminus_mnemonic><ssescalarmodesuffix> \t{<round_mask_op3>%2, %1, %0<mask_operand3>| %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ... v<plusminus_mnemonic><ssescalarmodesuffix> \t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>| %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this. (v<multdiv_mnemonic><ssescalarmodesuffix> \t{<round_mask_op3>%2, %1, %0<mask_operand3>| %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ... v<multdiv_mnemonic><ssescalarmodesuffix> \t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>| %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this. (v<maxmin_float><ssescalarmodesuffix> \t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>| %0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}): Changed to ... v<maxmin_float><ssescalarmodesuffix> \t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>| %0<mask_scalar_operand3>, %1, %<iptr>2 <round_saeonly_scalar_mask_op3>} ... this. gcc/testsuite/ * gcc.target/i386/avx512f-vaddsd-3.c: New test for mask 0 verification. * gcc.target/i386/avx512f-vaddss-3.c: Ditto. * gcc.target/i386/avx512f-vdivsd-3.c: Ditto. * gcc.target/i386/avx512f-vdivss-3.c: Ditto. * gcc.target/i386/avx512f-vmaxsd-3.c: Ditto. * gcc.target/i386/avx512f-vmaxss-3.c: Ditto. * gcc.target/i386/avx512f-vminsd-3.c: Ditto. * gcc.target/i386/avx512f-vminss-3.c: Ditto. * gcc.target/i386/avx512f-vmulsd-3.c: Ditto. * gcc.target/i386/avx512f-vmulss-3.c: Ditto. * gcc.target/i386/avx512f-vsubsd-3.c: Ditto. * gcc.target/i386/avx512f-vsubss-3.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250006 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix rounding pattern similar to PR73350.kyukhin2017-06-201-4/+5
| | | | | | | | | | | | gcc/ * config/i386/i386.c: Fix rounding expand for new pattern. * config/i386/subst.md: Fix pattern (parallel -> unspec). gcc/testsuite/ * gcc.target/i386/pr73350-2.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249423 138bc75d-0d04-0410-961f-82ee72b054a4
* [PR73350][PR80862] Improve subst for RC-capable insns.kyukhin2017-06-081-5/+6
| | | | | | | | | | | | | | | PR target/73350,80862 gcc/ * config/i386/subst.md (round): Fix round pattern. * config/i386/i386.c (ix86_erase_embedded_rounding): Fix erasing rounding for the fixed pattern. gcc/testsuite/ * gcc.target/i386/pr73350.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249009 138bc75d-0d04-0410-961f-82ee72b054a4
* Update copyright years.jakub2017-01-011-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243994 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/72867uros2016-08-151-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/i386/sse.md (<code><mode>3<mask_name><round_saeonly_name>): Emit ieee_<ieee_maxmin><mode>3<mask_name><round_saeonly_name> for !flag_finite_math_only or flag_signed_zeros. (*<code><mode>3<mask_name><round_saeonly_name>): Rename from *<code><mode>3_finite<mask_name><round_saeonly_name>. Do not depend on flag_finite_math_only. (ieee_<ieee_maxmin><mode>3<mask_name><round_saeonly_name>): New insn pattern. (*<code><mode>3<mask_name><round_saeonly_name>): Remove. (*ieee_smin<mode>3): Ditto. (*ieee_smax<mode>3): Ditto. * config/i386/mmx.md (mmx_<code>v2sf3): Emit mmx_ieee_<ieee_maxmin>v2sf3 for !flag_finite_math_only or flag_signed_zeros. (*mmx_<code>v2sf3): Rename from *mmx_<code>v2sf3_finite. Do not depend on flag_finite_math_only. (mmx_ieee_<ieee_maxmin>v2sf3): New insn pattern. (*mmx_<code>v2sf3): Remove. * config/i386/subst.md (round_saeonly_mask_arg3): New subst attribute. * config/i386/i386.c (ix86_expand_sse_fp_mimnax): Check flag_signed_zeros instead of !flag_unsafe_math_optimizations. testsuite/ChangeLog: PR target/72867 * gcc.target/i386/pr72867.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239487 138bc75d-0d04-0410-961f-82ee72b054a4
* Add round_nimm_scalar_predicate and use xBmhjl2016-01-071-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add round_nimm_scalar_predicate for scalar SSE integer to floating point conversions since round_nimm_predicate is for vector operand. round_constraint can't be used on vector SSE patterns since it is mapped to "vm". The "xBm" constraint must be used in this case. gcc/ PR target/69171 * config/i386/sse.md (<sse>_sqrt<mode>2<mask_name><round_name>): Use the "xBm" constraint. (float<sseintvecmodelower><mode>2<mask_name><round_name): Likewise. (sse_cvtsi2ss<round_name>): Use round_nimm_scalar_predicate. (sse_cvtsi2ssq<round_name>): Likewise. (sse_cvtss2si<round_name>): Likewise. (sse_cvtss2siq<round_name>): Likewise. (sse2_cvtsi2sdq<round_name>): Likewise. (sse2_cvtsd2si<round_name>): Likewise. (sse2_cvtsd2siq<round_name>): Likewise. * config/i386/subst.md (round_nimm_scalar_predicate): New predicate. gcc/testsuite/ PR target/69171 * gcc.target/i386/pr69171-1.c: New test. * gcc.target/i386/pr69171-2.c: Likewise. * gcc.target/i386/pr69171-3.c: Likewise. * gcc.target/i386/pr69171-4.c: Likewise. * gcc.target/i386/pr69171-5.c: Likewise. * gcc.target/i386/pr69171-6.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232126 138bc75d-0d04-0410-961f-82ee72b054a4
* Use vector_operand on SSE with 16b memory operandhjl2016-01-051-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add vector_operand, which is vector_memory_operand or register_operand, and use it, instead of nonimmediate_operand, in SSE patterns with 16-byte memory operand. gcc/ PR target/68991 * config/i386/i386.c (ix86_expand_vector_logical_operator): Replace nonimmediate_operand with vector_operand. * config/i386/predicates.md (vector_operand): New predicate. (general_vector_operand): Replace nonimmediate_operand with vector_operand. * config/i386/sse.md: Replace nonimmediate_operand with vector_operand and m constraint with Bm constraint on SSE patterns with 16-byte memory operand. * config/i386/subst.md (round_nimm_predicate): Replace nonimmediate_operand with vector_operand. (round_saeonly_nimm_predicate): Likewise. (round_saeonly_nimm_scalar_predicate): New. gcc/testsuite/ PR target/68991 * gcc.target/i386/pr68991.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232088 138bc75d-0d04-0410-961f-82ee72b054a4
* Update copyright years.jakub2016-01-041-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232055 138bc75d-0d04-0410-961f-82ee72b054a4
* Update copyright years.jakub2015-01-051-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219188 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/ienkovich2014-12-031-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/i386/constraints.md (Yr): New. * config/i386/i386.h (reg_class): Add NO_REX_SSE_REGS. (REG_CLASS_NAMES): Likewise. (REG_CLASS_CONTENTS): Likewise. * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add alternatives which use only NO_REX_SSE_REGS. (vec_set<mode>_0): Likewise. (*vec_setv4sf_sse4_1): Likewise. (sse4_1_insertps): Likewise. (*sse4_1_extractps): Likewise. (*sse4_1_mulv2siv2di3<mask_name>): Likewise. (*<sse4_1_avx2>_mul<mode>3<mask_name>): Likewise. (*sse4_1_<code><mode>3<mask_name>): Likewise. (*sse4_1_<code><mode>3): Likewise. (*sse4_1_eqv2di3): Likewise. (sse4_2_gtv2di3): Likewise. (*vec_extractv4si): Likewise. (*vec_concatv2si_sse4_1): Likewise. (vec_concatv2di): Likewise. (<sse4_1>_blend<ssemodesuffix><avxsizesuffix>): Likewise. (<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>): Likewise. (<sse4_1>_dp<ssemodesuffix><avxsizesuffix>): Likewise. (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise. (<sse4_1_avx2>_mpsadbw): Likewise. (<sse4_1_avx2>packusdw<mask_name>): Likewise. (<sse4_1_avx2>_pblendvb): Likewise. (sse4_1_pblendw): Likewise. (sse4_1_phminposuw): Likewise. (sse4_1_<code>v8qiv8hi2<mask_name>): Likewise. (sse4_1_<code>v4qiv4si2<mask_name>): Likewise. (sse4_1_<code>v4hiv4si2<mask_name>): Likewise. (sse4_1_<code>v2qiv2di2<mask_name>): Likewise. (sse4_1_<code>v2hiv2di2<mask_name>): Likewise. (sse4_1_<code>v2siv2di2<mask_name>): Likewise. (sse4_1_ptest): Likewise. (<sse4_1>_round<ssemodesuffix><avxsizesuffix>): Likewise. (sse4_1_round<ssescalarmodesuffix>): Likewise. * config/i386/subst.md (mask_prefix4): New. * config/i386/x86-tune.def (X86_TUNE_AVOID_4BYTE_PREFIXES): New. gcc/testsuites/ * gcc.target/i386/sse2-init-v2di-2.c: Adjust to changed vec_concatv2di template. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218303 138bc75d-0d04-0410-961f-82ee72b054a4
* AVX-512. Extend extract insn patterns.kyukhin2014-09-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ * config/i386/i386.c (ix86_expand_vector_extract): Handle V32HI and V64QI modes. * config/i386/sse.md (define_mode_iterator VI48F_256): New. (define_mode_attr extract_type): Ditto. (define_mode_attr extract_suf): Ditto. (define_mode_iterator AVX512_VEC): Ditto. (define_expand "<extract_type>_vextract<shuffletype><extract_suf>_mask"): Use AVX512_VEC. (define_insn "avx512dq_vextract<shuffletype>64x2_1_maskm"): New. (define_insn "<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name>"): Ditto. (define_mode_attr extract_type_2): Ditto. (define_mode_attr extract_suf_2): Ditto. (define_mode_iterator AVX512_VEC_2): Ditto. (define_expand "<extract_type_2>_vextract<shuffletype><extract_suf_2>_mask"): Use AVX512_VEC_2 mode iterator. (define_insn "vec_extract_hi_<mode>_maskm"): Ditto. (define_expand "avx512vl_vextractf128<mode>"): Ditto. (define_insn_and_split "vec_extract_lo_<mode>"): Delete. (define_insn "vec_extract_lo_<mode><mask_name>"): New. (define_split for V16FI mode): Ditto. (define_insn_and_split "vec_extract_lo_<mode>"): Delete. (define_insn "vec_extract_lo_<mode><mask_name>"): New. (define_split for VI8F_256 mode): Ditto. (define_insn "vec_extract_hi_<mode><mask_name>"): Add masking. (define_insn_and_split "vec_extract_lo_<mode>"): Delete. (define_insn "vec_extract_lo_<mode><mask_name>"): New. (define_split for VI4F_256 mode): Ditto. (define_insn "vec_extract_lo_<mode>_maskm"): Ditto. (define_insn "vec_extract_hi_<mode>_maskm"): Ditto. (define_insn "vec_extract_hi_<mode><mask_name>"): Add masking. (define_mode_iterator VEC_EXTRACT_MODE): Add V64QI and V32HI modes. (define_insn "vcvtph2ps<mask_name>"): Fix pattern condition. (define_insn "avx512f_vextract<shuffletype>32x4_1_maskm"): Ditto. (define_insn "<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name>"): Update `type' attribute, remove explicit `memory' attribute calculation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215296 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/kyukhin2014-08-221-0/+1
| | | | | | | | | | | | | | | | | * config/i386/subst.md (define_subst_attr "mask_avx512bw_condition"): New. * config/i386/sse.md (define_mode_iterator VI248_AVX2): Delete. (define_mode_iterator VI2_AVX2_AVX512BW): New. (define_mode_iterator VI48_AVX2): Ditto. (define_insn <shift_insn><mode>3): Delete. (define_insn "<shift_insn><mode>3<mask_name>" with VI2_AVX2_AVX512BW): New. (define_insn "<shift_insn><mode>3<mask_name>" with VI48_AVX2): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214310 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/kyukhin2014-08-141-9/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/i386/sse.md: Allow V64QI, V32QI, V32HI, V4HI modes. * config/i386/subst.md (define_mode_iterator SUBST_V): Update. (define_mode_iterator SUBST_A): Ditto. (define_subst_attr "mask_operand7"): New. (define_subst_attr "mask_operand10"): New. (define_subst_attr "mask_operand_arg34") : New. (define_subst_attr "mask_expand_op3"): New. (define_subst_attr "mask_mode512bit_condition"): Handle TARGET_AVX512VL. (define_subst_attr "sd_mask_mode512bit_condition"): Ditto. (define_subst_attr "mask_avx512vl_condition"): New. (define_subst_attr "round_mask_operand4"): Ditto. (define_subst_attr "round_mask_scalar_op3"): Delete. (define_subst_attr "round_mask_op4"): New. (define_subst_attr "round_mode512bit_condition"): Allow V8DImode, V16SImode. (define_subst_attr "round_modev8sf_condition"): New. (define_subst_attr "round_modev4sf_condition"): GET_MODE instead of <MODE>mode. (define_subst_attr "round_saeonly_mask_operand4"): New. (define_subst_attr "round_saeonly_mask_op4"): New. (define_subst_attr "round_saeonly_mode512bit_condition"): Allow V8DImode, V16SImode. (define_subst_attr "round_saeonly_modev8sf_condition"): New. (define_subst_attr "mask_expand4_name" "mask_expand4"): New. (define_subst_attr "mask_expand4_args"): New. (define_subst "mask_expand4"): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@213965 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/kyukhin2014-01-311-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/i386/avx512fintrin.h (_MM_FROUND_TO_NEAREST_INT), (_MM_FROUND_TO_NEG_INF), (_MM_FROUND_TO_POS_INF), (_MM_FROUND_TO_ZERO), (_MM_FROUND_CUR_DIRECTION): Are already defined in smmintrin.h, remove them. (_MM_FROUND_NO_EXC): Same as above, bit also wrong value. * config/i386/i386.c (ix86_print_operand): Split sae and rounding. * config/i386/i386.md (ROUND_SAE): Fix value. * config/i386/predicates.md (const_4_or_8_to_11_operand): New. (const48_operand): New. * config/i386/subst.md (round), (round_expand): Use const_4_or_8_to_11_operand. (round_saeonly), (round_saeonly_expand): Use const48_operand. gcc/testsuite/ * gcc.target/i386/avx-1.c: Use correct rounding values. * gcc.target/i386/avx512f-vaddpd-1.c: Ditto. * gcc.target/i386/avx512f-vaddps-1.c: Ditto. * gcc.target/i386/avx512f-vaddsd-1.c: Ditto. * gcc.target/i386/avx512f-vaddss-1.c: Ditto. * gcc.target/i386/avx512f-vcvtdq2ps-1.c: Ditto. * gcc.target/i386/avx512f-vcvtpd2dq-1.c: Ditto. * gcc.target/i386/avx512f-vcvtpd2ps-1.c: Ditto. * gcc.target/i386/avx512f-vcvtpd2udq-1.c: Ditto. * gcc.target/i386/avx512f-vcvtps2dq-1.c: Ditto. * gcc.target/i386/avx512f-vcvtps2udq-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2si-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2si64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2usi-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2usi64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsi2sd64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsi2ss-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsi2ss64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtss2si-1.c: Ditto. * gcc.target/i386/avx512f-vcvtss2si64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtss2usi-1.c: Ditto. * gcc.target/i386/avx512f-vcvtss2usi64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtudq2ps-1.c: Ditto. * gcc.target/i386/avx512f-vcvtusi2sd64-1.c: Ditto. * gcc.target/i386/avx512f-vcvtusi2ss-1.c: Ditto. * gcc.target/i386/avx512f-vcvtusi2ss64-1.c: Ditto. * gcc.target/i386/avx512f-vdivpd-1.c: Ditto. * gcc.target/i386/avx512f-vdivps-1.c: Ditto. * gcc.target/i386/avx512f-vdivsd-1.c: Ditto. * gcc.target/i386/avx512f-vdivss-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXpd-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXps-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddsubXXXpd-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddsubXXXps-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXpd-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXps-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubaddXXXpd-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubaddXXXps-1.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXpd-1.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXps-1.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXpd-1.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXps-1.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vmulpd-1.c: Ditto. * gcc.target/i386/avx512f-vmulps-1.c: Ditto. * gcc.target/i386/avx512f-vmulsd-1.c: Ditto. * gcc.target/i386/avx512f-vmulss-1.c: Ditto. * gcc.target/i386/avx512f-vscalefpd-1.c: Ditto. * gcc.target/i386/avx512f-vscalefps-1.c: Ditto. * gcc.target/i386/avx512f-vscalefsd-1.c: Ditto. * gcc.target/i386/avx512f-vscalefss-1.c: Ditto. * gcc.target/i386/avx512f-vsqrtpd-1.c: Ditto. * gcc.target/i386/avx512f-vsqrtps-1.c: Ditto. * gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto. * gcc.target/i386/avx512f-vsqrtss-1.c: Ditto. * gcc.target/i386/avx512f-vsubpd-1.c: Ditto. * gcc.target/i386/avx512f-vsubps-1.c: Ditto. * gcc.target/i386/avx512f-vsubsd-1.c: Ditto. * gcc.target/i386/avx512f-vsubss-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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207342 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/kyukhin2014-01-311-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. gcc/testsuite/ * gcc.target/i386/avx512f-inline-asm.c: Swap Yk and k. * gcc.target/i386/avx512f-kmovw-1.c: Also allow k0. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207341 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/kyukhin2014-01-141-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/i386/avx512erintrin.h (_mm_rcp28_round_sd): New. (_mm_rcp28_round_ss): Ditto. (_mm_rsqrt28_round_sd): Ditto. (_mm_rsqrt28_round_ss): Ditto. (_mm_rcp28_sd): Ditto. (_mm_rcp28_ss): Ditto. (_mm_rsqrt28_sd): Ditto. (_mm_rsqrt28_ss): Ditto. * config/i386/avx512fintrin.h (_mm512_stream_load_si512): Ditto. * config/i386/i386-builtin-types.def (V8DI_FTYPE_PV8DI): Ditto. * config/i386/i386.c (IX86_BUILTIN_MOVNTDQA512): Ditto. (IX86_BUILTIN_RCP28SD): Ditto. (IX86_BUILTIN_RCP28SS): Ditto. (IX86_BUILTIN_RSQRT28SD): Ditto. (IX86_BUILTIN_RSQRT28SS): Ditto. (bdesc_special_args): Define __builtin_ia32_movntdqa512, __builtin_ia32_rcp28sd_round, __builtin_ia32_rcp28ss_round, __builtin_ia32_rsqrt28sd_round, __builtin_ia32_rsqrt28ss_round. (ix86_expand_special_args_builtin): Expand new FTYPE. * config/i386/sse.md (define_mode_attr "sse4_1_avx2"): Expand to V8DI. (srcp14<mode>): Make insn unary. (avx512f_vmscalef<mode><round_name>): Use substed predicate. (avx512f_sgetexp<mode><round_saeonly_name>): Ditto. (avx512f_rndscale<mode><round_saeonly_name>): Ditto. (<sse4_1_avx2>_movntdqa): Extend to 512 bits. (avx512er_exp2<mode><mask_name><round_saeonly_name>): Fix rounding: make it SAE only. (<mask_codefor>avx512er_rcp28<mode><mask_name><round_saeonly_name>): Ditto. (<mask_codefor>avx512er_rsqrt28<mode><mask_name><round_saeonly_name>): Ditto. (avx512er_vmrcp28<mode><round_saeonly_name>): Ditto. (avx512er_vmrsqrt28<mode><round_saeonly_name>): Ditto. (avx512f_getmant<mode><mask_name><round_saeonly_name>): Ditto. * config/i386/subst.md (round_saeonly_mask_scalar_operand3): Remove. (round_saeonly_mask_scalar_operand4): Ditto. (round_saeonly_mask_scalar_op3): Ditto. (round_saeonly_mask_scalar_op4): Ditto. gcc/testsuite/ * gcc.target/i386/avx-1.c: Fix __builtin_ia32_exp2ps_mask, __builtin_ia32_exp2pd_mask, __builtin_ia32_rcp28ps_mask, __builtin_ia32_rcp28pd_mask, __builtin_ia32_rsqrt28ps_mask, __builtin_ia32_rsqrt28pd_mask. Add __builtin_ia32_rcp28ss_round, __builtin_ia32_rcp28sd_round, __builtin_ia32_rsqrt28ss_round, __builtin_ia32_rsqrt28sd_round. * gcc.target/i386/avx512er-vexp2pd-1.c: Fix rounding mode. * gcc.target/i386/avx512er-vexp2ps-1.c: Ditto. * gcc.target/i386/avx512er-vrcp28pd-1.c: Ditto. * gcc.target/i386/avx512er-vrcp28ps-1.c: Ditto. * gcc.target/i386/avx512er-vrsqrt28pd-1.c: Ditto. * gcc.target/i386/avx512er-vrsqrt28ps-1.c: Ditto. * gcc.target/i386/avx512er-vrcp28sd-1.c: New. * gcc.target/i386/avx512er-vrcp28sd-2.c: Ditto. * gcc.target/i386/avx512er-vrcp28ss-1.c: Ditto. * gcc.target/i386/avx512er-vrcp28ss-2.c: Ditto. * gcc.target/i386/avx512er-vrsqrt28sd-1.c: Ditto. * gcc.target/i386/avx512er-vrsqrt28sd-2.c: Ditto. * gcc.target/i386/avx512er-vrsqrt28ss-1.c: Ditto. * gcc.target/i386/avx512er-vrsqrt28ss-2.c: Ditto. * gcc.target/i386/avx512f-vmovntdqa-1.c: Ditto. * gcc.target/i386/avx512f-vmovntdqa-2.c: Ditto. * gcc.target/i386/avx512f-vrcp14sd-2.c: Fix. * gcc.target/i386/avx512f-vrcp14ss-2.c: Ditto. * gcc.target/i386/sse-22.c: Extend with new built-ins, fix wrong rounding mode (see above). * gcc.target/i386/sse-23.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206596 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.md (MODE_SIZE): New mode attribute.jakub2014-01-031-2/+2
| | | | | | | | | | | | | | | | | (push splitter): Use <P:MODE_SIZE> instead of GET_MODE_SIZE (<P:MODE>mode). (lea splitter): Use <MODE_SIZE> instead of GET_MODE_SIZE (<MODE>mode). (mov -1, reg peephole2): Likewise. * config/i386/sse.md (*mov<mode>_internal, <sse>_storeu<ssemodesuffix><avxsizesuffix>, <sse2_avx_avx512f>_storedqu<mode>, <sse>_andnot<mode>3, *<code><mode>3, *andnot<mode>3<mask_name>, <mask_codefor><code><mode>3<mask_name>): Likewise. * config/i386/subst.md (mask_mode512bit_condition, sd_mask_mode512bit_condition): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206312 138bc75d-0d04-0410-961f-82ee72b054a4
* Update copyright years in gcc/rsandifo2014-01-021-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206289 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/kyukhin2013-12-311-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/i386/avx512fintrin.h (_mm_add_round_sd): New. (_mm_add_round_sd): Ditto. (_mm_add_round_ss): Ditto. (_mm_sub_round_sd): Ditto. (_mm_sub_round_ss): Ditto. (_mm_rcp14_sd): Ditto. (_mm_rcp14_ss): Ditto. (_mm_sqrt_round_sd): Ditto. (_mm_sqrt_round_ss): Ditto. (_mm_mul_round_sd): Ditto. (_mm_mul_round_ss): Ditto. (_mm_div_round_sd): Ditto. (_mm_div_round_ss): Ditto. (_mm_scalef_round_sd): Ditto. (_mm_scalef_round_ss): Ditto. (_mm_scalef_round_sd): Ditto. (_mm_scalef_round_ss): Ditto. (_mm_cvt_roundsd_ss): Ditto. (_mm_cvt_roundsd_sd): Ditto. (_mm_getexp_round_ss): Ditto. (_mm_getexp_round_sd): Ditto. (_mm_getmant_round_sd): Ditto. (_mm_getmant_round_ss): Ditto. (_mm_roundscale_round_ss): Ditto. (_mm_roundscale_round_sd): Ditto. (_mm_max_round_sd): Ditto. (_mm_max_round_ss): Ditto. (_mm_min_round_sd): Ditto. (_mm_min_round_ss): Ditto. (_mm_fmadd_round_sd): Ditto. (_mm_fmadd_round_ss): Ditto. (_mm_fmsub_round_sd): Ditto. (_mm_fmsub_round_ss): Ditto. (_mm_fnmadd_round_sd): Ditto. (_mm_fnmadd_round_ss): Ditto. (_mm_fnmsub_round_sd): Ditto. (_mm_fnmsub_round_ss): Ditto. (_mm_scalef_sd): Ditto. (_mm_scalef_ss): Ditto. (_mm_getexp_ss): Ditto. (_mm_getexp_sd): Ditto. (_mm_getmant_sd): Ditto. (_mm_getmant_ss): Ditto. (_mm_roundscale_ss): Ditto. (_mm_roundscale_sd): Ditto. * config/i386/i386-builtin-types.def: New types to support new built-ins: <V2DF, V2DF, V2DF, INT, INT>, <V4SF, V4SF, V4SF, INT, INT>, <(V4SF, V4SF, V2DF, INT>, <V2DF, V2DF, V4SF, INT>, <V4SF, V4SF, V4SF, V4SF, IN>. * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_ADDSD_ROUND, IX86_BUILTIN_ADDSS_ROUND, IX86_BUILTIN_CVTSD2SS_ROUND, IX86_BUILTIN_CVTSS2SD_ROUND, IX86_BUILTIN_DIVSD_ROUND, IX86_BUILTIN_GETEXPSD128, IX86_BUILTIN_DIVSS_ROUND, IX86_BUILTIN_GETEXPSS128, IX86_BUILTIN_GETMANTSD128, IX86_BUILTIN_GETMANTSS128, IX86_BUILTIN_MAXSD_ROUND, IX86_BUILTIN_MAXSS_ROUND, IX86_BUILTIN_MINSD_ROUND, IX86_BUILTIN_MINSS_ROUND, IX86_BUILTIN_MULSD_ROUND, IX86_BUILTIN_MULSS_ROUND, IX86_BUILTIN_RCP14SD, IX86_BUILTIN_RCP14SS, IX86_BUILTIN_RNDSCALESD, IX86_BUILTIN_RNDSCALESS, IX86_BUILTIN_RSQRT14SD, IX86_BUILTIN_RSQRT14SS, IX86_BUILTIN_SCALEFSD, IX86_BUILTIN_SCALEFSS, IX86_BUILTIN_SQRTSD_ROUND, IX86_BUILTIN_SQRTSS_ROUND, IX86_BUILTIN_SUBSD_ROUND, IX86_BUILTIN_SUBSS_ROUND, IX86_BUILTIN_VFMADDSD3_ROUND, IX86_BUILTIN_VFMADDSS3_ROUND, IX86_BUILTIN_VFMSUBSD3_MASK3, IX86_BUILTIN_VFMSUBSS3_MASK3. (builtin_description bdesc_args[]): Add __builtin_ia32_rcp14sd, __builtin_ia32_rcp14ss, __builtin_ia32_rsqrt14pd512_mask, __builtin_ia32_rsqrt14ps512_mask, __builtin_ia32_rsqrt14sd, __builtin_ia32_rsqrt14ss, __builtin_ia32_addsd_round, __builtin_ia32_addss_round, __builtin_ia32_cvtsd2ss_round, __builtin_ia32_cvtss2sd_round, __builtin_ia32_divsd_round, __builtin_ia32_divss_round, __builtin_ia32_getexpsd128_round, __builtin_ia32_getexpss128_round, __builtin_ia32_getmantsd_round, __builtin_ia32_getmantss_round, __builtin_ia32_maxsd_round, __builtin_ia32_maxss_round, __builtin_ia32_minsd_round, __builtin_ia32_minss_round, __builtin_ia32_mulsd_round, __builtin_ia32_mulss_round, __builtin_ia32_rndscalesd_round, __builtin_ia32_rndscaless_round, __builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round, __builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round, __builtin_ia32_subsd_round, __builtin_ia32_subss_round, __builtin_ia32_vfmaddsd3_round, __builtin_ia32_vfmaddss3_round. (ix86_expand_round_builtin): Expand new FTYPEs. * config/i386/sse.md (<sse>_vm<plusminus_insn><mode>3): Support EVEX's embedded rouding. (<sse>_vm<multdiv_mnemonic><mode>3): Ditto. (<sse>_vmsqrt<mode>2): Ditto. (<sse>_vm<code><mode>3): Ditto. (sse2_cvtsd2ss): Ditto. (sse2_cvtss2sd): Ditto. (*avx512f_vmscalef<mode>): Ditto. (avx512f_sgetexp<mode>): Ditto. (*avx512f_rndscale<mode>): Ditto. (avx512f_getmant<mode>): Ditto. (*srcp14<mode>): Make visible. (*rsqrt14<mode>): Ditto. * config/i386/subst.md (mask_mode512bit_condition): Fix mode calculation. (sd_mask_mode512bit_condition): Ditto. (round_mode512bit_condition): Ditto. (round_modev4sf_condition): Ditto. (round_mask_scalar_operand3): Remove. (round_prefix): New. (round_saeonly_op3): Ditto. (round_saeonly_prefix): Ditto. testsuite/ * gcc.target/i386/avx-1.c: Update for AVX-512 scalar insns. * gcc.target/i386/avx512f-vaddsd-1.c: New. * gcc.target/i386/avx512f-vaddss-1.c: Ditto. * gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto. * gcc.target/i386/avx512f-vcvtss2sd-1.c: Ditto. * gcc.target/i386/avx512f-vdivsd-1.c: Ditto. * gcc.target/i386/avx512f-vdivss-1.c: Ditto. * gcc.target/i386/avx512f-vextractf32x4-2.c: Ditto. * gcc.target/i386/avx512f-vextracti32x4-2.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfmaddXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfmsubXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfnmaddXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXsd-1.c: Ditto. * gcc.target/i386/avx512f-vfnmsubXXXss-1.c: Ditto. * gcc.target/i386/avx512f-vgetexpsd-1.c: Ditto. * gcc.target/i386/avx512f-vgetexpsd-2.c: Ditto. * gcc.target/i386/avx512f-vgetexpss-1.c: Ditto. * gcc.target/i386/avx512f-vgetexpss-2.c: Ditto. * gcc.target/i386/avx512f-vgetmantsd-1.c: Ditto. * gcc.target/i386/avx512f-vgetmantsd-2.c: Ditto. * gcc.target/i386/avx512f-vgetmantss-1.c: Ditto. * gcc.target/i386/avx512f-vgetmantss-2.c: Ditto. * gcc.target/i386/avx512f-vmaxsd-1.c: Ditto. * gcc.target/i386/avx512f-vmaxss-1.c: Ditto. * gcc.target/i386/avx512f-vminsd-1.c: Ditto. * gcc.target/i386/avx512f-vminss-1.c: Ditto. * gcc.target/i386/avx512f-vmulsd-1.c: Ditto. * gcc.target/i386/avx512f-vmulss-1.c: Ditto. * gcc.target/i386/avx512f-vrcp14sd-1.c: Ditto. * gcc.target/i386/avx512f-vrcp14sd-2.c: Ditto. * gcc.target/i386/avx512f-vrcp14ss-1.c: Ditto. * gcc.target/i386/avx512f-vrcp14ss-2.c: Ditto. * gcc.target/i386/avx512f-vrndscalesd-1.c: Ditto. * gcc.target/i386/avx512f-vrndscalesd-2.c: Ditto. * gcc.target/i386/avx512f-vrndscaless-1.c: Ditto. * gcc.target/i386/avx512f-vrndscaless-2.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14sd-1.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14sd-2.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14ss-1.c: Ditto. * gcc.target/i386/avx512f-vrsqrt14ss-2.c: Ditto. * gcc.target/i386/avx512f-vscalefsd-1.c: Ditto. * gcc.target/i386/avx512f-vscalefsd-2.c: Ditto. * gcc.target/i386/avx512f-vscalefss-1.c: Ditto. * gcc.target/i386/avx512f-vscalefss-2.c: Ditto. * gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto. * gcc.target/i386/avx512f-vsqrtss-1.c: Ditto. * gcc.target/i386/avx512f-vsubsd-1.c: Ditto. * gcc.target/i386/avx512f-vsubss-1.c: Ditto. * gcc.target/i386/sse-14.c: Update for AVX-512 scalar insns. * gcc.target/i386/sse-23.c: Ditto. * gcc.target/i386/testimm-10.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206265 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/sse.md (avx512f_fixupimm<mode>_maskz): Extend to supportkyukhin2013-12-271-0/+20
| | | | | | | | | | | | | EVEX's RC. (avx512f_sfixupimm<mode>_maskz): Ditto. * config/i386/subst.md (round_saeonly_expand_name): New. (round_saeonly_expand_nimm_predicate): Ditto. (round_saeonly_expand_operand6): Ditto. (round_saeonly_expand): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206223 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/sse.md (avx512f_fmadd_<mode>_maskz): Extend to supportkyukhin2013-12-271-0/+18
| | | | | | | | | | | | | EVEX's RC. (avx512f_fmaddsub_<mode>_maskz): Ditto. * config/i386/subst.md (round_expand_name): New. (round_expand_nimm_predicate): Ditto. (round_expand_operand): Ditto. (round_expand): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206222 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/sse.md (<code><mode>3<mask_name>): Extend to supportkyukhin2013-12-271-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | EVEX's SAE mode. (*<code><mode>3_finite<mask_name>): Ditto. (*<code><mode>3<mask_name>): Ditto. (avx512f_cmp<mode>3<mask_scalar_merge_name>): Ditto. (avx512f_vmcmp<mode>3): Ditto. (avx512f_vmcmp<mode>3_mask): Ditto. (<sse>_comi): Ditto. (<sse>_ucomi): Ditto. (sse_cvttss2si): Ditto. (sse_cvttss2siq): Ditto. (<fixsuffix>fix_truncv16sfv16si2<mask_name>): Ditto. (avx512f_vcvttss2usi): Ditto. (avx512f_vcvttss2usiq): Ditto. (avx512f_vcvttsd2usi): Ditto. (avx512f_vcvttsd2usiq): Ditto. (sse2_cvttsd2si): Ditto. (sse2_cvttsd2siq): Ditto. (<fixsuffix>fix_truncv8dfv8si2<mask_name>): Ditto. (<sse2_avx_avx512f>_cvtps2pd<avxsizesuffix><mask_name>): Ditto. (avx512f_getexp<mode><mask_name>): Ditto. (avx512f_fixupimm<mode><sd_maskz_name>): Ditto. (avx512f_fixupimm<mode>_mask): Ditto. (avx512f_sfixupimm<mode><sd_maskz_name>): Ditto. (avx512f_sfixupimm<mode>_mask): Ditto. (avx512f_rndscale<mode><mask_name>): Ditto. (<mask_codefor>avx512f_vcvtph2ps512<mask_name>): Ditto. (avx512f_getmant<mode><mask_name>): Ditto. * config/i386/subst.md (round_saeonly_name): New. (round_saeonly_mask_operand2): Ditto. (round_saeonly_mask_operand3): Ditto. (round_saeonly_mask_scalar_operand3): Ditto. (round_saeonly_mask_scalar_operand4): Ditto. (round_saeonly_mask_scalar_merge_operand4): Ditto. (round_saeonly_sd_mask_operand5): Ditto. (round_saeonly_op2): Ditto. (round_saeonly_op4): Ditto. (round_saeonly_op5): Ditto. (round_saeonly_op6): Ditto. (round_saeonly_mask_op2): Ditto. (round_saeonly_mask_op3): Ditto. (round_saeonly_mask_scalar_op3): Ditto. (round_saeonly_mask_scalar_op4): Ditto. (round_saeonly_mask_scalar_merge_op4): Ditto. (round_saeonly_sd_mask_op5): Ditto. (round_saeonly_constraint): Ditto. (round_saeonly_constraint2): Ditto. (round_saeonly_nimm_predicate): Ditto. (round_saeonly_mode512bit_condition): Ditto. (round_saeonly): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206221 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.c (ix86_print_operand): Print EVEX's RC modifiers.kyukhin2013-12-271-0/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/i386/i386.md (define_constants): Define EVEx's RC constants. * gcc/config/i386/sse.md (<plusminus_insn><mode>3<mask_name>): Extend to support EVEX's rounding control. (*<plusminus_insn><mode>3<mask_name>): Ditto. (mul<mode>3<mask_name>): Ditto. (*mul<mode>3<mask_name>): Ditto. (<sse>_div<mode>3<mask_name>): Ditto. (<sse>_sqrt<mode>2<mask_name>): Ditto. (<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>): Ditto. (avx512f_fmadd_<mode>_mask): Ditto. (avx512f_fmadd_<mode>_mask3): Ditto. (<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>): Ditto. (avx512f_fmsub_<mode>_mask): Ditto. (avx512f_fmsub_<mode>_mask3): Ditto. (<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>): Ditto. (avx512f_fnmadd_<mode>_mask): Ditto. (avx512f_fnmadd_<mode>_mask3): Ditto. (<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>): Ditto. (avx512f_fnmsub_<mode>_mask): Ditto. (avx512f_fnmsub_<mode>_mask3): Ditto. (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name>): Ditto. (avx512f_fmaddsub_<mode>_mask): Ditto. (avx512f_fmaddsub_<mode>_mask3): Ditto. (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name>): Ditto. (avx512f_fmsubadd_<mode>_mask): Ditto. (avx512f_fmsubadd_<mode>_mask3): Ditto. (fmai_vmfmadd_<mode>): Ditto. (*fmai_fmadd_<mode>): Ditto. (*fmai_fmsub_<mode>): Ditto. (*fmai_fnmadd_<mode>): Ditto. (*fmai_fnmsub_<mode>): Ditto. (sse_cvtsi2ss): Ditto. (sse_cvtsi2ssq): Ditto. (sse_cvtss2si): Ditto. (sse_cvtss2siq): Ditto. (cvtusi2<ssescalarmodesuffix>32): Ditto. (cvtusi2<ssescalarmodesuffix>64): Ditto. (float<sseintvecmodelower><mode>2<mask_name>): Ditto. (ufloatv16siv16sf2<mask_name>): Ditto. (<mask_codefor>avx512f_fix_notruncv16sfv16si<mask_name>): Ditto. (<mask_codefor>avx512f_ufix_notruncv16sfv16si<mask_name>): Ditto. (sse2_cvtsi2sdq): Ditto. (avx512f_vcvtss2usi): Ditto. (avx512f_vcvtss2usiq): Ditto. (avx512f_vcvtsd2usi): Ditto. (avx512f_vcvtsd2usiq): Ditto. (sse2_cvtsd2si): Ditto. (sse2_cvtsd2siq): Ditto. (<mask_codefor>avx512f_cvtpd2dq512<mask_name>): Ditto. (avx512f_ufix_notruncv8dfv8si<mask_name>): Ditto. (<mask_codefor>avx512f_cvtpd2ps512<mask_name>): Ditto. (avx512f_scalef<mode><mask_name>): Ditto. (<code><mode>3<mask_name>): Ditto. (*avx2_<code><mode>3<mask_name>): Ditto. (avx512er_exp2<mode><mask_name): Ditto. (<mask_codefor>avx512er_rcp28<mode><mask_name>): Ditto. (<mask_codefor>avx512er_rsqrt28<mode><mask_name>): Ditto. (avx512f_fmadd_<mode>_maskz): New. * config/i386/subst.md (SUBST_A): New. (round_name): Ditto. (round_mask_operand2): Ditto. (round_mask_operand3): Ditto. (round_mask_scalar_operand3): Ditto. (round_sd_mask_operand4): Ditto. (round_op2): Ditto. (round_op3): Ditto. (round_op4): Ditto. (round_op5): Ditto. (round_op6): Ditto. (round_mask_op2): Ditto. (round_mask_op3): Ditto. (round_mask_scalar_op3): Ditto. (round_sd_mask_op4): Ditto. (round_constraint): Ditto. (round_constraint2): Ditto. (round_constraint3): Ditto. (round_nimm_predicate): Ditto. (round_mode512bit_condition): Ditto. (round_modev4sf_condition): Ditto. (round_codefor): Ditto. (round_opnum): Ditto. (round): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206220 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/sse.md (*fma_fmadd_<mode>): Extend to support masking.kyukhin2013-12-181-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (*fma_fmsub_<mode>): Ditto. (*fma_fnmadd_<mode>): Ditto. (*fma_fnmsub_<mode>): Ditto. (*fma_fmaddsub_<mode>): Ditto. (*fma_fmsubadd_<mode>): Ditto. (avx512f_vternlog<mode>): Ditto. (avx512f_fixupimm<mode>): Ditto. (avx512f_sfixupimm<mode>): Ditto. (avx512f_vpermi2var<mode>3): Ditto. (avx512f_vpermt2var<mode>3): Ditto. (avx512f_fmaddsub_<mode>_maskz): New. (avx512f_vternlog<mode>_maskz): Ditto. (avx512f_fixupimm<mode>_maskz): Ditto. (avx512f_sfixupimm<mode>_maskz): Ditto. (avx512f_vpermi2var<mode>3_maskz): Ditto. (avx512f_vpermt2var<mode>3_maskz): Ditto. (avx512f_expand<mode>_maskz): Ditto. * config/i386/subst.md (sd_maskz_name): Ditto. (sd_mask_op4): Ditto. (sd_mask_op5): Ditto. (sd_mask_codefor): Ditto. (sd_mask_mode512bit_condition): Ditto. (sd): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206081 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/sse.md (avx512f_cmp<mode>3): Extend to support masking.kyukhin2013-12-181-0/+16
| | | | | | | | | | | | | | | | | (avx512f_ucmp<mode>3): Ditto. (avx512f_eq<mode>3): Ditto. (avx512f_gt<mode>3): Ditto. (avx512f_testm<mode>3): Ditto. (avx512f_testnm<mode>3): Ditto. * config/i386/subst.md (SUBST_S): New. (mask_scalar_merge_name): Ditto. (mask_scalar_merge_operand3): Ditto. (mask_scalar_merge_operand4): Ditto. (mask_scalar_merge): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206080 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.c (ix86_print_operand): Support z-masking.kyukhin2013-11-131-0/+56
* config/i386/predicate.md (const_0_to_4_operand): New. (const_0_to_5_operand): Ditto. * config/i386/sse.md (UNSPEC_COMPRESS): New. (UNSPEC_COMPRESS_STORE): Ditto. (UNSPEC_EXPAND): Ditto. (UNSPEC_EMBEDDED_ROUNDING): Ditto. (define_mode_attr ssescalarsize): Ditto. (avx512f_load<mode>_mask): Ditto. (avx512f_store<mode>_mask): Ditto. (avx512f_storedqu<mode>_mask): Ditto. (avx512f_vmcmp<mode>3_mask): Ditto. (avx512f_fmadd_<mode>_mask): Ditto. (avx512f_fmadd_<mode>_mask3): Ditto. (avx512f_fmsub_<mode>_mask): Ditto. (avx512f_fmsub_<mode>_mask3): Ditto. (avx512f_fnmadd_<mode>_mask): Ditto. (avx512f_fnmadd_<mode>_mask3): Ditto. (avx512f_fnmsub_<mode>_mask): Ditto. (avx512f_fnmsub_<mode>_mask3): Ditto. (avx512f_fmaddsub_<mode>_mask): Ditto. (avx512f_fmaddsub_<mode>_mask3): Ditto. (avx512f_fmsubadd_<mode>_mask): Ditto. (avx512f_fmsubadd_<mode>_mask3): Ditto. (vec_unpacku_float_lo_v16si): Ditto. (avx512f_vextract<shuffletype>32x4_mask): Ditto. (avx512f_vextract<shuffletype>32x4_1_maskm): Ditto. (avx512f_vextract<shuffletype>64x4_mask): Ditto. (vec_extract_lo_<mode>_maskm): Ditto. (vec_extract_hi_<mode>_maskm): Ditto. (avx512f_vternlog<mode>_mask): Ditto. (avx512f_shufps512_mask): Ditto. (avx512f_fixupimm<mode>_mask): Ditto. (avx512f_shufpd512_mask): Ditto. (avx512f_<code><pmov_src_lower><mode>2_mask): Ditto. (avx512f_<code>v8div16qi2_mask/trunc): Ditto. (*avx512f_<code>v8div16qi2_store_mask): Ditto. (ashr<mode>3<mask_name>): Ditto. (avx512f_vinsert<shuffletype>32x4_mask): Ditto. (avx512f_vinsert<shuffletype>64x4_mask): Ditto. (avx512f_shuf_<shuffletype>64x2_mask): Ditto. (avx512f_shuf_<shuffletype>32x4_mask): Ditto. (avx512f_pshufdv3_mask): Ditto. (avx512f_perm<mode>_mask): Ditto. (avx512f_vpermi2var<mode>3_mask): Ditto. (avx512f_vpermt2var<mode>3_mask): Ditto. (avx512f_compress<mode>_mask): Ditto. (avx512f_compressstore<mode>_mask): Ditto. (avx512f_expand<mode>_mask): Ditto. (<sse>_loadu<ssemodesuffix><avxsizesuffix><mask_name>): Extend to support masking. (avx512f_storeu<ssemodesuffix>512_mask): Ditto. (<plusminus_insn><mode>3<mask_name>): Ditto. (*<plusminus_insn><mode>3<mask_name>): Ditto. (mul<mode>3<mask_name>): Ditto. (*mul<mode>3<mask_name>): Ditto. (<sse>_div<mode>3<mask_name>): Ditto. (<mask_codefor>rcp14<mode><mask_name>): Ditto. (<sse>_sqrt<mode>2<mask_name>): Ditto. (<mask_codefor>rsqrt14<mode><mask_name>): Ditto. (<code><mode>3<mask_name>/smaxmin): Ditto. (*<code><mode>3_finite<mask_name>/smaxmin): Ditto. (*<code><mode>3<mask_name>/smaxmin): Ditto. (float<sseintvecmodelower><mode>2<mask_name>): Ditto. (ufloatv16siv16sf2<mask_name>): Ditto. (<mask_codefor>avx512f_fix_notruncv16sfv16si<mask_name>): Ditto. (<mask_codefor>avx512f_ufix_notruncv16sfv16si<mask_name>): Ditto. (<fixsuffix>fix_truncv16sfv16si2<mask_name>): Ditto. (float<si2dfmodelower><mode>2<mask_name>): Ditto. (ufloatv8siv8df<mask_name>): Ditto. (<mask_codefor>avx512f_cvtpd2dq512<mask_name>): Ditto. (avx512f_ufix_notruncv8dfv8si<mask_name>): Ditto. (<fixsuffix>fix_truncv8dfv8si2<mask_name>): Ditto. (<mask_codefor>avx512f_cvtpd2ps512<mask_name>): Ditto. (<sse2_avx_avx512f>_cvtps2pd<avxsizesuffix><mask_name>): Ditto. (<mask_codefor>avx512f_unpckhps512<mask_name>): Ditto. (<mask_codefor>avx512f_unpcklps512<mask_name>): Ditto. (<mask_codefor>avx512f_movshdup512<mask_name>): Ditto. (<mask_codefor>avx512f_movsldup512<mask_name>): Ditto. (<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name>): Ditto. (vec_extract_lo_<mode><mask_name>): Ditto. (vec_extract_hi_<mode><mask_name>): Ditto. (<mask_codefor>avx512f_unpckhpd512<mask_name>): Ditto. (avx512f_movddup512<mask_name>): Ditto. (avx512f_unpcklpd512<mask_name>): Ditto. (*avx512f_unpcklpd512<mask_name>): Ditto. (*avx512f_vmscalef<mode>): Ditto. (avx512f_scalef<mode><mask_name>): Ditto. (avx512f_getexp<mode><mask_name>): Ditto. (<mask_codefor>avx512f_align<mode><mask_name>): Ditto. (avx512f_rndscale<mode><mask_name>): Ditto. (avx512f_shufps512_1<mask_name>): Ditto. (avx512f_shufpd512_1<mask_name>): Ditto. (<plusminus_insn><mode>3<mask_name>): Ditto. (*<plusminus_insn><mode>3<mask_name>): Ditto. (vec_widen_umult_even_v16si<mask_name>): Ditto. (*vec_widen_umult_even_v16si<mask_name>): Ditto. (vec_widen_smult_even_v16si<mask_name>): Ditto. (*vec_widen_smult_even_v16si<mask_name>): Ditto. (mul<mode>3<mask_name>): Ditto. (*<sse4_1_avx2>_mul<mode>3<mask_name>): Ditto. (<shift_insn><mode>3<mask_name>): Ditto. (avx512f_<rotate>v<mode><mask_name>/rotate): Ditto. (avx512f_<rotate><mode><mask_name>): Ditto. (<code><mode>3<mask_name>/maxmin): Ditto. (*avx2_<code><mode>3<mask_name>/maxmin): Ditto. (<sse2_avx2>_andnot<mode>3<mask_name>): Ditto. (*andnot<mode>3<mask_name>): Ditto. (<mask_codefor><code><mode>3<mask_name>/any_logic): Ditto. (<mask_codefor>avx512f_interleave_highv16si<mask_name>): Ditto. (<mask_codefor>avx512f_interleave_lowv16si<mask_name>): Ditto. (<mask_codefor>avx512f_vinsert<shuffletype>32x4_1<mask_name>): Ditto. (vec_set_lo_<mode><mask_name>): Ditto. (vec_set_hi_<mode><mask_name>): Ditto. (avx512f_shuf_<shuffletype>64x2_1<mask_name>): Ditto. (avx512f_shuf_<shuffletype>32x4_1<mask_name>): Ditto. (avx512f_pshufd_1<mask_name>): Ditto. (<mask_codefor>abs<mode>2<mask_name>): Ditto. (<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>): Ditto. (avx512f_<code>v16hiv16si2<mask_name>/any_extend): Ditto. (avx512f_<code>v8qiv8di2<mask_name>/any_extend): Ditto. (avx512f_<code>v8hiv8di2<mask_name>/any_extend): Ditto. (avx512f_<code>v8siv8di2<mask_name>/any_extend): Ditto. (avx512er_exp2<mode><mask_name>): Ditto. (<mask_codefor>avx512er_rcp28<mode><mask_name>): Ditto. (<mask_codefor>avx512er_rsqrt28<mode><mask_name>): Ditto. (<avx2_avx512f>_permvar<mode><mask_name>): Ditto. (<avx2_avx512f>_perm<mode>_1<mask_name>): Ditto. (<mask_codefor>avx512f_vec_dup<mode><mask_name>): Ditto. (<mask_codefor>avx512f_broadcast<mode><mask_name>/V16FI): Ditto. (<mask_codefor>avx512f_broadcast<mode><mask_name>/V8FI): Ditto. (<mask_codefor>avx512f_vec_dup_gpr<mode><mask_name>): Ditto. (<mask_codefor>avx512f_vec_dup_mem<mode><mask_name>): Ditto. (<sse2_avx_avx512f>_vpermil<mode><mask_name>/VF2): Ditto. (<sse2_avx_avx512f>_vpermil<mode><mask_name>/VF1): Ditto. (*<sse2_avx_avx512f>_vpermilp<mode><mask_name>): Ditto. (<sse2_avx_avx512f>_vpermilvar<mode>3<mask_name>): Ditto. (<avx2_avx512f>_ashrv<mode><mask_name>): Ditto. (<avx2_avx512f>_<shift_insn>v<mode><mask_name>): Ditto. (<mask_codefor>avx512f_vcvtph2ps512<mask_name>): Ditto. (<mask_codefor>avx512f_vcvtps2ph512<mask_name>): Ditto. (avx512f_getmant<mode><mask_name>): Ditto. (clz<mode>2<mask_name>): Ditto. (<mask_codefor>conflict<mode><mask_name>): Ditto. (*srcp14<mode>): Remove visibility. (*rsqrt14<mode>): Ditto. (*fma_fmsub_<mode>): Ditto. (*fma_fnmadd_<mode>): Ditto. (*avx512f_rndscale<mode>): Ditto. * config/i386/subst.md: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@204734 138bc75d-0d04-0410-961f-82ee72b054a4