blob: c9867ddf9b07d4aa585ec8c795cdbfdb18c6e689 [file] [log] [blame]
/* PR rtl-optimization/70574 */
/* { dg-do run { target lp64 } } */
/* { dg-require-effective-target avx2 } */
/* { dg-options "-O -frerun-cse-after-loop -fno-tree-ccp -mcmodel=medium -mavx2" } */
/* { dg-additional-options "-fPIC" { target fpic } } */
#include "avx2-check.h"
typedef char A __attribute__((vector_size (32)));
typedef short B __attribute__((vector_size (32)));
int
foo (int x, __int128 y, __int128 z, A w)
{
y <<= 64;
w *= (A) { 0, -1, z, 0, ~y };
return w[0] + ((B) { x, 0, y, 0, -1 } | 1)[4];
}
static void
avx2_test ()
{
int x = foo (0, 0, 0, (A) {});
if (x != -1)
__builtin_abort ();
}