Hi, Fortran 2018 introduced intrinsic functions for all the IEEE-754 comparison operations, compareQuiet* and compareSignaling* I want to introduce those into the Fortran front-end, and make them emit the right code. But cannot find the correspondance between IEEE-754 nomenclature and GCC internal representation.
I understand that the middle-end representation was mostly created with C in mind, so I assume that the correspondance is that used by the C standard. That helps me to some extent, as I can find draft documents that seem to list the following table (page 8 of https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1615.pdf): compareQuietEqual == compareQuietNotEqual != compareSignalingEqual iseqsig compareSignalingGreater > compareSignalingGreaterEqual >= compareSignalingLess < compareSignalingLessEqual <= compareSignalingNotEqual !iseqsig compareSignalingNotGreater !(x>y) compareSignalingLessUnordered !(x=>y) compareSignalingNotLess !(x<y) compareSignalingGreaterUnorder !(x<=y) compareQuietGreater isgreater compareQuietGreaterEqual isgreaterequal compareQuietLess isless compareQuietLessEqual islessequal compareQuietUnordered isunordered compareQuietNotGreater !isgreater compareQuietLessUnordered !isgreaterequal compareQuietNotLess !isless compareQuietGreaterUnordered !islessequal compareQuietOrdered !isunordered I have two questions: 1. Is this list normative, and was it modified later (I have only found a 2012 draft)? 2. All the functions are available as GCC type-generic built-ins (yeah!), except there is no __builtin_ iseqsig (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77928). Is there a fundamental problem with creating one, and could someone help there? Thanks, FX