https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119067

--- Comment #4 from Sam James <sjames at gcc dot gnu.org> ---
Reduced to..

SkBlitRow_opts_hsw.ii:
```
typedef char __v32qi __attribute__((__vector_size__(32)));
typedef long __m256i __attribute__((__vector_size__(32)));
__m256i _mm256_shuffle_epi8___X, _mm256_shuffle_epi8___Y,
    _mm256_sub_epi16___trans_tmp_4;
void _mm256_sub_epi16() {
  _mm256_sub_epi16___trans_tmp_4 = (__m256i)__builtin_ia32_pshufb256(
      (__v32qi)_mm256_shuffle_epi8___X, (__v32qi)_mm256_shuffle_epi8___Y);
}
```

SkSwizzler_opts_hsw.ii:
```
typedef char __v32qi __attribute__((__vector_size__(32)));
typedef long __m256i __attribute__((__vector_size__(32)));
#pragma GCC push_options
#pragma GCC target "avxvnni"
#pragma GCC pop_options
__m256i _mm256_shuffle_epi8___X, _mm256_shuffle_epi8___Y;
__m256i __attribute___mm256_shuffle_epi8() {
  return (__m256i)__builtin_ia32_pshufb256((__v32qi)_mm256_shuffle_epi8___X,
                                           (__v32qi)_mm256_shuffle_epi8___Y);
}
```

```
g++ -c SkBlitRow_opts_hsw.ii -O3 -mavx2 -mf16c -mfma -flto
g++ -c SkSwizzler_opts_hsw.ii -O3 -flto
g++ SkBlitRow_opts_hsw.o SkSwizzler_opts_hsw.o
```

Reply via email to