[PATCH] D90174: [HIP] Fix regressions due to fp contract change

Yaxun Liu via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 26 17:29:23 PDT 2020


yaxunl added inline comments.


================
Comment at: clang/lib/CodeGen/BackendUtil.cpp:486
+  if (LangOpts.HIP)
+    Options.AllowFPOpFusion = llvm::FPOpFusion::Standard;
+
----------------
tra wrote:
> yaxunl wrote:
> > tra wrote:
> > > I don't think it's a good idea to force this.
> > > 
> > > Perhaps a better way to address this would be to set HIP-specific default to Standard where CUDA does it:
> > > https://github.com/llvm/llvm-project/blob/master/clang/lib/Frontend/CompilerInvocation.cpp#L2415
> > > 
> > > Currently HIP inherits this setting from CUDA.
> > We want to keep -ffp-contract=fast for frontend so that we can continue emitting fmul/fadd insts with contract flag in IR for HIP programs. We only want to change the backend fp fuse option. Currently there is no separate clang option to set backend fp fuse option.
> I do not see any references to `AllowFPOpFusion` anywhere under `clang/` other than in this function.
> Perhaps I'm missing something. How/where does it make a difference in the front-end other than setting the option for the back-end?
> 
> 
> 
-ffp-contract not only sets backend fp fuse option, but also setFPContractMode

https://github.com/llvm/llvm-project/blob/2e204e23911b1f8bd1463535da40c6e48747a138/clang/include/clang/Basic/LangOptions.h#L413

which enables allowFPContractAcrossStatement

https://github.com/llvm/llvm-project/blob/2e204e23911b1f8bd1463535da40c6e48747a138/clang/include/clang/Basic/LangOptions.h#L439

which sets llvm::FastMathFlags

https://github.com/llvm/llvm-project/blob/d3205bbca3e0002d76282878986993e7e7994779/clang/lib/CodeGen/CodeGenFunction.cpp#L129

which causes fmul/fadd to have contract flag








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

https://reviews.llvm.org/D90174



More information about the cfe-commits mailing list