https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82094
Bug ID: 82094 Summary: error: inlining failed in call to always_inline ‘_mm512_permutexvar_epi8’ Product: gcc Version: 7.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: vasistavinay at gmail dot com Target Milestone: --- Created attachment 42111 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42111&action=edit Permutation of uchar elements in an AVX-512 vector I get the following error, when I compile the attached source with the given command - $ gcc -march=skylake-avx512 -mavx512f test_avx512_permute.c In file included from /in/gcc/7.1.0/Linux5/x86_64/lib/gcc/x86_64-pc-linux-gnu/7.1.0/include/immintrin.h:67:0, from test_avx512_permute.c:4: test_avx512_permute.c: In function ‘main’: /in/gcc/7.1.0/Linux5/x86_64/lib/gcc/x86_64-pc-linux-gnu/7.1.0/include/avx512vbmiintrin.h:71:1: error: inlining failed in call to always_inline ‘_mm512_permutexvar_epi8’: target specific option mismatch _mm512_permutexvar_epi8 (__m512i __A, __m512i __B) ^~~~~~~~~~~~~~~~~~~~~~~ test_avx512_permute.c:13:7: note: called from here c = _mm512_permutexvar_epi8(a, b); ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /in/gcc/7.1.0/Linux5/x86_64/lib/gcc/x86_64-pc-linux-gnu/7.1.0/include/immintrin.h:67:0, from test_avx512_permute.c:4: /in/gcc/7.1.0/Linux5/x86_64/lib/gcc/x86_64-pc-linux-gnu/7.1.0/include/avx512vbmiintrin.h:71:1: error: inlining failed in call to always_inline ‘_mm512_permutexvar_epi8’: target specific option mismatch _mm512_permutexvar_epi8 (__m512i __A, __m512i __B) ^~~~~~~~~~~~~~~~~~~~~~~ test_avx512_permute.c:13:7: note: called from here c = _mm512_permutexvar_epi8(a, b); ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _________________________________ And strangely, if I comment out the epi8 set intrinsics (lines 12 and 13), and do just the permutation without initializing vectors a and b, the following error occurs for the same command string - $ gcc -march=skylake-avx512 -mavx512f test_avx512_permute.c In file included from /in/gcc/7.1.0/Linux5/x86_64/lib/gcc/x86_64-pc-linux-gnu/7.1.0/include/immintrin.h:67:0, from test_avx512_permute.c:5: test_avx512_permute.c: In function ‘main’: /in/gcc/7.1.0/Linux5/x86_64/lib/gcc/x86_64-pc-linux-gnu/7.1.0/include/avx512vbmiintrin.h:71:1: error: inlining failed in call to always_inline ‘_mm512_permutexvar_epi8’: target specific option mismatch _mm512_permutexvar_epi8 (__m512i __A, __m512i __B) ^~~~~~~~~~~~~~~~~~~~~~~ test_avx512_permute.c:16:7: note: called from here c = _mm512_permutexvar_epi8(a, b); ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _________________________________ (In other words, the same error is duplicated in the first case) Please help me understand if there is anything wrong in my program. P.S: I'm cross-compiling the code since I don't have the access to a skylake machine yet. Thanks and Regards, ~ Vinay