summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/vmx/insert-vsx-be-order.c
blob: 569a86606c79b86249e0fe9e7ef1025e4ce6cd1b (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
/* { dg-skip-if "" { powerpc*-*-darwin* } } */
/* { dg-require-effective-target powerpc_vsx_ok } */
/* Disable warnings to squelch deprecation message about -maltivec=be.  */
/* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */

#include "harness.h"

static int vec_long_long_eq (vector long long x, vector long long y)
{
  return (x[0] == y[0] && x[1] == y[1]);
}

static int vec_dbl_eq (vector double x, vector double y)
{
  return (x[0] == y[0] && x[1] == y[1]);
}

static void test()
{
  vector long long vl = {0, 1};
  vector double vd = {0.0, 1.0};
  vector long long vlr = vec_insert (2, vl, 0);
  vector double vdr = vec_insert (2.0, vd, 1);

#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  vector long long vler = {0, 2};
  vector double vder = {2.0, 1.0};
#else
  vector long long vler = {2, 1};
  vector double vder = {0.0, 2.0};
#endif

  check (vec_long_long_eq (vlr, vler), "vl");
  check (vec_dbl_eq (vdr, vder), "vd");
}