1 /* { dg-do compile } */
2 /* { dg-options "-O2 -mcpu=ev67" } */
5 typedef unsigned int CARD32
;
6 typedef unsigned short CARD16
;
7 typedef unsigned char CARD8
;
8 typedef struct _Picture
*PicturePtr
;
10 typedef unsigned long __m64
;
11 extern __m64
load8888 (__m64
);
12 static __inline __m64
_mm_setzero_si64(void)
16 static __inline __m64
_mm_adds_pu8(__m64 __m1
, __m64 __m2
)
18 return __m1
+ __builtin_alpha_minsb8(__m2
, ~__m1
);
20 static __inline __m64
_mm_packs_pu16(__m64 __m1
, __m64 __m2
)
22 __m1
= __builtin_alpha_minuw4(__m1
, 0x00ff00ff00ff00ff);
23 __m2
= __builtin_alpha_minuw4(__m2
, 0x00ff00ff00ff00ff);
24 return __m1
| (__m2
<< 32);
26 typedef unsigned long long ullong
;
27 static __inline__ __m64
pix_multiply(__m64 a
)
32 static __inline__ __m64
over(__m64 src
, __m64 srca
, __m64 dest
)
34 return _mm_adds_pu8(src
, pix_multiply(dest
));
37 void fbCompositeSolid_nx8888mmx(CARD8 op
, PicturePtr pSrc
, PicturePtr pMask
,
38 INT16 yDst
, CARD16 width
, CARD16 height
)
41 CARD32
*dstLine
, *dst
;
49 while (w
&& (unsigned long) dst
& 7) {
50 *dst
= _mm_packs_pu16(_mm_adds_pu8(vsrc
, load8888(*dst
)),
56 *(__m64
*) dst
= _mm_packs_pu16(dest0
, dest1
);
60 *dst
= _mm_packs_pu16(_mm_adds_pu8(vsrc
, pix_multiply(0)), 0);