4cc0d4490e58e87b272440634868c31175e9a58a
[platform/upstream/gcc.git] / gcc / testsuite / gcc.dg / vmx / merge-be-order.c
1 /* Disable warnings to squelch deprecation message about -maltivec=be.  */
2 /* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */
3
4 #include "harness.h"
5
6 static void test()
7 {
8   /* Input vectors.  */
9   vector unsigned char vuca = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
10   vector unsigned char vucb
11     = {16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
12   vector signed char vsca
13     = {-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1};
14   vector signed char vscb = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
15   vector unsigned short vusa = {0,1,2,3,4,5,6,7};
16   vector unsigned short vusb = {8,9,10,11,12,13,14,15};
17   vector signed short vssa = {-8,-7,-6,-5,-4,-3,-2,-1};
18   vector signed short vssb = {0,1,2,3,4,5,6,7};
19   vector unsigned int vuia = {0,1,2,3};
20   vector unsigned int vuib = {4,5,6,7};
21   vector signed int vsia = {-4,-3,-2,-1};
22   vector signed int vsib = {0,1,2,3};
23   vector float vfa = {-4.0,-3.0,-2.0,-1.0};
24   vector float vfb = {0.0,1.0,2.0,3.0};
25
26   /* Result vectors.  */
27   vector unsigned char vuch, vucl;
28   vector signed char vsch, vscl;
29   vector unsigned short vush, vusl;
30   vector signed short vssh, vssl;
31   vector unsigned int vuih, vuil;
32   vector signed int vsih, vsil;
33   vector float vfh, vfl;
34
35   /* Expected result vectors.  */
36 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
37   vector unsigned char vucrh = {24,8,25,9,26,10,27,11,28,12,29,13,30,14,31,15};
38   vector unsigned char vucrl = {16,0,17,1,18,2,19,3,20,4,21,5,22,6,23,7};
39   vector signed char vscrh = {8,-8,9,-7,10,-6,11,-5,12,-4,13,-3,14,-2,15,-1};
40   vector signed char vscrl = {0,-16,1,-15,2,-14,3,-13,4,-12,5,-11,6,-10,7,-9};
41   vector unsigned short vusrh = {12,4,13,5,14,6,15,7};
42   vector unsigned short vusrl = {8,0,9,1,10,2,11,3};
43   vector signed short vssrh = {4,-4,5,-3,6,-2,7,-1};
44   vector signed short vssrl = {0,-8,1,-7,2,-6,3,-5};
45   vector unsigned int vuirh = {6,2,7,3};
46   vector unsigned int vuirl = {4,0,5,1};
47   vector signed int vsirh = {2,-2,3,-1};
48   vector signed int vsirl = {0,-4,1,-3};
49   vector float vfrh = {2.0,-2.0,3.0,-1.0};
50   vector float vfrl = {0.0,-4.0,1.0,-3.0};
51 #else
52   vector unsigned char vucrh = {0,16,1,17,2,18,3,19,4,20,5,21,6,22,7,23};
53   vector unsigned char vucrl = {8,24,9,25,10,26,11,27,12,28,13,29,14,30,15,31};
54   vector signed char vscrh = {-16,0,-15,1,-14,2,-13,3,-12,4,-11,5,-10,6,-9,7};
55   vector signed char vscrl = {-8,8,-7,9,-6,10,-5,11,-4,12,-3,13,-2,14,-1,15};
56   vector unsigned short vusrh = {0,8,1,9,2,10,3,11};
57   vector unsigned short vusrl = {4,12,5,13,6,14,7,15};
58   vector signed short vssrh = {-8,0,-7,1,-6,2,-5,3};
59   vector signed short vssrl = {-4,4,-3,5,-2,6,-1,7};
60   vector unsigned int vuirh = {0,4,1,5};
61   vector unsigned int vuirl = {2,6,3,7};
62   vector signed int vsirh = {-4,0,-3,1};
63   vector signed int vsirl = {-2,2,-1,3};
64   vector float vfrh = {-4.0,0.0,-3.0,1.0};
65   vector float vfrl = {-2.0,2.0,-1.0,3.0};
66 #endif
67
68   vuch = vec_mergeh (vuca, vucb);
69   vucl = vec_mergel (vuca, vucb);
70   vsch = vec_mergeh (vsca, vscb);
71   vscl = vec_mergel (vsca, vscb);
72   vush = vec_mergeh (vusa, vusb);
73   vusl = vec_mergel (vusa, vusb);
74   vssh = vec_mergeh (vssa, vssb);
75   vssl = vec_mergel (vssa, vssb);
76   vuih = vec_mergeh (vuia, vuib);
77   vuil = vec_mergel (vuia, vuib);
78   vsih = vec_mergeh (vsia, vsib);
79   vsil = vec_mergel (vsia, vsib);
80   vfh  = vec_mergeh (vfa,  vfb );
81   vfl  = vec_mergel (vfa,  vfb );
82
83   check (vec_all_eq (vuch, vucrh), "vuch");
84   check (vec_all_eq (vucl, vucrl), "vucl");
85   check (vec_all_eq (vsch, vscrh), "vsch");
86   check (vec_all_eq (vscl, vscrl), "vscl");
87   check (vec_all_eq (vush, vusrh), "vush");
88   check (vec_all_eq (vusl, vusrl), "vusl");
89   check (vec_all_eq (vssh, vssrh), "vssh");
90   check (vec_all_eq (vssl, vssrl), "vssl");
91   check (vec_all_eq (vuih, vuirh), "vuih");
92   check (vec_all_eq (vuil, vuirl), "vuil");
93   check (vec_all_eq (vsih, vsirh), "vsih");
94   check (vec_all_eq (vsil, vsirl), "vsil");
95   check (vec_all_eq (vfh,  vfrh),  "vfh");
96   check (vec_all_eq (vfl,  vfrl),  "vfl");
97 }