1/* ICE: call insn does not satisfy its constraints, MMIX port. 2 Origin: ghostscript-6.52, reduction from hp@bitrange.com. */ 3struct s0 4{ 5 void (*init_color)(void *, void *); 6}; 7struct s1 8{ 9 void (*map_cmyk)(short, void *, void **, void *); 10 void (*map_rgb_alpha)(short, void *, void **, void *); 11}; 12struct s5 13{ 14 long fill1; int fill2; 15 long fill3; unsigned int fill4, fill5; 16}; 17struct s2 18{ 19 struct s5 x, y; 20}; 21struct s3 22{ 23 long dev_color; 24 unsigned int key; 25}; 26struct 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}; 45extern struct s1 *get_cmap_procs (void **, void *); 46int image_render_color (struct s4 *, unsigned char *, int, void *); 47int 48image_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