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

Reply via email to