[llvm-dev] Dealing with boolean values in GlobalISel

Nicolai Hähnle-Montoro via llvm-dev llvm-dev at lists.llvm.org
Sat Sep 28 13:53:04 PDT 2019


On Sat, Sep 28, 2019 at 10:45 PM Nicolai Hähnle-Montoro
<nhaehnle at gmail.com> wrote:
>
> On Fri, Sep 27, 2019 at 9:47 PM Arsenault, Matthew via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
> > define i32 @foo(i32 %a, i32 %b, i32 %c) {
> >   %cc = trunc i32 %a to i1
> >   %r = select i1 %cc, i32 %b, i32 %c
> >   ret i32 %r
> > }
> [snip]
> > Can we make truncates to s1 illegal? [...]
>
> You're saying that in the example above, we'd first generate a G_TRUNC
> to s1, which would then be legalized to a compare against 0 (which has
> an s1 result)?

The compare would be after a G_AND with 1, of course, so that the
G_TRUNC gets legalized to an and+compare overall. Right?

Cheers,
Nicolai

>
> That actually seems quite reasonable to me.
>
> What if the program has an s32 input value which is known for whatever
> reason to be either 0 or 1? In that case, we may still want to be able
> to convert the value to an s1 with a no-op operation. Any idea how
> that would be represented?
>
> Cheers,
> Nicolai
>
>
> >
> >
> >
> > -Matt
> >
> >
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > llvm-dev at lists.llvm.org
> > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
>
> --
> Lerne, wie die Welt wirklich ist,
> aber vergiss niemals, wie sie sein sollte.



-- 
Lerne, wie die Welt wirklich ist,
aber vergiss niemals, wie sie sein sollte.


More information about the llvm-dev mailing list