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 7/9] S/390: Get rid of Y constraint in vector.md.


On 03/01/2016 04:11 PM, Ulrich Weigand wrote:
> I wrote:
>> Andreas Krebbel wrote:
>>
>>> +; vec_set is supposed to *modify* an existing vector so operand 0 is
>>> +; duplicated as input operand.
>>> +(define_expand "vec_set<mode>"
>>> +  [(set (match_operand:V                    0 "register_operand"              "")
>>> +	(unspec:V [(match_operand:<non_vec> 1 "general_operand"               "")
>>> +		   (match_operand:SI        2 "shift_count_or_setmem_operand" "")
>>
>> This is probably only cosmetic, but should we use nonmemory_operand here
>> instead of shift_count_or_setmem_operand (just like everywhere else now)?
>>
>>> +(define_expand "vec_extract<mode>"
>>> +  [(set (match_operand:<non_vec> 0 "nonimmediate_operand" "")
>>> +	(unspec:<non_vec> [(match_operand:V  1 "register_operand" "")
>>> +			   (match_operand:SI 2 "shift_count_or_setmem_operand" "")]
>>
>> Likewise.
> 
> I just noticed that there are two more UNSPEC_VEC_SET expanders
> in vx-builtins.md.  I guess those should be likewise changed:
> 
> (define_expand "vec_insert<mode>"
>   [(set (match_operand:V_HW                    0 "register_operand" "")
>         (unspec:V_HW [(match_operand:<non_vec> 2 "register_operand" "")
>                       (match_operand:SI        3 "shift_count_or_setmem_operand" "")
>                       (match_operand:V_HW      1 "register_operand" "")]
>                      UNSPEC_VEC_SET))]
>   "TARGET_VX"
>   "")
> 
> (define_expand "vec_promote<mode>"
>   [(set (match_operand:V_HW                    0 "register_operand" "")
>         (unspec:V_HW [(match_operand:<non_vec> 1 "register_operand" "")
>                       (match_operand:SI        2 "shift_count_or_setmem_operand" "")
>                       (match_dup 0)]
>                      UNSPEC_VEC_SET))]
>   "TARGET_VX"
>   "")
> 
> Then the only remaining users of shift_count_or_setmem_operand are the
> actual setmem patterns (so maybe the predicate can be renamed to
> "setmem_operand") :-)

Yes. We probably should also try to get rid of s390_decompose_shift_count. Perhaps it can be merged
into decompose_address as a special case?! At least it should get a new name as well. I'll move
these changes into the next development cycle. I've caused enough stage4 breakage for today ;)

Thanks for reviewing the patches!

Bye,

-Andreas-


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