https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116738
--- Comment #14 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Jakub Jelinek from comment #13) > Though, unsure about why ieee is used in the name of some of the patterns, > my copy of IEEE says that minNum and maxNum should return the non-NaN > operand if one is NaN and other is not, and unspecified which one is > returned when both are 0s of any sign or both are NaNs. > The VMINSS etc. definition clearly is src1 < src2 ? src1 : src2 and that can > be represented in RTL as (if_then_else (unge (match_operand 1) > (match_operand 2)) (match_dup 2) (match_dup 1)) or so, no need for UNSPEC. > Or am I missing something? Please note that in the test the insn is generated from the intrinsic, which has documented behaviour wrt zeros and NaNs [1]. The testcase expects this behaviour and this is why we should emit UNSPEC. We can still emit smin/smax RTX if NaNs and signed zeros can be ignored. The ieee in the name is mainly due to historical reasons... [1] https://www.felixcloutier.com/x86/minss