Commit | Line | Data |
---|---|---|
1d7b4a70 MF |
1 | // ALU test program. |
2 | // Test instructions | |
3 | // rL4= L+L (r2,r3); | |
4 | // rH4= L+H (r2,r3) S; | |
5 | // rL4= L-L (r2,r3); | |
6 | // rH4= L-H (r2,r3) S; | |
7 | # mach: bfin | |
8 | ||
9 | .include "testutils.inc" | |
10 | start | |
11 | ||
12 | init_r_regs 0; | |
13 | ASTAT = R0; | |
14 | ||
15 | // overflow positive | |
16 | R0.L = 0x0000; | |
17 | R0.H = 0x7fff; | |
18 | R1.L = 0x7fff; | |
19 | R1.H = 0x0000; | |
20 | R7 = 0; | |
21 | ASTAT = R7; | |
22 | R3.L = R0.H + R1.L (NS); | |
23 | DBGA ( R3.L , 0xfffe ); | |
24 | DBGA ( R3.H , 0x0000 ); | |
25 | CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); | |
26 | CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); | |
27 | CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); | |
28 | CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); | |
29 | ||
30 | // overflow negative | |
31 | R0.L = 0xffff; | |
32 | R0.H = 0x0000; | |
33 | R1.L = 0x0000; | |
34 | R1.H = 0x8000; | |
35 | R3 = 0; | |
36 | R7 = 0; | |
37 | ASTAT = R7; | |
38 | R3.H = R0.L + R1.H (NS); | |
39 | DBGA ( R3.L , 0x0000 ); | |
40 | DBGA ( R3.H , 0x7fff ); | |
41 | CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); | |
42 | CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); | |
43 | CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); | |
44 | CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 ); | |
45 | ||
46 | // saturate positive | |
47 | R0.L = 0x0000; | |
48 | R0.H = 0x7fff; | |
49 | R1.L = 0x7fff; | |
50 | R1.H = 0x0000; | |
51 | R3 = 0; | |
52 | R7 = 0; | |
53 | ASTAT = R7; | |
54 | R3.L = R0.H + R1.L (S); | |
55 | DBGA ( R3.L , 0x7fff ); | |
56 | DBGA ( R3.H , 0x0000 ); | |
57 | CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); | |
58 | CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); | |
59 | CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); | |
60 | CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); | |
61 | ||
62 | // saturate negative | |
63 | R0.L = 0xffff; | |
64 | R0.H = 0x0000; | |
65 | R1.L = 0x0000; | |
66 | R1.H = 0x8000; | |
67 | R3 = 0; | |
68 | R7 = 0; | |
69 | ASTAT = R7; | |
70 | R3.L = R0.L + R1.H (S); | |
71 | DBGA ( R3.L , 0x8000 ); | |
72 | DBGA ( R3.H , 0x0000 ); | |
73 | CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); | |
74 | CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); | |
75 | CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); | |
76 | CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 ); | |
77 | ||
78 | // overflow positive with subtraction | |
79 | R0.L = 0x0000; | |
80 | R0.H = 0x7fff; | |
81 | R1.L = 0xffff; | |
82 | R1.H = 0x0000; | |
83 | R7 = 0; | |
84 | ASTAT = R7; | |
85 | R3.L = R0.H - R1.L (NS); | |
86 | DBGA ( R3.L , 0x8000 ); | |
87 | DBGA ( R3.H , 0x0000 ); | |
88 | CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); | |
89 | CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); | |
90 | CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); | |
91 | CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); | |
92 | ||
93 | // overflow negative with subtraction | |
94 | R0.L = 0x8000; | |
95 | R0.H = 0x0000; | |
96 | R1.L = 0x0000; | |
97 | R1.H = 0x0001; | |
98 | R3 = 0; | |
99 | R7 = 0; | |
100 | ASTAT = R7; | |
101 | R3.H = R0.L - R1.H (NS); | |
102 | DBGA ( R3.L , 0x0000 ); | |
103 | DBGA ( R3.H , 0x7fff ); | |
104 | CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); | |
105 | CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); | |
106 | CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); | |
107 | CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 ); | |
108 | ||
109 | // saturate positive with subtraction | |
110 | R0.L = 0x0000; | |
111 | R0.H = 0x7fff; | |
112 | R1.L = 0xffff; | |
113 | R1.H = 0x0000; | |
114 | R7 = 0; | |
115 | ASTAT = R7; | |
116 | R3.H = R0.H - R1.L (S); | |
117 | DBGA ( R3.L , 0x0000 ); | |
118 | DBGA ( R3.H , 0x7fff ); | |
119 | CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); | |
120 | CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); | |
121 | CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); | |
122 | CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); | |
123 | ||
124 | // saturate negative with subtraction | |
125 | R0.L = 0x8000; | |
126 | R0.H = 0x0000; | |
127 | R1.L = 0x0000; | |
128 | R1.H = 0x0001; | |
129 | R3 = 0; | |
130 | R7 = 0; | |
131 | ASTAT = R7; | |
132 | R3.H = R0.L - R1.H (S); | |
133 | DBGA ( R3.L , 0x0000 ); | |
134 | DBGA ( R3.H , 0x8000 ); | |
135 | CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); | |
136 | CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); | |
137 | CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); | |
138 | CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 ); | |
139 | ||
140 | pass |