Compile failure in simdjson using GCC 14 or clang 18.1 (Node 20.12.1 - 22.1.0) #52876
Closed
Description
Version
20.12.1 - 22.1.0
Platform
Gentoo with GCC 14 or clang 18.1.
Subsystem
simdjson
What steps will reproduce the bug?
This didn't happen with node 20.12.1 which used the older simd (Comments indicate that the build issue is present with earlier versions of Node)
FAILED: obj/deps/simdutf/simdutf.simdutf.o
clang++ -MMD -MF obj/deps/simdutf/simdutf.simdutf.o.d -D_GLIBCXX_USE_CXX11_ABI=1 -DNODE_OPENSSL_CONF_NAME=nodejs_conf -DNODE_OPENSSL_CERT_STORE -DICU_NO_USER_DATA_OVERRIDE -D__STDC_FORMAT_MACROS -I../../deps/simdutf -pthread -Wall -Wextra -Wno-unused-parameter -m64 -fno-omit-frame-pointer -O3 -pipe -march=native -fno-rtti -fno-exceptions -std=gnu++17 -c ../../deps/simdutf/simdutf.cpp -o obj/deps/simdutf/simdutf.simdutf.o
../../deps/simdutf/simdutf.cpp:23203:26: error: always_inline function '_mm512_setzero_si512' requires target feature 'evex512', but would be inlined into function 'detect_encodings' that is compiled without support for 'evex512'
23203 | __m512i currentmax = _mm512_setzero_si512();
| ^
../../deps/simdutf/simdutf.cpp:23203:26: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdutf/simdutf.cpp:23205:20: error: always_inline function '_mm512_loadu_si512' requires target feature 'evex512', but would be inlined into function 'detect_encodings' that is compiled without support for 'evex512'
23205 | __m512i in = _mm512_loadu_si512((__m512i *)buf);
| ^
../../deps/simdutf/simdutf.cpp:23205:20: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdutf/simdutf.cpp:23206:43: error: always_inline function '_mm512_set1_epi16' requires target feature 'evex512', but would be inlined into function 'detect_encodings' that is compiled without support for 'evex512'
23206 | __m512i diff = _mm512_sub_epi16(in, _mm512_set1_epi16(uint16_t(0xD800)));
| ^
../../deps/simdutf/simdutf.cpp:23206:43: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdutf/simdutf.cpp:23206:22: error: always_inline function '_mm512_sub_epi16' requires target feature 'evex512', but would be inlined into function 'detect_encodings' that is compiled without support for 'evex512'
23206 | __m512i diff = _mm512_sub_epi16(in, _mm512_set1_epi16(uint16_t(0xD800)));
| ^
../../deps/simdutf/simdutf.cpp:23206:22: error: AVX vector argument of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdutf/simdutf.cpp:23208:11: error: '__builtin_ia32_ucmpw512_mask' needs target feature avx512bw,evex512
23208 | _mm512_cmplt_epu16_mask(diff, _mm512_set1_epi16(uint16_t(0x0800)));
| ^
/usr/lib/llvm/18/bin/../../../../lib/clang/18/include/avx512bwintrin.h:357:5: note: expanded from macro '_mm512_cmplt_epu16_mask'
357 | _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_LT)
| ^
/usr/lib/llvm/18/bin/../../../../lib/clang/18/include/avx512bwintrin.h:256:15: note: expanded from macro '_mm512_cmp_epu16_mask'
256 | ((__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
| ^
../../deps/simdutf/simdutf.cpp:23208:41: error: always_inline function '_mm512_set1_epi16' requires target feature 'evex512', but would be inlined into function 'detect_encodings' that is compiled without support for 'evex512'
23208 | _mm512_cmplt_epu16_mask(diff, _mm512_set1_epi16(uint16_t(0x0800)));
| ^
../../deps/simdutf/simdutf.cpp:23208:41: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdutf/simdutf.cpp:23222:38: error: '__builtin_ia32_ucmpw512_mask' needs target feature avx512bw,evex512
23222 | __mmask32 highsurrogates = _mm512_cmplt_epu16_mask(
| ^
/usr/lib/llvm/18/bin/../../../../lib/clang/18/include/avx512bwintrin.h:357:5: note: expanded from macro '_mm512_cmplt_epu16_mask'
357 | _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_LT)
| ^
/usr/lib/llvm/18/bin/../../../../lib/clang/18/include/avx512bwintrin.h:256:15: note: expanded from macro '_mm512_cmp_epu16_mask'
256 | ((__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
| ^
../../deps/simdutf/simdutf.cpp:23223:21: error: always_inline function '_mm512_set1_epi16' requires target feature 'evex512', but would be inlined into function 'detect_encodings' that is compiled without support for 'evex512'
23223 | diff, _mm512_set1_epi16(uint16_t(0x0400)));
| ^
../../deps/simdutf/simdutf.cpp:23223:21: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdutf/simdutf.cpp:23265:20: error: always_inline function '_mm512_max_epu32' requires target feature 'evex512', but would be inlined into function 'detect_encodings' that is compiled without support for 'evex512'
23265 | currentmax = _mm512_max_epu32(in, currentmax);
| ^
../../deps/simdutf/simdutf.cpp:23265:20: error: AVX vector argument of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdutf/simdutf.cpp:23268:15: error: AVX vector argument of type 'const __m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
23268 | checker.check_next_input(in);
| ^
../../deps/simdutf/simdutf.cpp:23278:30: error: always_inline function '_mm512_maskz_loadu_epi8' requires target feature 'evex512', but would be inlined into function 'detect_encodings' that is compiled without support for 'evex512'
23278 | const __m512i utf8 = _mm512_maskz_loadu_epi8(
| ^
../../deps/simdutf/simdutf.cpp:23278:30: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
FAILED: obj/deps/simdjson/simdjson.simdjson.o
clang++ -MMD -MF obj/deps/simdjson/simdjson.simdjson.o.d -D_GLIBCXX_USE_CXX11_ABI=1 -DNODE_OPENSSL_CONF_NAME=nodejs_conf -DNODE_OPENSSL_CERT_STORE -DICU_NO_USER_DATA_OVERRIDE -D__STDC_FORMAT_MACROS -I../../deps/simdjson -pthread -Wall -Wextra -Wno-unused-parameter -m64 -fno-omit-frame-pointer -O3 -pipe -march=native -fno-rtti -fno-exceptions -std=gnu++17 -c ../../deps/simdjson/simdjson.cpp -o obj/deps/simdjson/simdjson.simdjson.o
../../deps/simdjson/simdjson.cpp:20344:14: error: always_inline function '_mm512_loadu_si512' requires target feature 'evex512', but would be inlined into function 'load' that is compiled without support for 'evex512'
20344 | return _mm512_loadu_si512(reinterpret_cast<const __m512i *>(values));
| ^
../../deps/simdjson/simdjson.cpp:20344:14: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdjson/simdjson.cpp:20344:14: error: AVX vector argument of type 'const __m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdjson/simdjson.cpp:20470:51: error: AVX vector argument of type 'const __m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
20470 | simdjson_inline simd8(const __m512i _value) : base8_numeric<uint8_t>(_value) {}
| ^
../../deps/simdjson/simdjson.cpp:20364:59: error: AVX vector argument of type 'const __m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
20364 | simdjson_inline base8_numeric(const __m512i _value) : base8<T>(_value) {}
| ^
../../deps/simdjson/simdjson.cpp:20310:51: error: AVX vector argument of type 'const __m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
20310 | simdjson_inline base8(const __m512i _value) : base<simd8<T>>(_value) {}
| ^
../../deps/simdjson/simdjson.cpp:20535:52: error: always_inline function '_mm512_movepi8_mask' requires target feature 'evex512', but would be inlined into function 'is_ascii' that is compiled without support for 'evex512'
20535 | simdjson_inline bool is_ascii() const { return _mm512_movepi8_mask(*this) == 0; }
| ^
../../deps/simdjson/simdjson.cpp:20535:52: error: AVX vector argument of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdjson/simdjson.cpp:20291:71: error: always_inline function '_mm512_or_si512' requires target feature 'evex512', but would be inlined into function 'operator|' that is compiled without support for 'evex512'
20291 | simdjson_inline Child operator|(const Child other) const { return _mm512_or_si512(*this, other); }
| ^
../../deps/simdjson/simdjson.cpp:20291:71: error: AVX vector argument of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdjson/simdjson.cpp:20291:71: error: AVX vector argument of type 'const __m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdjson/simdjson.cpp:20322:14: error: '__builtin_ia32_palignr512' needs target feature avx512bw,evex512
20322 | return _mm512_alignr_epi8(*this, _mm512_permutex2var_epi64(prev_chunk, _mm512_set_epi64(13, 12, 11, 10, 9, 8, 7, 6), *this), shift);
| ^
/usr/lib/llvm/18/bin/../../../../lib/clang/18/include/avx512bwintrin.h:1977:13: note: expanded from macro '_mm512_alignr_epi8'
1977 | ((__m512i)__builtin_ia32_palignr512((__v64qi)(__m512i)(A), \
| ^
../../deps/simdjson/simdjson.cpp:20322:78: error: always_inline function '_mm512_set_epi64' requires target feature 'evex512', but would be inlined into function 'prev' that is compiled without support for 'evex512'
20322 | return _mm512_alignr_epi8(*this, _mm512_permutex2var_epi64(prev_chunk, _mm512_set_epi64(13, 12, 11, 10, 9, 8, 7, 6), *this), shift);
| ^
../../deps/simdjson/simdjson.cpp:20322:78: error: AVX vector return of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdjson/simdjson.cpp:20322:40: error: always_inline function '_mm512_permutex2var_epi64' requires target feature 'evex512', but would be inlined into function 'prev' that is compiled without support for 'evex512'
20322 | return _mm512_alignr_epi8(*this, _mm512_permutex2var_epi64(prev_chunk, _mm512_set_epi64(13, 12, 11, 10, 9, 8, 7, 6), *this), shift);
| ^
../../deps/simdjson/simdjson.cpp:20322:40: error: AVX vector argument of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
../../deps/simdjson/simdjson.cpp:20322:14: error: AVX vector argument of type 'const __m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
20322 | return _mm512_alignr_epi8(*this, _mm512_permutex2var_epi64(prev_chunk, _mm512_set_epi64(13, 12, 11, 10, 9, 8, 7, 6), *this), shift);
| ^
/usr/lib/llvm/18/bin/../../../../lib/clang/18/include/avx512bwintrin.h:1977:3: note: expanded from macro '_mm512_alignr_epi8'
1977 | ((__m512i)__builtin_ia32_palignr512((__v64qi)(__m512i)(A), \
| ^
../../deps/simdjson/simdjson.cpp:20543:72: error: always_inline function '_mm512_srli_epi16' requires target feature 'evex512', but would be inlined into function 'shr' that is compiled without support for 'evex512'
20543 | simdjson_inline simd8<uint8_t> shr() const { return simd8<uint8_t>(_mm512_srli_epi16(*this, N)) & uint8_t(0xFFu >> N); }
| ^
../../deps/simdjson/simdjson.cpp:20543:72: error: AVX vector argument of type '__m512i' (vector of 8 'long long' values) without 'evex512' enabled changes the ABI
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
How often does it reproduce? Is there a required condition?
No response
What is the expected behavior? Why is that the expected behavior?
No response
What do you see instead?
Compile failure
Additional information
No response
Activity