[PATCH] D45710: Fast Math Flag mapping into SDNode

Michael Berg via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri May 4 11:23:46 PDT 2018


mcberg2017 added inline comments.


================
Comment at: lib/Target/AMDGPU/SIISelLowering.cpp:6700
   if ((Options.AllowFPOpFusion == FPOpFusion::Fast || Options.UnsafeFPMath ||
-       (N0->getFlags().hasUnsafeAlgebra() &&
-        N1->getFlags().hasUnsafeAlgebra())) &&
+       (N0->getFlags().hasAllowReassociation() &&
+        N1->getFlags().hasAllowReassociation())) &&
----------------
rampitec wrote:
> spatel wrote:
> > mcberg2017 wrote:
> > > rampitec wrote:
> > > > mcberg2017 wrote:
> > > > > rampitec wrote:
> > > > > > Production of a fused fma opcode is not tied to reassociation. The question here is legality of intermediate result rounding.
> > > > > Stanislav, what change if any do you request then for this code?
> > > > I would say AllowContract can be added here, but reassociation is not a sufficient or required condition.
> > > Ok, will do.
> > So this is an existing bug in the code? It shouldn't be checking hasUnsafeAlgebra (or Options.UnsafeFPMath). Can we add a test for that?
> I do not think it is a bug, this is legal to do with unsafe algebra.
> At the end of the day I think if you remove reassociation from the condition and add AllowContract check it should then boil down to the question if existing lit tests will pass.
With the change to hasAllowContract, existing lit tests all pass.


https://reviews.llvm.org/D45710





More information about the llvm-commits mailing list