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: New insns for the s390 backend (3)


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


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