Go to the documentation of this file.
27 #if !defined(ATTRIBUTE_ALIGNED_MAX)
28 # warning ATTRIBUTE_ALIGNED_MAX undefined. Alignment of data structures does not work !
29 #elif ATTRIBUTE_ALIGNED_MAX < 16
30 # warning Compiler does not support proper alignment for SSE2 !
47 #define mmx_i2r(op,imm,reg) \
48 __asm__ __volatile__ (#op " %0, %%" #reg \
52 #define mmx_m2r(op,mem,reg) \
53 __asm__ __volatile__ (#op " %0, %%" #reg \
58 #define mmx_a2r(op,any,reg) \
59 __asm__ __volatile__ (#op " %0, %%" #reg \
63 #define mmx_r2m(op,reg,mem) \
64 __asm__ __volatile__ (#op " %%" #reg ", %0" \
68 #define mmx_r2a(op,reg,any) \
69 __asm__ __volatile__ (#op " %%" #reg ", %0" \
73 #define mmx_r2r(op,regs,regd) \
74 __asm__ __volatile__ (#op " %" #regs ", %" #regd)
77 #define emms() __asm__ __volatile__ ("emms")
79 #define movd_m2r(var,reg) mmx_m2r (movd, var, reg)
80 #define movd_r2m(reg,var) mmx_r2m (movd, reg, var)
81 #define movd_r2r(regs,regd) mmx_r2r (movd, regs, regd)
82 #define movd_a2r(any,reg) mmx_a2r (movd, any, reg)
83 #define movd_r2a(reg,any) mmx_r2a (movd, reg, any)
85 #define movq_m2r(var,reg) mmx_m2r (movq, var, reg)
86 #define movq_r2m(reg,var) mmx_r2m (movq, reg, var)
87 #define movq_r2r(regs,regd) mmx_r2r (movq, regs, regd)
89 #define packssdw_m2r(var,reg) mmx_m2r (packssdw, var, reg)
90 #define packssdw_r2r(regs,regd) mmx_r2r (packssdw, regs, regd)
91 #define packsswb_m2r(var,reg) mmx_m2r (packsswb, var, reg)
92 #define packsswb_r2r(regs,regd) mmx_r2r (packsswb, regs, regd)
94 #define packuswb_m2r(var,reg) mmx_m2r (packuswb, var, reg)
95 #define packuswb_r2r(regs,regd) mmx_r2r (packuswb, regs, regd)
97 #define paddb_m2r(var,reg) mmx_m2r (paddb, var, reg)
98 #define paddb_r2r(regs,regd) mmx_r2r (paddb, regs, regd)
99 #define paddd_m2r(var,reg) mmx_m2r (paddd, var, reg)
100 #define paddd_r2r(regs,regd) mmx_r2r (paddd, regs, regd)
101 #define paddw_m2r(var,reg) mmx_m2r (paddw, var, reg)
102 #define paddw_r2r(regs,regd) mmx_r2r (paddw, regs, regd)
104 #define paddsb_m2r(var,reg) mmx_m2r (paddsb, var, reg)
105 #define paddsb_r2r(regs,regd) mmx_r2r (paddsb, regs, regd)
106 #define paddsw_m2r(var,reg) mmx_m2r (paddsw, var, reg)
107 #define paddsw_r2r(regs,regd) mmx_r2r (paddsw, regs, regd)
109 #define paddusb_m2r(var,reg) mmx_m2r (paddusb, var, reg)
110 #define paddusb_r2r(regs,regd) mmx_r2r (paddusb, regs, regd)
111 #define paddusw_m2r(var,reg) mmx_m2r (paddusw, var, reg)
112 #define paddusw_r2r(regs,regd) mmx_r2r (paddusw, regs, regd)
114 #define pand_m2r(var,reg) mmx_m2r (pand, var, reg)
115 #define pand_r2r(regs,regd) mmx_r2r (pand, regs, regd)
117 #define pandn_m2r(var,reg) mmx_m2r (pandn, var, reg)
118 #define pandn_r2r(regs,regd) mmx_r2r (pandn, regs, regd)
120 #define pcmpeqb_m2r(var,reg) mmx_m2r (pcmpeqb, var, reg)
121 #define pcmpeqb_r2r(regs,regd) mmx_r2r (pcmpeqb, regs, regd)
122 #define pcmpeqd_m2r(var,reg) mmx_m2r (pcmpeqd, var, reg)
123 #define pcmpeqd_r2r(regs,regd) mmx_r2r (pcmpeqd, regs, regd)
124 #define pcmpeqw_m2r(var,reg) mmx_m2r (pcmpeqw, var, reg)
125 #define pcmpeqw_r2r(regs,regd) mmx_r2r (pcmpeqw, regs, regd)
127 #define pcmpgtb_m2r(var,reg) mmx_m2r (pcmpgtb, var, reg)
128 #define pcmpgtb_r2r(regs,regd) mmx_r2r (pcmpgtb, regs, regd)
129 #define pcmpgtd_m2r(var,reg) mmx_m2r (pcmpgtd, var, reg)
130 #define pcmpgtd_r2r(regs,regd) mmx_r2r (pcmpgtd, regs, regd)
131 #define pcmpgtw_m2r(var,reg) mmx_m2r (pcmpgtw, var, reg)
132 #define pcmpgtw_r2r(regs,regd) mmx_r2r (pcmpgtw, regs, regd)
134 #define pmaddwd_m2r(var,reg) mmx_m2r (pmaddwd, var, reg)
135 #define pmaddwd_r2r(regs,regd) mmx_r2r (pmaddwd, regs, regd)
137 #define pmulhw_m2r(var,reg) mmx_m2r (pmulhw, var, reg)
138 #define pmulhw_r2r(regs,regd) mmx_r2r (pmulhw, regs, regd)
140 #define pmullw_m2r(var,reg) mmx_m2r (pmullw, var, reg)
141 #define pmullw_r2r(regs,regd) mmx_r2r (pmullw, regs, regd)
143 #define por_m2r(var,reg) mmx_m2r (por, var, reg)
144 #define por_r2r(regs,regd) mmx_r2r (por, regs, regd)
146 #define pslld_i2r(imm,reg) mmx_i2r (pslld, imm, reg)
147 #define pslld_m2r(var,reg) mmx_m2r (pslld, var, reg)
148 #define pslld_r2r(regs,regd) mmx_r2r (pslld, regs, regd)
149 #define psllq_i2r(imm,reg) mmx_i2r (psllq, imm, reg)
150 #define psllq_m2r(var,reg) mmx_m2r (psllq, var, reg)
151 #define psllq_r2r(regs,regd) mmx_r2r (psllq, regs, regd)
152 #define psllw_i2r(imm,reg) mmx_i2r (psllw, imm, reg)
153 #define psllw_m2r(var,reg) mmx_m2r (psllw, var, reg)
154 #define psllw_r2r(regs,regd) mmx_r2r (psllw, regs, regd)
156 #define psrad_i2r(imm,reg) mmx_i2r (psrad, imm, reg)
157 #define psrad_m2r(var,reg) mmx_m2r (psrad, var, reg)
158 #define psrad_r2r(regs,regd) mmx_r2r (psrad, regs, regd)
159 #define psraw_i2r(imm,reg) mmx_i2r (psraw, imm, reg)
160 #define psraw_m2r(var,reg) mmx_m2r (psraw, var, reg)
161 #define psraw_r2r(regs,regd) mmx_r2r (psraw, regs, regd)
163 #define psrld_i2r(imm,reg) mmx_i2r (psrld, imm, reg)
164 #define psrld_m2r(var,reg) mmx_m2r (psrld, var, reg)
165 #define psrld_r2r(regs,regd) mmx_r2r (psrld, regs, regd)
166 #define psrlq_i2r(imm,reg) mmx_i2r (psrlq, imm, reg)
167 #define psrlq_m2r(var,reg) mmx_m2r (psrlq, var, reg)
168 #define psrlq_r2r(regs,regd) mmx_r2r (psrlq, regs, regd)
169 #define psrlw_i2r(imm,reg) mmx_i2r (psrlw, imm, reg)
170 #define psrlw_m2r(var,reg) mmx_m2r (psrlw, var, reg)
171 #define psrlw_r2r(regs,regd) mmx_r2r (psrlw, regs, regd)
173 #define psubb_m2r(var,reg) mmx_m2r (psubb, var, reg)
174 #define psubb_r2r(regs,regd) mmx_r2r (psubb, regs, regd)
175 #define psubd_m2r(var,reg) mmx_m2r (psubd, var, reg)
176 #define psubd_r2r(regs,regd) mmx_r2r (psubd, regs, regd)
177 #define psubw_m2r(var,reg) mmx_m2r (psubw, var, reg)
178 #define psubw_r2r(regs,regd) mmx_r2r (psubw, regs, regd)
180 #define psubsb_m2r(var,reg) mmx_m2r (psubsb, var, reg)
181 #define psubsb_r2r(regs,regd) mmx_r2r (psubsb, regs, regd)
182 #define psubsw_m2r(var,reg) mmx_m2r (psubsw, var, reg)
183 #define psubsw_r2r(regs,regd) mmx_r2r (psubsw, regs, regd)
185 #define psubusb_m2r(var,reg) mmx_m2r (psubusb, var, reg)
186 #define psubusb_r2r(regs,regd) mmx_r2r (psubusb, regs, regd)
187 #define psubusw_m2r(var,reg) mmx_m2r (psubusw, var, reg)
188 #define psubusw_r2r(regs,regd) mmx_r2r (psubusw, regs, regd)
190 #define punpckhbw_m2r(var,reg) mmx_m2r (punpckhbw, var, reg)
191 #define punpckhbw_r2r(regs,regd) mmx_r2r (punpckhbw, regs, regd)
192 #define punpckhdq_m2r(var,reg) mmx_m2r (punpckhdq, var, reg)
193 #define punpckhdq_r2r(regs,regd) mmx_r2r (punpckhdq, regs, regd)
194 #define punpckhwd_m2r(var,reg) mmx_m2r (punpckhwd, var, reg)
195 #define punpckhwd_r2r(regs,regd) mmx_r2r (punpckhwd, regs, regd)
197 #define punpcklbw_m2r(var,reg) mmx_m2r (punpcklbw, var, reg)
198 #define punpcklbw_r2r(regs,regd) mmx_r2r (punpcklbw, regs, regd)
199 #define punpckldq_m2r(var,reg) mmx_m2r (punpckldq, var, reg)
200 #define punpckldq_r2r(regs,regd) mmx_r2r (punpckldq, regs, regd)
201 #define punpcklwd_m2r(var,reg) mmx_m2r (punpcklwd, var, reg)
202 #define punpcklwd_r2r(regs,regd) mmx_r2r (punpcklwd, regs, regd)
204 #define pxor_m2r(var,reg) mmx_m2r (pxor, var, reg)
205 #define pxor_r2r(regs,regd) mmx_r2r (pxor, regs, regd)
210 #define pavgusb_m2r(var,reg) mmx_m2r (pavgusb, var, reg)
211 #define pavgusb_r2r(regs,regd) mmx_r2r (pavgusb, regs, regd)
217 #define mmx_m2ri(op,mem,reg,imm) \
218 __asm__ __volatile__ (#op " %1, %0, %%" #reg \
220 : "X" (mem), "X" (imm))
221 #define mmx_r2ri(op,regs,regd,imm) \
222 __asm__ __volatile__ (#op " %0, %%" #regs ", %%" #regd \
226 #define mmx_fetch(mem,hint) \
227 __asm__ __volatile__ ("prefetch" #hint " %0" \
232 #define maskmovq(regs,maskreg) mmx_r2ri (maskmovq, regs, maskreg)
234 #define movntq_r2m(mmreg,var) mmx_r2m (movntq, mmreg, var)
236 #define pavgb_m2r(var,reg) mmx_m2r (pavgb, var, reg)
237 #define pavgb_r2r(regs,regd) mmx_r2r (pavgb, regs, regd)
238 #define pavgw_m2r(var,reg) mmx_m2r (pavgw, var, reg)
239 #define pavgw_r2r(regs,regd) mmx_r2r (pavgw, regs, regd)
241 #define pextrw_r2r(mmreg,reg,imm) mmx_r2ri (pextrw, mmreg, reg, imm)
243 #define pinsrw_r2r(reg,mmreg,imm) mmx_r2ri (pinsrw, reg, mmreg, imm)
245 #define pmaxsw_m2r(var,reg) mmx_m2r (pmaxsw, var, reg)
246 #define pmaxsw_r2r(regs,regd) mmx_r2r (pmaxsw, regs, regd)
248 #define pmaxub_m2r(var,reg) mmx_m2r (pmaxub, var, reg)
249 #define pmaxub_r2r(regs,regd) mmx_r2r (pmaxub, regs, regd)
251 #define pminsw_m2r(var,reg) mmx_m2r (pminsw, var, reg)
252 #define pminsw_r2r(regs,regd) mmx_r2r (pminsw, regs, regd)
254 #define pminub_m2r(var,reg) mmx_m2r (pminub, var, reg)
255 #define pminub_r2r(regs,regd) mmx_r2r (pminub, regs, regd)
257 #define pmovmskb(mmreg,reg) \
258 __asm__ __volatile__ ("pmovmskb %" #mmreg ", %" #reg)
259 #define pmovmskb_r2a(mmreg,regvar) \
260 __asm__ __volatile__ ("pmovmskb %%" #mmreg ", %0" : "=r" (regvar))
262 #define pmulhuw_m2r(var,reg) mmx_m2r (pmulhuw, var, reg)
263 #define pmulhuw_r2r(regs,regd) mmx_r2r (pmulhuw, regs, regd)
265 #define prefetcht0(mem) mmx_fetch (mem, t0)
266 #define prefetcht1(mem) mmx_fetch (mem, t1)
267 #define prefetcht2(mem) mmx_fetch (mem, t2)
268 #define prefetchnta(mem) mmx_fetch (mem, nta)
270 #define psadbw_m2r(var,reg) mmx_m2r (psadbw, var, reg)
271 #define psadbw_r2r(regs,regd) mmx_r2r (psadbw, regs, regd)
273 #define pshufw_m2r(var,reg,imm) mmx_m2ri(pshufw, var, reg, imm)
274 #define pshufw_r2r(regs,regd,imm) mmx_r2ri(pshufw, regs, regd, imm)
276 #define sfence() __asm__ __volatile__ ("sfence\n\t")
284 unsigned short uw[8];
286 unsigned char ub[16];
290 #define FILL_SSE_UW(w) {uw:{w,w,w,w,w,w,w,w}}
292 #define sse_i2r(op, imm, reg) \
293 __asm__ __volatile__ (#op " %0, %%" #reg \
297 #define sse_m2r(op, mem, reg) \
298 __asm__ __volatile__ (#op " %0, %%" #reg \
302 #define sse_r2m(op, reg, mem) \
303 __asm__ __volatile__ (#op " %%" #reg ", %0" \
307 #define sse_r2r(op, regs, regd) \
308 __asm__ __volatile__ (#op " %" #regs ", %" #regd)
310 #define sse_r2ri(op, regs, regd, imm) \
311 __asm__ __volatile__ (#op " %0, %%" #regs ", %%" #regd \
315 #define sse_m2ri(op, mem, reg, subop) \
316 __asm__ __volatile__ (#op " %0, %%" #reg ", " #subop \
321 #define movaps_m2r(var, reg) sse_m2r(movaps, var, reg)
322 #define movaps_r2m(reg, var) sse_r2m(movaps, reg, var)
323 #define movaps_r2r(regs, regd) sse_r2r(movaps, regs, regd)
325 #define movntps_r2m(xmmreg, var) sse_r2m(movntps, xmmreg, var)
327 #define movups_m2r(var, reg) sse_m2r(movups, var, reg)
328 #define movups_r2m(reg, var) sse_r2m(movups, reg, var)
329 #define movups_r2r(regs, regd) sse_r2r(movups, regs, regd)
331 #define movhlps_r2r(regs, regd) sse_r2r(movhlps, regs, regd)
333 #define movlhps_r2r(regs, regd) sse_r2r(movlhps, regs, regd)
335 #define movhps_m2r(var, reg) sse_m2r(movhps, var, reg)
336 #define movhps_r2m(reg, var) sse_r2m(movhps, reg, var)
338 #define movlps_m2r(var, reg) sse_m2r(movlps, var, reg)
339 #define movlps_r2m(reg, var) sse_r2m(movlps, reg, var)
341 #define movss_m2r(var, reg) sse_m2r(movss, var, reg)
342 #define movss_r2m(reg, var) sse_r2m(movss, reg, var)
343 #define movss_r2r(regs, regd) sse_r2r(movss, regs, regd)
345 #define shufps_m2r(var, reg, index) sse_m2ri(shufps, var, reg, index)
346 #define shufps_r2r(regs, regd, index) sse_r2ri(shufps, regs, regd, index)
348 #define cvtpi2ps_m2r(var, xmmreg) sse_m2r(cvtpi2ps, var, xmmreg)
349 #define cvtpi2ps_r2r(mmreg, xmmreg) sse_r2r(cvtpi2ps, mmreg, xmmreg)
351 #define cvtps2pi_m2r(var, mmreg) sse_m2r(cvtps2pi, var, mmreg)
352 #define cvtps2pi_r2r(xmmreg, mmreg) sse_r2r(cvtps2pi, mmreg, xmmreg)
354 #define cvttps2pi_m2r(var, mmreg) sse_m2r(cvttps2pi, var, mmreg)
355 #define cvttps2pi_r2r(xmmreg, mmreg) sse_r2r(cvttps2pi, mmreg, xmmreg)
357 #define cvtsi2ss_m2r(var, xmmreg) sse_m2r(cvtsi2ss, var, xmmreg)
358 #define cvtsi2ss_r2r(reg, xmmreg) sse_r2r(cvtsi2ss, reg, xmmreg)
360 #define cvtss2si_m2r(var, reg) sse_m2r(cvtss2si, var, reg)
361 #define cvtss2si_r2r(xmmreg, reg) sse_r2r(cvtss2si, xmmreg, reg)
363 #define cvttss2si_m2r(var, reg) sse_m2r(cvtss2si, var, reg)
364 #define cvttss2si_r2r(xmmreg, reg) sse_r2r(cvtss2si, xmmreg, reg)
366 #define movmskps(xmmreg, reg) \
367 __asm__ __volatile__ ("movmskps %" #xmmreg ", %" #reg)
369 #define addps_m2r(var, reg) sse_m2r(addps, var, reg)
370 #define addps_r2r(regs, regd) sse_r2r(addps, regs, regd)
372 #define addss_m2r(var, reg) sse_m2r(addss, var, reg)
373 #define addss_r2r(regs, regd) sse_r2r(addss, regs, regd)
375 #define subps_m2r(var, reg) sse_m2r(subps, var, reg)
376 #define subps_r2r(regs, regd) sse_r2r(subps, regs, regd)
378 #define subss_m2r(var, reg) sse_m2r(subss, var, reg)
379 #define subss_r2r(regs, regd) sse_r2r(subss, regs, regd)
381 #define mulps_m2r(var, reg) sse_m2r(mulps, var, reg)
382 #define mulps_r2r(regs, regd) sse_r2r(mulps, regs, regd)
384 #define mulss_m2r(var, reg) sse_m2r(mulss, var, reg)
385 #define mulss_r2r(regs, regd) sse_r2r(mulss, regs, regd)
387 #define divps_m2r(var, reg) sse_m2r(divps, var, reg)
388 #define divps_r2r(regs, regd) sse_r2r(divps, regs, regd)
390 #define divss_m2r(var, reg) sse_m2r(divss, var, reg)
391 #define divss_r2r(regs, regd) sse_r2r(divss, regs, regd)
393 #define rcpps_m2r(var, reg) sse_m2r(rcpps, var, reg)
394 #define rcpps_r2r(regs, regd) sse_r2r(rcpps, regs, regd)
396 #define rcpss_m2r(var, reg) sse_m2r(rcpss, var, reg)
397 #define rcpss_r2r(regs, regd) sse_r2r(rcpss, regs, regd)
399 #define rsqrtps_m2r(var, reg) sse_m2r(rsqrtps, var, reg)
400 #define rsqrtps_r2r(regs, regd) sse_r2r(rsqrtps, regs, regd)
402 #define rsqrtss_m2r(var, reg) sse_m2r(rsqrtss, var, reg)
403 #define rsqrtss_r2r(regs, regd) sse_r2r(rsqrtss, regs, regd)
405 #define sqrtps_m2r(var, reg) sse_m2r(sqrtps, var, reg)
406 #define sqrtps_r2r(regs, regd) sse_r2r(sqrtps, regs, regd)
408 #define sqrtss_m2r(var, reg) sse_m2r(sqrtss, var, reg)
409 #define sqrtss_r2r(regs, regd) sse_r2r(sqrtss, regs, regd)
411 #define andps_m2r(var, reg) sse_m2r(andps, var, reg)
412 #define andps_r2r(regs, regd) sse_r2r(andps, regs, regd)
414 #define andnps_m2r(var, reg) sse_m2r(andnps, var, reg)
415 #define andnps_r2r(regs, regd) sse_r2r(andnps, regs, regd)
417 #define orps_m2r(var, reg) sse_m2r(orps, var, reg)
418 #define orps_r2r(regs, regd) sse_r2r(orps, regs, regd)
420 #define xorps_m2r(var, reg) sse_m2r(xorps, var, reg)
421 #define xorps_r2r(regs, regd) sse_r2r(xorps, regs, regd)
423 #define maxps_m2r(var, reg) sse_m2r(maxps, var, reg)
424 #define maxps_r2r(regs, regd) sse_r2r(maxps, regs, regd)
426 #define maxss_m2r(var, reg) sse_m2r(maxss, var, reg)
427 #define maxss_r2r(regs, regd) sse_r2r(maxss, regs, regd)
429 #define minps_m2r(var, reg) sse_m2r(minps, var, reg)
430 #define minps_r2r(regs, regd) sse_r2r(minps, regs, regd)
432 #define minss_m2r(var, reg) sse_m2r(minss, var, reg)
433 #define minss_r2r(regs, regd) sse_r2r(minss, regs, regd)
435 #define cmpps_m2r(var, reg, op) sse_m2ri(cmpps, var, reg, op)
436 #define cmpps_r2r(regs, regd, op) sse_r2ri(cmpps, regs, regd, op)
438 #define cmpeqps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 0)
439 #define cmpeqps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 0)
441 #define cmpltps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 1)
442 #define cmpltps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 1)
444 #define cmpleps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 2)
445 #define cmpleps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 2)
447 #define cmpunordps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 3)
448 #define cmpunordps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 3)
450 #define cmpneqps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 4)
451 #define cmpneqps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 4)
453 #define cmpnltps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 5)
454 #define cmpnltps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 5)
456 #define cmpnleps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 6)
457 #define cmpnleps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 6)
459 #define cmpordps_m2r(var, reg) sse_m2ri(cmpps, var, reg, 7)
460 #define cmpordps_r2r(regs, regd) sse_r2ri(cmpps, regs, regd, 7)
462 #define cmpss_m2r(var, reg, op) sse_m2ri(cmpss, var, reg, op)
463 #define cmpss_r2r(regs, regd, op) sse_r2ri(cmpss, regs, regd, op)
465 #define cmpeqss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 0)
466 #define cmpeqss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 0)
468 #define cmpltss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 1)
469 #define cmpltss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 1)
471 #define cmpless_m2r(var, reg) sse_m2ri(cmpss, var, reg, 2)
472 #define cmpless_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 2)
474 #define cmpunordss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 3)
475 #define cmpunordss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 3)
477 #define cmpneqss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 4)
478 #define cmpneqss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 4)
480 #define cmpnltss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 5)
481 #define cmpnltss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 5)
483 #define cmpnless_m2r(var, reg) sse_m2ri(cmpss, var, reg, 6)
484 #define cmpnless_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 6)
486 #define cmpordss_m2r(var, reg) sse_m2ri(cmpss, var, reg, 7)
487 #define cmpordss_r2r(regs, regd) sse_r2ri(cmpss, regs, regd, 7)
489 #define comiss_m2r(var, reg) sse_m2r(comiss, var, reg)
490 #define comiss_r2r(regs, regd) sse_r2r(comiss, regs, regd)
492 #define ucomiss_m2r(var, reg) sse_m2r(ucomiss, var, reg)
493 #define ucomiss_r2r(regs, regd) sse_r2r(ucomiss, regs, regd)
495 #define unpcklps_m2r(var, reg) sse_m2r(unpcklps, var, reg)
496 #define unpcklps_r2r(regs, regd) sse_r2r(unpcklps, regs, regd)
498 #define unpckhps_m2r(var, reg) sse_m2r(unpckhps, var, reg)
499 #define unpckhps_r2r(regs, regd) sse_r2r(unpckhps, regs, regd)
501 #define fxrstor(mem) \
502 __asm__ __volatile__ ("fxrstor %0" \
506 #define fxsave(mem) \
507 __asm__ __volatile__ ("fxsave %0" \
511 #define stmxcsr(mem) \
512 __asm__ __volatile__ ("stmxcsr %0" \
516 #define ldmxcsr(mem) \
517 __asm__ __volatile__ ("ldmxcsr %0" \
523 #define movdqa_m2r(var, reg) mmx_m2r (movdqa, var, reg)
524 #define movdqa_r2m(reg, var) mmx_r2m (movdqa, reg, var)
525 #define movdqa_r2r(regs, regd) mmx_r2r (movdqa, regs, regd)
527 #define movdqu_m2r(var, reg) mmx_m2r (movdqu, var, reg)
528 #define movdqu_r2m(reg, var) mmx_r2m (movdqu, reg, var)
530 #define pslldq_i2r(imm,reg) mmx_i2r (pslldq, imm, reg)
532 #define psrldq_i2r(imm,reg) mmx_i2r (psrldq, imm, reg)
534 #define pshufd_m2r(var, reg, imm) mmx_m2ri (pshufd, var, reg, imm)
535 #define pshufd_r2r(regs, regd, imm) mmx_r2ri (pshufd, regs, regd, imm)
537 #define pshuflw_m2r(var, reg, imm) mmx_m2ri (pshuflw, var, reg, imm)
538 #define pshuflw_r2r(regs, regd, imm) mmx_r2ri (pshuflw, regs, regd, imm)
542 #define pmaddubsw_r2r(regs, regd) mmx_r2r(pmaddubsw, regs, regd)
pthread_mutex_t lock
Definition: ring_buffer.c:85
Definition: xine_internal.h:80
xine_list_t * get_list
Definition: ring_buffer.c:80
#define XINE_IMGFMT_YV12
Definition: xine.h:494
static uint16_t tab_crc16_ansi[768]
Definition: utils.c:992
void * xine_buffer_dup(const void *buf)
Definition: xine_buffer.c:168
xine_health_check_t * xine_health_check(xine_health_check_t *hc, int check_num)
Definition: xine_check.c:504
int free_size_needed
Definition: ring_buffer.c:75
uint8_t * buffer
Definition: ring_buffer.c:65
void * xine_mallocz_aligned(size_t size)
Definition: utils.c:856
size_t chunk_size
Definition: sorted_array.c:36
#define XINE_MEM_MASK
Definition: utils.c:854
#define O_CLOEXEC
Definition: xine_check.c:50
xine_list_t * xine_list_new(void)
Definition: list.c:72
char key[16]
Definition: xine_speex_decoder.c:94
void xine_sarray_remove(xine_sarray_t *sarray, unsigned int position)
Definition: sorted_array.c:91
int xine_socket_cloexec(int domain, int type, int protocol)
Definition: utils.c:837
#define RING_BUFFER_EXTRA_BUFFER_SIZE
Definition: ring_buffer.c:35
uint8_t * mem
Definition: ring_buffer.c:40
static char * _get_lang(void)
Definition: utils.c:632
void xine_list_push_back(xine_list_t *list, void *value)
Definition: list.c:162
#define CHECK_DVDROM
Definition: xine.h:1589
void xine_list_delete(xine_list_t *list)
Definition: list.c:108
void *(* xine_fast_memcpy)(void *to, const void *from, size_t len)
Definition: memcpy.c:60
size_t free_size
Definition: ring_buffer.c:69
xine_sarray_t * xine_sarray_new(size_t initial_size, xine_sarray_comparator_t comparator)
Definition: sorted_array.c:44
#define XINE_SARRAY_MODE_DEFAULT
Definition: sorted_array.h:75
const char * cdrom_dev
Definition: xine.h:1595
void * xine_memdup0(const void *src, size_t length)
Definition: utils.c:317
#define MIN_CHUNK_SIZE
Definition: sorted_array.c:31
static const lang_locale_t lang_locales[]
Definition: utils.c:84
#define XINE_MEM_ADD
Definition: utils.c:853
#define CHECK_XV
Definition: xine.h:1592
void * xine_sarray_get(xine_sarray_t *sarray, unsigned int position)
Definition: sorted_array.c:78
const char encoding[16]
Definition: utils.c:75
xine_list_t * alloc_list
Definition: ring_buffer.c:79
void xine_sarray_delete(xine_sarray_t *sarray)
Definition: sorted_array.c:61
#define CHECK_KERNEL
Definition: xine.h:1586
int xine_sarray_add(xine_sarray_t *sarray, void *value)
Definition: sorted_array.c:161
#define XINE_HEALTH_CHECK_UNSUPPORTED
Definition: xine.h:1583
int _x_set_file_close_on_exec(int fd)
Make file descriptors and sockets uninheritable.
Definition: utils.c:796
int xine_sarray_remove_ptr(xine_sarray_t *sarray, void *ptr)
Definition: sorted_array.c:105
void xine_ring_buffer_delete(xine_ring_buffer_t *ring_buffer)
Definition: ring_buffer.c:139
void xine_ring_buffer_put(xine_ring_buffer_t *ring_buffer, void *buffer)
Definition: ring_buffer.c:223
#define ATTR_ALIGN(align)
Definition: attributes.h:64
#define lprintf(...)
Definition: xineutils.h:620
void * xine_xcalloc(size_t nmemb, size_t size)
Wrapper around calloc() function.
Definition: utils.c:296
#define XINE_HEALTH_CHECK_NO_SUCH_CHECK
Definition: xine.h:1584
#define GET_HEADER_CONST(x)
Definition: xine_buffer.c:112
unsigned int mode
Definition: sorted_array.c:39
int xine_sarray_binary_search(xine_sarray_t *sarray, void *key)
Definition: sorted_array.c:176
#define CHECK_X
Definition: xine.h:1591
int status
Definition: xine.h:1600
void * xine_ring_buffer_get(xine_ring_buffer_t *ring_buffer, size_t size, size_t *rsize)
Definition: ring_buffer.c:264
void xine_usec_sleep(unsigned usec)
Definition: utils.c:546
void * _xine_buffer_set(void *buf, int index, uint8_t b, int len)
Definition: xine_buffer.c:245
size_t xine_base64_decode(const char *from, uint8_t *to)
Definition: utils.c:943
void * xine_xmalloc(size_t size)
Allocate and clean memory size_t 'size', then return the pointer to the allocated memory.
Definition: utils.c:271
void * xine_ring_buffer_alloc(xine_ring_buffer_t *ring_buffer, size_t size)
Definition: ring_buffer.c:179
Definition: sorted_array.c:34
uint8_t * head_alloc
Definition: ring_buffer.c:61
void xine_pool_put(xine_pool_t *pool, void *object)
Definition: pool.c:181
void * _xine_buffer_free(void *buf)
Definition: xine_buffer.c:150
pthread_cond_t free_size_cond
Definition: ring_buffer.c:72
void xine_ring_buffer_release(xine_ring_buffer_t *ring_buffer, void *buffer)
Definition: ring_buffer.c:318
void xine_pool_delete(xine_pool_t *pool)
Definition: pool.c:111
NULL
Definition: xine_plugin.c:78
size_t xine_sarray_size(const xine_sarray_t *sarray)
Definition: sorted_array.c:69
#define rev32(n)
Definition: utils.c:995
#define _x_assert(exp)
Definition: xineutils.h:550
pthread_cond_t full_size_cond
Definition: ring_buffer.c:73
char * xine_buffer_strchr(const void *buf, int ch)
Definition: xine_buffer.c:299
const char * dvd_dev
Definition: xine.h:1596
static void _x_freep(void *ptr)
Definition: xineutils.h:263
#define CHECK_MTRR
Definition: xine.h:1587
uint8_t * tail
Definition: ring_buffer.c:62
uint32_t xine_crc16_ansi(uint32_t crc, const uint8_t *data, size_t len)
Definition: utils.c:1071
#define CHECK_MAGIC(x, r)
Definition: xine_buffer.c:102
void xine_hexdump(const void *buf_gen, int length)
Definition: utils.c:576
const char spu_encoding[16]
Definition: utils.c:76
const char * xine_guess_spu_encoding(void)
Definition: utils.c:694
int _x_set_socket_close_on_exec(int s)
Definition: utils.c:805
void * xine_memdup(const void *src, size_t length)
Definition: utils.c:308
void * default_chunk[1]
Definition: sorted_array.c:40
void xine_buffer_copyout(const void *buf, int index, void *data, int len)
Definition: xine_buffer.c:218
int verbosity
Definition: xine_internal.h:86
#define O_CLOEXEC
Definition: utils.c:70
xine_list_iterator_t xine_list_next(xine_list_t *list, xine_list_iterator_t ite)
Definition: list.c:190
int xine_buffer_get_size(const void *buf)
Definition: xine_buffer.c:314
char * xine_strcat_realloc(char **dest, const char *append)
Definition: utils.c:775
Declaration of internal, private functions for xine-lib.
#define XINE_HEALTH_CHECK_FAIL
Definition: xine.h:1582
void xine_sarray_set_mode(xine_sarray_t *sarray, unsigned int mode)
Definition: sorted_array.c:73
#define GROW_TO(buf, to_size)
Definition: xine_buffer.c:115
char * xine_get_system_encoding(void)
Definition: utils.c:646
void ** chunk
Definition: sorted_array.c:35
const char modifier[8]
Definition: utils.c:77
uint32_t xine_crc32_ieee(uint32_t crc, const uint8_t *data, size_t len)
Definition: utils.c:998
#define XINE_BUFFER_HEADER_SIZE
Definition: xine_buffer.c:82
static void xine_ring_buffer_display_stat(const xine_ring_buffer_t *ring_buffer)
Definition: ring_buffer.c:148
#define __XINE_FUNCTION__
Definition: compat.h:37
int(* xine_sarray_comparator_t)(void *, void *)
Definition: sorted_array.h:64
static void xine_ring_buffer_chunk_create(void *object)
Definition: ring_buffer.c:45
void * xine_list_get_value(xine_list_t *list, xine_list_iterator_t ite)
Definition: list.c:240
uint8_t * extra_buffer
Definition: ring_buffer.c:82
void * _xine_buffer_copyin(void *buf, int index, const void *data, int len)
Definition: xine_buffer.c:196
#define BUFSIZ
Definition: utils.c:377
#define XINE_SARRAY_MODE_UNIQUE
Definition: sorted_array.h:82
#define CHECK_DMA
Definition: xine.h:1590
xine_list_iterator_t xine_list_front(xine_list_t *list)
Definition: list.c:154
const char name[16]
Definition: memcpy.c:569
static uint32_t tab_crc32_ieee[1280]
Definition: utils.c:991
int xine_open_cloexec(const char *name, int flags)
Definition: utils.c:815
#define XINE_BUFFER_MAGIC
Definition: xine_buffer.c:83
size_t extra_buffer_size
Definition: ring_buffer.c:83
uint8_t * tail_release
Definition: ring_buffer.c:63
enable disable number of frames of telecine pattern sync required before mode change make frames evenly spaced for film mode(24 fps)" ) PARAM_ITEM( POST_PARAM_TYPE_BOOL
Definition: ring_buffer.c:39
#define XINE_SARRAY_MODE_FIRST
Definition: sorted_array.h:77
void xine_sarray_clear(xine_sarray_t *sarray)
Definition: sorted_array.c:86
xine_sarray_comparator_t comparator
Definition: sorted_array.c:38
int xine_monotonic_clock(struct timeval *tv, struct timezone *tz)
Definition: utils.c:727
static void _xine_sarray_insert(xine_sarray_t *sarray, unsigned int pos, void *value)
Definition: sorted_array.c:128
size_t size
Definition: sorted_array.c:37
xine_pool_t * chunk_pool
Definition: ring_buffer.c:78
size_t size
Definition: ring_buffer.c:41
void * _xine_buffer_strcpy(void *buf, int index, const char *data)
Definition: xine_buffer.c:277
int xine_create_cloexec(const char *name, int flags, mode_t mode)
Definition: utils.c:826
void xine_ring_buffer_close(xine_ring_buffer_t *ring_buffer)
Definition: ring_buffer.c:368
const char * xine_get_homedir(void)
Definition: utils.c:380
#define XINE_HEALTH_CHECK_OK
Definition: xine.h:1581
int full_size_needed
Definition: ring_buffer.c:76
void * _xine_buffer_ensure_size(void *buf, int size)
Definition: xine_buffer.c:334
void * xine_pool_get(xine_pool_t *pool)
Definition: pool.c:134
int EOS
Definition: ring_buffer.c:87
#define _X_BE_24(x)
Definition: bswap.h:42
xine_pool_t * xine_pool_new(size_t object_size, void(*create_object)(void *object), void(*prepare_object)(void *object), void(*return_object)(void *object), void(*delete_object)(void *object))
Definition: pool.c:85
uint8_t * head
Definition: ring_buffer.c:60
xine_ring_buffer_t * xine_ring_buffer_new(size_t size)
Definition: ring_buffer.c:91
#define rev16(n)
Definition: utils.c:996
void * xine_realloc_aligned(void *ptr, size_t size)
Definition: utils.c:890
void xine_list_remove(xine_list_t *list, xine_list_iterator_t position)
Definition: list.c:246
size_t buffer_size
Definition: ring_buffer.c:66
void xine_log(xine_t *this_gen, int buf, const char *format,...)
Definition: xine.c:3340
#define XINE_LOG_TRACE
Definition: xine_internal.h:66
static void XINE_FORMAT_PRINTF(3, 4)
Definition: xine_check.c:81
const char * msg
Definition: xine.h:1597
#define CHECK_CDROM
Definition: xine.h:1588
void * xine_buffer_init(int chunk_size)
Definition: xine_buffer.c:129
void * _xine_buffer_strcat(void *buf, const char *data)
Definition: xine_buffer.c:268
size_t xine_base64_encode(uint8_t *from, char *to, size_t size)
Definition: utils.c:918
char * xine_chomp(char *str)
Definition: utils.c:525
void xine_free_aligned(void *ptr)
Definition: utils.c:882
uint8_t * buffer_end
Definition: ring_buffer.c:67
#define XINE_IMGFMT_YUY2
Definition: xine.h:495
static void xine_ring_buffer_chunk_return(void *object)
Definition: ring_buffer.c:52
static const lang_locale_t * _get_first_lang_locale(const char *lcal)
Definition: utils.c:609
char * _x_asprintf(const char *format,...)
Definition: utils.c:783
size_t full_size
Definition: ring_buffer.c:70
#define XINE_SARRAY_MODE_LAST
Definition: sorted_array.h:79
Definition: ring_buffer.c:59
void * xine_malloc_aligned(size_t size)
Definition: utils.c:869
const char * title
Definition: xine.h:1598
const char * explanation
Definition: xine.h:1599