[PATCH] D65776: [Clang] Pragma vectorize_predicate implies vectorize

Sjoerd Meijer via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 5 22:24:12 PDT 2019


SjoerdMeijer added a comment.

Thanks for pointing this all out!

I am not entirely sure yet what to think about all this as I am new to the loop pragma business, but I think it looks inconsistent to me!

I think I find `allowReordering()` a little bit ugly, because it is also checking `getWidth() > 1`, and I am probably expecting the allowReordering decision to be based on 1 thing (the Force). But in the current implementation that probably makes sense though if `vectorizer_width` doesn't set `vectorizer.enable` (again, which is not what I would expect). Thus, it makes sense to me that `LoopVectorizationCostModel::selectVectorizationFactor()` only checks `getForce()`

> Mmmh, I would have expected this to work the same way as `vectorize_width`.

So I don't see at this moment how it could work in the same way. And by working in the same way I think you mean adding `vectorize_predicate` checks to different places where `vectorize_width` is also checked, but that doesn't sound ideal to me.

Could a conclusion be that I was lucky? Lucky, because without all this knowledge that I have now, this patch looks to do what we would expect?


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

https://reviews.llvm.org/D65776





More information about the cfe-commits mailing list