pengfei added inline comments.
================ Comment at: clang/lib/Headers/avx512fintrin.h:9305 + * 1. The elements are reassociable when using fadd/fmul intrinsics; + * 2. There's no nan and signed zero in the elements when using fmin/max + intrinsics; ---------------- spatel wrote: > If I understand correctly, there's nothing preventing -0.0 or NaN values in > these ops. But if either of those are present, then the result is potentially > indeterminate. > > For the LLVM intrinsic, we have this text in LangRef: > "The result will always be a number unless all elements of the vector are > NaN. For a vector with minimum element magnitude 0.0 and containing both +0.0 > and -0.0 elements, the sign of the result is unspecified." Thanks @spatel for the information. I checked that the LLVM intrinsic does ignore the sign of zeros. https://godbolt.org/z/a9Yj8a. So we can remove the no signed zero assumption. But X86 fmin/fmax instructions have difference with the LLVM intrinsic, i.e. the result might be NaN even there's only one NaN in elements. Besides, the LangRef also says "If the intrinsic call has the nnan fast-math flag, then the operation can assume that NaNs are not present in the input vector." So we still need the no nan assumption here. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D93179/new/ https://reviews.llvm.org/D93179 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits