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 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
|
# 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 "lvepxl v3,0,r28"
func_check "lvepxl v19,r4,r18"
func_check "lvepx v27,0,r19"
func_check "lvepx v1,r25,r18"
func_check "lvexbx v31,0,r27"
func_check "lvexbx v28,r1,r12"
func_check "lvexhx v31,0,r14"
func_check "lvexhx v17,r16,r31"
func_check "lvexwx v22,0,r29"
func_check "lvexwx v23,r25,r5"
func_check "lvsm v3,0,r12"
func_check "lvsm v27,r29,r1"
func_check "lvswxl v7,0,r6"
func_check "lvswxl v7,r16,r8"
func_check "lvswx v14,0,r18"
func_check "lvswx v28,r28,r16"
func_check "lvtlxl v27,0,r12"
func_check "lvtlxl v27,r28,r0"
func_check "lvtlx v23,0,r25"
func_check "lvtlx v1,r25,r14"
func_check "lvtrxl v20,0,r24"
func_check "lvtrxl v22,r29,r24"
func_check "lvtrx v24,0,r8"
func_check "lvtrx v13,r23,r28"
func_check "mvidsplt v12,r28,r12"
func_check "mviwsplt v10,r27,r0"
func_check "stvepxl v27,0,r13"
func_check "stvepxl v2,r2,r31"
func_check "stvepx v3,0,r10"
func_check "stvepx v27,r28,r0"
func_check "stvexbx v13,0,r6"
func_check "stvexbx v13,r25,r3"
func_check "stvexhx v22,0,r1"
func_check "stvexhx v17,r14,r10"
func_check "stvexwx v21,0,r27"
func_check "stvexwx v31,r18,r1"
func_check "stvflxl v26,0,r13"
func_check "stvflxl v22,r13,r21"
func_check "stvflx v5,0,r9"
func_check "stvflx v21,r24,r1"
func_check "stvfrxl v13,0,r10"
func_check "stvfrxl v13,r17,r25"
func_check "stvfrx v17,0,r10"
func_check "stvfrx v8,r12,r31"
func_check "stvswxl v18,0,r29"
func_check "stvswxl v26,r14,r8"
func_check "stvswx v0,0,r15"
func_check "stvswx v13,r23,r7"
func_check "vabsdub v6,v17,v16"
func_check "vabsduh v21,v18,v4"
func_check "vabsduw v25,v20,v9"
func_check "vpermxor v6,v17,v20,v26"
func_check "vaddeuqm v29,v26,v15,v28"
func_check "vaddecuq v15,v8,v7,v24"
func_check "vsubeuqm v2,v6,v21,v1"
func_check "vsubecuq v29,v6,v0,v4"
func_check "vmulouw v14,v9,v3"
func_check "vmuluwm v24,v16,v18"
func_check "vaddudm v10,v17,v17"
func_check "vmaxud v30,v25,v4"
func_check "vrld v10,v6,v28"
func_check "vcmpequd v27,v7,v7"
func_check "vadduqm v22,v16,v25"
func_check "vaddcuq v1,v21,v29"
func_check "vmulosw v20,v11,v19"
func_check "vmaxsd v24,v19,v1"
func_check "vmuleuw v13,v27,v30"
func_check "vminud v9,v24,v17"
func_check "vcmpgtud v10,v18,v28"
func_check "vmulesw v0,v29,v22"
func_check "vminsd v13,v28,v1"
func_check "vsrad v10,v20,v5"
func_check "vcmpgtsd v27,v21,v5"
func_check "bcdadd. v0,v23,v30,1"
func_check "vpmsumb v25,v24,v26"
func_check "bcdsub. v8,v4,v4,1"
func_check "vpmsumh v16,v14,v26"
func_check "vpkudum v27,v2,v26"
func_check "vpmsumw v6,v23,v17"
func_check "vpmsumd v20,v6,v25"
func_check "vpkudus v27,v22,v16"
func_check "vsubudm v21,v20,v18"
func_check "vsubuqm v21,v20,v18"
func_check "vcipher v29,v29,v6"
func_check "vcipherlast v2,v13,v20"
func_check "vgbbd v20,v18"
func_check "vsubcuq v19,v8,v25"
func_check "vorc v9,v26,v29"
func_check "vncipher v20,v20,v13"
func_check "vncipherlast v15,v5,v27"
func_check "vbpermq v3,v19,v6"
func_check "vpksdus v30,v4,v28"
func_check "vnand v0,v4,v14"
func_check "vsld v17,v8,v29"
func_check "vsbox v29,v20"
func_check "vpksdss v11,v7,v11"
func_check "vcmpequd. v3,v19,v16"
func_check "vupkhsw v18,v17"
func_check "vshasigmaw v29,v8,0,13"
func_check "veqv v23,v28,v26"
func_check "vmrgew v29,v0,v2"
func_check "vmrgow v29,v0,v2"
func_check "vshasigmad v27,v19,0,0"
func_check "vsrd v20,v28,v28"
func_check "vupklsw v18,v21"
func_check "vclzb v30,v7"
func_check "vpopcntb v29,v21"
func_check "vclzh v25,v21"
func_check "vpopcnth v16,v30"
func_check "vclzw v28,v3"
func_check "vpopcntw v10,v9"
func_check "vclzd v22,v9"
func_check "vpopcntd v15,v30"
func_check "vcmpgtud. v2,v31,v6"
func_check "vcmpgtsd. v20,v15,v2"
|