1 /* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */
2 /* { dg-options "-O2 -mvsx" } */
4 /* Added for PR79261 to test that vec_xxpermdi works correctly for
5 both BE and LE targets. */
10 vector
double vdx
= { 0.0, 1.0 };
11 vector
double vdy
= { 2.0, 3.0 };
14 vector
signed long long vsllx
= { 0, 1 };
15 vector
signed long long vslly
= { 2, 3 };
16 vector
signed long long vsllz
;
18 vector
float vfx
= { 0.0, 1.0, 2.0, 3.0 };
19 vector
float vfy
= { 4.0, 5.0, 6.0, 7.0 };
22 vector
signed int vsix
= { 0, 1, 2, 3 };
23 vector
signed int vsiy
= { 4, 5, 6, 7 };
24 vector
signed int vsiz
;
26 vector
signed short vssx
= { 0, 1, 2, 3, 4, 5, 6, 7 };
27 vector
signed short vssy
= { 8, 9, 10, 11, 12, 13, 14, 15 };
28 vector
signed short vssz
;
30 vector
signed char vscx
= { 0, 1, 2, 3, 4, 5, 6, 7,
31 8, 9, 10, 11, 12, 13, 14, 15 };
32 vector
signed char vscy
= { 16, 17, 18, 19, 20, 21, 22, 23,
33 24, 25, 26, 27, 28, 29, 30, 31 };
34 vector
signed char vscz
;
39 vdz
= vec_xxpermdi (vdx
, vdy
, 0b01);
40 if (vdz
[0] != 0.0 || vdz
[1] != 3.0)
43 vsllz
= vec_xxpermdi (vsllx
, vslly
, 0b10);
44 if (vsllz
[0] != 1 || vsllz
[1] != 2)
47 vfz
= vec_xxpermdi (vfx
, vfy
, 0b01);
48 if (vfz
[0] != 0.0 || vfz
[1] != 1.0 || vfz
[2] != 6.0 || vfz
[3] != 7.0)
51 vsiz
= vec_xxpermdi (vsix
, vsiy
, 0b10);
52 if (vsiz
[0] != 2 || vsiz
[1] != 3 || vsiz
[2] != 4 || vsiz
[3] != 5)
55 vssz
= vec_xxpermdi (vssx
, vssy
, 0b00);
56 if (vssz
[0] != 0 || vssz
[1] != 1 || vssz
[2] != 2 || vssz
[3] != 3
57 || vssz
[4] != 8 || vssz
[5] != 9 || vssz
[6] != 10 || vssz
[7] != 11)
60 vscz
= vec_xxpermdi (vscx
, vscy
, 0b11);
61 if (vscz
[0] != 8 || vscz
[1] != 9 || vscz
[2] != 10 || vscz
[3] != 11
62 || vscz
[4] != 12 || vscz
[5] != 13 || vscz
[6] != 14 || vscz
[7] != 15
63 || vscz
[8] != 24 || vscz
[9] != 25 || vscz
[10] != 26 || vscz
[11] != 27
64 || vscz
[12] != 28 || vscz
[13] != 29 || vscz
[14] != 30 || vscz
[15] != 31)