1 /* { dg-do compile } */
2 /* This test requires widening_mul */
3 /* { dg-options "(HAS_MADD) -mgp32 -fexpensive-optimizations" } */
4 /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
5 /* { dg-final { scan-assembler-times "\tmaddu\t" 3 } } */
6 
7 typedef unsigned int ui;
8 typedef unsigned long long ull;
9 
10 NOMIPS16 ull
f1(ui x,ui y,ull z)11 f1 (ui x, ui y, ull z)
12 {
13   return (ull) x * y + z;
14 }
15 
16 NOMIPS16 ull
f2(ui x,ui y,ull z)17 f2 (ui x, ui y, ull z)
18 {
19   return z + (ull) y * x;
20 }
21 
22 NOMIPS16 ull
f3(ui x,ui y,ull z)23 f3 (ui x, ui y, ull z)
24 {
25   ull t = (ull) x * y;
26   int temp = 5;
27   if (temp == 5)
28     z += t;
29   return z;
30 }
31