[llvm-dev] Are SCEV normal form?

Alexandre Isoard via llvm-dev llvm-dev at lists.llvm.org
Fri Aug 11 09:57:36 PDT 2017


Hello again,

On that subject, I have the following SCEV:

(zext i16 (trunc i32 %a to i16) to i32) + ((%a /u 65536) *u 65536)

That I would like to normalize into:

%a

I am not sure where is the most natural spot in which to do that?
Also, this pattern is much more general. The idea is that I want to
coalesce bit ranges that have been extracted and put back together.

Should I detect patterns, or look for a more generic strategy? Do you have
input on that?

On Tue, Jul 25, 2017 at 9:21 PM, Alexandre Isoard <
alexandre.isoard at gmail.com> wrote:

> Hello,
>
> I assumed SCEV purpose was to be a normal form, but then I wondered which
> one of those is the normal form:
>
> (zext i16 (trunc i32 %a to i16) to i32)
>
> vs
>
> (-((%a /u 65536) *u 65536) + %a)
>
>
> The first one is nice for interval analysis, and known bit analysis.
> The second one is nice when plugged into gep of 2d arrays.
>
> --
> *Alexandre Isoard*
>



-- 
*Alexandre Isoard*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170811/835cfe3d/attachment.html>


More information about the llvm-dev mailing list