sim: bfin: import testsuite
[deliverable/binutils-gdb.git] / sim / testsuite / sim / bfin / a6.s
1 // ALU test program.
2 // Test instructions
3 // r7 = +/+ (r0,r1);
4 // r7 = +/+ (r0,r1) s;
5 // r7 = +/+ (r0,r1) sx;
6 # mach: bfin
7
8 .include "testutils.inc"
9 start
10
11
12 // one result overflows positive
13 R0.L = 0x0001;
14 R0.H = 0x0010;
15 R1.L = 0x7fff;
16 R1.H = 0x0010;
17 R7 = 0;
18 ASTAT = R7;
19 R7 = R0 +|+ R1;
20 DBGA ( R7.L , 0x8000 );
21 DBGA ( R7.H , 0x0020 );
22 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
23 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
24 CC = V; R7 = CC; DBGA ( R7.L , 0x1 );
25 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
26
27 // one result overflows negative
28 R0.L = 0xffff;
29 R0.H = 0x0010;
30 R1.L = 0x8000;
31 R1.H = 0x0010;
32 R7 = 0;
33 ASTAT = R7;
34 R7 = R0 +|+ R1;
35 DBGA ( R7.L , 0x7fff );
36 DBGA ( R7.H , 0x0020 );
37 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
38 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
39 CC = V; R7 = CC; DBGA ( R7.L , 0x1 );
40 CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 );
41
42 // one result zero
43 R0.L = 0x0001;
44 R0.H = 0xffff;
45 R1.L = 0x0001;
46 R1.H = 0x0001;
47 R7 = 0;
48 ASTAT = R7;
49 R7 = R0 +|+ R1;
50 DBGA ( R7.L , 0x0002 );
51 DBGA ( R7.H , 0x0000 );
52 CC = AZ; R5 = CC; DBGA ( R5.L , 0x1 );
53 CC = AN; R5 = CC; DBGA ( R5.L , 0x0 );
54 CC = V; R5 = CC; DBGA ( R5.L , 0x0 );
55 CC = AC0; R5 = CC; DBGA ( R5.L , 0x0 );
56
57 // one result saturates positive
58 R0.L = 0x0001;
59 R0.H = 0x0010;
60 R1.L = 0x7fff;
61 R1.H = 0x0010;
62 R7 = 0;
63 ASTAT = R7;
64 R7 = R0 +|+ R1 (S);
65 DBGA ( R7.L , 0x7fff );
66 DBGA ( R7.H , 0x0020 );
67 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
68 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
69 CC = V; R7 = CC; DBGA ( R7.L , 0x1 );
70 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
71
72 // one result saturates negative
73 R0.L = 0xffff;
74 R0.H = 0x0010;
75 R1.L = 0x8000;
76 R1.H = 0x0010;
77 R7 = 0;
78 ASTAT = R7;
79 R7 = R0 +|+ R1 (S);
80 DBGA ( R7.L , 0x8000 );
81 DBGA ( R7.H , 0x0020 );
82 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
83 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
84 CC = V; R7 = CC; DBGA ( R7.L , 0x1 );
85 CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 );
86
87 // two results saturates negative
88 R0.L = 0xffff;
89 R0.H = 0xfff0;
90 R1.L = 0x8000;
91 R1.H = 0x8000;
92 R7 = 0;
93 ASTAT = R7;
94 R7 = R0 +|+ R1 (S);
95 DBGA ( R7.L , 0x8000 );
96 DBGA ( R7.H , 0x8000 );
97 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
98 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
99 CC = V; R7 = CC; DBGA ( R7.L , 0x1 );
100 CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 );
101
102 // one result overflows positive and cross
103 R0.L = 0x0001;
104 R0.H = 0x0010;
105 R1.L = 0x7fff;
106 R1.H = 0x0010;
107 R7 = 0;
108 ASTAT = R7;
109 R7 = R0 +|+ R1 (CO);
110 DBGA ( R7.L , 0x0020 );
111 DBGA ( R7.H , 0x8000 );
112 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
113 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
114 CC = V; R7 = CC; DBGA ( R7.L , 0x1 );
115 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
116
117 // one result saturates negative and cross
118 R0.L = 0xffff;
119 R0.H = 0x0010;
120 R1.L = 0x8000;
121 R1.H = 0x0010;
122 R7 = 0;
123 ASTAT = R7;
124 R7 = R0 +|+ R1 (SCO);
125 DBGA ( R7.L , 0x0020 );
126 DBGA ( R7.H , 0x8000 );
127 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
128 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
129 CC = V; R7 = CC; DBGA ( R7.L , 0x1 );
130 CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 );
131
132 pass
This page took 0.032449 seconds and 4 git commands to generate.