[PATCH] D20695: Floating Point SCEV Analysis

Andrew Trick via llvm-commits llvm-commits at lists.llvm.org
Mon May 30 11:05:35 PDT 2016


> On May 30, 2016, at 12:02 AM, Sanjoy Das <sanjoy at playingwithpointers.com> wrote:
> 
> I have made some minor comments inline, but I still stand by my earlier comment that we should do something like this as a last resort.  As an initial step we should at least evaluate how far we can we can get on relevant workloads without teaching SCEV about floating point values at all.

Are there conceivable use cases for this infrastructure beyond vectorizing a small subcategory of loops of this form?

float x = init;
 for (int i=0;i<N;i++){
   A[i] = x;
   x += fp_inc; // Loop invariant variable or constant
 }

Can the vectorizer handle loops of this form without querying SCEV?

SCEV expressions have an inherent width. They are not infinite precision. This is the main challenge of working with SCEV expressions, as Sanjoy is well aware. What happens when incrementing a floating-point SCEV expression by a smaller amount than ULP. Eventually that will happen in a floating-point recurrence. Do we have to prove that floating-point recurrences behave a certain way before we can legally convert them to SCEV expressions?

Honestly, I’m not an expert in floating-point semantics, and I wouldn’t feel comfortable adding this to SCEV without buy-in from someone who is.

Andy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160530/28a10930/attachment.html>


More information about the llvm-commits mailing list