summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/gimplefe-41.c
blob: e52a3a559a99dcebba4f8f850df931f78917b1e1 (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
35
36
37
38
39
40
/* { dg-do compile { target { vect_double && vect_long_long } } } */
/* { dg-options "-fgimple -Wno-psabi -w" } */
/* { dg-additional-options "-msse2" { target x86_64-*-* i?86-*-* } } */

typedef double __v2df __attribute__ ((__vector_size__ (16)));
typedef unsigned long long __v2di __attribute__ ((__vector_size__ (16)));

__v2df __GIMPLE (ssa)
_mm_add_sd (__v2df x, __v2df y)
{
  __v2df z;
  double _1;
  double _2;
  double _3;
  __v2df _7;

  __BB(2):
  _1 = __BIT_FIELD_REF <double> (x_4(D), 64u, 0u);
  _2 = __BIT_FIELD_REF <double> (y_5(D), 64u, 0u);
  _3 = _1 + _2;
  _7 = _Literal (__v2df) {_3, _3};
  z_6 = __VEC_PERM (x_4(D), _7, _Literal (__v2di) { 2ul, 1ul });
  return z_6;
}

__v2df __GIMPLE (ssa)
_mm_add_sd2 (__v2df x, __v2df y)
{
  __v2df z;
  double _1;
  double _2;
  double _3;

  __BB(2):
  _1 = __BIT_FIELD_REF <double> (x_4(D), 64u, 0u);
  _2 = __BIT_FIELD_REF <double> (y_5(D), 64u, 0u);
  _3 = _1 + _2;
  z_6 = __BIT_INSERT (x_4(D), _3, 0);
  return z_6;
}