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