Currently, clang will generate fused operation fmuladd for expressions like a*b+c. However, I can't find anything in the spec that explains this behavior. But clang was doing this for almost 10 years....
I looked at:
s6.13.2 where it details fp conract pragma:
// on-off-switch is one of ON, OFF, or DEFAULT. // The DEFAULT value is ON. #pragma OPENCL FP_CONTRACT on-off-switch
The default behavior here refers to the default value of the pragma when used in the source code.
s7.4 table 38
x * y + z Implemented either as a correctly rounded fma or as a multiply and an add both of which are correctly rounded.
This table described behavior when -cl-unsafe-math-optimizations flag is passed.
I can't find anything else that would justify allowing fused operations, therefore I assume this is not safe to do and can cause issues on some applications/targets