This is the mail archive of the cgen@sources.redhat.com mailing list for the CGEN 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][rfa] Add ltu,leu,gtu,geu support for unsigned modes


Thanks for your comments. Some questions and further comments below....

Doug Evans wrote:


The first indication that you're barking up the wrong tree is that cgen-ops.h generally doesn't have Umode support (e.g. ADDUSI).

Yet types.scm does support them and cgen happily consumes them with the expected result. Also, just about every .cpu file in cgen/cpu contains an instance of the mode USI. That's why I was led to believe that this support was appropriate.


There's a reason. It's excessive and unnecessary and I don't want to unnecessarily propagate them. GCC doesn't have Umodes. I added Umodes mostly as an escape hatch, but a controlled one.

Can you explain this? An escape hatch for what? And what limits do you have in mind? It may be excessive, but one could also argue that it's more complete to support Umodes.


If this patch goes in and the general direction it takes cgen-ops.h in is allowed to proceed, I think that's a bad thing.

Do you get the desired result if you replace the above with

(if (ltu (zext DI op1) (zext DI op2 ))(set op3 op1 ))

Yes, however this example is from machine generated code (a customer's tool) and the customer thought (and convinced me too) that the use of the Umode UDI is reasonable, since Umodes are frequently used and accepted in many instances. FWIW, by coincidence

(if (lt (zext UDI op1) (zext UDI op2 ))(set op3 op1 ))

works and it's hard to explain to the customer why ltu doesn't accept umodes while lt does.


Note this: from doc/rtl.texi:


@item UQI,UHI,USI,UDI
Unsigned versions of QI,HI,SI,DI.

These modes do not appear in semantic RTL.  Instead, the RTL function
specifies the signedness of its operands where necessary.

??? I'm not entirely sure these unsigned modes are needed.
They are useful in removing any ambiguity in how to sign extend constants
which has been a source of problems in GCC.

??? Some existing ports use these modes.

Perhaps this can help me convince the customer.

Dave


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