1 /* { dg-options "-fno-tree-sra" } */
2 /* { dg-options "-fno-tree-sra -march=v32" { target cris-*-* } } */
3 typedef unsigned char byte
;
4 typedef unsigned int uint
;
6 typedef struct gs_const_string_s
13 float xx
, xy
, yx
, yy
, tx
, ty
;
15 typedef struct gs_matrix_s gs_matrix
;
17 typedef struct gs_fixed_point_s
22 typedef struct gs_matrix_fixed_s
27 int gx_path_add_curve_notes ();
29 append_simple (const byte
* glyph
, const gs_matrix_fixed
* pmat
, void * ppath
)
32 (int) (((((uint
) ((glyph
)[0]) << 8) + (glyph
)[1]) ^ 0x8000) - 0x8000);
33 const byte
*pends
= glyph
+ 10;
38 gs_fixed_point pt
= {0};
40 for (i
= 0, np
= 0; i
< numContours
; ++i
)
42 bool move
= ((bool) 1);
44 (((uint
) ((pends
+ i
* 2)[0]) << 8) + (pends
+ i
* 2)[1]);
46 gs_fixed_point cpoints
[3];
47 for (; np
<= last_point
; --reps
, ++np
)
59 cpoints
[2].x
= ((cpoints
[1].x
+ pt
.x
) / 2);
60 cpoints
[2].y
= ((cpoints
[1].y
+ pt
.y
) / 2);
62 gx_path_add_curve_notes (ppath
,
64 2 * cpoints
[1].x
) / 3),
66 2 * cpoints
[1].y
) / 3),
71 cpoints
[2].x
, cpoints
[2].y
,
73 cpoints
[0] = cpoints
[2];
82 void gs_matrix_multiply (gs_matrix
*, const gs_matrix
*, gs_matrix
*);
84 append_outline (uint glyph_index
, const gs_matrix_fixed
*pmat
, void *ppath
)
86 gs_const_string glyph_string
= {0};
89 (int) (((((uint
) ((glyph_string
.data
)[0]) << 8) +
90 (glyph_string
.data
)[1]) ^ 0x8000) - 0x8000);
92 return append_simple (glyph_string
.data
, pmat
, ppath
);
97 gs_matrix_fixed mat
= {0};
98 gs_matrix scale_mat
= {0};
99 gs_matrix_multiply (&scale_mat
, (const gs_matrix
*) &mat
, (gs_matrix
*) & mat
);