2018-03-15 Steven G. Kargl <kargl@gcc.gnu.org>
[official-gcc.git] / gcc / testsuite / gcc.target / arc / builtin_simd.c
blob6b0252186c69b5b38c9e1de404be7b81dacb709d
1 /* { dg-do compile } */
2 /* { dg-skip-if "" { ! { clmcpu } } } */
3 /* { dg-options "-O2 -Werror-implicit-function-declaration -mARC700 -msimd" } */
5 #define STEST1(name, rettype, op1) \
6 rettype test_ ## name \
7 (void) \
8 { \
9 return __builtin_arc_ ## name (op1); \
12 #define STEST2(name, rettype, op1, op2) \
13 rettype test_ ## name \
14 (void) \
15 { \
16 return __builtin_arc_ ## name (op1, op2); \
19 #define STEST3(name, rettype, op1, op2, op3) \
20 rettype test_ ## name \
21 (void) \
22 { \
23 return __builtin_arc_ ## name (op1, op2, op3); \
26 #define STEST4(name, rettype, op1, op2, op3, op4) \
27 rettype test_ ## name \
28 (void) \
29 { \
30 return __builtin_arc_ ## name (op1, op2, op3, op4); \
33 typedef short v8hi __attribute__ ((vector_size (16)));
35 v8hi Va;
36 v8hi Vb;
37 v8hi Vc;
38 #define rlimm 0xf3eec0fe
39 #define Ic 0x02
40 #define Ib 0x02
41 #define u3 0x02
42 #define u6 0x1F
43 #define u8 0xB0
45 STEST2 ( vaddaw, v8hi, Vb, Vc)
46 STEST2 ( vaddw, v8hi, Vb, Vc)
47 STEST2 ( vavb, v8hi, Vb, Vc)
48 STEST2 ( vavrb, v8hi, Vb, Vc)
49 STEST2 ( vdifaw, v8hi, Vb, Vc)
50 STEST2 ( vdifw, v8hi, Vb, Vc)
51 STEST2 ( vmaxaw, v8hi, Vb, Vc)
52 STEST2 ( vmaxw, v8hi, Vb, Vc)
53 STEST2 ( vminaw, v8hi, Vb, Vc)
54 STEST2 ( vminw, v8hi, Vb, Vc)
55 STEST2 ( vmulaw, v8hi, Vb, Vc)
56 STEST2 (vmulfaw, v8hi, Vb, Vc)
57 STEST2 ( vmulfw, v8hi, Vb, Vc)
58 STEST2 ( vmulw, v8hi, Vb, Vc)
59 STEST2 ( vsubaw, v8hi, Vb, Vc)
60 STEST2 ( vsubw, v8hi, Vb, Vc)
61 STEST2 ( vsummw, v8hi, Vb, Vc)
62 STEST2 ( vand, v8hi, Vb, Vc)
63 STEST2 ( vandaw, v8hi, Vb, Vc)
64 STEST2 ( vbic, v8hi, Vb, Vc)
65 STEST2 ( vbicaw, v8hi, Vb, Vc)
66 STEST2 ( vor, v8hi, Vb, Vc)
67 STEST2 ( vxor, v8hi, Vb, Vc)
68 STEST2 ( vxoraw, v8hi, Vb, Vc)
69 STEST2 ( veqw, v8hi, Vb, Vc)
70 STEST2 ( vlew, v8hi, Vb, Vc)
71 STEST2 ( vltw, v8hi, Vb, Vc)
72 STEST2 ( vnew, v8hi, Vb, Vc)
73 STEST2 ( vmr1aw, v8hi, Vb, Vc)
74 STEST2 ( vmr1w, v8hi, Vb, Vc)
75 STEST2 ( vmr2aw, v8hi, Vb, Vc)
76 STEST2 ( vmr2w, v8hi, Vb, Vc)
77 STEST2 ( vmr3aw, v8hi, Vb, Vc)
78 STEST2 ( vmr3w, v8hi, Vb, Vc)
79 STEST2 ( vmr4aw, v8hi, Vb, Vc)
80 STEST2 ( vmr4w, v8hi, Vb, Vc)
81 STEST2 ( vmr5aw, v8hi, Vb, Vc)
82 STEST2 ( vmr5w, v8hi, Vb, Vc)
83 STEST2 ( vmr6aw, v8hi, Vb, Vc)
84 STEST2 ( vmr6w, v8hi, Vb, Vc)
85 STEST2 ( vmr7aw, v8hi, Vb, Vc)
86 STEST2 ( vmr7w, v8hi, Vb, Vc)
87 STEST2 ( vmrb, v8hi, Vb, Vc)
88 STEST2 ( vh264f, v8hi, Vb, Vc)
89 STEST2 (vh264ft, v8hi, Vb, Vc)
90 STEST2 (vh264fw, v8hi, Vb, Vc)
91 STEST2 ( vvc1f, v8hi, Vb, Vc)
92 STEST2 ( vvc1ft, v8hi, Vb, Vc)
94 STEST2 ( vbaddw, v8hi, Vb, rlimm)
95 STEST2 ( vbmaxw, v8hi, Vb, rlimm)
96 STEST2 ( vbminw, v8hi, Vb, rlimm)
97 STEST2 (vbmulaw, v8hi, Vb, rlimm)
98 STEST2 (vbmulfw, v8hi, Vb, rlimm)
99 STEST2 ( vbmulw, v8hi, Vb, rlimm)
100 STEST2 (vbrsubw, v8hi, Vb, rlimm)
101 STEST2 ( vbsubw, v8hi, Vb, rlimm)
104 /* Va, Vb, Ic instructions. */
105 STEST2 ( vasrw, v8hi, Vb, Ic)
106 STEST2 ( vsr8, v8hi, Vb, Ic)
107 STEST2 (vsr8aw, v8hi, Vb, Ic)
109 /* Va, Vb, u6 instructions. */
110 STEST2 ( vasrrwi, v8hi, Vb, u6)
111 STEST2 ( vasrsrwi, v8hi, Vb, u6)
112 STEST2 ( vasrwi, v8hi, Vb, u6)
113 STEST2 ( vasrpwbi, v8hi, Vb, u6)
114 STEST2 (vasrrpwbi, v8hi, Vb, u6)
115 STEST2 ( vsr8awi, v8hi, Vb, u6)
116 STEST2 ( vsr8i, v8hi, Vb, u6)
118 /* Va, Vb, u8 (simm) instructions. */
119 STEST2 ( vmvaw, v8hi, Vb, u8)
120 STEST2 ( vmvw, v8hi, Vb, u8)
121 STEST2 ( vmvzw, v8hi, Vb, u8)
122 STEST2 (vd6tapf, v8hi, Vb, u8)
124 /* Va, rlimm, u8 (simm) instructions. */
125 STEST2 (vmovaw, v8hi, rlimm, u8)
126 STEST2 ( vmovw, v8hi, rlimm, u8)
127 STEST2 (vmovzw, v8hi, rlimm, u8)
129 /* Va, Vb instructions. */
130 STEST1 ( vabsaw, v8hi, Vb)
131 STEST1 ( vabsw, v8hi, Vb)
132 STEST1 (vaddsuw, v8hi, Vb)
133 STEST1 ( vsignw, v8hi, Vb)
134 STEST1 ( vexch1, v8hi, Vb)
135 STEST1 ( vexch2, v8hi, Vb)
136 STEST1 ( vexch4, v8hi, Vb)
137 STEST1 ( vupbaw, v8hi, Vb)
138 STEST1 ( vupbw, v8hi, Vb)
139 STEST1 (vupsbaw, v8hi, Vb)
140 STEST1 ( vupsbw, v8hi, Vb)
142 /* DIb, rlimm, rlimm instructions. */
143 STEST2 (vdirun, void, rlimm, rlimm)
144 STEST2 (vdorun, void, rlimm, rlimm)
146 /* DIb, limm, rlimm instructions. */
147 STEST2 (vdiwr, void, u3, rlimm)
148 STEST2 (vdowr, void, u3, rlimm)
150 /* rlimm instructions. */
151 STEST1 ( vrec, void, rlimm)
152 STEST1 ( vrun, void, rlimm)
153 STEST1 (vrecrun, void, rlimm)
154 STEST1 (vendrec, void, rlimm)
156 /* Va, [Ib,u8] instructions. */
157 STEST3 (vld32wh, v8hi, Vb, Ic, u8)
158 STEST3 (vld32wl, v8hi, Vb, Ic, u8)
159 STEST3 ( vld64, v8hi, Vb, Ic, u8)
160 STEST3 ( vld32, v8hi, Vb, Ic, u8)
162 STEST2 (vld64w, v8hi, Ib, u8)
163 STEST2 (vld128, v8hi, Ib, u8)
165 STEST3 (vst128, void, Va, Ib, u8)
166 STEST3 ( vst64, void, Va, Ib, u8)
168 /* Va, [Ib, u8] instructions. */
169 STEST4 (vst16_n, void, Va, u3, Ib, u8)
170 STEST4 (vst32_n, void, Va, u3, Ib, u8)
172 STEST1 (vinti, void, u6)