| project('SIMDe', 'c', 'cpp', |
| default_options: ['c_std=c99'], |
| license: 'MIT', |
| meson_version : '>=0.64.0', |
| version: '0.8.4') |
| # also update SIMDE_VESION_* in simde/simde-common.h |
| |
| cc = meson.get_compiler('c') |
| cxx = meson.get_compiler('cpp') |
| |
| simde_neon_families = [ |
| 'aba', |
| 'abal', |
| 'abal_high', |
| 'abd', |
| 'abdl', |
| 'abdl_high', |
| 'abs', |
| 'add', |
| 'addhn', |
| 'addhn_high', |
| 'addl', |
| 'addlv', |
| 'addl_high', |
| 'addv', |
| 'addw', |
| 'addw_high', |
| 'aes', |
| 'and', |
| 'bcax', |
| 'bic', |
| 'bsl', |
| 'cadd_rot270', |
| 'cadd_rot90', |
| 'cage', |
| 'cagt', |
| 'cale', |
| 'calt', |
| 'ceq', |
| 'ceqz', |
| 'cge', |
| 'cgez', |
| 'cgt', |
| 'cgtz', |
| 'cle', |
| 'cls', |
| 'clez', |
| 'clt', |
| 'cltz', |
| 'clz', |
| 'cmla', |
| 'cmla_lane', |
| 'cmla_rot180', |
| 'cmla_rot180_lane', |
| 'cmla_rot270', |
| 'cmla_rot270_lane', |
| 'cmla_rot90', |
| 'cmla_rot90_lane', |
| 'cnt', |
| 'cvt', |
| 'cvt_n', |
| 'cvtm', |
| 'cvtn', |
| 'cvtp', |
| 'combine', |
| 'copy_lane', |
| 'crc32', |
| 'create', |
| 'div', |
| 'dot', |
| 'dot_lane', |
| 'dup_n', |
| 'dup_lane', |
| 'eor', |
| 'ext', |
| 'fma', |
| 'fma_lane', |
| 'fma_n', |
| 'fmlal', |
| 'fmlsl', |
| 'fms', |
| 'fms_lane', |
| 'fms_n', |
| 'get_high', |
| 'get_lane', |
| 'get_low', |
| 'hadd', |
| 'hsub', |
| 'ld1_dup', |
| 'ld1_lane', |
| 'ld1_x2', |
| 'ld1_x3', |
| 'ld1_x4', |
| 'ld1q_x2', |
| 'ld1q_x3', |
| 'ld1q_x4', |
| 'ld1', |
| 'ld2', |
| 'ld2_dup', |
| 'ld2_lane', |
| 'ld3', |
| 'ld3_dup', |
| 'ld3_lane', |
| 'ld4', |
| 'ld4_dup', |
| 'ld4_lane', |
| 'max', |
| 'maxnm', |
| 'maxnmv', |
| 'maxv', |
| 'min', |
| 'minnm', |
| 'minnmv', |
| 'minv', |
| 'mla', |
| 'mla_lane', |
| 'mla_n', |
| 'mlal', |
| 'mlal_high', |
| 'mlal_high_lane', |
| 'mlal_high_n', |
| 'mlal_lane', |
| 'mlal_n', |
| 'mls', |
| 'mls_lane', |
| 'mls_n', |
| 'mlsl', |
| 'mlsl_high', |
| 'mlsl_high_lane', |
| 'mlsl_high_n', |
| 'mlsl_lane', |
| 'mlsl_n', |
| 'mmlaq', |
| 'movl', |
| 'movl_high', |
| 'movn', |
| 'movn_high', |
| 'mul', |
| 'mul_lane', |
| 'mul_n', |
| 'mull', |
| 'mull_high', |
| 'mull_high_lane', |
| 'mull_high_n', |
| 'mull_lane', |
| 'mull_n', |
| 'mulx', |
| 'mulx_lane', |
| 'mulx_n', |
| 'mvn', |
| 'neg', |
| 'orn', |
| 'orr', |
| 'padal', |
| 'padd', |
| 'paddl', |
| 'pmax', |
| 'pmaxnm', |
| 'pmin', |
| 'pminnm', |
| 'qadd', |
| 'qabs', |
| 'qdmlal', |
| 'qdmlal_high', |
| 'qdmlal_high_lane', |
| 'qdmlal_high_n', |
| 'qdmlal_lane', |
| 'qdmlal_n', |
| 'qdmlsl', |
| 'qdmlsl_high', |
| 'qdmlsl_high_lane', |
| 'qdmlsl_high_n', |
| 'qdmlsl_lane', |
| 'qdmlsl_n', |
| 'qdmulh', |
| 'qdmulh_lane', |
| 'qdmulh_n', |
| 'qdmull', |
| 'qdmull_high', |
| 'qdmull_high_lane', |
| 'qdmull_high_n', |
| 'qdmull_lane', |
| 'qdmull_n', |
| 'qrdmlah', |
| 'qrdmlah_lane', |
| 'qrdmlsh', |
| 'qrdmlsh_lane', |
| 'qrdmulh', |
| 'qrdmulh_lane', |
| 'qrdmulh_n', |
| 'qrshl', |
| 'qrshrn_high_n', |
| 'qrshrn_n', |
| 'qrshrun_high_n', |
| 'qrshrun_n', |
| 'qmovn', |
| 'qmovn_high', |
| 'qmovun', |
| 'qmovun_high', |
| 'qneg', |
| 'qshl', |
| 'qshl_n', |
| 'qshlu_n', |
| 'qshrn_high_n', |
| 'qshrn_n', |
| 'qshrun_high_n', |
| 'qshrun_n', |
| 'qsub', |
| 'qtbl', |
| 'qtbx', |
| 'raddhn', |
| 'raddhn_high', |
| 'rax', |
| 'rbit', |
| 'recpe', |
| 'recps', |
| 'recpx', |
| 'reinterpret', |
| 'rev16', |
| 'rev32', |
| 'rev64', |
| 'rhadd', |
| 'rnd', |
| 'rnd32x', |
| 'rnd32z', |
| 'rnd64x', |
| 'rnd64z', |
| 'rnda', |
| 'rndi', |
| 'rndm', |
| 'rndn', |
| 'rndp', |
| 'rndx', |
| 'rshl', |
| 'rshr_n', |
| 'rshrn_high_n', |
| 'rshrn_n', |
| 'rsqrte', |
| 'rsqrts', |
| 'rsra_n', |
| 'rsubhn', |
| 'rsubhn_high', |
| 'set_lane', |
| 'sha1', |
| 'sha256', |
| 'sha512', |
| 'shl', |
| 'shl_n', |
| 'shll_high_n', |
| 'shll_n', |
| 'shr_n', |
| 'shrn_high_n', |
| 'shrn_n', |
| 'sli_n', |
| 'sm3', |
| 'sm4', |
| 'sqadd', |
| 'sqrt', |
| 'sra_n', |
| 'sri_n', |
| 'st1', |
| 'st1_lane', |
| 'st1_x2', |
| 'st1_x3', |
| 'st1_x4', |
| 'st1q_x2', |
| 'st1q_x3', |
| 'st1q_x4', |
| 'st2', |
| 'st2_lane', |
| 'st3', |
| 'st3_lane', |
| 'st4', |
| 'st4_lane', |
| 'sub', |
| 'subhn', |
| 'subhn_high', |
| 'subl', |
| 'subl_high', |
| 'subw', |
| 'subw_high', |
| 'sudot_lane', |
| 'tbl', |
| 'tbx', |
| 'trn1', |
| 'trn2', |
| 'trn', |
| 'tst', |
| 'uqadd', |
| 'usdot', |
| 'usdot_lane', |
| 'uzp1', |
| 'uzp2', |
| 'uzp', |
| 'xar', |
| 'zip1', |
| 'zip2', |
| 'zip', |
| ] |
| |
| simde_sve_families = [ |
| 'add', |
| 'and', |
| 'cnt', |
| 'cmplt', |
| 'dup', |
| 'ld1', |
| 'ptest', |
| 'ptrue', |
| 'qadd', |
| 'sel', |
| 'st1', |
| 'sub', |
| 'reinterpret', |
| 'whilelt' |
| ] |
| |
| simde_avx512_families = [ |
| '2intersect', |
| '4dpwssd', |
| '4dpwssds', |
| 'abs', |
| 'add', |
| 'adds', |
| 'and', |
| 'andnot', |
| 'avg', |
| 'bitshuffle', |
| 'blend', |
| 'broadcast', |
| 'cast', |
| 'cmp', |
| 'cmpeq', |
| 'cmpge', |
| 'cmpgt', |
| 'cmple', |
| 'cmplt', |
| 'cmpneq', |
| 'compress', |
| 'conflict', |
| 'copysign', |
| 'cvt', |
| 'cvtt', |
| 'cvts', |
| 'cvtus', |
| 'dbsad', |
| 'div', |
| 'dpbf16', |
| 'dpbusd', |
| 'dpbusds', |
| 'dpwssd', |
| 'dpwssds', |
| 'expand', |
| 'expandloadu', |
| 'extract', |
| 'fixupimm', |
| 'fixupimm_round', |
| 'flushsubnormal', |
| 'fmadd', |
| 'fmaddsub', |
| 'fmsub', |
| 'fnmadd', |
| 'fnmsub', |
| 'fpclass', |
| 'gather', |
| 'insert', |
| 'kand', |
| 'kshift', |
| 'knot', |
| 'kxor', |
| 'load', |
| 'loadu', |
| 'lzcnt', |
| 'madd', |
| 'maddubs', |
| 'max', |
| 'min', |
| 'mov', |
| 'mov_mask', |
| 'movm', |
| 'mul', |
| 'mulhi', |
| 'mulhrs', |
| 'mullo', |
| 'multishift', |
| 'negate', |
| 'or', |
| 'packs', |
| 'packus', |
| 'permutex', |
| 'permutexvar', |
| 'permutex2var', |
| 'popcnt', |
| 'range', |
| 'range_round', |
| 'rcp', |
| 'reduce', |
| 'rol', |
| 'rolv', |
| 'ror', |
| 'rorv', |
| 'round', |
| 'roundscale', |
| 'roundscale_round', |
| 'sad', |
| 'scalef', |
| 'set', |
| 'set1', |
| 'set4', |
| 'setr', |
| 'setr4', |
| 'setzero', |
| 'setone', |
| 'shldv', |
| 'shuffle', |
| 'sll', |
| 'slli', |
| 'sllv', |
| 'sqrt', |
| 'sra', |
| 'srai', |
| 'srav', |
| 'srl', |
| 'srli', |
| 'srlv', |
| 'store', |
| 'storeu', |
| 'sub', |
| 'subs', |
| 'ternarylogic', |
| 'test', |
| 'testn', |
| 'unpacklo', |
| 'unpackhi', |
| 'xor', |
| 'xorsign', |
| ] |
| |
| simde_msa_families = [ |
| 'add_a', |
| 'adds', |
| 'adds_a', |
| 'addv', |
| 'addvi', |
| 'and', |
| 'andi', |
| 'ld', |
| 'madd', |
| 'st', |
| 'subv', |
| ] |
| |
| if not meson.is_subproject() and get_option('tests') |
| subdir('test') |
| endif |
| |
| simde_neon_family_headers = ['simde/arm/neon/types.h'] |
| foreach neon_family : simde_neon_families |
| simde_neon_family_headers += 'simde/arm/neon/' + neon_family + '.h' |
| endforeach |
| |
| simde_sve_family_headers = ['simde/arm/sve/types.h'] |
| foreach sve_family : simde_sve_families |
| simde_sve_family_headers += 'simde/arm/sve/' + sve_family + '.h' |
| endforeach |
| |
| simde_avx512_family_headers = ['simde/x86/avx512/types.h'] |
| foreach avx512_family : simde_avx512_families |
| simde_avx512_family_headers += 'simde/x86/avx512/' + avx512_family + '.h' |
| endforeach |
| |
| simde_msa_family_headers = ['simde/mips/msa/types.h'] |
| foreach msa_family : simde_msa_families |
| simde_msa_family_headers += 'simde/mips/msa/' + msa_family + '.h' |
| endforeach |
| |
| if not meson.is_subproject() |
| install_headers( |
| files([ |
| 'simde/check.h', |
| 'simde/debug-trap.h', |
| 'simde/hedley.h', |
| 'simde/simde-aes.h', |
| 'simde/simde-align.h', |
| 'simde/simde-arch.h', |
| 'simde/simde-bf16.h', |
| 'simde/simde-common.h', |
| 'simde/simde-constify.h', |
| 'simde/simde-detect-clang.h', |
| 'simde/simde-diagnostic.h', |
| 'simde/simde-f16.h', |
| 'simde/simde-features.h', |
| 'simde/simde-math.h', |
| 'simde/simde-complex.h', |
| ]), |
| subdir: 'simde') |
| |
| install_headers( |
| files([ |
| 'simde/x86/aes.h', |
| 'simde/x86/avx512.h', |
| 'simde/x86/avx2.h', |
| 'simde/x86/avx.h', |
| 'simde/x86/bmi.h', |
| 'simde/x86/clmul.h', |
| 'simde/x86/fma.h', |
| 'simde/x86/f16c.h', |
| 'simde/x86/gfni.h', |
| 'simde/x86/mmx.h', |
| 'simde/x86/sse2.h', |
| 'simde/x86/sse3.h', |
| 'simde/x86/sse4.1.h', |
| 'simde/x86/sse4.2.h', |
| 'simde/x86/sse.h', |
| 'simde/x86/ssse3.h', |
| 'simde/x86/svml.h', |
| 'simde/x86/xop.h', |
| ]), |
| subdir: 'simde/x86') |
| |
| install_headers( |
| files(simde_avx512_family_headers), |
| subdir: 'simde/x86/avx512') |
| |
| install_headers( |
| files([ |
| 'simde/arm/neon.h', |
| 'simde/arm/sve.h', |
| ]), |
| subdir: 'simde/arm') |
| |
| install_headers( |
| files(simde_neon_family_headers), |
| subdir: 'simde/arm/neon') |
| |
| install_headers( |
| files(simde_sve_family_headers), |
| subdir: 'simde/arm/sve') |
| |
| install_headers( |
| files([ |
| 'simde/wasm/simd128.h', |
| 'simde/wasm/relaxed-simd.h', |
| ]), |
| subdir: 'simde/wasm') |
| |
| install_headers( |
| files([ |
| 'simde/mips/msa.h', |
| ]), |
| subdir: 'simde/mips') |
| |
| install_headers( |
| files(simde_msa_family_headers), |
| subdir: 'simde/mips/msa') |
| |
| import('pkgconfig').generate( |
| version : meson.project_version(), |
| name : 'SIMDe', |
| filebase : 'simde', |
| description : 'Portable SIMD wrapper library') |
| endif |
| |
| simde_dep = declare_dependency( |
| include_directories : include_directories('.'), |
| version : meson.project_version()) |