1 2 # Copyright 1997-2024 Free Software Foundation, Inc. 3 4 # This program is free software; you can redistribute it and/or modify 5 # it under the terms of the GNU General Public License as published by 6 # the Free Software Foundation; either version 3 of the License, or 7 # (at your option) any later version. 8 # 9 # This program is distributed in the hope that it will be useful, 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 # GNU General Public License for more details. 13 # 14 # You should have received a copy of the GNU General Public License 15 # along with this program. If not, see <http://www.gnu.org/licenses/>. 16 17 # This file was written by Jeff Law. (law (at) cygnus.com) 18 19 require {istarget "mn10300*-*-*"} 20 21 global exec_output 22 23 set testfile "mn10300" 24 set srcfile ${srcdir}/${subdir}/${testfile}.s 25 set binfile ${objdir}/${subdir}/${testfile} 26 if { [gdb_compile "${srcfile}" "${binfile}" executable ""] != "" } { 27 untested "failed to compile" 28 return -1 29 } 30 31 proc add_tests { } { 32 global gdb_prompt 33 global hex 34 global decimal 35 36 send_gdb "x/14i add_tests\n" 37 gdb_expect { 38 -re " 39 .*add d1,d2.* 40 .*add d2,a3.* 41 .*add a3,a2.* 42 .*add a2,d1.* 43 .*add 16,d1.* 44 .*add 256,d2.* 45 .*add 131071,d3.* 46 .*add 16,a1.* 47 .*add 256,a2.* 48 .*add 131071,a3.* 49 .*add 16,sp.* 50 .*add 256,sp.* 51 .*add 131071,sp.* 52 .*addc d1,d2.* 53 .*$gdb_prompt $" { pass "add tests" } 54 -re "$gdb_prompt $" { fail "add tests" } 55 timeout { fail "(timeout) add tests" } 56 } 57 } 58 59 proc bcc_tests { } { 60 global gdb_prompt 61 global hex 62 global decimal 63 64 send_gdb "x/15i bCC_tests\n" 65 gdb_expect { 66 -re " 67 .*beq 0x\[0-9a-f]+ <bCC_tests>.* 68 .*bne 0x\[0-9a-f]+ <bCC_tests>.* 69 .*bgt 0x\[0-9a-f]+ <bCC_tests>.* 70 .*bge 0x\[0-9a-f]+ <bCC_tests>.* 71 .*ble 0x\[0-9a-f]+ <bCC_tests>.* 72 .*blt 0x\[0-9a-f]+ <bCC_tests>.* 73 .*bhi 0x\[0-9a-f]+ <bCC_tests>.* 74 .*bcc 0x\[0-9a-f]+ <bCC_tests>.* 75 .*bls 0x\[0-9a-f]+ <bCC_tests>.* 76 .*bcs 0x\[0-9a-f]+ <bCC_tests>.* 77 .*bvc 0x\[0-9a-f]+ <bCC_tests>.* 78 .*bvs 0x\[0-9a-f]+ <bCC_tests>.* 79 .*bnc 0x\[0-9a-f]+ <bCC_tests>.* 80 .*bns 0x\[0-9a-f]+ <bCC_tests>.* 81 .*bra 0x\[0-9a-f]+ <bCC_tests>.* 82 .*$gdb_prompt $" { pass "bCC tests" } 83 -re "$gdb_prompt $" { fail "bCC tests" } 84 timeout { fail "(timeout) bCC tests" } 85 } 86 } 87 88 proc bit_tests { } { 89 global gdb_prompt 90 global hex 91 global decimal 92 93 send_gdb "x/11i bit_tests\n" 94 gdb_expect { 95 -re " 96 .*btst 64,d1.* 97 .*btst 8192,d2.* 98 .*btst 131071,d3.* 99 .*btst 64,\\(8,a1\\).* 100 .*btst 64,\\(0x1ffff\\).* 101 .*bset d1,\\(a2\\).* 102 .*bset 64,\\(8,a1\\).* 103 .*bset 64,\\(0x1ffff\\).* 104 .*bclr d1,\\(a2\\).* 105 .*bclr 64,\\(8,a1\\).* 106 .*bclr 64,\\(0x1ffff\\).* 107 .*$gdb_prompt $" { pass "bit tests" } 108 -re "$gdb_prompt $" { fail "bit tests" } 109 timeout { fail "(timeout) bit tests" } 110 } 111 } 112 113 proc cmp_tests { } { 114 global gdb_prompt 115 global hex 116 global decimal 117 118 send_gdb "x/10i cmp_tests\n" 119 gdb_expect { 120 -re " 121 .*cmp d1,d2.* 122 .*cmp d2,a3.* 123 .*cmp a3,d3.* 124 .*cmp a3,a2.* 125 .*cmp 16,d3.* 126 .*cmp 256,d2.* 127 .*cmp 131071,d1.* 128 .*cmp 16,a3.* 129 .*cmp 256,a2.* 130 .*cmp 131071,a1.* 131 .*$gdb_prompt $" { pass "cmp tests" } 132 -re "$gdb_prompt $" { fail "cmp tests" } 133 timeout { fail "(timeout) cmp tests" } 134 } 135 } 136 137 proc extend_tests { } { 138 global gdb_prompt 139 global hex 140 global decimal 141 142 send_gdb "x/5i extend_tests\n" 143 gdb_expect { 144 -re " 145 .*ext d1.* 146 .*extb d2.* 147 .*extbu d3.* 148 .*exth d2.* 149 .*exthu d1.* 150 .*$gdb_prompt $" { pass "extend tests" } 151 -re "$gdb_prompt $" { fail "extend tests" } 152 timeout { fail "(timeout) extend tests" } 153 } 154 } 155 156 proc extended_tests { } { 157 global gdb_prompt 158 global hex 159 global decimal 160 161 send_gdb "x/13i extended_tests\n" 162 gdb_expect { 163 -re " 164 .*putx d1.* 165 .*getx d2.* 166 .*mulq d1,d2.* 167 .*mulq 16,d2.* 168 .*mulq 256,d3.* 169 .*mulq 131071,d3.* 170 .*mulqu d1,d2.* 171 .*mulqu 16,d2.* 172 .*mulqu 256,d3.* 173 .*mulqu 131071,d3.* 174 .*sat16 d2,d3.* 175 .*sat24 d3,d2.* 176 .*bsch d1,d2.* 177 .*$gdb_prompt $" { pass "extended tests" } 178 -re "$gdb_prompt $" { fail "extended tests" } 179 timeout { fail "(timeout) extended tests" } 180 } 181 } 182 183 proc logical_tests { } { 184 global gdb_prompt 185 global hex 186 global decimal 187 188 send_gdb "x/14i logical_tests\n" 189 gdb_expect { 190 -re " 191 .*and d1,d2.* 192 .*and 127,d2.* 193 .*and 32767,d3.* 194 .*and 131071,d3.* 195 .*and 32767,psw.* 196 .*or d1,d2.* 197 .*or 127,d2.* 198 .*or 32767,d3.* 199 .*or 131071,d3.* 200 .*or 32767,psw.* 201 .*xor d1,d2.* 202 .*xor 32767,d3.* 203 .*xor 131071,d3.* 204 .*not d3.* 205 .*$gdb_prompt $" { pass "logical tests" } 206 -re "$gdb_prompt $" { fail "logical tests" } 207 timeout { fail "(timeout) logical tests" } 208 } 209 } 210 211 proc loop_tests { } { 212 global gdb_prompt 213 global hex 214 global decimal 215 216 send_gdb "x/12i loop_tests\n" 217 gdb_expect { 218 -re " 219 .*leq.* 220 .*lne.* 221 .*lgt.* 222 .*lge.* 223 .*lle.* 224 .*llt.* 225 .*lhi.* 226 .*lcc.* 227 .*lls.* 228 .*lcs.* 229 .*lra.* 230 .*setlb.* 231 .*$gdb_prompt $" { pass "loop tests" } 232 -re "$gdb_prompt $" { fail "loop tests" } 233 timeout { fail "(timeout) loop tests" } 234 } 235 } 236 237 proc mov_tests_1 { } { 238 global gdb_prompt 239 global hex 240 global decimal 241 242 send_gdb "x/16i mov_tests_1\n" 243 gdb_expect { 244 -re " 245 .*mov d1,d2.* 246 .*mov d1,a2.* 247 .*mov a2,d1.* 248 .*mov a2,a1.* 249 .*mov sp,a2.* 250 .*mov a1,sp.* 251 .*mov d2,psw.* 252 .*mov mdr,d1.* 253 .*mov d2,mdr.* 254 .*mov \\(a2\\),d1.* 255 .*mov \\(8,a2\\),d1.* 256 .*mov \\(256,a2\\),d1.* 257 .*mov \\(131071,a2\\),d1.* 258 .*mov \\(8,sp\\),d1.* 259 .*mov \\(256,sp\\),d1.* 260 .*mov psw,d3.* 261 .*$gdb_prompt $" { pass "mov1 tests" } 262 -re "$gdb_prompt $" { fail "mov1 tests" } 263 timeout { fail "(timeout) mov1 tests" } 264 } 265 } 266 267 proc mov_tests_2 { } { 268 global gdb_prompt 269 global hex 270 global decimal 271 272 send_gdb "x/15i mov_tests_2\n" 273 gdb_expect { 274 -re " 275 .*mov \\(131071,sp\\),d1.* 276 .*mov \\(d1,a1\\),d2.* 277 .*mov \\(0x8000.*\\),d1.* 278 .*mov \\(0x1ffff.*\\),d1.* 279 .*mov \\(a2\\),a1.* 280 .*mov \\(8,a2\\),a1.* 281 .*mov \\(256,a2\\),a1.* 282 .*mov \\(131071,a2\\),a1.* 283 .*mov \\(8,sp\\),a1.* 284 .*mov \\(256,sp\\),a1.* 285 .*mov \\(131071,sp\\),a1.* 286 .*mov \\(d1,a1\\),a2.* 287 .*mov \\(0x8000.*\\),a1.* 288 .*mov \\(0x1ffff.*\\),a1.* 289 .*mov \\(32,a1\\),sp.* 290 .*$gdb_prompt $" { pass "mov2 tests" } 291 -re "$gdb_prompt $" { fail "mov2 tests" } 292 timeout { fail "(timeout) mov2 tests" } 293 } 294 } 295 296 proc mov_tests_3 { } { 297 global gdb_prompt 298 global hex 299 global decimal 300 301 send_gdb "x/15i mov_tests_3\n" 302 gdb_expect { 303 -re " 304 .*mov d1,\\(a2\\).* 305 .*mov d1,\\(32,a2\\).* 306 .*mov d1,\\(256,a2\\).* 307 .*mov d1,\\(131071,a2\\).* 308 .*mov d1,\\(32,sp\\).* 309 .*mov d1,\\(32768,sp\\).* 310 .*mov d1,\\(131071,sp\\).* 311 .*mov d1,\\(d2,a2\\).* 312 .*mov d1,\\(0x80.*\\).* 313 .*mov d1,\\(0x1ffff.*\\).* 314 .*mov a1,\\(a2\\).* 315 .*mov a1,\\(32,a2\\).* 316 .*mov a1,\\(256,a2\\).* 317 .*mov a1,\\(131071,a2\\).* 318 .*mov a1,\\(32,sp\\).* 319 .*$gdb_prompt $" { pass "mov3 tests" } 320 -re "$gdb_prompt $" { fail "mov3 tests" } 321 timeout { fail "(timeout) mov3 tests" } 322 } 323 } 324 325 proc mov_tests_4 { } { 326 global gdb_prompt 327 global hex 328 global decimal 329 330 send_gdb "x/12i mov_tests_4\n" 331 gdb_expect { 332 -re " 333 .*mov a1,\\(32768,sp\\).* 334 .*mov a1,\\(131071,sp\\).* 335 .*mov a1,\\(d2,a2\\).* 336 .*mov a1,\\(0x80.*\\).* 337 .*mov a1,\\(0x1ffff.*\\).* 338 .*mov sp,\\(32,a1\\).* 339 .*mov 8,d1.* 340 .*mov 256,d1.* 341 .*mov 131071,d1.* 342 .*mov 8,a1.* 343 .*mov 256,a1.* 344 .*mov 131071,a1.* 345 .*$gdb_prompt $" { pass "mov4 tests" } 346 -re "$gdb_prompt $" { fail "mov4 tests" } 347 timeout { fail "(timeout) mov4 tests" } 348 } 349 } 350 351 proc movbu_tests { } { 352 global gdb_prompt 353 global hex 354 global decimal 355 356 send_gdb "x/20i movbu_tests\n" 357 gdb_expect { 358 -re " 359 .*movbu \\(a2\\),d1.* 360 .*movbu \\(8,a2\\),d1.* 361 .*movbu \\(256,a2\\),d1.* 362 .*movbu \\(131071,a2\\),d1.* 363 .*movbu \\(8,sp\\),d1.* 364 .*movbu \\(256,sp\\),d1.* 365 .*movbu \\(131071,sp\\),d1.* 366 .*movbu \\(d1,a1\\),d2.* 367 .*movbu \\(0x8000.*\\),d1.* 368 .*movbu \\(0x1ffff.*\\),d1.* 369 .*movbu d1,\\(a2\\).* 370 .*movbu d1,\\(32,a2\\).* 371 .*movbu d1,\\(256,a2\\).* 372 .*movbu d1,\\(131071,a2\\).* 373 .*movbu d1,\\(32,sp\\).* 374 .*movbu d1,\\(32768,sp\\).* 375 .*movbu d1,\\(131071,sp\\).* 376 .*movbu d1,\\(d2,a2\\).* 377 .*movbu d1,\\(0x80.*\\).* 378 .*movbu d1,\\(0x1ffff.*\\).* 379 .*$gdb_prompt $" { pass "movbu tests" } 380 -re "$gdb_prompt $" { fail "movbu tests" } 381 timeout { fail "(timeout) movbu tests" } 382 } 383 } 384 385 proc movhu_tests { } { 386 global gdb_prompt 387 global hex 388 global decimal 389 390 send_gdb "x/20i movhu_tests\n" 391 gdb_expect { 392 -re " 393 .*movhu \\(a2\\),d1.* 394 .*movhu \\(8,a2\\),d1.* 395 .*movhu \\(256,a2\\),d1.* 396 .*movhu \\(131071,a2\\),d1.* 397 .*movhu \\(8,sp\\),d1.* 398 .*movhu \\(256,sp\\),d1.* 399 .*movhu \\(131071,sp\\),d1.* 400 .*movhu \\(d1,a1\\),d2.* 401 .*movhu \\(0x8000.*\\),d1.* 402 .*movhu \\(0x1ffff.*\\),d1.* 403 .*movhu d1,\\(a2\\).* 404 .*movhu d1,\\(32,a2\\).* 405 .*movhu d1,\\(256,a2\\).* 406 .*movhu d1,\\(131071,a2\\).* 407 .*movhu d1,\\(32,sp\\).* 408 .*movhu d1,\\(32768,sp\\).* 409 .*movhu d1,\\(131071,sp\\).* 410 .*movhu d1,\\(d2,a2\\).* 411 .*movhu d1,\\(0x80.*\\).* 412 .*movhu d1,\\(0x1ffff.*\\).* 413 .*$gdb_prompt $" { pass "movhu tests" } 414 -re "$gdb_prompt $" { fail "movhu tests" } 415 timeout { fail "(timeout) movhu tests" } 416 } 417 } 418 419 proc movm_tests { } { 420 global gdb_prompt 421 global hex 422 global decimal 423 424 send_gdb "x/4i movm_tests\n" 425 gdb_expect { 426 -re " 427 .*movm \\(sp\\),.a2,a3..* 428 .*movm \\(sp\\),.d2,d3,a2,a3,other..* 429 .*movm .a2,a3.,\\(sp\\).* 430 .*movm .d2,d3,a2,a3,other.,\\(sp\\).* 431 .*$gdb_prompt $" { pass "movm tests" } 432 -re "$gdb_prompt $" { fail "movm tests" } 433 timeout { fail "(timeout) movm tests" } 434 } 435 } 436 437 proc muldiv_tests { } { 438 global gdb_prompt 439 global hex 440 global decimal 441 442 send_gdb "x/4i muldiv_tests\n" 443 gdb_expect { 444 -re " 445 .*mul d1,d2.* 446 .*mulu d2,d3.* 447 .*div d3,d3.* 448 .*divu d3,d2.* 449 .*$gdb_prompt $" { pass "muldiv tests" } 450 -re "$gdb_prompt $" { fail "muldiv tests" } 451 timeout { fail "(timeout) muldiv tests" } 452 } 453 } 454 455 proc other_tests { } { 456 global gdb_prompt 457 global hex 458 global decimal 459 460 send_gdb "x/19i other_tests\n" 461 gdb_expect { 462 -re " 463 .*clr d2.* 464 .*inc d1.* 465 .*inc a2.* 466 .*inc4 a3.* 467 .*jmp \\(a2\\).* 468 .*jmp 0x\[0-9a-f]+ <main>.* 469 .*jmp 0x\[0-9a-f]+ <start>.* 470 .*call 0x\[0-9a-f]+ <main>,.a2,a3.,9.* 471 .*call 0x\[0-9a-f]+ <start>,.a2,a3.,32.* 472 .*calls \\(a2\\).* 473 .*calls 0x\[0-9a-f]+ <main>.* 474 .*calls 0x\[0-9a-f]+ <start>.* 475 .*ret .a2,a3.,7.* 476 .*retf .a2,a3.,5.* 477 .*rets.* 478 .*rti.* 479 .*trap.* 480 .*nop.* 481 .*rtm.* 482 .*$gdb_prompt $" { pass "other tests" } 483 -re "$gdb_prompt $" { fail "other tests" } 484 timeout { fail "(timeout) other tests" } 485 } 486 } 487 488 proc shift_tests { } { 489 global gdb_prompt 490 global hex 491 global decimal 492 493 send_gdb "x/9i shift_tests\n" 494 gdb_expect { 495 -re " 496 .*asr d1,d2.* 497 .*asr 4,d2.* 498 .*lsr d2,d3.* 499 .*lsr 4,d3.* 500 .*asl d3,d2.* 501 .*asl 4,d2.* 502 .*asl2 d2.* 503 .*ror d1.* 504 .*rol d2.* 505 .*$gdb_prompt $" { pass "shift tests" } 506 -re "$gdb_prompt $" { fail "shift tests" } 507 timeout { fail "(timeout) shift tests" } 508 } 509 } 510 511 proc sub_tests { } { 512 global gdb_prompt 513 global hex 514 global decimal 515 516 send_gdb "x/7i sub_tests\n" 517 gdb_expect { 518 -re " 519 .*sub d1,d2.* 520 .*sub d2,a3.* 521 .*sub a3,d3.* 522 .*sub a3,a2.* 523 .*sub 131071,d2.* 524 .*sub 131071,a1.* 525 .*subc d1,d2.* 526 .*$gdb_prompt $" { pass "sub tests" } 527 -re "$gdb_prompt $" { fail "sub tests" } 528 timeout { fail "(timeout) sub tests" } 529 } 530 } 531 532 clean_restart $binfile 533 534 add_tests 535 bcc_tests 536 bit_tests 537 cmp_tests 538 extend_tests 539 extended_tests 540 logical_tests 541 loop_tests 542 mov_tests_1 543 mov_tests_2 544 mov_tests_3 545 mov_tests_4 546 movbu_tests 547 movhu_tests 548 movm_tests 549 muldiv_tests 550 other_tests 551 shift_tests 552 sub_tests 553