Skip to content

Commit 556c2d4

Browse files
committed
Adding MSVC AVX2 support for meson build
Extracted from this MR from Marcus Asteborg: https://gitlab.xiph.org/xiph/opus/-/merge_requests/82/
1 parent d7fab5e commit 556c2d4

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

meson.build

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -490,10 +490,10 @@ if not opt_intrinsics.disabled()
490490
elif host_cpu_family in ['x86', 'x86_64']
491491
# XXX: allow external override/specification of the flags
492492
x86_intrinsics = [
493-
[ 'SSE', 'xmmintrin.h', '__m128', '_mm_setzero_ps()', ['-msse'] ],
494-
[ 'SSE2', 'emmintrin.h', '__m128i', '_mm_setzero_si128()', ['-msse2'] ],
495-
[ 'SSE4.1', 'smmintrin.h', '__m128i', '_mm_setzero_si128(); mtest = _mm_cmpeq_epi64(mtest, mtest)', ['-msse4.1'] ],
496-
[ 'AVX2', 'immintrin.h', '__m256i', '_mm256_abs_epi32(_mm256_setzero_si256())', ['-mavx', '-mfma', '-mavx2'] ],
493+
[ 'SSE', 'xmmintrin.h', '__m128', '_mm_setzero_ps()', ['-msse'], [] ],
494+
[ 'SSE2', 'emmintrin.h', '__m128i', '_mm_setzero_si128()', ['-msse2'], [] ],
495+
[ 'SSE4.1', 'smmintrin.h', '__m128i', '_mm_setzero_si128(); mtest = _mm_cmpeq_epi64(mtest, mtest)', ['-msse4.1'], [] ],
496+
[ 'AVX2', 'immintrin.h', '__m256i', '_mm256_abs_epi32(_mm256_setzero_si256())', ['-mavx', '-mfma', '-mavx2'], ['/arch:AVX2'] ],
497497
]
498498

499499
foreach intrin : x86_intrinsics
@@ -504,9 +504,11 @@ if not opt_intrinsics.disabled()
504504
return *((unsigned char *) &mtest) != 0;
505505
}'''.format(intrin[1],intrin[2],intrin[3])
506506
intrin_name = intrin[0]
507-
# Intrinsics arguments are not available with MSVC-like compilers
508-
intrin_args = cc.get_argument_syntax() == 'msvc' ? [] : intrin[4]
509-
if cc.links(intrin_check, name : 'compiler supports @0@ intrinsics'.format(intrin_name))
507+
intrin_args = cc.get_argument_syntax() == 'msvc' ? intrin[5] : intrin[4]
508+
if cc.get_argument_syntax() == 'msvc' and intrin_args.length() == 0 and cc.links(intrin_check, name : 'compiler supports @0@ intrinsics'.format(intrin_name))
509+
may_have_intrin = true
510+
presume_intrin = opus_can_presume_simd
511+
elif cc.get_argument_syntax() != 'msvc' and cc.links(intrin_check, name : 'compiler supports @0@ intrinsics'.format(intrin_name))
510512
may_have_intrin = true
511513
presume_intrin = opus_can_presume_simd
512514
elif intrin_args.length() > 0

0 commit comments

Comments
 (0)