aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.arch/powerpc-altivec2.exp
blob: 3c29c6dab294e6b203122471cc7aaf65e9bea9cc (plain)
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
# Copyright 2014-2024 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]

require {istarget "powerpc*-*-*"}

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"