This patch introduces substitution patterns to add PLUS const_int, and
AND operands to patterns and uses this to rewrite the existing rotate
pattern.
gcc/ChangeLog:
2016-02-29 Andreas Krebbel
* config/s390/predicates.md (const_int_6bitset_operand): New
predicates.
* co
Andreas Krebbel wrote:
> * config/s390/predicates.md (const_int_6bitset_operand): New
> predicates.
> * config/s390/s390.md: Include subst.md.
> ("rotl3"): New expander.
> ("rotl3", "*rotl3_and"): Merge insn definitions into
> ...
> ("*rotl3"): New insn
This patch introduces substitution patterns to add PLUS const_int, and
AND operands to patterns and uses this to rewrite the existing rotate
pattern.
gcc/ChangeLog:
* config/s390/predicates.md (const_int_6bitset_operand): New
predicates.
* config/s390/s390.md: Include subs
Andreas Krebbel wrote:
> > Hmm. In theory reload should always respect both constraints and
> > predicates.
> > But I guess it can't hurt to disable the alternative just to be safe; it is
> > indeed an uncommon case to have the constraint accept more than the
> > predicate.
> > (Also a PLUS with
On 02/01/2016 05:58 PM, Ulrich Weigand wrote:
> Andreas Krebbel wrote:
>> On 02/01/2016 02:30 PM, Ulrich Weigand wrote:
>>> This seems to add just a single alternative. Is that OK if it gets
>>> substituted into a pattern that used multiple alternatives otherwise?
>> Yes. This is supposed to work
Andreas Krebbel wrote:
> On 02/01/2016 02:30 PM, Ulrich Weigand wrote:
> > This seems to add just a single alternative. Is that OK if it gets
> > substituted into a pattern that used multiple alternatives otherwise?
> Yes. This is supposed to work. The new constraint will be duplicated until
>
On 02/01/2016 02:30 PM, Ulrich Weigand wrote:
> Andreas Krebbel wrote:
>
>> +; Accept single register and immediate operands usable as shift
>> +; counts.
>> +(define_predicate "addrreg_or_constint_operand"
>> + (match_code "reg, subreg, const_int")
>
> I'm wondering whether this is even necessa
Andreas Krebbel wrote:
> +; Accept single register and immediate operands usable as shift
> +; counts.
> +(define_predicate "addrreg_or_constint_operand"
> + (match_code "reg, subreg, const_int")
I'm wondering whether this is even necessary.
> +{
> + if (GET_MODE (op) != VOIDmode
> + && G
This patch introduces substitution patterns to add PLUS const_int, and
AND operands to patterns and uses this to rewrite the existing rotate
pattern.
gcc/ChangeLog:
2016-01-14 Andreas Krebbel
* config/s390/predicates.md (addrreg_or_constint_operand)
(const_int_6bitset_operand)