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