<html><body><p><tt><font size="2">Serge Pavlov <sepavloff@gmail.com> wrote on 02.03.2020 14:38:48:<br><br>> This approach has issues when applied to the intrinsics `rint` and <br>> `nearbyint`. Value returned by either of these intrinsics depends on<br>> current rounding mode. If they are considered as operation in <br>> default environment, they would round only to nearest. It is by far <br>> not the meaning of the standard C functions that these intrinsics represent.<br></font></tt><br><tt><font size="2">I'm not sure why this is an issue.  Yes, these two intrinsics depend</font></tt><br><tt><font size="2">on the current rounding mode according to the C standard, and yes,</font></tt><br><tt><font size="2">LLVM in default mode assumes that the current rounding mode is the</font></tt><br><tt><font size="2">default rounding mode.  But the same holds true for many other</font></tt><br><tt><font size="2">intrinsics and even the arithmetic IR operations like add.</font></tt><br><br><tt><font size="2">If you want to stop clang from making the default rounding mode</font></tt><br><tt><font size="2">assumption, you need to use the -frounding-math option (or one</font></tt><br><tt><font size="2">of its equivalents), which will cause clang to emit the corresponding</font></tt><br><tt><font size="2">constrained intrinsics instead, for those two as well all other</font></tt><br><tt><font size="2">affected intrinsics.</font></tt><br><br><tt><font size="2">I don't see why it would make sense to add another special case</font></tt><br><tt><font size="2">just for those two intrinsics ...</font></tt><br><br><br><tt><font size="2">Bye,</font></tt><br><tt><font size="2">Ulrich</font></tt><br><BR>
</body></html>