PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gcc.target / arm / sat-1.c
blobebde56a4554657e15c40dc5bdfb283e850775c98
1 /* { dg-do compile } */
2 /* { dg-require-effective-target arm_arm_ok } */
3 /* { dg-require-effective-target arm_arch_v6_ok } */
4 /* { dg-options "-O2 -marm" } */
5 /* { dg-add-options arm_arch_v6 } */
8 static inline int sat1 (int a, int amin, int amax)
10 if (a < amin) return amin;
11 else if (a > amax) return amax;
12 else return a;
15 static inline int sat2 (int a, int amin, int amax)
17 if (a > amax) return amax;
18 else if (a < amin) return amin;
19 else return a;
22 int u1 (int x)
24 return sat1 (x, 0, 63);
27 int us1 (int x)
29 return sat1 (x >> 5, 0, 63);
32 int s1 (int x)
34 return sat1 (x, -64, 63);
37 int ss1 (int x)
39 return sat1 (x >> 5, -64, 63);
42 int u2 (int x)
44 return sat2 (x, 0, 63);
47 int us2 (int x)
49 return sat2 (x >> 5, 0, 63);
52 int s2 (int x)
54 return sat2 (x, -64, 63);
57 int ss2 (int x)
59 return sat2 (x >> 5, -64, 63);
62 /* { dg-final { scan-assembler-times "usat" 4 } } */
63 /* { dg-final { scan-assembler-times "ssat" 4 } } */