1f08c3bdfSopenharmony_ci#define uint unsigned int
2f08c3bdfSopenharmony_ci
3f08c3bdfSopenharmony_ciuint xtc_umul_ytc(uint x, uint y) { return (x * 3) * (y * 2); }
4f08c3bdfSopenharmony_ci
5f08c3bdfSopenharmony_ci/*
6f08c3bdfSopenharmony_ci * check-name: canonical-muldiv
7f08c3bdfSopenharmony_ci * check-description:
8f08c3bdfSopenharmony_ci *	1) verify that constants in mul chains are
9f08c3bdfSopenharmony_ci *	   pushed at the right of the whole chain.
10f08c3bdfSopenharmony_ci *	   For example '(a * 3) * b' must be canonicalized into '(a * b) * 3'
11f08c3bdfSopenharmony_ci *	   This is needed in general for constant simplification;
12f08c3bdfSopenharmony_ci *	   for example, for:
13f08c3bdfSopenharmony_ci *		'(a * 3) * (b * 2)'
14f08c3bdfSopenharmony_ci *	   to be simplified into:
15f08c3bdfSopenharmony_ci *		'(a * b) * 6'
16f08c3bdfSopenharmony_ci *
17f08c3bdfSopenharmony_ci * check-command: test-linearize -Wno-decl $file
18f08c3bdfSopenharmony_ci * check-known-to-fail
19f08c3bdfSopenharmony_ci * check-output-ignore
20f08c3bdfSopenharmony_ci *
21f08c3bdfSopenharmony_ci * check-output-excludes: \\$3
22f08c3bdfSopenharmony_ci * check-output-excludes: \\$2
23f08c3bdfSopenharmony_ci * check-output-contains: \\$6
24f08c3bdfSopenharmony_ci */
25