This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: New insns for the s390 backend (3)
- From: Andreas Krebbel <krebbel1 at de dot ibm dot com>
- To: rth at redhat dot com
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 28 Aug 2003 19:01:40 +0200
- Subject: Re: New insns for the s390 backend (3)
- Organization: IBM Entwicklung GmbH
Hello Richard,
>> The additional insn definition is mandatory otherwise combine would never
>> create an AND rtx with such a high constant because s390 doesn't provide an
>> appropriate instruction. Therefore the splitter would never get a chance.
>I don't believe you. Combine discards all clobbers initially,
>then adds them back as needed. The final desired insn and the
>faulty pattern differ only in the split.
Without the additional insn definition in define_insn_and_split the splitter
would never be applicable (if the anddi pattern was not modified as you
suggested). Before the splitter could be applied reload would already have
moved the large constant into the literal pool and the pattern to match the
splitter would not exist anymore.
Thanks for the code snippet. Introducing additional contraint letters is an
idea Ulrich Weigand already has talked about to me. We both agree that this
is a better solution. There are few more parts in the s390.md file where new
contraint letters would help to merge definitions. This would give the reload
pass more alternatives to choose and as far as I've understood is generally a
good idea.
Currently I will try to build a patch which covers the llgt instructions only
but the other changes are on my todo list (nihh, nihl, .... and others).
To my mind an additional splitter is needed anyway to get rid of the (clobber
(reg:CC 33)). Otherwise the scheduler would be affected negatively - right?
Bye
Andreas