blob: 547485d5519df8f53f9dd30e3b9e0bf17d6d740c [file] [log] [blame]
/* { dg-do run } */
/* { dg-require-effective-target sse3 } */
/* { dg-options "-O3 -msse3 -fdump-tree-slp2" } */
#ifndef CHECK_H
#define CHECK_H "sse3-check.h"
#endif
#ifndef TEST
#define TEST sse3_test
#endif
#include CHECK_H
double x[2], y[2], z[2];
void __attribute__((noipa)) foo ()
{
x[0] = y[0] - z[0];
x[1] = y[1] + z[1];
}
void __attribute__((noipa)) bar ()
{
x[0] = y[0] + z[0];
x[1] = y[1] - z[1];
}
static void
TEST (void)
{
for (int i = 0; i < 2; ++i)
{
y[i] = i + 1;
z[i] = 2 * i + 1;
}
foo ();
if (x[0] != 0 || x[1] != 5)
__builtin_abort ();
bar ();
if (x[0] != 2 || x[1] != -1)
__builtin_abort ();
}
/* { dg-final { scan-tree-dump-times "ADDSUB" 1 "slp2" } } */