binutils/
[external/binutils.git] / sim / testsuite / sim / bfin / abs-4.S
1 # Blackfin testcase for ABS instruction
2 # mach: bfin
3
4 #include "test.h"
5
6         .include "testutils.inc"
7
8         start
9
10         .global _test
11 _test:
12         R6 = ASTAT;
13         R0.H = 0x8000;
14         R0.L = 0x0;
15         R1 = ABS R0;
16         R7 = ASTAT;
17         R2.H = 0x7fff;
18         R2.L = 0xffff;
19         CC = R1 == R2;
20         IF !CC JUMP 1f;
21         /* CLEARED: AZ AN V V_COPY */
22         R3.H = HI(_AZ|_AN);
23         R3.L = LO(_AZ|_AN);
24         R4 = R7 & R3;
25         CC = R4 == 0;
26         IF !CC JUMP 1f;
27         /* SET: V V_COPY VS */
28         R3.H = HI(_V|_V_COPY|_VS);
29         R3.L = LO(_V|_V_COPY|_VS);
30         R4 = R7 & R3;
31         CC = R3 == R4;
32         IF !CC JUMP 1f;
33         /* UNAFFECTED: CC AQ RND_MOD AV0 AV0S AV1 AV1S AC0 AC0_COPY AC1 */
34         R3.H = HI(_CC|_AQ|_RND_MOD|_AV0|_AV0S|_AV1|_AV1S|_AC0|_AC0_COPY|_AC1);
35         R3.L = LO(_CC|_AQ|_RND_MOD|_AV0|_AV0S|_AV1|_AV1S|_AC0|_AC0_COPY|_AC1);
36         R4 = R6 & R3;
37         R5 = R7 & R3;
38         CC = R4 == R5;
39         IF !CC JUMP 1f;
40         pass
41 1:
42         fail