blob: 14bc7cdadc207f1dc403b597e2598acaec75f892 [file] [log] [blame]
/* PR target/101611 */
/* { dg-do run } */
/* { dg-options "-O2 -mavx2 -mno-avx512f" } */
/* { dg-require-effective-target avx2 } */
#include "avx2-check.h"
typedef long long V __attribute__((vector_size(32)));
typedef long long W __attribute__((vector_size(16)));
__attribute__((noipa)) V
foo (V a, V b)
{
return a >> b;
}
__attribute__((noipa)) W
bar (W a, W b)
{
return a >> b;
}
static void
avx2_test (void)
{
V a = { 0x7f123456789abcdeLL, -0x30edcba987654322LL,
-0x30edcba987654322LL, 0x7f123456789abcdeLL };
V b = { 17, 11, 23, 0 };
V c = foo (a, b);
if (c[0] != 0x3f891a2b3c4dLL
|| c[1] != -0x61db97530eca9LL
|| c[2] != -0x61db97530fLL
|| c[3] != 0x7f123456789abcdeLL)
abort ();
W d = { 0x7f123456789abcdeLL, -0x30edcba987654322LL };
W e = { 45, 27 };
W f = bar (d, e);
if (f[0] != 0x3f891LL
|| f[1] != -0x61db97531LL)
abort ();
}