----- Original Message -----
> From: "Steve Canon" <[email protected]>
> To: [email protected], [email protected], [email protected], [email protected]
> Cc: [email protected]
> Sent: Friday, October 17, 2014 4:23:28 AM
> Subject: Re: [PATCH] [complex] Teach the complex math IR gen to emit direct 
> math and a NaN-test prior to the call to
> the library function.
> 
> Apologies for delay in looking at this, I'm on vacation this week.
> 
> I don't love this approach because (a) it doesn't get us fully to
> where we want to be in performance, and (b) it's going to trash the
> floating-point flag state.  The performance issue is that we still
> have two comparisons and one or two branches for every complex op
> outside of no-nans, and the flags issue is as follows:
> 
> The intention of IEEE-754 is that anything that is conceptually a
> single "operation" should raise at most one of divide-by-zero,
> invalid, overflow, or underflow.  A complex multiplication
> implemented with lazy checking may cause two of these to be raised:
> 
>     (tiny, huge) * (tiny, huge) --> underflow + overflow
>     (0, huge) * (inf, huge) --> invalid + overflow, no flags

Thinking about this, this can only matter if we actually permit access to the 
FP environment, which we currently don't. So, if we were to ever allow "#pragma 
STDC FENV_ACCESS on", then we'd want to disable this optimization. But for now 
this is irrelevant (at least from the C perspective). Is this right?

 -Hal

> 
> My preferred approach would be to implement limited-range semantics
> as an option (via either pragma or flag), and have it implied by
> fast-math.
> 
> Now, all that being said, I haven't checked if today's compiler-rt
> implementations are even correct w.r.t. flags in this sense, so it's
> not immediately obvious that this change makes anything worse today,
> and it will address //some// of the performance concerns of the
> earlier patch.  It just seems contrary to the direction that we
> really want to be going in the longer-term w.r.t. numerical
> correctness.
> 
> http://reviews.llvm.org/D5756
> 
> 
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to