1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
# Copyright 2014-2023 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# This file is part of the gdb testsuite.
# Test PowerPC instructions disassembly.
standard_testfile .s
set objfile [standard_output_file ${testfile}.o]
if {![istarget "powerpc*-*-*"]} {
verbose "Skipping PowerPC instructions disassembly."
return
}
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
untested "PowerPC instructions disassembly"
return -1
}
clean_restart ${objfile}
# Disassemble the function.
set func ""
gdb_test "set disassembler-options altivec"
set test "disass func"
gdb_test_multiple $test $test {
-re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" {
set func $expect_out(1,string)
pass $test
}
}
proc instr_to_patt {instr} {
global decimal hex
# 0x0000000000000018 <+24>: stxvd2x vs43,r4,r5
return "\[ \t\]*$hex <\\+$decimal>:\[ \t\]*[string_to_regexp $instr]"
}
proc func_check {instr} {
global func
set test "found: $instr"
if [regexp -nocase -line [instr_to_patt $instr] $func] {
pass $test
} else {
fail $test
}
}
func_check "vmul10cuq v11,v30"
func_check "vcmpneb v30,v1,v23"
func_check "vpermr v30,v19,v30,v29"
func_check "vmul10ecuq v20,v20,v17"
func_check "vcmpneh v27,v19,v31"
func_check "vrlwmi v6,v9,v23"
func_check "vcmpnew v22,v26,v1"
func_check "vrldmi v24,v30,v25"
func_check "vcmpnezb v19,v29,v22"
func_check "vcmpnezh v8,v23,v19"
func_check "vrlwnm v27,v24,v11"
func_check "vcmpnezw v21,v13,v10"
func_check "vrldnm v5,v20,v29"
func_check "vmul10uq v30,v19"
func_check "vextractub v24,v21,12"
func_check "vmul10euq v0,v19,v28"
func_check "vextractuh v10,v3,12"
func_check "vextractuw v28,v12,7"
func_check "vextractd v30,v27,1"
func_check "vinsertb v25,v31,4"
func_check "bcdcpsgn. v21,v14,v30"
func_check "vinserth v22,v18,5"
func_check "vinsertw v29,v22,1"
func_check "vinsertd v29,v13,7"
func_check "vcmpneb. v22,v25,v8"
func_check "vcmpneh. v16,v15,v21"
func_check "bcdus. v22,v21,v31"
func_check "vcmpnew. v1,v12,v12"
func_check "bcds. v5,v3,v8,1"
func_check "bcdtrunc. v27,v22,v1,0"
func_check "vcmpnezb. v2,v26,v0"
func_check "bcdutrunc. v26,v14,v7"
func_check "vcmpnezh. v16,v5,v12"
func_check "bcdctsq. v24,v5"
func_check "bcdcfsq. v7,v0,0"
func_check "bcdctz. v30,v12,1"
func_check "bcdctn. v17,v23"
func_check "bcdcfz. v4,v15,1"
func_check "bcdcfn. v29,v5,1"
func_check "bcdsetsgn. v27,v12,0"
func_check "vcmpnezw. v14,v28,v25"
func_check "bcdsr. v2,v2,v6,1"
func_check "vbpermd v25,v0,v5"
func_check "vclzlsbb r28,v25"
func_check "vctzlsbb r2,v24"
func_check "vnegw v21,v11"
func_check "vnegd v17,v27"
func_check "vprtybw v31,v23"
func_check "vprtybd v21,v23"
func_check "vprtybq v21,v18"
func_check "vextsb2w v30,v4"
func_check "vextsh2w v3,v26"
func_check "vextsb2d v11,v17"
func_check "vextsh2d v5,v10"
func_check "vextsw2d v13,v25"
func_check "vctzb v25,v2"
func_check "vctzh v0,v3"
func_check "vctzw v22,v6"
func_check "vctzd v26,v24"
func_check "vextublx r6,r31,v2"
func_check "vextuhlx r13,r0,v18"
func_check "vextuwlx r14,r30,v31"
func_check "vsrv v15,v12,v14"
func_check "vextubrx r20,r10,v30"
func_check "vslv v21,v21,v2"
func_check "vextuhrx r15,r9,v1"
func_check "vextuwrx r21,r17,v16"
func_check "vmsumudm v20,v21,v22,v23"
|