From 8a2210b351dedde847488734e646e112d9bd3dbe Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 30 Jun 2025 22:34:14 +0900 Subject: [ruby/json] Refactor simd/conf.rb - duplicate code Integrate duplicate code by extracting headers, types and initialization code. https://github.com/ruby/json/commit/1a768d9179 --- ext/json/simd/conf.rb | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/ext/json/simd/conf.rb b/ext/json/simd/conf.rb index fa5b97801f..8e7d8ee261 100644 --- a/ext/json/simd/conf.rb +++ b/ext/json/simd/conf.rb @@ -1,29 +1,20 @@ case RbConfig::CONFIG['host_cpu'] when /^(arm|aarch64)/ # Try to compile a small program using NEON instructions - if have_header('arm_neon.h') && - try_compile(<<~'SRC') - #include - int main(int argc, char **argv) { - uint8x16_t test = vdupq_n_u8(32); - if (argc > 100000) printf("%p", &test); - return 0; - } - SRC - $defs.push("-DJSON_ENABLE_SIMD") - end + header, type, init = 'arm_neon.h', 'uint8x16_t', 'vdupq_n_u8(32)' when /^(x86_64|x64)/ - if have_header('x86intrin.h') && - try_compile(<<~'SRC') - #include - int main(int argc, char **argv) { - __m128i test = _mm_set1_epi8(32); - if (argc > 100000) printf("%p", &test); - return 0; - } - SRC - $defs.push("-DJSON_ENABLE_SIMD") - end + header, type, init = 'x86intrin.h', '__m128i', '_mm_set1_epi8(32)' +end +if header + have_header(header) && try_compile(<<~SRC) + #{cpp_include(header)} + int main(int argc, char **argv) { + #{type} test = #{init}; + if (argc > 100000) printf("%p", &test); + return 0; + } + SRC + $defs.push("-DJSON_ENABLE_SIMD") end have_header('cpuid.h') -- cgit v1.2.3