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