@karolherbst Couple of other things to consider, if you're trying to sort out the mess 🙂
OpenCL only requires a * b + c to remain unfused when FP_CONTRACT is OFF. Note that FP_CONTRACT is ON by default.
Might not help you, but LLVM uses fmuladd to indicate an operation that can be fused, or not, whatever the device prefers. LLVM fma must remain fused.
I thought you might be able to un-fuse fma with -cl-fast-relaxed-math, but it doesn't appear this is the case. mad can be un-fused, though.