[LLVMdev] [LLVMDev] Is there any way to eliminate zero-extension instruction?

minwook Ahn minwook.ahn at gmail.com
Wed Jan 20 17:14:21 PST 2010


Thank you for your reply.

In case of setcc, I saw it was removed.

But I could not delete the extension instruction in other cases of zero
extension from i1 to i32.

For example, in this case.

int main( int argc, char *argv[] ) {
   int i = ( argc > 0 ) & ( argv != NULL );
   return i;
}

So can you let us know how to remove it?

Thank you in advance.

Minwook Ahn

p.s. Sorry for the duplicated message if you get this twice.

2010/1/20 Richard Osborne <richard at xmos.com>

>
> On 20 Jan 2010, at 07:55, minwook Ahn wrote:
>
> > Dear developers.
> >
> > We try to make our own backend of llvm for our target machine.
> >
> > Assume that we have the following code in our source code.
> >
> > int i = ( a < b );
> >
> > The code is translated into
> >
> > r0 <- gt r1 r2
> > r3 <- and r0 0x1
> >
> > We think that r3 is not necessary. Is there any way to eliminate it by
> just modifying
> >
> > our backend?
> >
> > Thank you in advance.
> >
> > Minwook Ahn
>
> Have you told LLVM the result of setcc operations is 0 or 1? Add the
> following to the constructor of your ISelLowering class:
>
> setBooleanContents(ZeroOrOneBooleanContent);
>
> --
> Richard Osborne | XMOS
> http://www.xmos.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100121/cc5c4aeb/attachment.html>


More information about the llvm-dev mailing list