1# Copyright 2014-2020 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16# This file is part of the gdb testsuite. 17 18# Test PowerPC instructions disassembly. 19 20standard_testfile .s 21set objfile [standard_output_file ${testfile}.o] 22 23if {![istarget "powerpc*-*-*"]} then { 24 verbose "Skipping PowerPC instructions disassembly." 25 return 26} 27 28if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } { 29 untested "PowerPC instructions disassembly" 30 return -1 31} 32 33clean_restart ${objfile} 34 35# Disassemble the function. 36set func "" 37 38gdb_test "set disassembler-options power9" 39set test "disass func" 40gdb_test_multiple $test $test { 41 -re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" { 42 set func $expect_out(1,string) 43 pass $test 44 } 45} 46 47proc instr_to_patt {instr} { 48 global decimal hex 49 # 0x0000000000000018 <+24>: stxvd2x vs43,r4,r5 50 return "\[ \t\]*$hex <\\+$decimal>:\[ \t\]*[string_to_regexp $instr]" 51} 52 53proc func_check {instr} { 54 global func 55 56 set test "found: $instr" 57 if [regexp -nocase -line [instr_to_patt $instr] $func] { 58 pass $test 59 } else { 60 fail $test 61 } 62} 63 64func_check "cnttzd r3,r13" 65func_check "cnttzd. r4,r14" 66func_check "cnttzw r5,r15" 67func_check "cnttzw. r6,r16" 68func_check "modsd r10,r20,r21" 69func_check "modsw r11,r21,r22" 70func_check "modud r12,r22,r23" 71func_check "moduw r13,r23,r24" 72func_check "bcdcfn. v3,v4,0" 73func_check "bcdcfn. v3,v4,1" 74func_check "bcdcfsq. v4,v5,0" 75func_check "bcdcfsq. v4,v5,1" 76func_check "bcdcfz. v5,v6,0" 77func_check "bcdcfz. v5,v6,1" 78func_check "bcdcpsgn. v6,v7,v8" 79func_check "bcdctn. v7,v8" 80func_check "bcdctsq. v8,v9" 81func_check "bcdctz. v9,v10,0" 82func_check "bcdctz. v9,v10,1" 83func_check "bcdsetsgn. v10,v11,0" 84func_check "bcdsetsgn. v10,v11,1" 85func_check "bcdsr. v11,v12,v13,0" 86func_check "bcdsr. v11,v12,v13,1" 87func_check "bcds. v12,v13,v14,0" 88func_check "bcds. v12,v13,v14,1" 89func_check "bcdtrunc. v13,v14,v15,0" 90func_check "bcdtrunc. v13,v14,v15,1" 91func_check "bcdus. v14,v15,v16" 92func_check "bcdutrunc. v15,v16,v17" 93func_check "lxvll vs20,0,r21" 94func_check "lxvll vs20,r10,r21" 95func_check "stxvll vs21,0,r11" 96func_check "stxvll vs21,r10,r11" 97func_check "vmul10cuq v22,v23" 98func_check "vmul10ecuq v23,v24,v25" 99func_check "vmul10euq v24,v25,v26" 100func_check "vmul10uq v25,v26" 101func_check "xsaddqp v10,v11,v12" 102func_check "xsaddqpo v11,v12,v12" 103func_check "xsrqpi 0,v20,v30,0" 104func_check "xsrqpi 1,v20,v30,0" 105func_check "xsrqpi 0,v20,v30,3" 106func_check "xsrqpi 1,v20,v30,3" 107func_check "xsrqpix 0,v21,v31,0" 108func_check "xsrqpix 1,v21,v31,0" 109func_check "xsrqpix 0,v21,v31,3" 110func_check "xsrqpix 1,v21,v31,3" 111func_check "xsmulqp v12,v13,v14" 112func_check "xsmulqpo v13,v14,v15" 113func_check "xsrqpxp 0,v22,v23,0" 114func_check "xsrqpxp 1,v22,v23,0" 115func_check "xsrqpxp 0,v22,v23,3" 116func_check "xsrqpxp 1,v22,v23,3" 117func_check "xscpsgnqp v14,v15,v16" 118func_check "xscmpoqp cr0,v15,v16" 119func_check "xscmpoqp cr7,v15,v16" 120func_check "xscmpexpqp cr0,v16,v17" 121func_check "xscmpexpqp cr7,v16,v17" 122func_check "xsmaddqp v17,v18,v19" 123func_check "xsmaddqpo v18,v19,v20" 124func_check "xsmsubqp v19,v20,v21" 125func_check "xsmsubqpo v20,v21,v22" 126func_check "xsnmaddqp v21,v22,v23" 127func_check "xsnmaddqpo v22,v23,v24" 128func_check "xsnmsubqp v23,v24,v25" 129func_check "xsnmsubqpo v24,v25,v26" 130func_check "xssubqp v25,v26,v27" 131func_check "xssubqpo v26,v27,v28" 132func_check "xsdivqp v27,v28,v29" 133func_check "xsdivqpo v28,v29,v30" 134func_check "xscmpuqp cr0,v29,v30" 135func_check "xscmpuqp cr7,v29,v30" 136func_check "xststdcqp cr0,v30,0" 137func_check "xststdcqp cr7,v30,0" 138func_check "xststdcqp cr0,v31,127" 139func_check "xststdcqp cr7,v31,127" 140func_check "xsabsqp v10,v11" 141func_check "xsxexpqp v11,v12" 142func_check "xsnabsqp v12,v13" 143func_check "xsnegqp v13,v14" 144func_check "xsxsigqp v14,v15" 145func_check "xssqrtqp v15,v16" 146func_check "xssqrtqpo v16,v17" 147func_check "xscvqpuwz v17,v18" 148func_check "xscvudqp v18,v19" 149func_check "xscvqpswz v19,v20" 150func_check "xscvsdqp v20,v21" 151func_check "xscvqpudz v21,v22" 152func_check "xscvqpdp v22,v23" 153func_check "xscvqpdpo v23,v24" 154func_check "xscvdpqp v24,v25" 155func_check "xscvqpsdz v25,v26" 156func_check "xsiexpqp v26,v27,v28" 157func_check "vpermr v4,v5,v6,v7" 158func_check "vextractub v5,v6,0" 159func_check "vextractub v5,v6,15" 160func_check "vextractuh v6,v7,0" 161func_check "vextractuh v6,v7,15" 162func_check "vextractuw v7,v8,0" 163func_check "vextractuw v7,v8,15" 164func_check "vextractd v8,v9,0" 165func_check "vextractd v8,v9,15" 166func_check "vinsertb v9,v10,0" 167func_check "vinsertb v9,v10,15" 168func_check "vinserth v10,v11,0" 169func_check "vinserth v10,v11,15" 170func_check "vinsertw v11,v12,0" 171func_check "vinsertw v11,v12,15" 172func_check "vinsertd v12,v13,0" 173func_check "vinsertd v12,v13,15" 174func_check "mfvsrld r20,vs45" 175func_check "mtvsrws vs46,r21" 176func_check "mtvsrdd vs47,0,r23" 177func_check "mtvsrdd vs47,r22,r23" 178func_check "lxvx vs50,0,r11" 179func_check "lxvx vs0,r10,r11" 180func_check "lxvwsx vs51,0,r12" 181func_check "lxvwsx vs1,r10,r12" 182func_check "lxvh8x vs52,0,r13" 183func_check "lxvh8x vs2,r10,r13" 184func_check "lxvb16x vs53,0,r14" 185func_check "lxvb16x vs3,r10,r14" 186func_check "stxvx vs54,0,r15" 187func_check "stxvx vs4,r20,r15" 188func_check "stxvh8x vs55,0,r16" 189func_check "stxvh8x vs5,r20,r16" 190func_check "stxvb16x vs56,0,r17" 191func_check "stxvb16x vs6,r20,r17" 192func_check "xxextractuw vs4,vs5,0" 193func_check "xxextractuw vs40,vs50,15" 194func_check "xxspltib vs4,0" 195func_check "xxspltib vs4,128" 196func_check "xxspltib vs41,255" 197func_check "xxspltib vs41,255" 198func_check "xxinsertw vs5,vs6,0" 199func_check "xxinsertw vs50,vs60,15" 200func_check "xxbrh vs6,vs7" 201func_check "xxbrh vs56,vs57" 202func_check "xxbrw vs7,vs8" 203func_check "xxbrw vs57,vs58" 204func_check "xxbrd vs8,vs9" 205func_check "xxbrd vs58,vs59" 206func_check "xxbrq vs9,vs10" 207func_check "xxbrq vs59,vs60" 208func_check "lxsd v20,0(0)" 209func_check "lxsd v20,0(r10)" 210func_check "lxsd v20,8(0)" 211func_check "lxsd v20,8(r10)" 212func_check "lxsd v20,-8(0)" 213func_check "lxsd v20,-8(r10)" 214func_check "lxsd v20,32764(0)" 215func_check "lxsd v20,32764(r10)" 216func_check "lxsd v20,-32768(0)" 217func_check "lxsd v20,-32768(r10)" 218func_check "lxssp v30,0(0)" 219func_check "lxssp v30,0(r11)" 220func_check "lxssp v30,8(0)" 221func_check "lxssp v30,8(r11)" 222func_check "lxssp v30,-8(0)" 223func_check "lxssp v30,-8(r11)" 224func_check "lxssp v30,32764(0)" 225func_check "lxssp v30,32764(r11)" 226func_check "lxssp v30,-32768(0)" 227func_check "lxssp v30,-32768(r11)" 228func_check "lxv vs40,0(0)" 229func_check "lxv vs40,0(r12)" 230func_check "lxv vs40,16(0)" 231func_check "lxv vs40,16(r12)" 232func_check "lxv vs40,-16(0)" 233func_check "lxv vs10,-16(r12)" 234func_check "lxv vs10,32752(0)" 235func_check "lxv vs10,32752(r12)" 236func_check "lxv vs10,-32768(0)" 237func_check "lxv vs10,-32768(r12)" 238func_check "stxsd v21,0(0)" 239func_check "stxsd v21,0(r10)" 240func_check "stxsd v21,8(0)" 241func_check "stxsd v21,8(r10)" 242func_check "stxsd v21,-8(0)" 243func_check "stxsd v21,-8(r10)" 244func_check "stxsd v21,32764(0)" 245func_check "stxsd v21,32764(r10)" 246func_check "stxsd v21,-32768(0)" 247func_check "stxsd v21,-32768(r10)" 248func_check "stxssp v31,0(0)" 249func_check "stxssp v31,0(r11)" 250func_check "stxssp v31,8(0)" 251func_check "stxssp v31,8(r11)" 252func_check "stxssp v31,-8(0)" 253func_check "stxssp v31,-8(r11)" 254func_check "stxssp v31,32764(0)" 255func_check "stxssp v31,32764(r11)" 256func_check "stxssp v31,-32768(0)" 257func_check "stxssp v31,-32768(r11)" 258func_check "stxv vs41,0(0)" 259func_check "stxv vs41,0(r12)" 260func_check "stxv vs41,16(0)" 261func_check "stxv vs41,16(r12)" 262func_check "stxv vs41,-16(0)" 263func_check "stxv vs11,-16(r12)" 264func_check "stxv vs11,32752(0)" 265func_check "stxv vs11,32752(r12)" 266func_check "stxv vs11,-32768(0)" 267func_check "stxv vs11,-32768(r12)" 268func_check "xxperm vs20,vs22,vs24" 269func_check "xxperm vs40,vs42,vs44" 270func_check "xxpermr vs21,vs23,vs25" 271func_check "xxpermr vs41,vs43,vs45" 272func_check "extswsli r12,r20,0" 273func_check "extswsli r12,r20,1" 274func_check "extswsli r12,r20,63" 275func_check "extswsli. r13,r21,0" 276func_check "extswsli. r13,r21,1" 277func_check "extswsli. r13,r21,63" 278func_check "vrlwmi v14,v22,v23" 279func_check "vrldmi v15,v23,v24" 280func_check "vrlwnm v16,v24,v25" 281func_check "vrldnm v17,v25,v26" 282func_check "vbpermd v18,v26,v27" 283func_check "vnegw v19,v20" 284func_check "vnegd v20,v21" 285func_check "vprtybw v21,v22" 286func_check "vprtybd v22,v23" 287func_check "vprtybq v23,v24" 288func_check "vextsb2w v24,v25" 289func_check "vextsh2w v25,v26" 290func_check "vextsb2d v26,v27" 291func_check "vextsh2d v27,v28" 292func_check "vextsw2d v28,v29" 293func_check "vctzb v29,v30" 294func_check "vctzh v30,v31" 295func_check "vctzw v31,v30" 296func_check "vctzd v30,v29" 297func_check "lxsibzx vs10,0,r20" 298func_check "lxsibzx vs50,r10,r20" 299func_check "lxsihzx vs11,0,r21" 300func_check "lxsihzx vs51,r11,r21" 301func_check "stxsibx vs12,0,r22" 302func_check "stxsibx vs52,r12,r22" 303func_check "stxsihx vs13,0,r23" 304func_check "stxsihx vs53,r13,r23" 305func_check "maddhd r10,r11,r12,r13" 306func_check "maddhdu r20,r21,r22,r23" 307func_check "maddld r2,r3,r4,r5" 308func_check "xscmpexpdp cr0,vs10,vs20" 309func_check "xscmpexpdp cr7,vs40,vs50" 310func_check "xsiexpdp vs41,r11,r21" 311func_check "xststdcdp cr0,vs11,127" 312func_check "xststdcdp cr7,vs41,127" 313func_check "xststdcsp cr0,vs11,127" 314func_check "xststdcsp cr7,vs41,127" 315func_check "xsxexpdp r13,vs43" 316func_check "xsxsigdp r14,vs44" 317func_check "xviexpdp vs45,vs46,vs47" 318func_check "xviexpsp vs46,vs47,vs48" 319func_check "xvtstdcdp vs54,vs55,0" 320func_check "xvtstdcdp vs54,vs55,127" 321func_check "xvtstdcsp vs55,vs56,0" 322func_check "xvtstdcsp vs55,vs56,127" 323func_check "xvxexpdp vs57,vs58" 324func_check "xvxexpsp vs58,vs59" 325func_check "xvxsigdp vs59,vs60" 326func_check "xvxsigsp vs60,vs61" 327func_check "cmpeqb cr0,r6,r7" 328func_check "cmpeqb cr7,r6,r7" 329func_check "cmprb cr0,0,r8,r9" 330func_check "cmprb cr7,0,r8,r9" 331func_check "cmprb cr0,1,r8,r9" 332func_check "cmprb cr7,1,r8,r9" 333func_check "setb r15,cr0" 334func_check "setb r15,cr7" 335func_check "lxvl vs26,0,r10" 336func_check "lxvl vs56,r20,r10" 337func_check "stxvl vs27,0,r11" 338func_check "stxvl vs57,r21,r11" 339func_check "vclzlsbb r20,v30" 340func_check "vctzlsbb r21,v31" 341func_check "vcmpneb v10,v11,v12" 342func_check "vcmpneb. v20,v21,v22" 343func_check "vcmpneh v11,v12,v13" 344func_check "vcmpneh. v21,v22,v23" 345func_check "vcmpnew v12,v13,v14" 346func_check "vcmpnew. v22,v23,v24" 347func_check "vcmpnezb v13,v14,v15" 348func_check "vcmpnezb. v23,v24,v25" 349func_check "vcmpnezh v14,v15,v16" 350func_check "vcmpnezh. v24,v25,v26" 351func_check "vcmpnezw v15,v16,v17" 352func_check "vcmpnezw. v25,v26,v27" 353func_check "vextublx r16,r17,v10" 354func_check "vextubrx r17,r18,v11" 355func_check "vextuhlx r18,r19,v12" 356func_check "vextuhrx r19,r20,v13" 357func_check "vextuwlx r20,r21,v14" 358func_check "vextuwrx r21,r22,v15" 359func_check "dtstsfi cr0,0,f3" 360func_check "dtstsfi cr7,63,f3" 361func_check "dtstsfiq cr0,0,f4" 362func_check "dtstsfiq cr7,63,f4" 363func_check "xscvhpdp vs40,vs50" 364func_check "xscvdphp vs41,vs51" 365func_check "xvcvhpsp vs42,vs52" 366func_check "xvcvsphp vs43,vs53" 367func_check "lnia r3" 368func_check "lnia r3" 369func_check "addpcis r4,1" 370func_check "addpcis r4,1" 371func_check "addpcis r5,-2" 372func_check "addpcis r5,-2" 373func_check "addpcis r6,32767" 374func_check "addpcis r6,32767" 375func_check "addpcis r7,-32768" 376func_check "addpcis r7,-32768" 377func_check "slbsync" 378func_check "slbiag r10" 379func_check "slbieg r10,r11" 380func_check "slbmfee r3,r4" 381func_check "slbmfee r3,r4" 382func_check "slbmfee r3,r4,1" 383func_check "slbmfev r4,r5" 384func_check "slbmfev r4,r5" 385func_check "slbmfev r4,r5,1" 386func_check "tlbie r3,r4" 387func_check "tlbie r3,r4" 388func_check "tlbie r3,r4,3,1,1" 389func_check "tlbiel r3" 390func_check "tlbiel r3" 391func_check "tlbiel r3,r4,3,1,1" 392func_check "copy r12,r13" 393func_check "paste. r10,r11" 394func_check "cpabort" 395func_check "hwsync" 396func_check "hwsync" 397func_check "hwsync" 398func_check "lwsync" 399func_check "lwsync" 400func_check "ptesync" 401func_check "ptesync" 402func_check "ldat r20,0,0" 403func_check "ldat r20,r10,28" 404func_check "lwat r21,0,0" 405func_check "lwat r21,r11,28" 406func_check "stdat r22,0,0" 407func_check "stdat r22,r12,28" 408func_check "stwat r23,0,0" 409func_check "stwat r23,r13,28" 410func_check "urfid" 411func_check "rmieg r30" 412func_check "stop" 413func_check "wait" 414func_check "wait" 415func_check "darn r3,0" 416func_check "darn r3,1" 417func_check "darn r3,2" 418func_check "mcrxrx cr0" 419func_check "mcrxrx cr7" 420func_check "vslv v20,v21,v22" 421func_check "vsrv v23,v24,v25" 422func_check "msgsync" 423func_check "xscmpeqdp vs30,vs40,vs50" 424func_check "xscmpgtdp vs31,vs41,vs51" 425func_check "xscmpgedp vs32,vs42,vs52" 426func_check "xsmincdp vs34,vs44,vs54" 427func_check "xsmaxcdp vs35,vs45,vs55" 428func_check "xsminjdp vs36,vs46,vs56" 429func_check "xsmaxjdp vs37,vs47,vs57" 430func_check "vmsumudm v20,v21,v22,v23" 431func_check "addex r11,r12,r13,0" 432func_check "addex r11,r12,r13,1" 433func_check "addex r11,r12,r13,2" 434func_check "mffs f25" 435func_check "mffs. f25" 436func_check "mffsce f26" 437func_check "mffscdrn f27,f20" 438func_check "mffscdrni f28,0" 439func_check "mffscdrni f28,7" 440func_check "mffscrn f29,f21" 441func_check "mffscrni f30,0" 442func_check "mffscrni f30,3" 443func_check "mffsl f31" 444