[PATCH] D114782: [X86][clang] Emit diagnostic for float and double when we have features -x87 and -sse on 64-bits

Petr Hosek via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Dec 9 16:41:51 PST 2021


phosek added a comment.

This change broke our kernel build. I believe that the issue is that the compiler doesn't consider function attributes.

This can be trivially reproduced as:

  $ cat >t.c <<EOF
  #include <x86intrin.h>
  EOF
  $ ./bin/clang -c t.c -o t.o -mno-sse
  In file included from t.c:1:
  In file included from /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/x86intrin.h:13:
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/ia32intrin.h:251:1: error: SSE register return with SSE disabled
  _castu32_f32(unsigned int __A) {
  ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/ia32intrin.h:251:1: note: '_castu32_f32' defined here
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/ia32intrin.h:266:1: error: SSE register return with SSE disabled
  _castu64_f64(unsigned long long __A) {
  ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/ia32intrin.h:266:1: note: '_castu64_f64' defined here
  In file included from t.c:1:
  In file included from /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/x86intrin.h:15:
  In file included from /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/immintrin.h:26:
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/xmmintrin.h:1607:1: error: SSE register return with SSE disabled
  _mm_cvtss_f32(__m128 __a)
  ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/xmmintrin.h:1607:1: note: '_mm_cvtss_f32' defined here
  In file included from t.c:1:
  In file included from /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/x86intrin.h:15:
  In file included from /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/immintrin.h:31:
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/emmintrin.h:1566:1: error: SSE register return with SSE disabled
  _mm_cvtsd_f64(__m128d __a)
  ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/emmintrin.h:1566:1: note: '_mm_cvtsd_f64' defined here
  In file included from t.c:1:
  In file included from /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/x86intrin.h:15:
  In file included from /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/immintrin.h:66:
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avxintrin.h:2257:1: error: SSE register return with SSE disabled
  _mm256_cvtsd_f64(__m256d __a)
  ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avxintrin.h:2257:1: note: '_mm256_cvtsd_f64' defined here
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avxintrin.h:2290:1: error: SSE register return with SSE disabled
  _mm256_cvtss_f32(__m256 __a)
  ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avxintrin.h:2290:1: note: '_mm256_cvtss_f32' defined here
  In file included from t.c:1:
  In file included from /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/x86intrin.h:15:
  In file included from /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/immintrin.h:76:
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/f16cintrin.h:39:1: error: SSE register return with SSE disabled
  _cvtsh_ss(unsigned short __a)
  ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/f16cintrin.h:39:1: note: '_cvtsh_ss' defined here
  In file included from t.c:1:
  In file included from /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/x86intrin.h:15:
  In file included from /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/immintrin.h:104:
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:4090:1: error: SSE register return with SSE disabled
  _mm512_cvtsd_f64(__m512d __a)
  ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:4090:1: note: '_mm512_cvtsd_f64' defined here
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:4096:1: error: SSE register return with SSE disabled
  _mm512_cvtss_f32(__m512 __a)
  ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:4096:1: note: '_mm512_cvtss_f32' defined here
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9358:10: error: SSE register return with SSE disabled
    return __builtin_ia32_reduce_fadd_pd512(-0.0, __W);
           ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9358:10: note: '__builtin_ia32_reduce_fadd_pd512' defined here
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9357:48: error: SSE register return with SSE disabled
  static __inline__ double __DEFAULT_FN_ATTRS512 _mm512_reduce_add_pd(__m512d __W) {
                                                 ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9357:48: note: '_mm512_reduce_add_pd' defined here
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9362:10: error: SSE register return with SSE disabled
    return __builtin_ia32_reduce_fmul_pd512(1.0, __W);
           ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9362:10: note: '__builtin_ia32_reduce_fmul_pd512' defined here
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9361:48: error: SSE register return with SSE disabled
  static __inline__ double __DEFAULT_FN_ATTRS512 _mm512_reduce_mul_pd(__m512d __W) {
                                                 ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9361:48: note: '_mm512_reduce_mul_pd' defined here
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9366:1: error: SSE register return with SSE disabled
  _mm512_mask_reduce_add_pd(__mmask8 __M, __m512d __W) {
  ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9366:1: note: '_mm512_mask_reduce_add_pd' defined here
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9372:1: error: SSE register return with SSE disabled
  _mm512_mask_reduce_mul_pd(__mmask8 __M, __m512d __W) {
  ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9372:1: note: '_mm512_mask_reduce_mul_pd' defined here
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9423:10: error: SSE register return with SSE disabled
    return __builtin_ia32_reduce_fadd_ps512(-0.0f, __W);
           ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9423:10: note: '__builtin_ia32_reduce_fadd_ps512' defined here
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9422:1: error: SSE register return with SSE disabled
  _mm512_reduce_add_ps(__m512 __W) {
  ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9422:1: note: '_mm512_reduce_add_ps' defined here
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9428:10: error: SSE register return with SSE disabled
    return __builtin_ia32_reduce_fmul_ps512(1.0f, __W);
           ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9428:10: note: '__builtin_ia32_reduce_fmul_ps512' defined here
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9427:1: error: SSE register return with SSE disabled
  _mm512_reduce_mul_ps(__m512 __W) {
  ^
  /src/clang-llvm/llvm-build/fuchsia/lib/clang/14.0.0/include/avx512fintrin.h:9427:1: note: '_mm512_reduce_mul_ps' defined here
  fatal error: too many errors emitted, stopping now [-ferror-limit=]
  20 errors generated.

Would it be possible to revert the change?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D114782



More information about the cfe-commits mailing list