1 2# Copyright 1992-2023 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@cs.utah.edu) 18 19if ![istarget "hppa*-*-*"] { 20 verbose "Tests ignored for all but hppa based targets." 21 return 22} 23 24 25 26set testfile "hppa" 27set srcfile ${srcdir}/${subdir}/${testfile}.s 28set binfile ${objdir}/${subdir}/${testfile} 29set comp_output [gdb_compile "${srcfile}" "${binfile}" executable ""] 30if { $comp_output != "" } { 31 if [ regexp "Opcode not defined - DIAG" $comp_output] { 32 warning "HP assembler in use--skipping disasm tests" 33 return 34 } else { 35 perror "Couldn't compile ${srcfile}" 36 return -1 37 } 38} 39 40proc all_integer_memory_tests { } { 41 global gdb_prompt 42 global hex 43 global decimal 44 45 send_gdb "x/8i integer_memory_tests\n" 46 gdb_expect { 47 -re " 48.*ldw 0\\(sr0,r4\\),r26.* 49.*ldh 0\\(sr0,r4\\),r26.* 50.*ldb 0\\(sr0,r4\\),r26.* 51.*stw r26,0\\(sr0,r4\\).* 52.*sth r26,0\\(sr0,r4\\).* 53.*stb r26,0\\(sr0,r4\\).* 54.*ldwm 0\\(sr0,r4\\),r26.* 55.*stwm r26,0\\(sr0,r4\\).* 56.*$gdb_prompt $" { pass "integer_memory_tests" } 57 -re "$gdb_prompt $" { fail "integer_memory_tests" } 58 timeout { fail "(timeout) integer memory_tests" } 59 } 60 61 send_gdb "x/20i integer_indexing_load\n" 62 gdb_expect { 63 -re " 64.*ldwx r5\\(sr0,r4\\),r26.* 65.*ldwx,s r5\\(sr0,r4\\),r26.* 66.*ldwx,m r5\\(sr0,r4\\),r26.* 67.*ldwx,sm r5\\(sr0,r4\\),r26.* 68.*ldhx r5\\(sr0,r4\\),r26.* 69.*ldhx,s r5\\(sr0,r4\\),r26.* 70.*ldhx,m r5\\(sr0,r4\\),r26.* 71.*ldhx,sm r5\\(sr0,r4\\),r26.* 72.*ldbx r5\\(sr0,r4\\),r26.* 73.*ldbx,s r5\\(sr0,r4\\),r26.* 74.*ldbx,m r5\\(sr0,r4\\),r26.* 75.*ldbx,sm r5\\(sr0,r4\\),r26.* 76.*ldwax r5\\(r4\\),r26.* 77.*ldwax,s r5\\(r4\\),r26.* 78.*ldwax,m r5\\(r4\\),r26.* 79.*ldwax,sm r5\\(r4\\),r26.* 80.*ldcwx r5\\(sr0,r4\\),r26.* 81.*ldcwx,s r5\\(sr0,r4\\),r26.* 82.*ldcwx,m r5\\(sr0,r4\\),r26.* 83.*ldcwx,sm r5\\(sr0,r4\\),r26.* 84.*$gdb_prompt $" { pass "integer_indexing_load" } 85 -re "$gdb_prompt $" { fail "integer_indexing_load" } 86 timeout { fail "(timeout) integer_indexing" } 87 } 88 89 send_gdb "x/15i integer_load_short_memory\n" 90 gdb_expect { 91 -re " 92.*ldws 0\\(sr0,r4\\),r26.* 93.*ldws,mb 0\\(sr0,r4\\),r26.* 94.*ldws,ma 0\\(sr0,r4\\),r26.* 95.*ldhs 0\\(sr0,r4\\),r26.* 96.*ldhs,mb 0\\(sr0,r4\\),r26.* 97.*ldhs,ma 0\\(sr0,r4\\),r26.* 98.*ldbs 0\\(sr0,r4\\),r26.* 99.*ldbs,mb 0\\(sr0,r4\\),r26.* 100.*ldbs,ma 0\\(sr0,r4\\),r26.* 101.*ldwas 0\\(r4\\),r26.* 102.*ldwas,mb 0\\(r4\\),r26.* 103.*ldwas,ma 0\\(r4\\),r26.* 104.*ldcws 0\\(sr0,r4\\),r26.* 105.*ldcws,mb 0\\(sr0,r4\\),r26.* 106.*ldcws,ma 0\\(sr0,r4\\),r26.* 107.*$gdb_prompt $" { pass "integer_load_short_memory" } 108 -re "$gdb_prompt $" { fail "integer_load_short_memory" } 109 timeout { fail "(timeout) integer_load_short_memory " } 110 } 111 112 113 send_gdb "x/17i integer_store_short_memory\n" 114 gdb_expect { 115 -re " 116.*stws r26,0\\(sr0,r4\\).* 117.*stws,mb r26,0\\(sr0,r4\\).* 118.*stws,ma r26,0\\(sr0,r4\\).* 119.*sths r26,0\\(sr0,r4\\).* 120.*sths,mb r26,0\\(sr0,r4\\).* 121.*sths,ma r26,0\\(sr0,r4\\).* 122.*stbs r26,0\\(sr0,r4\\).* 123.*stbs,mb r26,0\\(sr0,r4\\).* 124.*stbs,ma r26,0\\(sr0,r4\\).* 125.*stwas r26,0\\(r4\\).* 126.*stwas,mb r26,0\\(r4\\).* 127.*stwas,ma r26,0\\(r4\\).* 128.*stbys r26,0\\(sr0,r4\\).* 129.*stbys r26,0\\(sr0,r4\\).* 130.*stbys,e r26,0\\(sr0,r4\\).* 131.*stbys,b,m r26,0\\(sr0,r4\\).* 132.*stbys,e,m r26,0\\(sr0,r4\\).* 133.*$gdb_prompt $" { pass "integer_store_short_memory" } 134 -re "$gdb_prompt $" { fail "integer_store_short_memory" } 135 timeout { fail "(timeout) integer_short_memory " } 136 } 137} 138 139proc all_immediate_tests { } { 140 global gdb_prompt 141 global hex 142 global decimal 143 144 send_gdb "x/3i immediate_tests\n" 145 gdb_expect { 146 -re " 147.*ldo 5\\(r26\\),r26.* 148.*ldil -21524800,r26.* 149.*addil -21524800,r5.* 150.*$gdb_prompt $" { pass "immedate_tests" } 151 -re "$gdb_prompt $" { fail "immedate_tests" } 152 timeout { fail "(timeout) immedate_tests " } 153 } 154} 155 156proc all_branch_tests { } { 157 global gdb_prompt 158 global hex 159 global decimal 160 161 send_gdb "x/10i branch_tests_1\n" 162 gdb_expect { 163 -re " 164.*bl.*,rp.* 165.*bl,n.*,rp.* 166.*b.* 167.*b,n.* 168.*gate.*,rp.* 169.*gate,n.*,rp.* 170.*blr r4,rp.* 171.*blr,n r4,rp.* 172.*blr r4,r0.* 173.*blr,n r4,r0.* 174.*$gdb_prompt $" { pass "branch_tests_1" } 175 -re "$gdb_prompt $" { fail "branch_tests_1" } 176 timeout { fail "(timeout) branch_tests_1" } 177 } 178 179 send_gdb "x/6i branch_tests_2\n" 180 gdb_expect { 181 -re " 182.*bv r0\\(rp\\).* 183.*bv,n r0\\(rp\\).* 184.*be 1234\\(sr1,rp\\).* 185.*be,n 1234\\(sr1,rp\\).* 186.*ble 1234\\(sr1,rp\\).* 187.*ble,n 1234\\(sr1,rp\\).* 188.*$gdb_prompt $" { pass "branch_tests_2" } 189 -re "$gdb_prompt $" { fail "branch_tests_2" } 190 timeout { fail "(timeout) branch_tests_2" } 191 } 192 193 194 send_gdb "x/8i movb_tests\n" 195 gdb_expect { 196 -re " 197.*movb r4,r26,.* <movb_tests>.* 198.*movb,= r4,r26,.* <movb_tests>.* 199.*movb,< r4,r26,.* <movb_tests>.* 200.*movb,od r4,r26,.* <movb_tests>.* 201.*movb,tr r4,r26,.* <movb_tests>.* 202.*movb,<> r4,r26,.* <movb_tests>.* 203.*movb,>= r4,r26,.* <movb_tests>.* 204.*movb,ev r4,r26,.* <movb_tests>.* 205.*$gdb_prompt $" { pass "movb_tests" } 206 -re "$gdb_prompt $" { fail "movb_tests" } 207 timeout { fail "(timeout) movb_tests " } 208 } 209 210 send_gdb "x/8i movb_nullified_tests\n" 211 gdb_expect { 212 -re " 213.*movb,n.*r4,r26,.* <movb_tests>.* 214.*movb,=,n.*r4,r26,.* <movb_tests>.* 215.*movb,<,n.*r4,r26,.* <movb_tests>.* 216.*movb,od,n.*r4,r26,.* <movb_tests>.* 217.*movb,tr,n.*r4,r26,.* <movb_tests>.* 218.*movb,<>,n.*r4,r26,.* <movb_tests>.* 219.*movb,>=,n.*r4,r26,.* <movb_tests>.* 220.*movb,ev,n.*r4,r26,.* <movb_tests>.* 221.*$gdb_prompt $" { pass "movb_nullified_tests" } 222 -re "$gdb_prompt $" { fail "movb_nullified_tests" } 223 timeout { fail "(timeout) movb_nullified_tests " } 224 } 225 226 send_gdb "x/8i movib_tests\n" 227 gdb_expect { 228 -re " 229.*movib 5,r26,.* <movib_tests>.* 230.*movib,= 5,r26,.* <movib_tests>.* 231.*movib,< 5,r26,.* <movib_tests>.* 232.*movib,od 5,r26,.* <movib_tests>.* 233.*movib,tr 5,r26,.* <movib_tests>.* 234.*movib,<> 5,r26,.* <movib_tests>.* 235.*movib,>= 5,r26,.* <movib_tests>.* 236.*movib,ev 5,r26,.* <movib_tests>.* 237.*$gdb_prompt $" { pass "movib_tests" } 238 -re "$gdb_prompt $" { fail "movib_tests" } 239 timeout { fail "(timeout) movib_tests " } 240 } 241 242 send_gdb "x/8i movib_nullified_tests\n" 243 gdb_expect { 244 -re " 245.*movib,n.*5,r26,.* <movib_tests>.* 246.*movib,=,n.*5,r26,.* <movib_tests>.* 247.*movib,<,n.*5,r26,.* <movib_tests>.* 248.*movib,od,n.*5,r26,.* <movib_tests>.* 249.*movib,tr,n.*5,r26,.* <movib_tests>.* 250.*movib,<>,n.*5,r26,.* <movib_tests>.* 251.*movib,>=,n.*5,r26,.* <movib_tests>.* 252.*movib,ev,n.*5,r26,.* <movib_tests>.* 253.*$gdb_prompt $" { pass "movib_nullified_tests" } 254 -re "$gdb_prompt $" { fail "movib_nullified_tests" } 255 timeout { fail "(timeout) movib_nullified_tests " } 256 } 257 258 send_gdb "x/8i comb_tests_1\n" 259 gdb_expect { 260 -re " 261.*comb r0,r4,.* <comb_tests_1>.* 262.*comb,= r0,r4,.* <comb_tests_1>.* 263.*comb,< r0,r4,.* <comb_tests_1>.* 264.*comb,<= r0,r4,.* <comb_tests_1>.* 265.*comb,<< r0,r4,.* <comb_tests_1>.* 266.*comb,<<= r0,r4,.* <comb_tests_1>.* 267.*comb,sv r0,r4,.* <comb_tests_1>.* 268.*comb,od r0,r4,.* <comb_tests_1>.* 269.*$gdb_prompt $" { pass "comb_tests_1" } 270 -re "$gdb_prompt $" { fail "comb_tests_1" } 271 timeout { fail "(timeout) comb_tests_1" } 272 } 273 274 send_gdb "x/8i comb_tests_2\n" 275 gdb_expect { 276 -re " 277.*combf r0,r4,.* <comb_tests_2>.* 278.*combf,= r0,r4,.* <comb_tests_2>.* 279.*combf,< r0,r4,.* <comb_tests_2>.* 280.*combf,<= r0,r4,.* <comb_tests_2>.* 281.*combf,<< r0,r4,.* <comb_tests_2>.* 282.*combf,<<= r0,r4,.* <comb_tests_2>.* 283.*combf,sv r0,r4,.* <comb_tests_2>.* 284.*combf,od r0,r4,.* <comb_tests_2>.* 285.*$gdb_prompt $" { pass "comb_tests_2" } 286 -re "$gdb_prompt $" { fail "comb_tests_2" } 287 timeout { fail "(timeout) comb_tests_2" } 288 } 289 290 send_gdb "x/8i comb_nullified_tests_1\n" 291 gdb_expect { 292 -re " 293.*comb,n r0,r4,.* <comb_tests_1>.* 294.*comb,=,n r0,r4,.* <comb_tests_1>.* 295.*comb,<,n r0,r4,.* <comb_tests_1>.* 296.*comb,<=,n r0,r4,.* <comb_tests_1>.* 297.*comb,<<,n r0,r4,.* <comb_tests_1>.* 298.*comb,<<=,n r0,r4,.* <comb_tests_1>.* 299.*comb,sv,n r0,r4,.* <comb_tests_1>.* 300.*comb,od,n r0,r4,.* <comb_tests_1>.* 301.*$gdb_prompt $" { pass "comb_nullified_tests_1" } 302 -re "$gdb_prompt $" { fail "comb_nullified_tests_1" } 303 timeout { fail "(timeout) comb_nullified_tests_1" } 304 } 305 306 send_gdb "x/8i comb_nullified_tests_2\n" 307 gdb_expect { 308 -re " 309.*combf,n r0,r4,.* <comb_tests_2>.* 310.*combf,=,n r0,r4,.* <comb_tests_2>.* 311.*combf,<,n r0,r4,.* <comb_tests_2>.* 312.*combf,<=,n r0,r4,.* <comb_tests_2>.* 313.*combf,<<,n r0,r4,.* <comb_tests_2>.* 314.*combf,<<=,n r0,r4,.* <comb_tests_2>.* 315.*combf,sv,n r0,r4,.* <comb_tests_2>.* 316.*combf,od,n r0,r4,.* <comb_tests_2>.* 317.*$gdb_prompt $" { pass "comb_nullified_tests_2" } 318 -re "$gdb_prompt $" { fail "comb_nullified_tests_2" } 319 timeout { fail "(timeout) comb_nullified_tests_2" } 320 } 321 322 send_gdb "x/8i comib_tests_1\n" 323 gdb_expect { 324 -re " 325.*comib 0,r4,.* <comib_tests_1>.* 326.*comib,= 0,r4,.* <comib_tests_1>.* 327.*comib,< 0,r4,.* <comib_tests_1>.* 328.*comib,<= 0,r4,.* <comib_tests_1>.* 329.*comib,<< 0,r4,.* <comib_tests_1>.* 330.*comib,<<= 0,r4,.* <comib_tests_1>.* 331.*comib,sv 0,r4,.* <comib_tests_1>.* 332.*comib,od 0,r4,.* <comib_tests_1>.* 333.*$gdb_prompt $" { pass "comib_tests_1" } 334 -re "$gdb_prompt $" { fail "comib_tests_1" } 335 timeout { fail "(timeout) comib_tests_1" } 336 } 337 338 send_gdb "x/8i comib_tests_2\n" 339 gdb_expect { 340 -re " 341.*comibf 0,r4,.* <comib_tests_2>.* 342.*comibf,= 0,r4,.* <comib_tests_2>.* 343.*comibf,< 0,r4,.* <comib_tests_2>.* 344.*comibf,<= 0,r4,.* <comib_tests_2>.* 345.*comibf,<< 0,r4,.* <comib_tests_2>.* 346.*comibf,<<= 0,r4,.* <comib_tests_2>.* 347.*comibf,sv 0,r4,.* <comib_tests_2>.* 348.*comibf,od 0,r4,.* <comib_tests_2>.* 349.*$gdb_prompt $" { pass "comib_tests_2" } 350 -re "$gdb_prompt $" { fail "comib_tests_2" } 351 timeout { fail "(timeout) comib_tests_2" } 352 } 353 354 send_gdb "x/8i comib_nullified_tests_1\n" 355 gdb_expect { 356 -re " 357.*comib,n 0,r4,.* <comib_tests_1>.* 358.*comib,=,n 0,r4,.* <comib_tests_1>.* 359.*comib,<,n 0,r4,.* <comib_tests_1>.* 360.*comib,<=,n 0,r4,.* <comib_tests_1>.* 361.*comib,<<,n 0,r4,.* <comib_tests_1>.* 362.*comib,<<=,n 0,r4,.* <comib_tests_1>.* 363.*comib,sv,n 0,r4,.* <comib_tests_1>.* 364.*comib,od,n 0,r4,.* <comib_tests_1>.* 365.*$gdb_prompt $" { pass "comib_nullified_tests_1" } 366 -re "$gdb_prompt $" { fail "comib_nullified_tests_1" } 367 timeout { fail "(timeout) comib_nullified_tests_1" } 368 } 369 370 send_gdb "x/8i comib_nullified_tests_2\n" 371 gdb_expect { 372 -re " 373.*comibf,n 0,r4,.* <comib_tests_2>.* 374.*comibf,=,n 0,r4,.* <comib_tests_2>.* 375.*comibf,<,n 0,r4,.* <comib_tests_2>.* 376.*comibf,<=,n 0,r4,.* <comib_tests_2>.* 377.*comibf,<<,n 0,r4,.* <comib_tests_2>.* 378.*comibf,<<=,n 0,r4,.* <comib_tests_2>.* 379.*comibf,sv,n 0,r4,.* <comib_tests_2>.* 380.*comibf,od,n 0,r4,.* <comib_tests_2>.* 381.*$gdb_prompt $" { pass "comib_nullified_tests_2" } 382 -re "$gdb_prompt $" { fail "comib_nullified_tests_2" } 383 timeout { fail "(timeout) comib_nullified_tests_2" } 384 } 385 386 send_gdb "x/8i addb_tests_1\n" 387 gdb_expect { 388 -re " 389.*addb r1,r4,.* <addb_tests_1>.* 390.*addb,= r1,r4,.* <addb_tests_1>.* 391.*addb,< r1,r4,.* <addb_tests_1>.* 392.*addb,<= r1,r4,.* <addb_tests_1>.* 393.*addb,nuv r1,r4,.* <addb_tests_1>.* 394.*addb,znv r1,r4,.* <addb_tests_1>.* 395.*addb,sv r1,r4,.* <addb_tests_1>.* 396.*addb,od r1,r4,.* <addb_tests_1>.* 397.*$gdb_prompt $" { pass "addb_tests_1" } 398 -re "$gdb_prompt $" { fail "addb_tests_1" } 399 timeout { fail "(timeout) addb_tests_1" } 400 } 401 402 send_gdb "x/8i addb_tests_2\n" 403 gdb_expect { 404 -re " 405.*addbf r1,r4,.* <addb_tests_2>.* 406.*addbf,= r1,r4,.* <addb_tests_2>.* 407.*addbf,< r1,r4,.* <addb_tests_2>.* 408.*addbf,<= r1,r4,.* <addb_tests_2>.* 409.*addbf,nuv r1,r4,.* <addb_tests_2>.* 410.*addbf,znv r1,r4,.* <addb_tests_2>.* 411.*addbf,sv r1,r4,.* <addb_tests_2>.* 412.*addbf,od r1,r4,.* <addb_tests_2>.* 413.*$gdb_prompt $" { pass "addb_tests_2" } 414 -re "$gdb_prompt $" { fail "addb_tests_2" } 415 timeout { fail "(timeout) addb_tests_2" } 416 } 417 418 send_gdb "x/8i addb_nullified_tests_1\n" 419 gdb_expect { 420 -re " 421.*addb,n r1,r4,.* <addb_tests_1>.* 422.*addb,=,n r1,r4,.* <addb_tests_1>.* 423.*addb,<,n r1,r4,.* <addb_tests_1>.* 424.*addb,<=,n r1,r4,.* <addb_tests_1>.* 425.*addb,nuv,n r1,r4,.* <addb_tests_1>.* 426.*addb,znv,n r1,r4,.* <addb_tests_1>.* 427.*addb,sv,n r1,r4,.* <addb_tests_1>.* 428.*addb,od,n r1,r4,.* <addb_tests_1>.* 429.*$gdb_prompt $" { pass "addb_nullified_tests_1" } 430 -re "$gdb_prompt $" { fail "addb_nullified_tests_1" } 431 timeout { fail "(timeout) addb_nullified_tests_1" } 432 } 433 434 send_gdb "x/8i addb_nullified_tests_2\n" 435 gdb_expect { 436 -re " 437.*addbf,n r1,r4,.* <addb_tests_2>.* 438.*addbf,=,n r1,r4,.* <addb_tests_2>.* 439.*addbf,<,n r1,r4,.* <addb_tests_2>.* 440.*addbf,<=,n r1,r4,.* <addb_tests_2>.* 441.*addbf,nuv,n r1,r4,.* <addb_tests_2>.* 442.*addbf,znv,n r1,r4,.* <addb_tests_2>.* 443.*addbf,sv,n r1,r4,.* <addb_tests_2>.* 444.*addbf,od,n r1,r4,.* <addb_tests_2>.* 445.*$gdb_prompt $" { pass "addb_nullified_tests_2" } 446 -re "$gdb_prompt $" { fail "addb_nullified_tests_2" } 447 timeout { fail "(timeout) addb_nullified_tests_2" } 448 } 449 450 send_gdb "x/8i addib_tests_1\n" 451 gdb_expect { 452 -re " 453.*addib -1,r4,.* <addib_tests_1>.* 454.*addib,= -1,r4,.* <addib_tests_1>.* 455.*addib,< -1,r4,.* <addib_tests_1>.* 456.*addib,<= -1,r4,.* <addib_tests_1>.* 457.*addib,nuv -1,r4,.* <addib_tests_1>.* 458.*addib,znv -1,r4,.* <addib_tests_1>.* 459.*addib,sv -1,r4,.* <addib_tests_1>.* 460.*addib,od -1,r4,.* <addib_tests_1>.* 461.*$gdb_prompt $" { pass "addib_tests_1" } 462 -re "$gdb_prompt $" { fail "addib_tests_1" } 463 timeout { fail "(timeout) addib_tests_1" } 464 } 465 466 send_gdb "x/8i addib_tests_2\n" 467 gdb_expect { 468 -re " 469.*addibf -1,r4,.* <addib_tests_2>.* 470.*addibf,= -1,r4,.* <addib_tests_2>.* 471.*addibf,< -1,r4,.* <addib_tests_2>.* 472.*addibf,<= -1,r4,.* <addib_tests_2>.* 473.*addibf,nuv -1,r4,.* <addib_tests_2>.* 474.*addibf,znv -1,r4,.* <addib_tests_2>.* 475.*addibf,sv -1,r4,.* <addib_tests_2>.* 476.*addibf,od -1,r4,.* <addib_tests_2>.* 477.*$gdb_prompt $" { pass "addib_tests_2" } 478 -re "$gdb_prompt $" { fail "addib_tests_2" } 479 timeout { fail "(timeout) addib_tests_2" } 480 } 481 482 send_gdb "x/8i addib_nullified_tests_1\n" 483 gdb_expect { 484 -re " 485.*addib,n -1,r4,.* <addib_tests_1>.* 486.*addib,=,n -1,r4,.* <addib_tests_1>.* 487.*addib,<,n -1,r4,.* <addib_tests_1>.* 488.*addib,<=,n -1,r4,.* <addib_tests_1>.* 489.*addib,nuv,n -1,r4,.* <addib_tests_1>.* 490.*addib,znv,n -1,r4,.* <addib_tests_1>.* 491.*addib,sv,n -1,r4,.* <addib_tests_1>.* 492.*addib,od,n -1,r4,.* <addib_tests_1>.* 493.*$gdb_prompt $" { pass "addb_nullified_tests_1" } 494 -re "$gdb_prompt $" { fail "addb_nullified_tests_1" } 495 timeout { fail "(timeout) addb_nullified_tests_1" } 496 } 497 498 send_gdb "x/8i addib_nullified_tests_2\n" 499 gdb_expect { 500 -re " 501.*addibf,n -1,r4,.* <addib_tests_2>.* 502.*addibf,=,n -1,r4,.* <addib_tests_2>.* 503.*addibf,<,n -1,r4,.* <addib_tests_2>.* 504.*addibf,<=,n -1,r4,.* <addib_tests_2>.* 505.*addibf,nuv,n -1,r4,.* <addib_tests_2>.* 506.*addibf,znv,n -1,r4,.* <addib_tests_2>.* 507.*addibf,sv,n -1,r4,.* <addib_tests_2>.* 508.*addibf,od,n -1,r4,.* <addib_tests_2>.* 509.*$gdb_prompt $" { pass "addb_nullified_tests_2" } 510 -re "$gdb_prompt $" { fail "addb_nullified_tests_2" } 511 timeout { fail "(timeout) addb_nullified_tests_2" } 512 } 513 514 send_gdb "x/8i bb_tests\n" 515 gdb_expect { 516 -re " 517.*bvb,< r4,.* <bb_tests>.* 518.*bvb,>= r4,.* <bb_tests>.* 519.*bvb,<,n r4,.* <bb_tests>.* 520.*bvb,>=,n r4,.* <bb_tests>.* 521.*bb,< r4,5,.* <bb_tests>.* 522.*bb,>= r4,5,.* <bb_tests>.* 523.*bb,<,n r4,5,.* <bb_tests>.* 524.*bb,>=,n r4,5,.* <bb_tests>.* 525.*$gdb_prompt $" { pass "bb_tests" } 526 -re "$gdb_prompt $" { fail "bb_tests" } 527 timeout { fail "(timeout) bb_tests " } 528 } 529} 530 531proc all_integer_computational_tests { } { 532 global gdb_prompt 533 global hex 534 global decimal 535 536 set add_insns [list {add} {addl} {addo} {addc} {addco} \ 537 {sh1add} {sh1addl} {sh1addo} \ 538 {sh2add} {sh2addl} {sh2addo} \ 539 {sh3add} {sh3addl} {sh3addo} ] 540 541 foreach i $add_insns { 542 send_gdb "x/16i $i"; send_gdb "_tests\n" 543 gdb_expect { 544 -re " 545.*$i r4,r5,r6.* 546.*$i,= r4,r5,r6.* 547.*$i,< r4,r5,r6.* 548.*$i,<= r4,r5,r6.* 549.*$i,nuv r4,r5,r6.* 550.*$i,znv r4,r5,r6.* 551.*$i,sv r4,r5,r6.* 552.*$i,od r4,r5,r6.* 553.*$i,tr r4,r5,r6.* 554.*$i,<> r4,r5,r6.* 555.*$i,>= r4,r5,r6.* 556.*$i,> r4,r5,r6.* 557.*$i,uv r4,r5,r6.* 558.*$i,vnz r4,r5,r6.* 559.*$i,nsv r4,r5,r6.* 560.*$i,ev r4,r5,r6.* 561.*$gdb_prompt $" { pass "$i tests" } 562 -re "$gdb_prompt $" { fail "$i tests" } 563 timeout { fail "(timeout) $i tests" } 564 } 565 } 566 567 set sub_insns [list {sub} {subo} {subb} {subbo} {subt} {subto} \ 568 {ds} {comclr} ] 569 570 foreach i $sub_insns { 571 send_gdb "x/16i $i"; send_gdb "_tests\n" 572 gdb_expect { 573 -re " 574.*$i r4,r5,r6.* 575.*$i,= r4,r5,r6.* 576.*$i,< r4,r5,r6.* 577.*$i,<= r4,r5,r6.* 578.*$i,<< r4,r5,r6.* 579.*$i,<<= r4,r5,r6.* 580.*$i,sv r4,r5,r6.* 581.*$i,od r4,r5,r6.* 582.*$i,tr r4,r5,r6.* 583.*$i,<> r4,r5,r6.* 584.*$i,>= r4,r5,r6.* 585.*$i,> r4,r5,r6.* 586.*$i,>>= r4,r5,r6.* 587.*$i,>> r4,r5,r6.* 588.*$i,nsv r4,r5,r6.* 589.*$i,ev r4,r5,r6.* 590.*$gdb_prompt $" { pass "$i tests" } 591 -re "$gdb_prompt $" { fail "$i tests" } 592 timeout { fail "(timeout) $i tests" } 593 } 594 } 595 596 set logical_insns [list {or} {xor} {and} {andcm} ] 597 598 foreach i $logical_insns { 599 send_gdb "x/10i $i"; send_gdb "_tests\n" 600 gdb_expect { 601 -re " 602.*$i r4,r5,r6.* 603.*$i,= r4,r5,r6.* 604.*$i,< r4,r5,r6.* 605.*$i,<= r4,r5,r6.* 606.*$i,od r4,r5,r6.* 607.*$i,tr r4,r5,r6.* 608.*$i,<> r4,r5,r6.* 609.*$i,>= r4,r5,r6.* 610.*$i,> r4,r5,r6.* 611.*$i,ev r4,r5,r6.* 612.*$gdb_prompt $" { pass "$i tests" } 613 -re "$gdb_prompt $" { fail "$i tests" } 614 timeout { fail "(timeout) $i tests" } 615 } 616 } 617 618 set unit_insns1 [list {uxor} {uaddcm} {uaddcmt} ] 619 620 foreach i $unit_insns1 { 621 send_gdb "x/12i $i"; send_gdb "_tests\n" 622 gdb_expect { 623 -re " 624.*$i r4,r5,r6.* 625.*$i,sbz r4,r5,r6.* 626.*$i,shz r4,r5,r6.* 627.*$i,sdc r4,r5,r6.* 628.*$i,sbc r4,r5,r6.* 629.*$i,shc r4,r5,r6.* 630.*$i,tr r4,r5,r6.* 631.*$i,nbz r4,r5,r6.* 632.*$i,nhz r4,r5,r6.* 633.*$i,ndc r4,r5,r6.* 634.*$i,nbc r4,r5,r6.* 635.*$i,nhc r4,r5,r6.* 636.*$gdb_prompt $" { pass "$i tests" } 637 -re "$gdb_prompt $" { fail "$i tests" } 638 timeout { fail "(timeout) $i tests" } 639 } 640 } 641 642 set unit_insns2 [list {dcor} {idcor} ] 643 644 foreach i $unit_insns2 { 645 send_gdb "x/12i $i"; send_gdb "_tests\n" 646 gdb_expect { 647 -re " 648.*$i r4,r5.* 649.*$i,sbz r4,r5.* 650.*$i,shz r4,r5.* 651.*$i,sdc r4,r5.* 652.*$i,sbc r4,r5.* 653.*$i,shc r4,r5.* 654.*$i,tr r4,r5.* 655.*$i,nbz r4,r5.* 656.*$i,nhz r4,r5.* 657.*$i,ndc r4,r5.* 658.*$i,nbc r4,r5.* 659.*$i,nhc r4,r5.* 660.*$gdb_prompt $" { pass "$i tests" } 661 -re "$gdb_prompt $" { fail "$i tests" } 662 timeout { fail "(timeout) $i tests" } 663 } 664 } 665 666 set addi_insns [list {addi} {addio} {addit} {addito} ] 667 668 foreach i $addi_insns { 669 send_gdb "x/16i $i"; send_gdb "_tests\n" 670 gdb_expect { 671 -re " 672.*$i 7b,r5,r6.* 673.*$i,= 7b,r5,r6.* 674.*$i,< 7b,r5,r6.* 675.*$i,<= 7b,r5,r6.* 676.*$i,nuv 7b,r5,r6.* 677.*$i,znv 7b,r5,r6.* 678.*$i,sv 7b,r5,r6.* 679.*$i,od 7b,r5,r6.* 680.*$i,tr 7b,r5,r6.* 681.*$i,<> 7b,r5,r6.* 682.*$i,>= 7b,r5,r6.* 683.*$i,> 7b,r5,r6.* 684.*$i,uv 7b,r5,r6.* 685.*$i,vnz 7b,r5,r6.* 686.*$i,nsv 7b,r5,r6.* 687.*$i,ev 7b,r5,r6.* 688.*$gdb_prompt $" { pass "$i tests" } 689 -re "$gdb_prompt $" { fail "$i tests" } 690 timeout { fail "(timeout) $i tests" } 691 } 692 } 693 694 set subi_insns [list {subi} {subio} {comiclr} ] 695 696 foreach i $subi_insns { 697 send_gdb "x/16i $i"; send_gdb "_tests\n" 698 gdb_expect { 699 -re " 700.*$i 7b,r5,r6.* 701.*$i,= 7b,r5,r6.* 702.*$i,< 7b,r5,r6.* 703.*$i,<= 7b,r5,r6.* 704.*$i,<< 7b,r5,r6.* 705.*$i,<<= 7b,r5,r6.* 706.*$i,sv 7b,r5,r6.* 707.*$i,od 7b,r5,r6.* 708.*$i,tr 7b,r5,r6.* 709.*$i,<> 7b,r5,r6.* 710.*$i,>= 7b,r5,r6.* 711.*$i,> 7b,r5,r6.* 712.*$i,>>= 7b,r5,r6.* 713.*$i,>> 7b,r5,r6.* 714.*$i,nsv 7b,r5,r6.* 715.*$i,ev 7b,r5,r6.* 716.*$gdb_prompt $" { pass "$i tests" } 717 -re "$gdb_prompt $" { fail "$i tests" } 718 timeout { fail "(timeout) $i tests" } 719 } 720 } 721 722 send_gdb "x/8i vshd_tests\n" 723 gdb_expect { 724 -re " 725.*vshd r4,r5,r6.* 726.*vshd,= r4,r5,r6.* 727.*vshd,< r4,r5,r6.* 728.*vshd,od r4,r5,r6.* 729.*vshd,tr r4,r5,r6.* 730.*vshd,<> r4,r5,r6.* 731.*vshd,>= r4,r5,r6.* 732.*vshd,ev r4,r5,r6.* 733.*$gdb_prompt $" { pass "vshd tests" } 734 -re "$gdb_prompt $" { fail "vshd tests" } 735 timeout { fail "(timeout) "vshd tests" } 736 } 737 738 send_gdb "x/8i shd_tests\n" 739 gdb_expect { 740 -re " 741.*shd r4,r5,5,r6.* 742.*shd,= r4,r5,5,r6.* 743.*shd,< r4,r5,5,r6.* 744.*shd,od r4,r5,5,r6.* 745.*shd,tr r4,r5,5,r6.* 746.*shd,<> r4,r5,5,r6.* 747.*shd,>= r4,r5,5,r6.* 748.*shd,ev r4,r5,5,r6.* 749.*$gdb_prompt $" { pass "shd tests" } 750 -re "$gdb_prompt $" { fail "shd tests" } 751 timeout { fail "(timeout) "shd tests" } 752 } 753 754 set extract_insns1 [list {extru} {extrs} {zdep} {dep} ] 755 756 foreach i $extract_insns1 { 757 send_gdb "x/8i $i"; send_gdb "_tests\n" 758 gdb_expect { 759 -re " 760.*$i r4,5,10,r6.* 761.*$i,= r4,5,10,r6.* 762.*$i,< r4,5,10,r6.* 763.*$i,od r4,5,10,r6.* 764.*$i,tr r4,5,10,r6.* 765.*$i,<> r4,5,10,r6.* 766.*$i,>= r4,5,10,r6.* 767.*$i,ev r4,5,10,r6.* 768.*$gdb_prompt $" { pass "$i tests" } 769 -re "$gdb_prompt $" { fail "$i tests" } 770 timeout { fail "(timeout) $i tests" } 771 } 772 } 773 774 set extract_insns2 [list {vextru} {vextrs} {zvdep} {vdep} ] 775 776 foreach i $extract_insns2 { 777 send_gdb "x/8i $i"; send_gdb "_tests\n" 778 gdb_expect { 779 -re " 780.*$i r4,5,r6.* 781.*$i,= r4,5,r6.* 782.*$i,< r4,5,r6.* 783.*$i,od r4,5,r6.* 784.*$i,tr r4,5,r6.* 785.*$i,<> r4,5,r6.* 786.*$i,>= r4,5,r6.* 787.*$i,ev r4,5,r6.* 788.*$gdb_prompt $" { pass "$i tests" } 789 -re "$gdb_prompt $" { fail "$i tests" } 790 timeout { fail "(timeout) $i tests" } 791 } 792 } 793 794 set extract_insns3 [list {vdepi} {zvdepi} ] 795 796 foreach i $extract_insns3 { 797 send_gdb "x/8i $i"; send_gdb "_tests\n" 798 gdb_expect { 799 -re " 800.*$i -1,5,r6.* 801.*$i,= -1,5,r6.* 802.*$i,< -1,5,r6.* 803.*$i,od -1,5,r6.* 804.*$i,tr -1,5,r6.* 805.*$i,<> -1,5,r6.* 806.*$i,>= -1,5,r6.* 807.*$i,ev -1,5,r6.* 808.*$gdb_prompt $" { pass "$i tests" } 809 -re "$gdb_prompt $" { fail "$i tests" } 810 timeout { fail "(timeout) $i tests" } 811 } 812 } 813 814 set extract_insns4 [list {depi} {zdepi} ] 815 816 foreach i $extract_insns4 { 817 send_gdb "x/8i $i"; send_gdb "_tests\n" 818 gdb_expect { 819 -re " 820.*$i -1,4,10,r6.* 821.*$i,= -1,4,10,r6.* 822.*$i,< -1,4,10,r6.* 823.*$i,od -1,4,10,r6.* 824.*$i,tr -1,4,10,r6.* 825.*$i,<> -1,4,10,r6.* 826.*$i,>= -1,4,10,r6.* 827.*$i,ev -1,4,10,r6.* 828.*$gdb_prompt $" { pass "$i tests" } 829 -re "$gdb_prompt $" { fail "$i tests" } 830 timeout { fail "(timeout) $i tests" } 831 } 832 } 833} 834 835proc all_system_control_tests { } { 836 global gdb_prompt 837 global hex 838 global decimal 839 840 send_gdb "x/14i system_control_tests\n" 841 gdb_expect { 842 -re " 843.*break 5,c.* 844.*rfi.* 845.*rfir.* 846.*ssm 5,r4.* 847.*rsm 5,r4.* 848.*mtsm r4.* 849.*ldsid \\(sr0,r5\\),r4.* 850.*mtsp r4,sr0.* 851.*mtctl r4,ccr.* 852.*mfsp sr0,r4.* 853.*mfctl ccr,r4.* 854.*sync.* 855.*syncdma.* 856.*diag 4d2.* 857.*$gdb_prompt $" { pass "system_constrol_tests" } 858 -re "$gdb_prompt $" { fail "system_control_tests" } 859 timeout { file "(timeout) system_control_tests" } 860 } 861 862 send_gdb "x/4i probe_tests\n" 863 gdb_expect { 864 -re " 865.*prober \\(sr0,r5\\),r6,r7.* 866.*proberi \\(sr0,r5\\),1,r7.* 867.*probew \\(sr0,r5\\),r6,r7.* 868.*probewi \\(sr0,r5\\),1,r7.* 869.*$gdb_prompt $" { pass "probe_tests" } 870 -re "$gdb_prompt $" { fail "probe_tests" } 871 timeout { file "(timeout) probe_tests" } 872 } 873 874 # lci uses the same bit pattern as lha, so accept lha. 875 send_gdb "x/5i lpa_tests\n" 876 gdb_expect { 877 -re " 878.*lpa r4\\(sr0,r5\\),r6.* 879.*lpa,m r4\\(sr0,r5\\),r6.* 880.*lha r4\\(sr0,r5\\),r6.* 881.*lha,m r4\\(sr0,r5\\),r6.* 882.*lha r4\\(sr0,r5\\),r6.* 883.*$gdb_prompt $" { pass "lpa_tests" } 884 -re "$gdb_prompt $" { fail "lpa_tests" } 885 timeout { file "(timeout) lpa_tests" } 886 } 887 888 send_gdb "x/18i purge_tests\n" 889 gdb_expect { 890 -re " 891.*pdtlb r4\\(sr0,r5\\).* 892.*pdtlb,m r4\\(sr0,r5\\).* 893.*pitlb r4\\(sr0,r5\\).* 894.*pitlb,m r4\\(sr0,r5\\).* 895.*pdtlbe r4\\(sr0,r5\\).* 896.*pdtlbe,m r4\\(sr0,r5\\).* 897.*pitlbe r4\\(sr0,r5\\).* 898.*pitlbe,m r4\\(sr0,r5\\).* 899.*pdc r4\\(sr0,r5\\).* 900.*pdc,m r4\\(sr0,r5\\).* 901.*fdc r4\\(sr0,r5\\).* 902.*fdc,m r4\\(sr0,r5\\).* 903.*fic r4\\(sr0,r5\\).* 904.*fic,m r4\\(sr0,r5\\).* 905.*fdce r4\\(sr0,r5\\).* 906.*fdce,m r4\\(sr0,r5\\).* 907.*fice r4\\(sr0,r5\\).* 908.*fice,m r4\\(sr0,r5\\).* 909.*$gdb_prompt $" { pass "purge_tests" } 910 -re "$gdb_prompt $" { fail "purge_tests" } 911 timeout { file "(timeout) purge_tests" } 912 } 913 914 send_gdb "x/4i insert_tests\n" 915 gdb_expect { 916 -re " 917.*idtlba r4,\\(sr0,r5\\).* 918.*iitlba r4,\\(sr0,r5\\).* 919.*idtlbp r4,\\(sr0,r5\\).* 920.*iitlbp r4,\\(sr0,r5\\).* 921.*$gdb_prompt $" { pass "insert_tests" } 922 -re "$gdb_prompt $" { fail "insert_tests" } 923 timeout { file "(timeout) insert_tests" } 924 } 925 926} 927 928proc all_fpu_memory_tests { } { 929 global gdb_prompt 930 global hex 931 global decimal 932 933 send_gdb "x/20i fpu_memory_indexing_tests\n" 934 gdb_expect { 935 -re " 936.*fldwx r4\\(sr0,r5\\),fr6.* 937.*fldwx,s r4\\(sr0,r5\\),fr6.* 938.*fldwx,m r4\\(sr0,r5\\),fr6.* 939.*fldwx,sm r4\\(sr0,r5\\),fr6.* 940.*flddx r4\\(sr0,r5\\),fr6.* 941.*flddx,s r4\\(sr0,r5\\),fr6.* 942.*flddx,m r4\\(sr0,r5\\),fr6.* 943.*flddx,sm r4\\(sr0,r5\\),fr6.* 944.*fstwx fr6,r4\\(sr0,r5\\).* 945.*fstwx,s fr6,r4\\(sr0,r5\\).* 946.*fstwx,m fr6,r4\\(sr0,r5\\).* 947.*fstwx,sm fr6,r4\\(sr0,r5\\).* 948.*fstdx fr6,r4\\(sr0,r5\\).* 949.*fstdx,s fr6,r4\\(sr0,r5\\).* 950.*fstdx,m fr6,r4\\(sr0,r5\\).* 951.*fstdx,sm fr6,r4\\(sr0,r5\\).* 952.*fstqx fr6,r4\\(sr0,r5\\).* 953.*fstqx,s fr6,r4\\(sr0,r5\\).* 954.*fstqx,m fr6,r4\\(sr0,r5\\).* 955.*fstqx,sm fr6,r4\\(sr0,r5\\).* 956.*$gdb_prompt $" { pass "fpu_memory_indexing_tests" } 957 -re "$gdb_prompt $" { fail "fpu_memory_indexing_tests" } 958 timeout { file "(timeout) fpu_memory_indexing_tests" } 959 } 960 961 send_gdb "x/15i fpu_short_memory_tests\n" 962 gdb_expect { 963 -re " 964.*fldws 0\\(sr0,r5\\),fr6.* 965.*fldws,mb 0\\(sr0,r5\\),fr6.* 966.*fldws,ma 0\\(sr0,r5\\),fr6.* 967.*fldds 0\\(sr0,r5\\),fr6.* 968.*fldds,mb 0\\(sr0,r5\\),fr6.* 969.*fldds,ma 0\\(sr0,r5\\),fr6.* 970.*fstws fr6,0\\(sr0,r5\\).* 971.*fstws,mb fr6,0\\(sr0,r5\\).* 972.*fstws,ma fr6,0\\(sr0,r5\\).* 973.*fstds fr6,0\\(sr0,r5\\).* 974.*fstds,mb fr6,0\\(sr0,r5\\).* 975.*fstds,ma fr6,0\\(sr0,r5\\).* 976.*fstqs fr6,0\\(sr0,r5\\).* 977.*fstqs,mb fr6,0\\(sr0,r5\\).* 978.*fstqs,ma fr6,0\\(sr0,r5\\).* 979.*$gdb_prompt $" { pass "fpu_short_memory_tests" } 980 -re "$gdb_prompt $" { fail "fpu_short_memory_tests" } 981 timeout { file "(timeout) fpu_short_memory_tests" } 982 } 983 984} 985 986proc all_fpu_computational_tests { } { 987 global gdb_prompt 988 global hex 989 global decimal 990 991 send_gdb "x/1i fpu_misc_tests\n" 992 gdb_expect { 993 -re " 994.*ftest.* 995.*$gdb_prompt $" { pass "fpu_misc_tests" } 996 -re "$gdb_prompt $" { fail "fpu_misc_tests" } 997 timeout { file "(timeout) fpu_misc_tests" } 998 } 999 1000 set fpu_two_op_insns [list {fcpy} {fabs} {fsqrt} {frnd} ] 1001 1002 foreach i $fpu_two_op_insns { 1003 send_gdb "x/5i $i"; send_gdb "_tests\n" 1004 gdb_expect { 1005 -re " 1006.*$i,sgl fr5,fr10.* 1007.*$i,dbl fr5,fr10.* 1008.*$i,quad fr5,fr10.* 1009.*$i,sgl fr20,fr24.* 1010.*$i,dbl fr20,fr24.* 1011.*$gdb_prompt $" { pass "$i tests" } 1012 -re "$gdb_prompt $" { fail "$i tests" } 1013 timeout { fail "(timeout) $i tests" } 1014 } 1015 } 1016 1017 set fpu_conversions [list {fcnvff} {fcnvxf} {fcnvfx} {fcnvfxt} ] 1018 1019 foreach i $fpu_conversions { 1020 send_gdb "x/18i $i"; send_gdb "_tests\n" 1021 gdb_expect { 1022 -re " 1023.*$i,sgl,sgl fr5,fr10.* 1024.*$i,sgl,dbl fr5,fr10.* 1025.*$i,sgl,quad fr5,fr10.* 1026.*$i,dbl,sgl fr5,fr10.* 1027.*$i,dbl,dbl fr5,fr10.* 1028.*$i,dbl,quad fr5,fr10.* 1029.*$i,quad,sgl fr5,fr10.* 1030.*$i,quad,dbl fr5,fr10.* 1031.*$i,quad,quad fr5,fr10.* 1032.*$i,sgl,sgl fr20,fr24.* 1033.*$i,sgl,dbl fr20,fr24.* 1034.*$i,sgl,quad fr20,fr24.* 1035.*$i,dbl,sgl fr20,fr24.* 1036.*$i,dbl,dbl fr20,fr24.* 1037.*$i,dbl,quad fr20,fr24.* 1038.*$i,quad,sgl fr20,fr24.* 1039.*$i,quad,dbl fr20,fr24.* 1040.*$i,quad,quad fr20,fr24.* 1041.*$gdb_prompt $" { pass "$i tests" } 1042 -re "$gdb_prompt $" { fail "$i tests" } 1043 timeout { fail "(timeout) $i tests" } 1044 } 1045 } 1046 1047 set fpu_three_op_insns [list {fadd} {fsub} {fmpy} {fdiv} {frem} ] 1048 1049 foreach i $fpu_three_op_insns { 1050 send_gdb "x/6i $i"; send_gdb "_tests\n" 1051 gdb_expect { 1052 -re " 1053.*$i,sgl fr4,fr8,fr12.* 1054.*$i,dbl fr4,fr8,fr12.* 1055.*$i,quad fr4,fr8,fr12.* 1056.*$i,sgl fr20,fr24,fr28.* 1057.*$i,dbl fr20,fr24,fr28.* 1058.*$i,quad fr20,fr24,fr28.* 1059.*$gdb_prompt $" { pass "$i tests" } 1060 -re "$gdb_prompt $" { fail "$i tests" } 1061 timeout { fail "(timeout) $i tests" } 1062 } 1063 } 1064 1065 send_gdb "x/4i fmpy_addsub_tests\n" 1066 gdb_expect { 1067 -re " 1068.*fmpyadd,sgl fr16,fr17,fr18,fr19,fr20.* 1069.*fmpyadd,dbl fr16,fr17,fr18,fr19,fr20.* 1070.*fmpysub,sgl fr16,fr17,fr18,fr19,fr20.* 1071.*fmpysub,dbl fr16,fr17,fr18,fr19,fr20.* 1072.*$gdb_prompt $" { pass "fmpy_addsub_tests" } 1073 -re "$gdb_prompt $" { fail "fmpy_addsub_tests" } 1074 timeout { fail "(timeout) fmpy_addsub_tests" } 1075 } 1076 1077 send_gdb "x/i xmpyu_tests\n" 1078 gdb_expect { 1079 -re " 1080.*xmpyu fr4,fr5,fr6.* 1081.*$gdb_prompt $" {pass "xmpyu_tests" } 1082 -re "$gdb_prompt $" {fail "xmpyu_tests" } 1083 timeout { fail "(timeout) xmpyu_tests" } 1084 } 1085 1086} 1087 1088proc all_fpu_comparison_tests { } { 1089 global gdb_prompt 1090 global hex 1091 global decimal 1092 1093 set fpu_comparison_formats [list {sgl} {dbl} {quad} ] 1094 1095 foreach i $fpu_comparison_formats { 1096 send_gdb "x/8i fcmp_$i"; send_gdb "_tests_1\n" 1097 gdb_expect { 1098 -re " 1099.*fcmp,$i,false\\? fr4,fr5.* 1100.*fcmp,$i,false fr4,fr5.* 1101.*fcmp,$i,\\? fr4,fr5.* 1102.*fcmp,$i,!<=> fr4,fr5.* 1103.*fcmp,$i,= fr4,fr5.* 1104.*fcmp,$i,=t fr4,fr5.* 1105.*fcmp,$i,\\?= fr4,fr5.* 1106.*fcmp,$i,!<> fr4,fr5.* 1107.*$gdb_prompt $" { pass "$i tests (part1) " } 1108 -re "$gdb_prompt $" { fail "fcmp_$i tests (part1) " } 1109 timeout { fail "(timeout) fcmp_$i tests (part1) " } 1110 } 1111 1112 send_gdb "x/8i fcmp_$i"; send_gdb "_tests_2\n" 1113 gdb_expect { 1114 -re " 1115.*fcmp,$i,!\\?>= fr4,fr5.* 1116.*fcmp,$i,< fr4,fr5.* 1117.*fcmp,$i,\\?< fr4,fr5.* 1118.*fcmp,$i,!>= fr4,fr5.* 1119.*fcmp,$i,!\\?> fr4,fr5.* 1120.*fcmp,$i,<= fr4,fr5.* 1121.*fcmp,$i,\\?<= fr4,fr5.* 1122.*fcmp,$i,!> fr4,fr5.* 1123.*$gdb_prompt $" { pass "$i tests (part2) " } 1124 -re "$gdb_prompt $" { fail "fcmp_$i tests (part2) " } 1125 timeout { fail "(timeout) fcmp_$i tests (part2) " } 1126 } 1127 1128 send_gdb "x/8i fcmp_$i"; send_gdb "_tests_3\n" 1129 gdb_expect { 1130 -re " 1131.*fcmp,$i,!\\?<= fr4,fr5.* 1132.*fcmp,$i,> fr4,fr5.* 1133.*fcmp,$i,\\?> fr4,fr5.* 1134.*fcmp,$i,!<= fr4,fr5.* 1135.*fcmp,$i,!\\?< fr4,fr5.* 1136.*fcmp,$i,>= fr4,fr5.* 1137.*fcmp,$i,\\?>= fr4,fr5.* 1138.*fcmp,$i,!< fr4,fr5.* 1139.*$gdb_prompt $" { pass "$i tests (part3) " } 1140 -re "$gdb_prompt $" { fail "fcmp_$i tests (part3) " } 1141 timeout { fail "(timeout) fcmp_$i tests (part3) " } 1142 } 1143 1144 send_gdb "x/8i fcmp_$i"; send_gdb "_tests_4\n" 1145 gdb_expect { 1146 -re " 1147.*fcmp,$i,!\\?= fr4,fr5.* 1148.*fcmp,$i,<> fr4,fr5.* 1149.*fcmp,$i,!= fr4,fr5.* 1150.*fcmp,$i,!=t fr4,fr5.* 1151.*fcmp,$i,!\\? fr4,fr5.* 1152.*fcmp,$i,<=> fr4,fr5.* 1153.*fcmp,$i,true\\? fr4,fr5.* 1154.*fcmp,$i,true fr4,fr5.* 1155.*$gdb_prompt $" { pass "$i tests (part4) " } 1156 -re "$gdb_prompt $" { fail "fcmp_$i tests (part4) " } 1157 timeout { fail "(timeout) fcmp_$i tests (part4) " } 1158 } 1159 } 1160} 1161 1162proc all_special_tests { } { 1163 global gdb_prompt 1164 global hex 1165 global decimal 1166 1167 send_gdb "x/4i special_tests\n" 1168 gdb_expect { 1169 -re " 1170.*gfw r4\\(sr0,r5\\).* 1171.*gfw,m r4\\(sr0,r5\\).* 1172.*gfr r4\\(sr0,r5\\).* 1173.*gfr,m r4\\(sr0,r5\\).* 1174.*$gdb_prompt $" { pass "special tests" } 1175 -re "$gdb_prompt $" { fail "special tests" } 1176 timeout { fail "(timeout) special tests " } 1177 } 1178 1179} 1180 1181proc all_sfu_tests { } { 1182 global gdb_prompt 1183 global hex 1184 global decimal 1185 1186 send_gdb "x/16i sfu_tests\n" 1187 gdb_expect { 1188 -re " 1189.*spop0,4,5.* 1190.*spop0,4,73.* 1191.*spop0,4,5,n.* 1192.*spop0,4,73,n.* 1193.*spop1,4,5 r5.* 1194.*spop1,4,73 r5.* 1195.*spop1,4,5,n r5.* 1196.*spop1,4,73,n r5.* 1197.*spop2,4,5 r5.* 1198.*spop2,4,73 r5.* 1199.*spop2,4,5,n r5.* 1200.*spop2,4,73,n r5.* 1201.*spop3,4,5 r5,r6.* 1202.*spop3,4,73 r5,r6.* 1203.*spop3,4,5,n r5,r6.* 1204.*spop3,4,73,n r5,r6.* 1205.*$gdb_prompt $" { pass "sfu tests" } 1206 -re "$gdb_prompt $" { fail "sfu tests" } 1207 timeout { fail "(timeout) sfu tests " } 1208 } 1209} 1210 1211proc all_copr_tests { } { 1212 global gdb_prompt 1213 global hex 1214 global decimal 1215 1216 send_gdb "x/4i copr_tests\n" 1217 gdb_expect { 1218 -re " 1219.*copr,4,5.* 1220.*copr,4,73.* 1221.*copr,4,5,n.* 1222.*copr,4,73,n.* 1223.*$gdb_prompt $" { pass "copr tests" } 1224 -re "$gdb_prompt $" { fail "copr tests" } 1225 timeout { fail "(timeout) copr tests " } 1226 } 1227} 1228 1229proc all_copr_mem_tests { } { 1230 global gdb_prompt 1231 global hex 1232 global decimal 1233 1234 send_gdb "x/8i copr_indexing_load\n" 1235 gdb_expect { 1236 -re " 1237.*cldwx,4 r5\\(sr0,r4\\),r26.* 1238.*cldwx,4,s r5\\(sr0,r4\\),r26.* 1239.*cldwx,4,m r5\\(sr0,r4\\),r26.* 1240.*cldwx,4,sm r5\\(sr0,r4\\),r26.* 1241.*clddx,4 r5\\(sr0,r4\\),r26.* 1242.*clddx,4,s r5\\(sr0,r4\\),r26.* 1243.*clddx,4,m r5\\(sr0,r4\\),r26.* 1244.*clddx,4,sm r5\\(sr0,r4\\),r26.* 1245.*$gdb_prompt $" { pass "copr indexed load tests" } 1246 -re "$gdb_prompt $" { fail "copr indexed load tests" } 1247 timeout { fail "(timeout) copr indexed load tests " } 1248 } 1249 1250 send_gdb "x/8i copr_indexing_store\n" 1251 gdb_expect { 1252 -re " 1253.*cstwx,4 r26,r5\\(sr0,r4\\).* 1254.*cstwx,4,s r26,r5\\(sr0,r4\\).* 1255.*cstwx,4,m r26,r5\\(sr0,r4\\).* 1256.*cstwx,4,sm r26,r5\\(sr0,r4\\).* 1257.*cstdx,4 r26,r5\\(sr0,r4\\).* 1258.*cstdx,4,s r26,r5\\(sr0,r4\\).* 1259.*cstdx,4,m r26,r5\\(sr0,r4\\).* 1260.*cstdx,4,sm r26,r5\\(sr0,r4\\).* 1261.*$gdb_prompt $" { pass "copr indexed store tests" } 1262 -re "$gdb_prompt $" { fail "copr indexed store tests" } 1263 timeout { fail "(timeout) copr indexed load tests " } 1264 } 1265 1266 send_gdb "x/12i copr_short_memory\n" 1267 gdb_expect { 1268 -re " 1269.*cldws,4 0\\(sr0,r4\\),r26.* 1270.*cldws,4,mb 0\\(sr0,r4\\),r26.* 1271.*cldws,4,ma 0\\(sr0,r4\\),r26.* 1272.*cldds,4 0\\(sr0,r4\\),r26.* 1273.*cldds,4,mb 0\\(sr0,r4\\),r26.* 1274.*cldds,4,ma 0\\(sr0,r4\\),r26.* 1275.*cstws,4 r26,0\\(sr0,r4\\).* 1276.*cstws,4,mb r26,0\\(sr0,r4\\).* 1277.*cstws,4,ma r26,0\\(sr0,r4\\).* 1278.*cstds,4 r26,0\\(sr0,r4\\).* 1279.*cstds,4,mb r26,0\\(sr0,r4\\).* 1280.*cstds,4,ma r26,0\\(sr0,r4\\).* 1281.*$gdb_prompt $" { pass "copr short memory tests" } 1282 -re "$gdb_prompt $" { fail "copr short memory tests" } 1283 timeout { fail "(timeout) copr short memory tests " } 1284 } 1285} 1286 1287proc fmemLRbug_tests { } { 1288 global gdb_prompt 1289 global hex 1290 global decimal 1291 1292 send_gdb "x/12i fmemLRbug_tests_1\n" 1293 gdb_expect { 1294 -re " 1295.*fstws fr6R,0\\(sr0,r26\\).* 1296.*fstws fr6,4\\(sr0,r26\\).* 1297.*fstws fr6,8\\(sr0,r26\\).* 1298.*fstds fr6,0\\(sr0,r26\\).* 1299.*fstds fr6,4\\(sr0,r26\\).* 1300.*fstds fr6,8\\(sr0,r26\\).* 1301.*fldws 0\\(sr0,r26\\),fr6R.* 1302.*fldws 4\\(sr0,r26\\),fr6.* 1303.*fldws 8\\(sr0,r26\\),fr6.* 1304.*fldds 0\\(sr0,r26\\),fr6.* 1305.*fldds 4\\(sr0,r26\\),fr6.* 1306.*fldds 8\\(sr0,r26\\),fr6.* 1307.*$gdb_prompt $" { pass "fmem LR register selector tests (part1)" } 1308 -re "$gdb_prompt $" { fail "fmem LR register selector tests (part1)" } 1309 timeout { fail "(timeout) fmem LR register selector tests (part1)" } 1310 } 1311 1312 send_gdb "x/12i fmemLRbug_tests_2\n" 1313 gdb_expect { 1314 -re " 1315.*fstws fr6R,0\\(sr0,r26\\).* 1316.*fstws fr6,4\\(sr0,r26\\).* 1317.*fstws fr6,8\\(sr0,r26\\).* 1318.*fstds fr6,0\\(sr0,r26\\).* 1319.*fstds fr6,4\\(sr0,r26\\).* 1320.*fstds fr6,8\\(sr0,r26\\).* 1321.*fldws 0\\(sr0,r26\\),fr6R.* 1322.*fldws 4\\(sr0,r26\\),fr6.* 1323.*fldws 8\\(sr0,r26\\),fr6.* 1324.*fldds 0\\(sr0,r26\\),fr6.* 1325.*fldds 4\\(sr0,r26\\),fr6.* 1326.*fldds 8\\(sr0,r26\\),fr6.* 1327.*$gdb_prompt $" { pass "fmem LR register selector tests (part2)" } 1328 -re "$gdb_prompt $" { fail "fmem LR register selector tests (part2)" } 1329 timeout { fail "(timeout) fmem LR register selector tests (part2)" } 1330 } 1331 1332 send_gdb "x/12i fmemLRbug_tests_3\n" 1333 gdb_expect { 1334 -re " 1335.*fstwx fr6R,r25\\(sr0,r26\\).* 1336.*fstwx fr6,r25\\(sr0,r26\\).* 1337.*fstwx fr6,r25\\(sr0,r26\\).* 1338.*fstdx fr6,r25\\(sr0,r26\\).* 1339.*fstdx fr6,r25\\(sr0,r26\\).* 1340.*fstdx fr6,r25\\(sr0,r26\\).* 1341.*fldwx r25\\(sr0,r26\\),fr6R.* 1342.*fldwx r25\\(sr0,r26\\),fr6.* 1343.*fldwx r25\\(sr0,r26\\),fr6.* 1344.*flddx r25\\(sr0,r26\\),fr6.* 1345.*flddx r25\\(sr0,r26\\),fr6.* 1346.*flddx r25\\(sr0,r26\\),fr6.* 1347.*$gdb_prompt $" { pass "fmem LR register selector tests (part3)" } 1348 -re "$gdb_prompt $" { fail "fmem LR register selector tests (part3)" } 1349 timeout { fail "(timeout) fmem LR register selector tests (part3)" } 1350 } 1351 1352 send_gdb "x/12i fmemLRbug_tests_4\n" 1353 gdb_expect { 1354 -re " 1355.*fstwx fr6R,r25\\(sr0,r26\\).* 1356.*fstwx fr6,r25\\(sr0,r26\\).* 1357.*fstwx fr6,r25\\(sr0,r26\\).* 1358.*fstdx fr6,r25\\(sr0,r26\\).* 1359.*fstdx fr6,r25\\(sr0,r26\\).* 1360.*fstdx fr6,r25\\(sr0,r26\\).* 1361.*fldwx r25\\(sr0,r26\\),fr6R.* 1362.*fldwx r25\\(sr0,r26\\),fr6.* 1363.*fldwx r25\\(sr0,r26\\),fr6.* 1364.*flddx r25\\(sr0,r26\\),fr6.* 1365.*flddx r25\\(sr0,r26\\),fr6.* 1366.*flddx r25\\(sr0,r26\\),fr6.* 1367.*$gdb_prompt $" { pass "fmem LR register selector tests (part4)" } 1368 -re "$gdb_prompt $" { fail "fmem LR register selector tests (part4)" } 1369 timeout { fail "(timeout) fmem LR register selector tests (part4)" } 1370 } 1371} 1372 1373# Start with a fresh gdb. 1374 1375gdb_exit 1376gdb_start 1377gdb_reinitialize_dir $srcdir/$subdir 1378gdb_load $binfile 1379 1380all_integer_memory_tests 1381all_immediate_tests 1382all_branch_tests 1383all_integer_computational_tests 1384all_system_control_tests 1385all_fpu_memory_tests 1386all_fpu_computational_tests 1387all_fpu_comparison_tests 1388all_special_tests 1389all_sfu_tests 1390all_copr_tests 1391all_copr_mem_tests 1392 1393# Regression test for a bug Tege found. 1394fmemLRbug_tests 1395