sim: bfin: import testsuite
[external/binutils.git] / sim / testsuite / sim / bfin / m9.s
1 //  Test extraction from accumulators:
2 //  ROUND/TRUNCATE in SIGNED FRACTIONAL mode
3 //  test ops: "+="
4 # mach: bfin
5
6 .include "testutils.inc"
7         start
8
9
10 // load r0=0x7ffef000
11 // load r1=0x7ffff000
12 // load r2=0x00008000
13 // load r3=0x00018000
14 // load r4=0x0000007f
15         loadsym P0, data0;
16         R0 = [ P0 ++ ];
17         R1 = [ P0 ++ ];
18         R2 = [ P0 ++ ];
19         R3 = [ P0 ++ ];
20         R4 = [ P0 ++ ];
21
22 // round
23 // 0x007ffef00 -> 0x7fff
24         A1 = A0 = 0;
25         A1.w = R0;
26         A0.w = R0;
27         R5.H = A1, R5.L = A0;
28         DBGA ( R5.L , 0x7fff );
29         DBGA ( R5.H , 0x7fff );
30
31 // round with ovflw
32 // 0x007ffff00 -> 0x7fff
33         A1 = A0 = 0;
34         A1.w = R1;
35         A0.w = R1;
36         R5.H = A1, R5.L = A0;
37         DBGA ( R5.L , 0x7fff );
38         DBGA ( R5.H , 0x7fff );
39
40 // trunc
41 // 0x007ffef00 -> 0x7ffe
42         A1 = A0 = 0;
43         A1.w = R0;
44         A0.w = R0;
45         R5.H = A1, R5.L = A0 (T);
46         DBGA ( R5.L , 0x7ffe );
47         DBGA ( R5.H , 0x7ffe );
48
49 // round with ovflw
50 // 0x7f7ffff00 -> 0x7fff
51         A1 = A0 = 0;
52         A1.w = R1;
53         A1.x = R4.L;
54         A0.w = R1;
55         A0.x = R4.L;
56         R5.H = A1, R5.L = A0;
57         DBGA ( R5.L , 0x7fff );
58         DBGA ( R5.H , 0x7fff );
59
60 // round, nearest even is zero
61 // 0x0000008000 -> 0x0000
62         A1 = A0 = 0;
63         A1.w = R2;
64         A0.w = R2;
65         R5.H = A1, R5.L = A0;
66         DBGA ( R5.L , 0x0 );
67         DBGA ( R5.H , 0x0 );
68
69 // round, nearest even is 2
70 // 0x00000018000 -> 0x0002
71         A1 = A0 = 0;
72         A1.w = R3;
73         A0.w = R3;
74         R5.H = A1, R5.L = A0;
75         DBGA ( R5.L , 0x2 );
76         DBGA ( R5.H , 0x2 );
77
78         pass
79
80         .data
81 data0:
82         .dw 0xf000
83         .dw 0x7ffe
84         .dw 0xf000
85         .dw 0x7ffe
86         .dw 0x8000
87         .dw 0x0000
88         .dw 0x8000
89         .dw 0x0001
90         .dw 0x007f
91         .dw 0x0000