Commit | Line | Data |
---|---|---|
f41e3528 JR |
1 | # |
2 | # Some H8/300 elf tests | |
3 | # | |
4 | proc do_h8300_cbranch {} { | |
5 | set testname "cbranch.s: h8300 conditional branch tests" | |
6 | set x 0 | |
7 | ||
8 | gas_start "cbranch.s" "-al" | |
9 | ||
10 | # Check each instruction bit pattern to verify it got | |
11 | # assembled correctly. | |
12 | while 1 { | |
13 | expect { | |
4961b731 JL |
14 | -re " +\[0-9\]+ 0000 4000\[^\n\]*\n" { set x [expr $x+1] } |
15 | -re " +\[0-9\]+ 0002 4000\[^\n\]*\n" { set x [expr $x+1] } | |
16 | -re " +\[0-9\]+ 0004 4100\[^\n\]*\n" { set x [expr $x+1] } | |
17 | -re " +\[0-9\]+ 0006 4100\[^\n\]*\n" { set x [expr $x+1] } | |
18 | -re " +\[0-9\]+ 0008 4200\[^\n\]*\n" { set x [expr $x+1] } | |
19 | -re " +\[0-9\]+ 000a 4300\[^\n\]*\n" { set x [expr $x+1] } | |
20 | -re " +\[0-9\]+ 000c 4400\[^\n\]*\n" { set x [expr $x+1] } | |
21 | -re " +\[0-9\]+ 000e 4400\[^\n\]*\n" { set x [expr $x+1] } | |
22 | -re " +\[0-9\]+ 0010 4500\[^\n\]*\n" { set x [expr $x+1] } | |
23 | -re " +\[0-9\]+ 0012 4500\[^\n\]*\n" { set x [expr $x+1] } | |
24 | -re " +\[0-9\]+ 0014 4600\[^\n\]*\n" { set x [expr $x+1] } | |
25 | -re " +\[0-9\]+ 0016 4700\[^\n\]*\n" { set x [expr $x+1] } | |
26 | -re " +\[0-9\]+ 0018 4800\[^\n\]*\n" { set x [expr $x+1] } | |
27 | -re " +\[0-9\]+ 001a 4900\[^\n\]*\n" { set x [expr $x+1] } | |
28 | -re " +\[0-9\]+ 001c 4A00\[^\n\]*\n" { set x [expr $x+1] } | |
29 | -re " +\[0-9\]+ 001e 4B00\[^\n\]*\n" { set x [expr $x+1] } | |
30 | -re " +\[0-9\]+ 0020 4C00\[^\n\]*\n" { set x [expr $x+1] } | |
31 | -re " +\[0-9\]+ 0022 4D00\[^\n\]*\n" { set x [expr $x+1] } | |
32 | -re " +\[0-9\]+ 0024 4E00\[^\n\]*\n" { set x [expr $x+1] } | |
33 | -re " +\[0-9\]+ 0026 4F00\[^\n\]*\n" { set x [expr $x+1] } | |
f41e3528 JR |
34 | timeout { perror "timeout\n; break } |
35 | eof { break } | |
36 | } | |
37 | } | |
38 | ||
39 | # This was intended to do any cleanup necessary. It kinda looks like it | |
40 | # isn't needed, but just in case, please keep it in for now. | |
41 | gas_finish | |
42 | ||
43 | # Did we find what we were looking for? If not, flunk it. | |
44 | if [expr $x == 20] then { pass $testname } else { fail $testname } | |
45 | } | |
46 | ||
47 | proc do_h8300_branch {} { | |
48 | set testname "branch.s: h8300 branch tests" | |
49 | set x 0 | |
50 | ||
51 | gas_start "branch-elf.s" "-al" | |
52 | ||
53 | # Check each instruction bit pattern to verify it got | |
54 | # assembled correctly. | |
55 | while 1 { | |
56 | expect { | |
4961b731 | 57 | -re " +\[0-9\]+ 0000 5500\[^\n\]*\n" { set x [expr $x+1] } |
f41e3528 JR |
58 | -re " +\[0-9\]+ 0002 5A000000\[^\n\]*\n" { set x [expr $x+1] } |
59 | -re " +\[0-9\]+ 0006 5900\[^\n\]*\n" { set x [expr $x+1] } | |
60 | -re " +\[0-9\]+ 0008 5B00\[^\n\]*\n" { set x [expr $x+1] } | |
61 | -re " +\[0-9\]+ 000a 5E000000\[^\n\]*\n" { set x [expr $x+1] } | |
62 | -re " +\[0-9\]+ 000e 5D00\[^\n\]*\n" { set x [expr $x+1] } | |
63 | -re " +\[0-9\]+ 0010 5F00\[^\n\]*\n" { set x [expr $x+1] } | |
64 | timeout { perror "timeout\n; break } | |
65 | eof { break } | |
66 | } | |
67 | } | |
68 | ||
69 | # This was intended to do any cleanup necessary. It kinda looks like it | |
70 | # isn't needed, but just in case, please keep it in for now. | |
71 | gas_finish | |
72 | ||
73 | # Did we find what we were looking for? If not, flunk it. | |
74 | if [expr $x == 7] then { pass $testname } else { fail $testname } | |
75 | } | |
76 | ||
77 | proc do_h8300h_cbranch {} { | |
78 | set testname "cbranchh.s: h8300h conditional branch tests" | |
79 | set x 0 | |
80 | ||
81 | gas_start "cbranchh.s" "-al" | |
82 | ||
83 | # Check each instruction bit pattern to verify it got | |
84 | # assembled correctly. | |
85 | while 1 { | |
86 | expect { | |
4961b731 JL |
87 | -re " +\[0-9\]+ 0000 4000\[^\n\]*\n" { set x [expr $x+1] } |
88 | -re " +\[0-9\]+ 0002 4000\[^\n\]*\n" { set x [expr $x+1] } | |
89 | -re " +\[0-9\]+ 0004 4100\[^\n\]*\n" { set x [expr $x+1] } | |
90 | -re " +\[0-9\]+ 0006 4100\[^\n\]*\n" { set x [expr $x+1] } | |
91 | -re " +\[0-9\]+ 0008 4200\[^\n\]*\n" { set x [expr $x+1] } | |
92 | -re " +\[0-9\]+ 000a 4300\[^\n\]*\n" { set x [expr $x+1] } | |
93 | -re " +\[0-9\]+ 000c 4400\[^\n\]*\n" { set x [expr $x+1] } | |
94 | -re " +\[0-9\]+ 000e 4400\[^\n\]*\n" { set x [expr $x+1] } | |
95 | -re " +\[0-9\]+ 0010 4500\[^\n\]*\n" { set x [expr $x+1] } | |
96 | -re " +\[0-9\]+ 0012 4500\[^\n\]*\n" { set x [expr $x+1] } | |
97 | -re " +\[0-9\]+ 0014 4600\[^\n\]*\n" { set x [expr $x+1] } | |
98 | -re " +\[0-9\]+ 0016 4700\[^\n\]*\n" { set x [expr $x+1] } | |
99 | -re " +\[0-9\]+ 0018 4800\[^\n\]*\n" { set x [expr $x+1] } | |
100 | -re " +\[0-9\]+ 001a 4900\[^\n\]*\n" { set x [expr $x+1] } | |
101 | -re " +\[0-9\]+ 001c 4A00\[^\n\]*\n" { set x [expr $x+1] } | |
102 | -re " +\[0-9\]+ 001e 4B00\[^\n\]*\n" { set x [expr $x+1] } | |
103 | -re " +\[0-9\]+ 0020 4C00\[^\n\]*\n" { set x [expr $x+1] } | |
104 | -re " +\[0-9\]+ 0022 4D00\[^\n\]*\n" { set x [expr $x+1] } | |
105 | -re " +\[0-9\]+ 0024 4E00\[^\n\]*\n" { set x [expr $x+1] } | |
106 | -re " +\[0-9\]+ 0026 4F00\[^\n\]*\n" { set x [expr $x+1] } | |
107 | -re " +\[0-9\]+ 0028 58000000\[^\n\]*\n" { set x [expr $x+1] } | |
108 | -re " +\[0-9\]+ 002c 58000000\[^\n\]*\n" { set x [expr $x+1] } | |
109 | -re " +\[0-9\]+ 0030 58100000\[^\n\]*\n" { set x [expr $x+1] } | |
110 | -re " +\[0-9\]+ 0034 58100000\[^\n\]*\n" { set x [expr $x+1] } | |
111 | -re " +\[0-9\]+ 0038 58200000\[^\n\]*\n" { set x [expr $x+1] } | |
112 | -re " +\[0-9\]+ 003c 58300000\[^\n\]*\n" { set x [expr $x+1] } | |
113 | -re " +\[0-9\]+ 0040 58400000\[^\n\]*\n" { set x [expr $x+1] } | |
114 | -re " +\[0-9\]+ 0044 58400000\[^\n\]*\n" { set x [expr $x+1] } | |
115 | -re " +\[0-9\]+ 0048 58500000\[^\n\]*\n" { set x [expr $x+1] } | |
116 | -re " +\[0-9\]+ 004c 58500000\[^\n\]*\n" { set x [expr $x+1] } | |
117 | -re " +\[0-9\]+ 0050 58600000\[^\n\]*\n" { set x [expr $x+1] } | |
118 | -re " +\[0-9\]+ 0054 58700000\[^\n\]*\n" { set x [expr $x+1] } | |
119 | -re " +\[0-9\]+ 0058 58800000\[^\n\]*\n" { set x [expr $x+1] } | |
120 | -re " +\[0-9\]+ 005c 58900000\[^\n\]*\n" { set x [expr $x+1] } | |
121 | -re " +\[0-9\]+ 0060 58A00000\[^\n\]*\n" { set x [expr $x+1] } | |
122 | -re " +\[0-9\]+ 0064 58B00000\[^\n\]*\n" { set x [expr $x+1] } | |
123 | -re " +\[0-9\]+ 0068 58C00000\[^\n\]*\n" { set x [expr $x+1] } | |
124 | -re " +\[0-9\]+ 006c 58D00000\[^\n\]*\n" { set x [expr $x+1] } | |
125 | -re " +\[0-9\]+ 0070 58E00000\[^\n\]*\n" { set x [expr $x+1] } | |
126 | -re " +\[0-9\]+ 0074 58F00000\[^\n\]*\n" { set x [expr $x+1] } | |
f41e3528 JR |
127 | timeout { perror "timeout\n; break } |
128 | eof { break } | |
129 | } | |
130 | } | |
131 | ||
132 | # This was intended to do any cleanup necessary. It kinda looks like it | |
133 | # isn't needed, but just in case, please keep it in for now. | |
134 | gas_finish | |
135 | ||
136 | # Did we find what we were looking for? If not, flunk it. | |
137 | if [expr $x == 40] then { pass $testname } else { fail $testname } | |
138 | } | |
139 | ||
140 | proc do_h8300h_branch {} { | |
141 | set testname "branchh.s: h8300h branch tests" | |
142 | set x 0 | |
143 | ||
144 | gas_start "branchh-elf.s" "-al" | |
145 | ||
146 | # Check each instruction bit pattern to verify it got | |
147 | # assembled correctly. | |
148 | while 1 { | |
149 | expect { | |
4961b731 JL |
150 | -re " +\[0-9\]+ 0000 5500\[^\n\]*\n" { set x [expr $x+1] } |
151 | -re " +\[0-9\]+ 0002 5C000000\[^\n\]*\n" { set x [expr $x+1] } | |
f41e3528 JR |
152 | -re " +\[0-9\]+ 0006 5A000000\[^\n\]*\n" { set x [expr $x+1] } |
153 | -re " +\[0-9\]+ 000a 5900\[^\n\]*\n" { set x [expr $x+1] } | |
4961b731 | 154 | -re " +\[0-9\]+ 000c 5B00\[^\n\]*\n" { set x [expr $x+1] } |
f41e3528 JR |
155 | -re " +\[0-9\]+ 000e 5E000000\[^\n\]*\n" { set x [expr $x+1] } |
156 | -re " +\[0-9\]+ 0012 5D00\[^\n\]*\n" { set x [expr $x+1] } | |
4961b731 | 157 | -re " +\[0-9\]+ 0014 5F00\[^\n\]*\n" { set x [expr $x+1] } |
f41e3528 JR |
158 | timeout { perror "timeout\n; break } |
159 | eof { break } | |
160 | } | |
161 | } | |
162 | ||
163 | # This was intended to do any cleanup necessary. It kinda looks like it | |
164 | # isn't needed, but just in case, please keep it in for now. | |
165 | gas_finish | |
166 | ||
167 | # Did we find what we were looking for? If not, flunk it. | |
168 | if [expr $x == 8] then { pass $testname } else { fail $testname } | |
169 | } | |
170 | ||
171 | proc do_h8300s_cbranch {} { | |
172 | set testname "cbranchs.s: h8300s conditional branch tests" | |
173 | set x 0 | |
174 | ||
175 | gas_start "cbranchs.s" "-al" | |
176 | ||
177 | # Check each instruction bit pattern to verify it got | |
178 | # assembled correctly. | |
179 | while 1 { | |
180 | expect { | |
4961b731 JL |
181 | -re " +\[0-9\]+ 0000 4000\[^\n\]*\n" { set x [expr $x+1] } |
182 | -re " +\[0-9\]+ 0002 4000\[^\n\]*\n" { set x [expr $x+1] } | |
183 | -re " +\[0-9\]+ 0004 4100\[^\n\]*\n" { set x [expr $x+1] } | |
184 | -re " +\[0-9\]+ 0006 4100\[^\n\]*\n" { set x [expr $x+1] } | |
185 | -re " +\[0-9\]+ 0008 4200\[^\n\]*\n" { set x [expr $x+1] } | |
186 | -re " +\[0-9\]+ 000a 4300\[^\n\]*\n" { set x [expr $x+1] } | |
187 | -re " +\[0-9\]+ 000c 4400\[^\n\]*\n" { set x [expr $x+1] } | |
188 | -re " +\[0-9\]+ 000e 4400\[^\n\]*\n" { set x [expr $x+1] } | |
189 | -re " +\[0-9\]+ 0010 4500\[^\n\]*\n" { set x [expr $x+1] } | |
190 | -re " +\[0-9\]+ 0012 4500\[^\n\]*\n" { set x [expr $x+1] } | |
191 | -re " +\[0-9\]+ 0014 4600\[^\n\]*\n" { set x [expr $x+1] } | |
192 | -re " +\[0-9\]+ 0016 4700\[^\n\]*\n" { set x [expr $x+1] } | |
193 | -re " +\[0-9\]+ 0018 4800\[^\n\]*\n" { set x [expr $x+1] } | |
194 | -re " +\[0-9\]+ 001a 4900\[^\n\]*\n" { set x [expr $x+1] } | |
195 | -re " +\[0-9\]+ 001c 4A00\[^\n\]*\n" { set x [expr $x+1] } | |
196 | -re " +\[0-9\]+ 001e 4B00\[^\n\]*\n" { set x [expr $x+1] } | |
197 | -re " +\[0-9\]+ 0020 4C00\[^\n\]*\n" { set x [expr $x+1] } | |
198 | -re " +\[0-9\]+ 0022 4D00\[^\n\]*\n" { set x [expr $x+1] } | |
199 | -re " +\[0-9\]+ 0024 4E00\[^\n\]*\n" { set x [expr $x+1] } | |
200 | -re " +\[0-9\]+ 0026 4F00\[^\n\]*\n" { set x [expr $x+1] } | |
201 | -re " +\[0-9\]+ 0028 58000000\[^\n\]*\n" { set x [expr $x+1] } | |
202 | -re " +\[0-9\]+ 002c 58000000\[^\n\]*\n" { set x [expr $x+1] } | |
203 | -re " +\[0-9\]+ 0030 58100000\[^\n\]*\n" { set x [expr $x+1] } | |
204 | -re " +\[0-9\]+ 0034 58100000\[^\n\]*\n" { set x [expr $x+1] } | |
205 | -re " +\[0-9\]+ 0038 58200000\[^\n\]*\n" { set x [expr $x+1] } | |
206 | -re " +\[0-9\]+ 003c 58300000\[^\n\]*\n" { set x [expr $x+1] } | |
207 | -re " +\[0-9\]+ 0040 58400000\[^\n\]*\n" { set x [expr $x+1] } | |
208 | -re " +\[0-9\]+ 0044 58400000\[^\n\]*\n" { set x [expr $x+1] } | |
209 | -re " +\[0-9\]+ 0048 58500000\[^\n\]*\n" { set x [expr $x+1] } | |
210 | -re " +\[0-9\]+ 004c 58500000\[^\n\]*\n" { set x [expr $x+1] } | |
211 | -re " +\[0-9\]+ 0050 58600000\[^\n\]*\n" { set x [expr $x+1] } | |
212 | -re " +\[0-9\]+ 0054 58700000\[^\n\]*\n" { set x [expr $x+1] } | |
213 | -re " +\[0-9\]+ 0058 58800000\[^\n\]*\n" { set x [expr $x+1] } | |
214 | -re " +\[0-9\]+ 005c 58900000\[^\n\]*\n" { set x [expr $x+1] } | |
215 | -re " +\[0-9\]+ 0060 58A00000\[^\n\]*\n" { set x [expr $x+1] } | |
216 | -re " +\[0-9\]+ 0064 58B00000\[^\n\]*\n" { set x [expr $x+1] } | |
217 | -re " +\[0-9\]+ 0068 58C00000\[^\n\]*\n" { set x [expr $x+1] } | |
218 | -re " +\[0-9\]+ 006c 58D00000\[^\n\]*\n" { set x [expr $x+1] } | |
219 | -re " +\[0-9\]+ 0070 58E00000\[^\n\]*\n" { set x [expr $x+1] } | |
220 | -re " +\[0-9\]+ 0074 58F00000\[^\n\]*\n" { set x [expr $x+1] } | |
f41e3528 JR |
221 | timeout { perror "timeout\n; break } |
222 | eof { break } | |
223 | } | |
224 | } | |
225 | ||
226 | # This was intended to do any cleanup necessary. It kinda looks like it | |
227 | # isn't needed, but just in case, please keep it in for now. | |
228 | gas_finish | |
229 | ||
230 | # Did we find what we were looking for? If not, flunk it. | |
231 | if [expr $x == 40] then { pass $testname } else { fail $testname } | |
232 | } | |
233 | ||
234 | proc do_h8300s_branch {} { | |
235 | set testname "branchs.s: h8300s branch tests" | |
236 | set x 0 | |
237 | ||
238 | gas_start "branchs-elf.s" "-al" | |
239 | ||
240 | # Check each instruction bit pattern to verify it got | |
241 | # assembled correctly. | |
242 | while 1 { | |
243 | expect { | |
4961b731 JL |
244 | -re " +\[0-9\]+ 0000 5500\[^\n\]*\n" { set x [expr $x+1] } |
245 | -re " +\[0-9\]+ 0002 5C000000\[^\n\]*\n" { set x [expr $x+1] } | |
f41e3528 JR |
246 | -re " +\[0-9\]+ 0006 5A000000\[^\n\]*\n" { set x [expr $x+1] } |
247 | -re " +\[0-9\]+ 000a 5900\[^\n\]*\n" { set x [expr $x+1] } | |
4961b731 | 248 | -re " +\[0-9\]+ 000c 5B00\[^\n\]*\n" { set x [expr $x+1] } |
f41e3528 JR |
249 | -re " +\[0-9\]+ 000e 5E000000\[^\n\]*\n" { set x [expr $x+1] } |
250 | -re " +\[0-9\]+ 0012 5D00\[^\n\]*\n" { set x [expr $x+1] } | |
4961b731 | 251 | -re " +\[0-9\]+ 0014 5F00\[^\n\]*\n" { set x [expr $x+1] } |
f41e3528 JR |
252 | timeout { perror "timeout\n; break } |
253 | eof { break } | |
254 | } | |
255 | } | |
256 | ||
257 | # This was intended to do any cleanup necessary. It kinda looks like it | |
258 | # isn't needed, but just in case, please keep it in for now. | |
259 | gas_finish | |
260 | ||
261 | # Did we find what we were looking for? If not, flunk it. | |
262 | if [expr $x == 8] then { pass $testname } else { fail $testname } | |
263 | } | |
264 | ||
265 | if [istarget h8300*-*-elf] then { | |
266 | # Test the basic h8300 instruction parser | |
267 | do_h8300_cbranch | |
268 | do_h8300_branch | |
269 | ||
270 | # Now test the h8300h instruction parser | |
271 | do_h8300h_cbranch | |
272 | do_h8300h_branch | |
273 | ||
274 | # Now test the h8300s instruction parser | |
275 | do_h8300s_cbranch | |
276 | do_h8300s_branch | |
277 | ||
278 | # Now some random tests | |
279 | run_dump_test "ffxx1-elf" | |
280 | } |