kpn added a comment.

In https://reviews.llvm.org/D53157#1290364, @andrew.w.kaylor wrote:

> Rather than having separate methods to create the constrained versions of the 
> intrinsics, why not have a way to set the constrained state in the IR builder 
> and have the regular CreateFAdd et. al. functions use that to automatically 
> create the constrained intrinsic versions? This would correspond to how fast 
> math flags are handled.


Well, yes and no. There is the default fast math flags that get picked up by, 
eg, CreateFAdd(). There's also a default MDNode. But CreateFAdd() and the 
others let you specify a different MDNode, and the Create*FMF() functions let 
you specify different fast math flags. So the existing practice isn't strongly 
pointing in either direction.

Having CreateConstrained*() functions means front ends can key off its own flag 
and not have to notify the IRBuilder when that flag goes out of scope. Then 
again, having a IRBuilder-instance-global flag means probably fewer places in 
the front end have to be touched, but it would have to notify the IRBuilder 
when its own strictness flag goes out of scope. So I don't know what is better.

I suspect you are correct and we should just stick with the existing calls. I 
don't expect anyone would need to switch between constrained and regular 
floating point at an instruction level of granularity. But we need to do what 
is best for users of the IRBuilder, and I'm not 100% sold either way.

Can we get some input from someone who maintains front ends?


https://reviews.llvm.org/D53157



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

Reply via email to