kpn added a comment.

I wanted to get the API straight before working on documentation.



================
Comment at: include/llvm/IR/IRBuilder.h:228
+  /// Enable/Disable use of constrained floating point math
+  void setIsConstrainedFP(bool IsCon) { IsFPConstrained = IsCon; }
+
----------------
erichkeane wrote:
> kpn wrote:
> > kbarton wrote:
> > > This is a minor quibble, but the method is setIsConstrainedFP, while the 
> > > member is IsFPConstrained. 
> > > I'm not sure if that is intentionally different, or an oversight. 
> > Yeah, that's an oversight. Fixed.
> IS this fixed?
In my working copy, yes.


================
Comment at: include/llvm/IR/IRBuilder.h:234
+  /// Set the exception handling to be used with constrained floating point
+  void setDefaultConstrainedExcept(MDNode *NewExcept) { 
+    DefaultConstrainedExcept = NewExcept; 
----------------
mibintc wrote:
> andrew.w.kaylor wrote:
> > I think it would be better to add some enumerated type to describe the 
> > exception semantic and rounding modes. The MDNode is an implementation 
> > detail and an awkward one for the front end to have to deal with.
> I posted a patch showing the rounding and exception information being passed 
> as enumeration not MDNode. I've uploaded the patch here, 
> https://reviews.llvm.org/D62730
It's a good idea. D62730 beat me to the punch.


================
Comment at: include/llvm/IR/IRBuilder.h:1249
+    if (IsFPConstrained)
+      return CreateConstrainedFAdd(L, R, FMFSource, Name, nullptr, nullptr);
+
----------------
erichkeane wrote:
> Why set the last 2 to nullptr when you have defaults for these?
Eh, no really good reason.


================
Comment at: include/llvm/IR/IRBuilder.h:1259
+                                  Instruction *FMFSource = nullptr,            
                                   const Twine &Name = "",
+                                  MDNode *RoundingMD = nullptr,               
+                                  MDNode *ExceptMD = nullptr) {
----------------
erichkeane wrote:
> The last 2 parameters are never actually used except in the test.  Are these 
> really important to have if they are never used in source?
They're part of the intrinsics. It seems like there should be a way to emit 
them as part of the instruction when creating the instruction.


================
Comment at: include/llvm/IR/IRBuilder.h:1408
 
+  CallInst *CreateConstrainedFRem(Value *L, Value *R, 
+                                  Instruction *FMFSource = nullptr, 
----------------
erichkeane wrote:
> All these CreateConstrainedXXX should be distilled down to a single function 
> that takes the intrinsic as a parameter.
That moves us further down the road towards having modes. I haven't seen a 
front-end guy sign off on it yet, but it seems like a good idea.


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

https://reviews.llvm.org/D53157



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

Reply via email to