This patch adds constrained versions of some libm-equivalent floating point operations for which non-constrained intrinsics currently exist.
The purpose of the constrained intrinsics is to force the optimizer to respect the restrictions that will be necessary to support things like the STDC FENV_ACCESS ON pragma without interfering with optimizations when these restrictions are not needed. This is a follow-up to D27028.
There are additional libm-equivalent operations which may need to be handled in a future patch. In addition, it will be necessary to update the direct manipulation of libm function calls to prevent unwanted optimizations when FP environment access is enabled.
Probably doesn't matter to the output, but why are there two spaces after metadata on the second line?