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 \
9 return __builtin_arc_ ## name (op1); \
12 #define STEST2(name, rettype, op1, op2) \
13 rettype test_ ## name \
16 return __builtin_arc_ ## name (op1, op2); \
19 #define STEST3(name, rettype, op1, op2, op3) \
20 rettype test_ ## name \
23 return __builtin_arc_ ## name (op1, op2, op3); \
26 #define STEST4(name, rettype, op1, op2, op3, op4) \
27 rettype test_ ## name \
30 return __builtin_arc_ ## name (op1, op2, op3, op4); \
33 typedef short v8hi
__attribute__ ((vector_size (16)));
38 #define rlimm 0xf3eec0fe
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
)