[PATCH] D120395: [X86] Prohibit arithmatic operations on type `__bfloat16`

Phoebe Wang via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 23 06:09:16 PST 2022


pengfei added a comment.

In D120395#3340153 <https://reviews.llvm.org/D120395#3340153>, @pengfei wrote:

> In D120395#3340041 <https://reviews.llvm.org/D120395#3340041>, @RKSimon wrote:
>
>> but its still OK to perform arithmetic with __m128bh ? https://simd.godbolt.org/z/Ef59Ws4M3
>
> Good point! I'd think the define of `__m128bh` is wrong direction. We should use `__m128i` like we doing with f16c intrinsics and reserve `__m128bh` for ABI type like we doing with avx512fp16.
> I tried to warn for it using `deprecated` but it didn't report warning at all. Any thought?
>
>   diff --git a/clang/lib/Headers/avx512bf16intrin.h b/clang/lib/Headers/avx512bf16intrin.h
>   index 54f0cb9cfbf1..2f9cda6b32f2 100644
>   --- a/clang/lib/Headers/avx512bf16intrin.h
>   +++ b/clang/lib/Headers/avx512bf16intrin.h
>   @@ -13,8 +13,10 @@
>    #ifndef __AVX512BF16INTRIN_H
>    #define __AVX512BF16INTRIN_H
>   
>   -typedef short __m512bh __attribute__((__vector_size__(64), __aligned__(64)));
>   -typedef short __m256bh __attribute__((__vector_size__(32), __aligned__(32)));
>   +typedef short __m512bh __attribute__((__vector_size__(64), __aligned__(64),
>   +                                      deprecated("use __m512i instead")));
>   +typedef short __m256bh __attribute__((__vector_size__(32), __aligned__(32),
>   +                                      deprecated("use __m256i instead")));
>   
>    /// \typedef __bfloat16
>    ///    A target specific type to represent the storage only brain floating-point
>   diff --git a/clang/lib/Headers/avx512vlbf16intrin.h b/clang/lib/Headers/avx512vlbf16intrin.h
>   index d42f8eb0f0f5..0e47a930ebd0 100644
>   --- a/clang/lib/Headers/avx512vlbf16intrin.h
>   +++ b/clang/lib/Headers/avx512vlbf16intrin.h
>   @@ -13,7 +13,8 @@
>    #ifndef __AVX512VLBF16INTRIN_H
>    #define __AVX512VLBF16INTRIN_H
>   
>   -typedef short __m128bh __attribute__((__vector_size__(16), __aligned__(16)));
>   +typedef short __m128bh __attribute__((__vector_size__(16), __aligned__(16),
>   +                                      deprecated("use __m128i instead")));
>   
>    #define __DEFAULT_FN_ATTRS128 \
>      __attribute__((__always_inline__, __nodebug__, \

Sorry, it works.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D120395/new/

https://reviews.llvm.org/D120395



More information about the cfe-commits mailing list