This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/78451] [7 Regression] FAIL: gcc.target/i386/sse-22a.c: error: inlining failed in call to always_inline '_mm512_setzero_ps'
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 22 Nov 2016 15:03:53 +0000
- Subject: [Bug target/78451] [7 Regression] FAIL: gcc.target/i386/sse-22a.c: error: inlining failed in call to always_inline '_mm512_setzero_ps'
- Auto-submitted: auto-generated
- References: <bug-78451-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78451
--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Jakub Jelinek from comment #2)
> Another thing is that
> /* Doesn't require avx512vl target and is used in avx512dqintrin.h. */
> extern __inline __m128i
> __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
> _mm_setzero_di (void)
> {
> return __extension__ (__m128i)(__v2di){ 0LL, 0LL};
> }
> looks just wrong to me in avx512vlintrin.h.
> While it indeed doesn't need AVX512VL, I think that intrinsic needs SSE2 at
> least, because otherwise __v2di and __m128i don't really work.
> Why do we have that intrinsic at all and use it? Can't find it in AVX512
> manuals, and don't see it in ICC headers either? Can't we just use
> _mm_setzero_si128 instead? I mean, even _mm_setzero_si128 is used in other
> spots even when cast to e.g. __v8hi, or __v16qi, or _mm256_setzero_si256 is
> used
> when cast to __v8si even when _mm256_setzero_si256 builds __v4di rather than
> __v8si.
It looks to me that both, _mm_setzero_di and _mm_setzero_hi should be killed
and replaced with casted _mm_setzero_si128.
> And the last thing to consider is if sse-22.c shouldn't have
> avx5124fmaps,avx5124vnniw added to
> #pragma GCC target
> ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,avx512f,avx512er,avx512cd,avx512pf,sha,
> avx512vl,avx512bw,avx512dq,avx512ifma,avx512vbmi")
Yes, all new options should be added here.