1/* { dg-do compile } */
2/* { dg-options "-O2" } */
3
4#define FILL_BACK *ptrRGB++=0; *ptrRGB++=0; *ptrRGB++=0;
5
6
7void uncompact(unsigned char* ptrRGB, const unsigned int* ptrSrc, const unsigned char* ptrRGBcompact, int line, int nbPixLeft)
8{
9
10#define BIT_2_RGB32                                                     \
11  if ((v & 0x00000001)){ nbPixLeft--; *ptrRGB++ = *ptrRGBcompact++; *ptrRGB++ = *ptrRGBcompact++; *ptrRGB++ = *ptrRGBcompact++; } \
12  else{ FILL_BACK }                                                     \
13  v >>= 1;
14#define BIT_2_RGB16                                                     \
15  if ((v16 & 0x0001)){ nbPixLeft--; *ptrRGB++ = *ptrRGBcompact++; *ptrRGB++ = *ptrRGBcompact++; *ptrRGB++ = *ptrRGBcompact++; } \
16  else{ FILL_BACK }                                                     \
17  v16 >>= 1;
18
19  int x;
20  unsigned int v, *ptrSrc32bits=(unsigned int*)ptrSrc;
21  unsigned short v16,*ptrSrc16bits;
22
23  for(x=0; x<line; x++) {
24    v = *ptrSrc32bits++;
25    BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32
26    BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32
27    BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32
28    BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32 BIT_2_RGB32
29  }
30
31  ptrSrc16bits=(unsigned short *)ptrSrc32bits;
32  v16 = *ptrSrc16bits++;
33  BIT_2_RGB16	BIT_2_RGB16	BIT_2_RGB16	BIT_2_RGB16	BIT_2_RGB16	BIT_2_RGB16
34  BIT_2_RGB16	BIT_2_RGB16	BIT_2_RGB16	BIT_2_RGB16	BIT_2_RGB16	BIT_2_RGB16
35
36}
37