On Wed, Aug 13, 2014 at 4:23 PM, Kirill Yukhin <kirill.yuk...@gmail.com> wrote:
>> >> In a couple of places, <MODE_SIZE> checks are changed to GET_MODE_SIZE >> >> (GET_MODE (operands[0])) and in a similar way, <MODE>mode checks were >> >> changed to GET_MODE (operands[0]). The previous checks are more >> >> efficient and are preferred. Is there a reason you need to check >> >> operands[0] dynamically? >> > >> > I agree, runtime tests are worse. But this subst attributes are used >> > in patterns which actually do not contain mode iterators at all. >> >> IMO, two different subst patterns should be used in this case, one for >> patterns with and one for patterns w/o mode iterators. > > That was my second thought after I hit `send'. > > Updated patch in the bottom > > Bootstrapped. > > (Regtest w/ new tests is in progress). > > Is it ok if pass? > > gcc/ > * 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. This is OK. Thanks, Uros.