MAINT,BLD: Cleanup SIMD with meson arrays
This commit is contained in:
parent
e1f816138e
commit
33e66c5400
|
@ -82,7 +82,7 @@ _static_libs += static_library(
|
||||||
'cblas_drot',
|
'cblas_drot',
|
||||||
'rot.c',
|
'rot.c',
|
||||||
include_directories: _inc,
|
include_directories: _inc,
|
||||||
c_args: [
|
c_args: [_cargs,
|
||||||
'-DSMP_SERVER',
|
'-DSMP_SERVER',
|
||||||
'-DNO_WARMUP',
|
'-DNO_WARMUP',
|
||||||
'-DMAX_CPU_NUMBER=12',
|
'-DMAX_CPU_NUMBER=12',
|
||||||
|
@ -110,4 +110,5 @@ _static_libs += static_library(
|
||||||
)
|
)
|
||||||
|
|
||||||
_interface = static_library('_interface',
|
_interface = static_library('_interface',
|
||||||
|
c_args: _cargs,
|
||||||
link_whole: _static_libs)
|
link_whole: _static_libs)
|
||||||
|
|
|
@ -870,9 +870,10 @@ foreach conf: kernel_confs
|
||||||
conf['name'],
|
conf['name'],
|
||||||
conf['src'],
|
conf['src'],
|
||||||
include_directories: _inc,
|
include_directories: _inc,
|
||||||
c_args: conf['c_args'],
|
c_args: [_cargs, conf['c_args']],
|
||||||
)
|
)
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
_kern = static_library('_kern',
|
_kern = static_library('_kern',
|
||||||
|
c_args: _cargs,
|
||||||
link_whole: _kern_libs)
|
link_whole: _kern_libs)
|
||||||
|
|
75
meson.build
75
meson.build
|
@ -164,58 +164,37 @@ else
|
||||||
add_project_arguments(f'-DF_INTERFACE_@upper_fcid@', language: 'c')
|
add_project_arguments(f'-DF_INTERFACE_@upper_fcid@', language: 'c')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
sse_args = '-msse'
|
simd_extensions = [
|
||||||
sse2_args = '-msse2'
|
{'flag': '-mmmx', 'define': 'HAVE_MMX'},
|
||||||
sse3_args = '-msse3'
|
{'flag': '-msse', 'define': 'HAVE_SSE'},
|
||||||
ssse3_args = '-mssse3'
|
{'flag': '-msse2', 'define': 'HAVE_SSE2'},
|
||||||
sse41_args = '-msse4.1'
|
{'flag': '-msse3', 'define': 'HAVE_SSE3'},
|
||||||
fma_args = '-mfma'
|
{'flag': '-mssse3', 'define': 'HAVE_SSSE3'},
|
||||||
avx_args = '-mavx'
|
{'flag': '-msse4.1', 'define': 'HAVE_SSE4_1'},
|
||||||
avx2_args = '-mavx2'
|
{'flag': '-msse4.2', 'define': 'HAVE_SSE4_2'},
|
||||||
|
{'flag': '-mfma', 'define': 'HAVE_FMA3'},
|
||||||
have_sse = cc.has_argument(sse_args)
|
{'flag': '-mavx', 'define': 'HAVE_AVX'},
|
||||||
have_sse2 = cc.has_argument(sse2_args)
|
{'flag': '-mavx2', 'define': 'HAVE_AVX2'},
|
||||||
have_sse3 = cc.has_argument(sse3_args)
|
]
|
||||||
have_ssse3 = cc.has_argument(ssse3_args)
|
|
||||||
have_sse41 = cc.has_argument(sse41_args)
|
|
||||||
have_fma = cc.has_argument(fma_args)
|
|
||||||
have_avx = cc.has_argument(avx_args)
|
|
||||||
have_avx2 = cc.has_argument(avx2_args)
|
|
||||||
|
|
||||||
simd_cargs = []
|
simd_cargs = []
|
||||||
|
simd_conf_data = configuration_data()
|
||||||
|
|
||||||
if have_sse
|
foreach ext : simd_extensions
|
||||||
simd_cargs += [sse_args, '-DHAVE_SSE']
|
if cc.has_argument(ext['flag'])
|
||||||
endif
|
simd_cargs += ext['flag']
|
||||||
|
simd_conf_data.set(ext['define'], true)
|
||||||
if have_sse2
|
else
|
||||||
simd_cargs += [sse2_args, '-DHAVE_SSE2']
|
simd_conf_data.set(ext['define'], false)
|
||||||
endif
|
endif
|
||||||
|
endforeach
|
||||||
if have_sse3
|
|
||||||
simd_cargs += [sse3_args, '-DHAVE_SSE3']
|
|
||||||
endif
|
|
||||||
|
|
||||||
if have_ssse3
|
|
||||||
simd_cargs += [ssse3_args, '-DHAVE_SSSE3']
|
|
||||||
endif
|
|
||||||
|
|
||||||
if have_sse41
|
|
||||||
simd_cargs += [sse41_args, '-DHAVE_SSE41']
|
|
||||||
endif
|
|
||||||
|
|
||||||
if have_fma
|
|
||||||
simd_cargs += [fma_args, '-DHAVE_FMA']
|
|
||||||
endif
|
|
||||||
|
|
||||||
if have_avx
|
|
||||||
simd_cargs += [avx_args, '-DHAVE_AVX']
|
|
||||||
endif
|
|
||||||
|
|
||||||
if have_avx2
|
|
||||||
simd_cargs += [avx2_args, '-DHAVE_AVX2']
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
# Generate configuration header
|
||||||
|
configure_file(output : 'simd_conf.h',
|
||||||
|
configuration : simd_conf_data)
|
||||||
|
# Can't be added as a project argument since it won't be generated until later
|
||||||
|
bldroot = meson.build_root()
|
||||||
|
_cargs += ['-include', f'@bldroot@/simd_conf.h']
|
||||||
add_project_arguments(simd_cargs, language: 'c')
|
add_project_arguments(simd_cargs, language: 'c')
|
||||||
|
|
||||||
# Ignoring other hostarch checks and conflicts for arch in BSD for now
|
# Ignoring other hostarch checks and conflicts for arch in BSD for now
|
||||||
|
|
Loading…
Reference in New Issue