Browse Source

meson: add sse option

pull/175/head
Steve Lhomme 2 years ago
parent
commit
1a12715ff8
  1. 19
      buildsystem/simd_checks/meson.build
  2. 6
      meson_options.txt

19
buildsystem/simd_checks/meson.build

@ -1,7 +1,12 @@
# SIMD checks
enable_sse = false
if host_machine.cpu_family().startswith('x86')
enable_sse = get_option('sse').allowed()
endif
# Check for fully workin SSE2 intrinsics
have_sse2_intrinsics = cc.compiles('''
have_sse2_intrinsics = enable_sse and cc.compiles('''
#include <emmintrin.h>
#include <stdint.h>
uint64_t frobzor;
@ -23,7 +28,7 @@ if have_sse2_intrinsics
endif
# Check for SSE2 inline assembly support
can_compile_sse2 = cc.compiles('''
can_compile_sse2 = enable_sse and cc.compiles('''
void f() {
void *p;
asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
@ -35,7 +40,7 @@ endif
have_sse2 = can_compile_sse2
# Check for SSE3 inline assembly support
can_compile_sse3 = cc.compiles('''
can_compile_sse3 = enable_sse and cc.compiles('''
void f() {
void *p;
asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
@ -46,7 +51,7 @@ if can_compile_sse3
endif
# Check for SSSE3 inline assembly support
can_compile_2_sse3 = cc.compiles('''
can_compile_2_sse3 = enable_sse and cc.compiles('''
void f() {
void *p;
asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
@ -58,7 +63,7 @@ endif
have_sse3 = can_compile_sse3 and can_compile_2_sse3
# Check for SSE4.1 inline assembly support
can_compile_sse4_1 = cc.compiles('''
can_compile_sse4_1 = enable_sse and cc.compiles('''
void f() {
void *p;
asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
@ -70,7 +75,7 @@ endif
have_sse4_1 = can_compile_sse4_1
# Check for SSE4.2 inline assembly support
can_compile_sse4_2 = cc.compiles('''
can_compile_sse4_2 = enable_sse and cc.compiles('''
void f() {
void *p;
asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
@ -82,7 +87,7 @@ endif
have_sse4_2 = can_compile_sse4_2
# Check for SSE4A inline assembly support
can_compile_sse4A = cc.compiles('''
can_compile_sse4A = enable_sse and cc.compiles('''
void f() {
void *p;
asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");

6
meson_options.txt

@ -80,7 +80,11 @@ option('vendored_rust_deps',
value : 'no',
description : 'Should use vendored sources: `no`, `yes` or PATH_TO_VENDORED_SOURCES')
# TODO: Missing sse option
option('sse',
type : 'feature',
value : 'auto',
description : 'SSE (2-4) optimizations')
# TODO: Missing avx option
# TODO: Missing neon option
# TODO: Missing sve option

Loading…
Cancel
Save