[llvm-dev] Early CSE clobbering llvm.assume

Lawrence, Peter via llvm-dev llvm-dev at lists.llvm.org
Fri Jun 10 19:00:43 PDT 2016


Daniel,
            My point is this,

If (cond) ---- optimizer takes advantage of knowing cond == true within the “then” part
Assert(cond) ---- optimizer takes advantage of knowing cond == true for the rest of the scope
Assume(cond) ---- optimizer takes advantage of knowing cond == true for the rest of the scope

If we aren’t implementing these in a consistent manner (like using an intrinsic for one but not the others)
Then we aren’t doing a good job of engineering,
IE we should be able to get “assume” to work for free if we are doing it right.

Asking “how do I get this intrinsic to work” is perhaps the wrong question,
Perhaps the right question is, how do we represent assume so that we get it for free.


---Peter Lawrence.



From: Daniel Berlin [mailto:dberlin at dberlin.org]
Sent: Friday, June 10, 2016 6:32 PM
To: Lawrence, Peter <c_plawre at qca.qualcomm.com>
Cc: llvm-dev at lists.llvm.org
Subject: Re: [llvm-dev] Early CSE clobbering llvm.assume

We do, implicitly, because assert generates if conditions. Or at least, gvn knows how to propagate that implicit info. We can do better by exposing it more, most likely
On Fri, Jun 10, 2016, 5:59 PM Lawrence, Peter <c_plawre at qca.qualcomm.com<mailto:c_plawre at qca.qualcomm.com>> wrote:
Daniel,
             Well then my next (dumb?) question is why aren’t we using source level assert information
For optimization ?

--Peter Lawrence.


From: Daniel Berlin [mailto:dberlin at dberlin.org<mailto:dberlin at dberlin.org>]
Sent: Friday, June 10, 2016 5:39 PM
To: Lawrence, Peter <c_plawre at qca.qualcomm.com<mailto:c_plawre at qca.qualcomm.com>>
Cc: llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>
Subject: Re: [llvm-dev] Early CSE clobbering llvm.assume



On Fri, Jun 10, 2016 at 5:34 PM, Lawrence, Peter via llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote:
My (dumb?) question would be:  why is llvm.assume being handled any differently than llvm.assert ?

There is no llvm.assert intrinsic, so i'm not sure what you mean here. Care to give an example?

Other than one trapping and one not-trapping, they should be identical, in both cases they are giving
The optimizers information,  and that shouldn’t be any different from being inside an “if” statement with the same condition ?


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160611/d0550b3c/attachment.html>


More information about the llvm-dev mailing list