]>
Commit | Line | Data |
---|---|---|
dd43edf4 TS |
1 | #include <stdio.h> |
2 | #include <stdlib.h> | |
3 | #include <stdint.h> | |
4 | #include "sys.h" | |
5 | #include "crisutils.h" | |
6 | ||
4a6648f4 BS |
7 | static inline int cris_abs(int n) |
8 | { | |
dd43edf4 TS |
9 | int r; |
10 | asm ("abs\t%1, %0\n" : "=r" (r) : "r" (n)); | |
11 | return r; | |
12 | } | |
13 | ||
4a6648f4 | 14 | static inline void |
dd43edf4 TS |
15 | verify_abs(int val, int res, |
16 | const int n, const int z, const int v, const int c) | |
17 | { | |
18 | int r; | |
19 | ||
20 | cris_tst_cc_init(); | |
21 | r = cris_abs(val); | |
22 | cris_tst_cc(n, z, v, c); | |
23 | if (r != res) | |
24 | err(); | |
25 | } | |
26 | ||
27 | int main(void) | |
28 | { | |
29 | verify_abs(-1, 1, 0, 0, 0, 0); | |
30 | verify_abs(0x80000000, 0x80000000, 1, 0, 0, 0); | |
31 | verify_abs(0x7fffffff, 0x7fffffff, 0, 0, 0, 0); | |
32 | verify_abs(42, 42, 0, 0, 0, 0); | |
33 | verify_abs(1, 1, 0, 0, 0, 0); | |
34 | verify_abs(0xffff, 0xffff, 0, 0, 0, 0); | |
35 | verify_abs(0xffff, 0xffff, 0, 0, 0, 0); | |
36 | verify_abs(-31, 0x1f, 0, 0, 0, 0); | |
37 | verify_abs(0, 0, 0, 1, 0, 0); | |
38 | pass(); | |
39 | return 0; | |
40 | } |