60 lines
1.5 KiB
C
60 lines
1.5 KiB
C
/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
|
|
/* { dg-options "-O3 -fselective-scheduling2 -fsel-sched-pipelining" } */
|
|
typedef unsigned short int uint16_t;
|
|
__extension__ typedef __UINTPTR_TYPE__ uintptr_t;
|
|
typedef struct GFX_VTABLE
|
|
{
|
|
int color_depth;
|
|
unsigned char *line[];
|
|
}
|
|
BITMAP;
|
|
extern int _drawing_mode;
|
|
extern BITMAP *_drawing_pattern;
|
|
extern int _drawing_y_anchor;
|
|
extern unsigned int _drawing_x_mask;
|
|
extern unsigned int _drawing_y_mask;
|
|
extern uintptr_t bmp_write_line (BITMAP *, int);
|
|
void
|
|
_linear_hline15 (BITMAP * dst, int dx1, int dy, int dx2, int color)
|
|
{
|
|
int w;
|
|
if (_drawing_mode == 0)
|
|
{
|
|
int x, curw;
|
|
unsigned short *sline =
|
|
(unsigned short *) (_drawing_pattern->
|
|
line[((dy) -
|
|
_drawing_y_anchor) & _drawing_y_mask]);
|
|
unsigned short *s;
|
|
unsigned short *d =
|
|
((unsigned short *) (bmp_write_line (dst, dy)) + (dx1));
|
|
s = ((unsigned short *) (sline) + (x));
|
|
if (_drawing_mode == 2)
|
|
{
|
|
}
|
|
else if (_drawing_mode == 3)
|
|
{
|
|
do
|
|
{
|
|
w -= curw;
|
|
do
|
|
{
|
|
unsigned long c = (*(s));
|
|
if (!((unsigned long) (c) == 0x7C1F))
|
|
{
|
|
(*((uint16_t *) ((uintptr_t) (d))) = ((color)));
|
|
}
|
|
((s)++);
|
|
}
|
|
while (--curw > 0);
|
|
s = sline;
|
|
curw =
|
|
(((w) <
|
|
((int) _drawing_x_mask +
|
|
1)) ? (w) : ((int) _drawing_x_mask + 1));
|
|
}
|
|
while (curw > 0);
|
|
}
|
|
}
|
|
}
|