[llvm-dev] PHI nodes and connected ICMp

Anastasiya Ruzhanskaya via llvm-dev llvm-dev at lists.llvm.org
Thu Aug 10 00:34:32 PDT 2017


Hello,
I have one more question about how phi nodes and their corresponding ICmp
instructions are associated. maybe it is simple, but at first I thought
that we always compare against one of incoming value. Is it true that  I
can have only  two cases:
%indvars.iv = phi i64 [ %indvars.iv.next, %1 ], [ 0, %0 ]
...
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%exitcond = icmp eq i64 %indvars.iv.next, 32


and

%i.11 = phi i32 [ %i.11.be, %.backedge ], [ 32, %1 ]
...
%13 = icmp sgt i32 %i.11, 3
?
In the first one we always have icmp on the incoming value after addition,
multiplication and so on.
In the second - we compare at first against our phi variable and then
perform operations. I have noticed, that the first case correspond to "up"
operations - +=, *= ans do on, the second - to "down" : -=, /= and so on.
But maybe it depends on logic of the cycle too... So, are their two cases :
comparing in exiting block against PHI variable or against one of its'
incoming value?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170810/5dcbdd13/attachment.html>


More information about the llvm-dev mailing list