PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / pr70293.c
blob4510166ead8647c4d0b59b47dfc818871a090cea
1 /* PR target/70293 */
2 /* { dg-do compile } */
3 /* { dg-require-effective-target lp64 } */
4 /* { dg-options "-mtune=westmere -mavx512vl -O2" } */
6 typedef short __v8hi __attribute__((__vector_size__(16)));
7 typedef int __v8hu __attribute__((__vector_size__(16)));
8 typedef long __m128i __attribute__((__vector_size__(16)));
9 __m128i _mm_madd_epi16___B, _mm_mullo_epi16___A,
10 scaled_bilinear_scanline_sse2_8888_8_8888_OVER_xmm_b,
11 scaled_bilinear_scanline_sse2_8888_8_8888_OVER___trans_tmp_16,
12 scaled_bilinear_scanline_sse2_8888_8_8888_OVER___trans_tmp_13;
13 int _mm_srli_epi16___B, scaled_bilinear_scanline_sse2_8888_8_8888_OVER_m,
14 scaled_bilinear_scanline_sse2_8888_8_8888_OVER_dst,
15 scaled_bilinear_scanline_sse2_8888_8_8888_OVER_wt;
16 __m128i _mm_set_epi16();
17 void _mm_cvtsi128_si32();
18 void
19 scaled_bilinear_scanline_sse2_8888_8_8888_OVER(int p1) {
20 __m128i __trans_tmp_12, __trans_tmp_6, __trans_tmp_5, xmm_x = _mm_set_epi16();
21 int mask;
22 __trans_tmp_5 = (__m128i){scaled_bilinear_scanline_sse2_8888_8_8888_OVER_wt};
23 __trans_tmp_6 = (__m128i)(__v8hi){p1, p1, p1, p1, p1, p1, p1, p1};
24 while (scaled_bilinear_scanline_sse2_8888_8_8888_OVER_dst) {
25 scaled_bilinear_scanline_sse2_8888_8_8888_OVER_m = mask++;
26 if (scaled_bilinear_scanline_sse2_8888_8_8888_OVER_m) {
27 __trans_tmp_12 =
28 (__m128i)((__v8hu)_mm_mullo_epi16___A * (__v8hu)__trans_tmp_6);
29 scaled_bilinear_scanline_sse2_8888_8_8888_OVER_xmm_b = __trans_tmp_12;
30 scaled_bilinear_scanline_sse2_8888_8_8888_OVER___trans_tmp_13 =
31 (__m128i)__builtin_ia32_psrlwi128((__v8hi)xmm_x, _mm_srli_epi16___B);
32 scaled_bilinear_scanline_sse2_8888_8_8888_OVER___trans_tmp_16 =
33 (__m128i)__builtin_ia32_pmaddwd128((__v8hi)__trans_tmp_5,
34 (__v8hi)_mm_madd_epi16___B);
35 _mm_cvtsi128_si32();