aboutsummaryrefslogtreecommitdiff
path: root/test cases/common/139 simd/meson.build
blob: 60312186ecb0dec97eb1e5bea0f6dbbe00f4f17a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
project('simd', 'c')

cc = meson.get_compiler('c')

cdata = configuration_data()

# The idea is to have a simd module and then do something like:
#
# static_libs = simd.check('mysimdstuff',
#   mmx : 'mmx_funcs.c',
#   sse : 'sse_funcs.c',
#   sse2 : 'sse2_funcs.c',
#   <etc>
#   configuration : cdata, # adds HAVE_XXX
#   compiler : cc)
#
# and then have a target that uses the result in links_with.

# The following headers need to be added. Also Thumb and Altivec.
#<wmmintrin.h> AES
#<zmmintrin.h> AVX512

simdlibs = []

simdarr = [['-mmmx', 'HAVE_MMX', 'simd_mmx', 'simd_mmx.c'],
 ['-msse', 'HAVE_SSE', 'simd_sse', 'simd_sse.c'],
 ['-msse2', 'HAVE_SSE2', 'simd_sse2', 'simd_sse2.c'],
 ['-msse3', 'HAVE_SSE3', 'simd_sse3', 'simd_sse3.c'],
 ['-mssse3', 'HAVE_SSSE3', 'simd_ssse3', 'simd_ssse3.c'],
 ['-msse4.1', 'HAVE_SSE41', 'simd_sse41', 'simd_sse41.c'],
 ['-msse4.2', 'HAVE_SSE42', 'simd_sse42', 'simd_sse42.c'],
 ['-mavx', 'HAVE_AVX', 'simd_avx', 'simd_avx.c'],
 ['-mavx2', 'HAVE_AVX2', 'simd_avx2', 'simd_avx2.c'],
]

foreach ia : simdarr
  arg = ia[0]
  def = ia[1]
  libname = ia[2]
  filename = ia[3]
  if cc.has_argument(arg)
    cdata.set(def, 1)
    simdlibs += static_library(libname, filename, c_args : arg)
  endif
endforeach

configure_file(output : 'simdconfig.h',
  configuration : cdata)

p = executable('simdtest', 'simdchecker.c', 'fallback.c',
  link_with : simdlibs)

test('simdtest', p)