This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH 7/9] S/390: Get rid of Y constraint in vector.md.
- From: Andreas Krebbel <krebbel at linux dot vnet dot ibm dot com>
- To: Ulrich Weigand <uweigand at de dot ibm dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Tue, 1 Mar 2016 16:30:48 +0100
- Subject: Re: [PATCH 7/9] S/390: Get rid of Y constraint in vector.md.
- Authentication-results: sourceware.org; auth=none
- References: <20160301151145 dot DEF62C88E at oc7340732750 dot ibm dot com>
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-