arsenm added a comment.

In D69498#2707100 <https://reviews.llvm.org/D69498#2707100>, @sameerds wrote:

>>> 1. The meaning of the `convergent` attribute has always been 
>>> target-dependent.
>>> 2. Dependence on TTI is not a real cost at all. We may eventually update 
>>> every use of isConvergent() to depend on a check for divergence. The check 
>>> for TTI is only the first step towards that.
>>
>> The core IR semantics must *not* depend on target interpretation. convergent 
>> has never been target dependent, and was defined in an abstract way. Only 
>> certain targets will really care, but we cannot directly define it to mean 
>> what we want it to mean for particular targets
>
> My bad. I should have said "the implementation of convergent" is target 
> dependent. But even that is not precise enough. It is more correct to say 
> that the convergent attribute can be implemented inside LLVM by depending on 
> TTI so that it only impacts targets that have divergence. This dependence is 
> not new; it's merely missing because the current uses of convergent 
> pessimistically assume divergent control flow on targets.

You're still saying the same thing. This needs to be defined generically. 
Frontends don't *have* to to anything, they'll just get the assumed convergent 
behavior by default. Either frontends could always add noconvergent to avoid 
any possible optimization hit, or we could have a pass add noconvergent 
depending on the target. I don't want to change the interpretation of core 
attributes based on the target


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69498/new/

https://reviews.llvm.org/D69498

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to