]> git.pld-linux.org Git - packages/gdb.git/blob - gdb-ppc-power7-test.patch
- typo
[packages/gdb.git] / 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       */
This page took 0.121239 seconds and 3 git commands to generate.