1 /* ICE: call insn does not satisfy its constraints, MMIX port.
2 Origin: ghostscript-6.52, reduction from hp@bitrange.com. */
3 struct s0
4 {
5 void (*init_color)(void *, void *);
6 };
7 struct s1
8 {
9 void (*map_cmyk)(short, void *, void **, void *);
10 void (*map_rgb_alpha)(short, void *, void **, void *);
11 };
12 struct s5
13 {
14 long fill1; int fill2;
15 long fill3; unsigned int fill4, fill5;
16 };
17 struct s2
18 {
19 struct s5 x, y;
20 };
21 struct s3
22 {
23 long dev_color;
24 unsigned int key;
25 };
26 struct s4
27 {
28 unsigned char spp;
29 int alpha;
30 struct mc_
31 {
32 unsigned int values[14];
33 unsigned int mask, test;
34 int exact;
35 } mask_color;
36 void **pis;
37 struct s0 *pcs;
38 struct dd_
39 {
40 struct s2 row[2];
41 struct s2 pixel0;
42 } dda;
43 struct s3 clues[256];
44 };
45 extern struct s1 *get_cmap_procs (void **, void *);
46 int image_render_color (struct s4 *, unsigned char *, int, void *);
47 int
image_render_color(struct s4 * penum,unsigned char * buffer,int data_x,void * dev)48 image_render_color (struct s4 *penum, unsigned char *buffer,
49 int data_x, void *dev)
50 {
51 struct s3 *clues = penum->clues;
52 void **pis = penum->pis;
53 struct s2 pnext;
54 struct s0 *pcs = penum->pcs;
55 struct s1 *cmap_procs = get_cmap_procs(pis, dev);
56 void (*map_4)(short, void *, void **, void *) =
57 (penum->alpha ? cmap_procs->map_rgb_alpha : cmap_procs->map_cmyk);
58 unsigned int mask = penum->mask_color.mask;
59 unsigned int test = penum->mask_color.test;
60 struct s3 *pic_next = &clues[1];
61 int spp = penum->spp;
62 unsigned char *psrc = buffer + data_x * spp;
63 unsigned char v[6];
64
65 pnext = penum->dda.pixel0;
66 __builtin_memset (&v, 0, sizeof(v));
67 (*(pcs)->init_color) (0, 0);
68
69 if (spp == 4)
70 {
71 v[0] = psrc[0];
72 v[1] = psrc[1];
73 if ((buffer[0] & mask) == test && penum->mask_color.exact)
74 pic_next->dev_color = 0;
75 (*map_4)(v[0], &pic_next->dev_color, pis, dev);
76 }
77 return 0;
78 }
79