Quoting Rémi Denis-Courmont (2024-07-26 18:32:19)
> The absolute value of a floating point value is easier to calculate than
> that of an integer: it is obtained by either clearing the sign or xoring it
> with itself. Accordingly, Arm, LoongArch, RISC-V have dedicated instructions
> to manipulate float sign bits. x86-64 has ANDPS.
> 
> As per C11 appendix F, FFABS() is not quite the same as fabs() however,
> due to differing NaN handling. GCC is able to optimise the current FFABS
> definition to match fabs() anyway with just -fno-signed-zeros. But Clang is
> evidently not doing so and inserts a comparison with 0 and a conditional
> select or branch. Now that we have C11, this is easy to fix properly.
> (Another option is to manually audit which of the ~880 FFABS/FFNABS use
> sites involve floating point values.)
> 
> Note that this still preserves the old definitions for C++ and pre-C11
> compilers since the 2 macros are public (even though they start with FF).
> ---
>  libavutil/common.h | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/libavutil/common.h b/libavutil/common.h
> index 3b830daf30..48761885fb 100644
> --- a/libavutil/common.h
> +++ b/libavutil/common.h
> @@ -71,7 +71,14 @@
>   * as with *abs()
>   * @see FFNABS()
>   */
> +#if !defined (__cplusplus) && __STDC_VERSION__ >= 201112L

Is __STDC_VERSION__ defined for C++?

-- 
Anton Khirnov
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to