]> git.ipfire.org Git - people/amarx/ipfire-3.x.git/blob - gdb/patches/gdb-ppc-power7-test.patch
gdb: Update to 7.3.50.20110722.
[people/amarx/ipfire-3.x.git] / gdb / patches / gdb-ppc-power7-test.patch
1 --- /dev/null
2 +++ b/gdb/testsuite/gdb.arch/powerpc-power7.exp
3 @@ -0,0 +1,182 @@
4 +# Copyright 2009 Free Software Foundation, Inc.
5 +
6 +# This program is free software; you can redistribute it and/or modify
7 +# it under the terms of the GNU General Public License as published by
8 +# the Free Software Foundation; either version 2 of the License, or
9 +# (at your option) any later version.
10 +#
11 +# This program is distributed in the hope that it will be useful,
12 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
13 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 +# GNU General Public License for more details.
15 +#
16 +# You should have received a copy of the GNU General Public License
17 +# along with this program; if not, write to the Free Software
18 +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 +
20 +# Test PowerPC Power7 instructions disassembly.
21 +
22 +if {![istarget "powerpc*-*-*"]} then {
23 + verbose "Skipping PowerPC Power7 instructions disassembly."
24 + return
25 +}
26 +
27 +set testfile "powerpc-power7"
28 +set srcfile ${testfile}.s
29 +set objfile ${objdir}/${subdir}/${testfile}.o
30 +
31 +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
32 + untested "PowerPC Power7 instructions disassembly"
33 + return -1
34 +}
35 +
36 +
37 +gdb_exit
38 +gdb_start
39 +gdb_reinitialize_dir $srcdir/$subdir
40 +gdb_load ${objfile}
41 +
42 +
43 +# Disassemble the function.
44 +
45 +set test "disass func"
46 +gdb_test_multiple $test $test {
47 + -re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" {
48 + set func $expect_out(1,string)
49 + pass $test
50 + }
51 +}
52 +
53 +proc instr_to_patt {offset instr} {
54 + # 0x0000000000000018 <func+24>: stxvd2x vs43,r4,r5
55 + return ".*\r\n\[ \t\]*[string map {0x 0x0*} $offset] <(func)?\\+?\[0-9\]*>:\[ \t\]*[string map [list { } "\[ \t\]+" . {\.}] $instr]\[ \t\]*\r\n.*"
56 +}
57 +
58 +# KFAIL strings would not exist if -Many would print the same as -Mpower7.
59 +# That means the power7 form should be the preferred one.
60 +# http://sourceware.org/ml/gdb-patches/2009-03/threads.html#00020
61 +
62 +proc func_check {offset instr {kfail ""}} {
63 + global func
64 +
65 + set test "Found $offset: $instr"
66 + if [regexp -nocase -line [instr_to_patt $offset $instr] $func] {
67 + pass $test
68 + } elseif {$kfail != "" && [regexp -nocase -line [instr_to_patt $offset $kfail] $func]} {
69 + kfail gdb/NNNN $test
70 + } else {
71 + fail $test
72 + }
73 +}
74 +
75 +func_check 0x0 "lxvd2x vs3,r4,r5"
76 +# [PATCH] Remove support for POWER7 VSX load/store with update instructions
77 +# http://sourceware.org/ml/binutils/2009-09/msg00680.html
78 +# http://sourceware.org/ml/binutils-cvs/2009-09/msg00331.html
79 +# lxvd2ux vs3,r4,r5
80 +func_check 0x4 ".long 0x7c642ed8"
81 +func_check 0x8 "lxvd2x vs43,r4,r5"
82 +# lxvd2ux vs43,r4,r5
83 +func_check 0xc ".long 0x7d642ed9"
84 +func_check 0x10 "stxvd2x vs3,r4,r5"
85 +# stxvd2ux vs3,r4,r5
86 +func_check 0x14 ".long 0x7c642fd8"
87 +func_check 0x18 "stxvd2x vs43,r4,r5"
88 +# stxvd2ux vs43,r4,r5
89 +func_check 0x1c ".long 0x7d642fd9"
90 +func_check 0x20 "xxmrghd vs3,vs4,vs5"
91 +func_check 0x24 "xxmrghd vs43,vs44,vs45"
92 +func_check 0x28 "xxmrgld vs3,vs4,vs5"
93 +func_check 0x2c "xxmrgld vs43,vs44,vs45"
94 +func_check 0x30 "xxmrghd vs3,vs4,vs5"
95 +func_check 0x34 "xxmrghd vs43,vs44,vs45"
96 +func_check 0x38 "xxmrgld vs3,vs4,vs5"
97 +func_check 0x3c "xxmrgld vs43,vs44,vs45"
98 +func_check 0x40 "xxpermdi vs3,vs4,vs5,1"
99 +func_check 0x44 "xxpermdi vs43,vs44,vs45,1"
100 +func_check 0x48 "xxpermdi vs3,vs4,vs5,2"
101 +func_check 0x4c "xxpermdi vs43,vs44,vs45,2"
102 +func_check 0x50 "xvmovdp vs3,vs4"
103 +func_check 0x54 "xvmovdp vs43,vs44"
104 +func_check 0x58 "xvmovdp vs3,vs4"
105 +func_check 0x5c "xvmovdp vs43,vs44"
106 +func_check 0x60 "xvcpsgndp vs3,vs4,vs5"
107 +func_check 0x64 "xvcpsgndp vs43,vs44,vs45"
108 +func_check 0x68 "wait"
109 +func_check 0x6c "wait"
110 +func_check 0x70 "waitrsv"
111 +func_check 0x74 "waitrsv"
112 +func_check 0x78 "waitimpl"
113 +func_check 0x7c "waitimpl"
114 +func_check 0x80 "doze"
115 +func_check 0x84 "nap"
116 +func_check 0x88 "sleep"
117 +func_check 0x8c "rvwinkle"
118 +func_check 0x90 "prtyw r3,r4"
119 +func_check 0x94 "prtyd r13,r14"
120 +func_check 0x98 "mfcfar r10" "mfspr r10,28"
121 +func_check 0x9c "mtcfar r11" "mtspr 28,r11"
122 +func_check 0xa0 "cmpb r3,r4,r5"
123 +func_check 0xa4 "lwzcix r10,r11,r12"
124 +func_check 0xa8 "dadd f16,f17,f18"
125 +func_check 0xac "daddq f20,f22,f24"
126 +func_check 0xb0 "dss 3"
127 +func_check 0xb4 "dssall"
128 +func_check 0xb8 "dst r5,r4,1"
129 +func_check 0xbc "dstt r8,r7,0"
130 +func_check 0xc0 "dstst r5,r6,3"
131 +func_check 0xc4 "dststt r4,r5,2"
132 +func_check 0xc8 "divwe r10,r11,r12"
133 +func_check 0xcc "divwe. r11,r12,r13"
134 +func_check 0xd0 "divweo r12,r13,r14"
135 +func_check 0xd4 "divweo. r13,r14,r15"
136 +func_check 0xd8 "divweu r10,r11,r12"
137 +func_check 0xdc "divweu. r11,r12,r13"
138 +func_check 0xe0 "divweuo r12,r13,r14"
139 +func_check 0xe4 "divweuo. r13,r14,r15"
140 +func_check 0xe8 "bpermd r7,r17,r27"
141 +func_check 0xec "popcntw r10,r20"
142 +func_check 0xf0 "popcntd r10,r20"
143 +func_check 0xf4 "ldbrx r20,r21,r22"
144 +func_check 0xf8 "stdbrx r20,r21,r22"
145 +func_check 0xfc "lfiwzx f10,0,r10"
146 +func_check 0x100 "lfiwzx f10,r9,r10"
147 +func_check 0x104 "fcfids f4,f5"
148 +func_check 0x108 "fcfids. f4,f5"
149 +func_check 0x10c "fcfidus f4,f5"
150 +func_check 0x110 "fcfidus. f4,f5"
151 +func_check 0x114 "fctiwu f4,f5"
152 +func_check 0x118 "fctiwu. f4,f5"
153 +func_check 0x11c "fctiwuz f4,f5"
154 +func_check 0x120 "fctiwuz. f4,f5"
155 +func_check 0x124 "fctidu f4,f5"
156 +func_check 0x128 "fctidu. f4,f5"
157 +func_check 0x12c "fctiduz f4,f5"
158 +func_check 0x130 "fctiduz. f4,f5"
159 +func_check 0x134 "fcfidu f4,f5"
160 +func_check 0x138 "fcfidu. f4,f5"
161 +func_check 0x13c "ftdiv cr0,f10,f11"
162 +func_check 0x140 "ftdiv cr7,f10,f11"
163 +func_check 0x144 "ftsqrt cr0,f10"
164 +func_check 0x148 "ftsqrt cr7,f10"
165 +func_check 0x14c "dcbtt r8,r9" "dcbt 16,r8,r9"
166 +func_check 0x150 "dcbtstt r8,r9" "dcbtst 16,r8,r9"
167 +func_check 0x154 "dcffix f10,f12"
168 +func_check 0x158 "dcffix. f20,f22"
169 +func_check 0x15c "lbarx r10,r11,r12"
170 +func_check 0x160 "lbarx r10,r11,r12"
171 +func_check 0x164 "lbarx r10,r11,r12,1"
172 +func_check 0x168 "lharx r20,r21,r22"
173 +func_check 0x16c "lharx r20,r21,r22"
174 +func_check 0x170 "lharx r20,r21,r22,1"
175 +func_check 0x174 "stbcx. r10,r11,r12"
176 +func_check 0x178 "sthcx. r10,r11,r12"
177 +func_check 0x17c "fre f14,f15"
178 +func_check 0x180 "fre. f14,f15"
179 +func_check 0x184 "fres f14,f15"
180 +func_check 0x188 "fres. f14,f15"
181 +func_check 0x18c "frsqrte f14,f15"
182 +func_check 0x190 "frsqrte. f14,f15"
183 +func_check 0x194 "frsqrtes f14,f15"
184 +func_check 0x198 "frsqrtes. f14,f15"
185 +func_check 0x19c "isel r2,r3,r4,28"
186 --- /dev/null
187 +++ b/gdb/testsuite/gdb.arch/powerpc-power7.s
188 @@ -0,0 +1,107 @@
189 + .text
190 + .globl func
191 +func:
192 + .long 0x7c642e98 /* 0: lxvd2x vs3,r4,r5 */
193 + .long 0x7c642ed8 /* 4: lxvd2ux vs3,r4,r5 */
194 + .long 0x7d642e99 /* 8: lxvd2x vs43,r4,r5 */
195 + .long 0x7d642ed9 /* c: lxvd2ux vs43,r4,r5 */
196 + .long 0x7c642f98 /* 10: stxvd2x vs3,r4,r5 */
197 + .long 0x7c642fd8 /* 14: stxvd2ux vs3,r4,r5 */
198 + .long 0x7d642f99 /* 18: stxvd2x vs43,r4,r5 */
199 + .long 0x7d642fd9 /* 1c: stxvd2ux vs43,r4,r5 */
200 + .long 0xf0642850 /* 20: xxmrghd vs3,vs4,vs5 */
201 + .long 0xf16c6857 /* 24: xxmrghd vs43,vs44,vs45 */
202 + .long 0xf0642b50 /* 28: xxmrgld vs3,vs4,vs5 */
203 + .long 0xf16c6b57 /* 2c: xxmrgld vs43,vs44,vs45 */
204 + .long 0xf0642850 /* 30: xxmrghd vs3,vs4,vs5 */
205 + .long 0xf16c6857 /* 34: xxmrghd vs43,vs44,vs45 */
206 + .long 0xf0642b50 /* 38: xxmrgld vs3,vs4,vs5 */
207 + .long 0xf16c6b57 /* 3c: xxmrgld vs43,vs44,vs45 */
208 + .long 0xf0642950 /* 40: xxpermdi vs3,vs4,vs5,1 */
209 + .long 0xf16c6957 /* 44: xxpermdi vs43,vs44,vs45,1 */
210 + .long 0xf0642a50 /* 48: xxpermdi vs3,vs4,vs5,2 */
211 + .long 0xf16c6a57 /* 4c: xxpermdi vs43,vs44,vs45,2 */
212 + .long 0xf0642780 /* 50: xvmovdp vs3,vs4 */
213 + .long 0xf16c6787 /* 54: xvmovdp vs43,vs44 */
214 + .long 0xf0642780 /* 58: xvmovdp vs3,vs4 */
215 + .long 0xf16c6787 /* 5c: xvmovdp vs43,vs44 */
216 + .long 0xf0642f80 /* 60: xvcpsgndp vs3,vs4,vs5 */
217 + .long 0xf16c6f87 /* 64: xvcpsgndp vs43,vs44,vs45 */
218 + .long 0x7c00007c /* 68: wait */
219 + .long 0x7c00007c /* 6c: wait */
220 + .long 0x7c20007c /* 70: waitrsv */
221 + .long 0x7c20007c /* 74: waitrsv */
222 + .long 0x7c40007c /* 78: waitimpl */
223 + .long 0x7c40007c /* 7c: waitimpl */
224 + .long 0x4c000324 /* 80: doze */
225 + .long 0x4c000364 /* 84: nap */
226 + .long 0x4c0003a4 /* 88: sleep */
227 + .long 0x4c0003e4 /* 8c: rvwinkle */
228 + .long 0x7c830134 /* 90: prtyw r3,r4 */
229 + .long 0x7dcd0174 /* 94: prtyd r13,r14 */
230 + .long 0x7d5c02a6 /* 98: mfcfar r10 */
231 + .long 0x7d7c03a6 /* 9c: mtcfar r11 */
232 + .long 0x7c832bf8 /* a0: cmpb r3,r4,r5 */
233 + .long 0x7d4b662a /* a4: lwzcix r10,r11,r12 */
234 + .long 0xee119004 /* a8: dadd f16,f17,f18 */
235 + .long 0xfe96c004 /* ac: daddq f20,f22,f24 */
236 + .long 0x7c60066c /* b0: dss 3 */
237 + .long 0x7e00066c /* b4: dssall */
238 + .long 0x7c2522ac /* b8: dst r5,r4,1 */
239 + .long 0x7e083aac /* bc: dstt r8,r7,0 */
240 + .long 0x7c6532ec /* c0: dstst r5,r6,3 */
241 + .long 0x7e442aec /* c4: dststt r4,r5,2 */
242 + .long 0x7d4b6356 /* c8: divwe r10,r11,r12 */
243 + .long 0x7d6c6b57 /* cc: divwe. r11,r12,r13 */
244 + .long 0x7d8d7756 /* d0: divweo r12,r13,r14 */
245 + .long 0x7dae7f57 /* d4: divweo. r13,r14,r15 */
246 + .long 0x7d4b6316 /* d8: divweu r10,r11,r12 */
247 + .long 0x7d6c6b17 /* dc: divweu. r11,r12,r13 */
248 + .long 0x7d8d7716 /* e0: divweuo r12,r13,r14 */
249 + .long 0x7dae7f17 /* e4: divweuo. r13,r14,r15 */
250 + .long 0x7e27d9f8 /* e8: bpermd r7,r17,r27 */
251 + .long 0x7e8a02f4 /* ec: popcntw r10,r20 */
252 + .long 0x7e8a03f4 /* f0: popcntd r10,r20 */
253 + .long 0x7e95b428 /* f4: ldbrx r20,r21,r22 */
254 + .long 0x7e95b528 /* f8: stdbrx r20,r21,r22 */
255 + .long 0x7d4056ee /* fc: lfiwzx f10,0,r10 */
256 + .long 0x7d4956ee /* 100: lfiwzx f10,r9,r10 */
257 + .long 0xec802e9c /* 104: fcfids f4,f5 */
258 + .long 0xec802e9d /* 108: fcfids. f4,f5 */
259 + .long 0xec802f9c /* 10c: fcfidus f4,f5 */
260 + .long 0xec802f9d /* 110: fcfidus. f4,f5 */
261 + .long 0xfc80291c /* 114: fctiwu f4,f5 */
262 + .long 0xfc80291d /* 118: fctiwu. f4,f5 */
263 + .long 0xfc80291e /* 11c: fctiwuz f4,f5 */
264 + .long 0xfc80291f /* 120: fctiwuz. f4,f5 */
265 + .long 0xfc802f5c /* 124: fctidu f4,f5 */
266 + .long 0xfc802f5d /* 128: fctidu. f4,f5 */
267 + .long 0xfc802f5e /* 12c: fctiduz f4,f5 */
268 + .long 0xfc802f5f /* 130: fctiduz. f4,f5 */
269 + .long 0xfc802f9c /* 134: fcfidu f4,f5 */
270 + .long 0xfc802f9d /* 138: fcfidu. f4,f5 */
271 + .long 0xfc0a5900 /* 13c: ftdiv cr0,f10,f11 */
272 + .long 0xff8a5900 /* 140: ftdiv cr7,f10,f11 */
273 + .long 0xfc005140 /* 144: ftsqrt cr0,f10 */
274 + .long 0xff805140 /* 148: ftsqrt cr7,f10 */
275 + .long 0x7e084a2c /* 14c: dcbtt r8,r9 */
276 + .long 0x7e0849ec /* 150: dcbtstt r8,r9 */
277 + .long 0xed406644 /* 154: dcffix f10,f12 */
278 + .long 0xee80b645 /* 158: dcffix. f20,f22 */
279 + .long 0x7d4b6068 /* 15c: lbarx r10,r11,r12 */
280 + .long 0x7d4b6068 /* 160: lbarx r10,r11,r12 */
281 + .long 0x7d4b6069 /* 164: lbarx r10,r11,r12,1 */
282 + .long 0x7e95b0e8 /* 168: lharx r20,r21,r22 */
283 + .long 0x7e95b0e8 /* 16c: lharx r20,r21,r22 */
284 + .long 0x7e95b0e9 /* 170: lharx r20,r21,r22,1 */
285 + .long 0x7d4b656d /* 174: stbcx. r10,r11,r12 */
286 + .long 0x7d4b65ad /* 178: sthcx. r10,r11,r12 */
287 + .long 0xfdc07830 /* 17c: fre f14,f15 */
288 + .long 0xfdc07831 /* 180: fre. f14,f15 */
289 + .long 0xedc07830 /* 184: fres f14,f15 */
290 + .long 0xedc07831 /* 188: fres. f14,f15 */
291 + .long 0xfdc07834 /* 18c: frsqrte f14,f15 */
292 + .long 0xfdc07835 /* 190: frsqrte. f14,f15 */
293 + .long 0xedc07834 /* 194: frsqrtes f14,f15 */
294 + .long 0xedc07835 /* 198: frsqrtes. f14,f15 */
295 + .long 0x7c43271e /* 19c: isel r2,r3,r4,28 */