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
;
15 static inline int sat2 (int a
, int amin
, int amax
)
17 if (a
> amax
) return amax
;
18 else if (a
< amin
) return amin
;
24 return sat1 (x
, 0, 63);
29 return sat1 (x
>> 5, 0, 63);
34 return sat1 (x
, -64, 63);
39 return sat1 (x
>> 5, -64, 63);
44 return sat2 (x
, 0, 63);
49 return sat2 (x
>> 5, 0, 63);
54 return sat2 (x
, -64, 63);
59 return sat2 (x
>> 5, -64, 63);
62 /* { dg-final { scan-assembler-times "usat" 4 } } */
63 /* { dg-final { scan-assembler-times "ssat" 4 } } */