aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr40550.c
blob: 27935ab005a9fb373e23a5f6af4b80ef20487f96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* { dg-do run } */
/* { dg-options "-msse" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */

#ifdef __i386__
#include "cpuid.h"
#endif

typedef float v2sf __attribute__ ((vector_size (2 * sizeof(float))));

static void test (void)
{
  v2sf a = {1.0, 0.0};
  v2sf b = {0.0, 1.0};
  v2sf d;
  d = a + b;
}

int main ()
{

#ifdef __i386__
  unsigned int eax, ebx, ecx, edx;

  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
    return 0;

  if (!(edx & bit_SSE))
    return 0;
#endif

  test ();

  return 0;
}