]>
Commit | Line | Data |
---|---|---|
db56db81 MM |
1 | /* { dg-do compile { target lp64 } } */ |
2 | /* { dg-require-effective-target powerpc_future_ok } */ | |
3 | /* { dg-options "-mdejagnu-cpu=future -O2" } */ | |
4 | ||
5 | /* Test whether the saturating subtract built-in generates subwus for 64-bit | |
6 | subtracts. */ | |
7 | ||
8 | long do_sat_long (long a, long b) | |
9 | { | |
10 | return __builtin_saturate_subtract64 (a, b); /* subwus */ | |
11 | } | |
12 | ||
13 | long do_sat_long_dot (long a, long b, long *p) | |
14 | { | |
15 | long r = __builtin_saturate_subtract64 (a, b); /* subwus. */ | |
16 | if (r == 0) | |
17 | *p = 0; | |
18 | ||
19 | return r; | |
20 | } | |
21 | ||
22 | void do_sat_long_dot2 (long a, long b, long *p, long *q) | |
23 | { | |
24 | if (__builtin_saturate_subtract64 (a, b)) /* subwus. */ | |
25 | *p = 0; | |
26 | ||
27 | *q = a + b; | |
28 | return; | |
29 | } | |
30 | ||
31 | /* { dg-final { scan-assembler {\msubdus\M} } } */ | |
32 | /* { dg-final { scan-assembler-not {\msubf\M} } } */ |