1 /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
2 /* { dg-require-effective-target powerpc_vsx_ok } */
3 /* { dg-options "-maltivec=be -mabi=altivec -std=gnu99 -mvsx" } */
7 static int vec_long_long_eq (vector
long long x
, vector
long long y
)
9 return (x
[0] == y
[0] && x
[1] == y
[1]);
12 static int vec_double_eq (vector
double x
, vector
double y
)
14 return (x
[0] == y
[0] && x
[1] == y
[1]);
20 vector
long long vla
= {-2,-1};
21 vector
long long vlb
= {0,1};
22 vector
double vda
= {-2.0,-1.0};
23 vector
double vdb
= {0.0,1.0};
24 vector
unsigned int vuia
= {0,1,2,3};
25 vector
unsigned int vuib
= {4,5,6,7};
26 vector
signed int vsia
= {-4,-3,-2,-1};
27 vector
signed int vsib
= {0,1,2,3};
28 vector
float vfa
= {-4.0,-3.0,-2.0,-1.0};
29 vector
float vfb
= {0.0,1.0,2.0,3.0};
32 vector
long long vlh
, vll
;
33 vector
double vdh
, vdl
;
34 vector
unsigned int vuih
, vuil
;
35 vector
signed int vsih
, vsil
;
36 vector
float vfh
, vfl
;
38 /* Expected result vectors. */
39 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
40 vector
long long vlrh
= {1,-1};
41 vector
long long vlrl
= {0,-2};
42 vector
double vdrh
= {1.0,-1.0};
43 vector
double vdrl
= {0.0,-2.0};
44 vector
unsigned int vuirh
= {6,2,7,3};
45 vector
unsigned int vuirl
= {4,0,5,1};
46 vector
signed int vsirh
= {2,-2,3,-1};
47 vector
signed int vsirl
= {0,-4,1,-3};
48 vector
float vfrh
= {2.0,-2.0,3.0,-1.0};
49 vector
float vfrl
= {0.0,-4.0,1.0,-3.0};
51 vector
long long vlrh
= {-2,0};
52 vector
long long vlrl
= {-1,1};
53 vector
double vdrh
= {-2.0,0.0};
54 vector
double vdrl
= {-1.0,1.0};
55 vector
unsigned int vuirh
= {0,4,1,5};
56 vector
unsigned int vuirl
= {2,6,3,7};
57 vector
signed int vsirh
= {-4,0,-3,1};
58 vector
signed int vsirl
= {-2,2,-1,3};
59 vector
float vfrh
= {-4.0,0.0,-3.0,1.0};
60 vector
float vfrl
= {-2.0,2.0,-1.0,3.0};
63 vlh
= vec_mergeh (vla
, vlb
);
64 vll
= vec_mergel (vla
, vlb
);
65 vdh
= vec_mergeh (vda
, vdb
);
66 vdl
= vec_mergel (vda
, vdb
);
67 vuih
= vec_mergeh (vuia
, vuib
);
68 vuil
= vec_mergel (vuia
, vuib
);
69 vsih
= vec_mergeh (vsia
, vsib
);
70 vsil
= vec_mergel (vsia
, vsib
);
71 vfh
= vec_mergeh (vfa
, vfb
);
72 vfl
= vec_mergel (vfa
, vfb
);
74 check (vec_long_long_eq (vlh
, vlrh
), "vlh");
75 check (vec_long_long_eq (vll
, vlrl
), "vll");
76 check (vec_double_eq (vdh
, vdrh
), "vdh" );
77 check (vec_double_eq (vdl
, vdrl
), "vdl" );
78 check (vec_all_eq (vuih
, vuirh
), "vuih");
79 check (vec_all_eq (vuil
, vuirl
), "vuil");
80 check (vec_all_eq (vsih
, vsirh
), "vsih");
81 check (vec_all_eq (vsil
, vsirl
), "vsil");
82 check (vec_all_eq (vfh
, vfrh
), "vfh");
83 check (vec_all_eq (vfl
, vfrl
), "vfl");