# Copyright 2014-2021 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*-*-*"]} then {
    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 vsx"
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 "lxsdx   vs40,r10,r20"
func_check "lxvd2x  vs40,r10,r20"
func_check "lxvdsx  vs40,r10,r20"
func_check "lxvw4x  vs40,r10,r20"
func_check "stxsdx  vs40,r10,r20"
func_check "stxvd2x vs40,r10,r20"
func_check "stxvw4x vs40,r10,r20"
func_check "xsabsdp vs40,vs60"
func_check "xsadddp vs40,vs50,vs60"
func_check "xscmpodp cr1,vs50,vs60"
func_check "xscmpudp cr1,vs50,vs60"
func_check "xscpsgndp vs40,vs50,vs60"
func_check "xscvdpsp vs40,vs60"
func_check "xscvdpsxds vs40,vs60"
func_check "xscvdpsxws vs40,vs60"
func_check "xscvdpuxds vs40,vs60"
func_check "xscvdpuxws vs40,vs60"
func_check "xscvspdp vs40,vs60"
func_check "xscvsxddp vs40,vs60"
func_check "xscvuxddp vs40,vs60"
func_check "xsdivdp vs40,vs50,vs60"
func_check "xsmaddadp vs40,vs50,vs60"
func_check "xsmaddmdp vs40,vs50,vs60"
func_check "xsmaxdp vs40,vs50,vs60"
func_check "xsmindp vs40,vs50,vs60"
func_check "xsmsubadp vs40,vs50,vs60"
func_check "xsmsubmdp vs40,vs50,vs60"
func_check "xsmuldp vs40,vs50,vs60"
func_check "xsnabsdp vs40,vs60"
func_check "xsnegdp vs40,vs60"
func_check "xsnmaddadp vs40,vs50,vs60"
func_check "xsnmaddmdp vs40,vs50,vs60"
func_check "xsnmsubadp vs40,vs50,vs60"
func_check "xsnmsubmdp vs40,vs50,vs60"
func_check "xsrdpi  vs40,vs60"
func_check "xsrdpic vs40,vs60"
func_check "xsrdpim vs40,vs60"
func_check "xsrdpip vs40,vs60"
func_check "xsrdpiz vs40,vs60"
func_check "xsredp  vs40,vs60"
func_check "xsrsqrtedp vs40,vs60"
func_check "xssqrtdp vs40,vs60"
func_check "xssubdp vs40,vs50,vs60"
func_check "xstdivdp cr1,vs50,vs60"
func_check "xstsqrtdp cr1,vs60"
func_check "xvabsdp vs40,vs60"
func_check "xvabssp vs40,vs60"
func_check "xvadddp vs40,vs50,vs60"
func_check "xvaddsp vs40,vs50,vs60"
func_check "xvcmpeqdp vs40,vs50,vs60"
func_check "xvcmpeqdp. vs40,vs50,vs60"
func_check "xvcmpeqsp vs40,vs50,vs60"
func_check "xvcmpeqsp. vs40,vs50,vs60"
func_check "xvcmpgedp vs40,vs50,vs60"
func_check "xvcmpgedp. vs40,vs50,vs60"
func_check "xvcmpgesp vs40,vs50,vs60"
func_check "xvcmpgesp. vs40,vs50,vs60"
func_check "xvcmpgtdp vs40,vs50,vs60"
func_check "xvcmpgtdp. vs40,vs50,vs60"
func_check "xvcmpgtsp vs40,vs50,vs60"
func_check "xvcmpgtsp. vs40,vs50,vs60"
func_check "xvcpsgndp vs40,vs50,vs60"
func_check "xvmovdp vs40,vs60"
func_check "xvcpsgnsp vs40,vs50,vs60"
func_check "xvmovsp vs40,vs60"
func_check "xvcvdpsp vs40,vs60"
func_check "xvcvdpsxds vs40,vs60"
func_check "xvcvdpsxws vs40,vs60"
func_check "xvcvdpuxds vs40,vs60"
func_check "xvcvdpuxws vs40,vs60"
func_check "xvcvspdp vs40,vs60"
func_check "xvcvspsxds vs40,vs60"
func_check "xvcvspsxws vs40,vs60"
func_check "xvcvspuxds vs40,vs60"
func_check "xvcvspuxws vs40,vs60"
func_check "xvcvsxddp vs40,vs60"
func_check "xvcvsxdsp vs40,vs60"
func_check "xvcvsxwdp vs40,vs60"
func_check "xvcvsxwsp vs40,vs60"
func_check "xvcvuxddp vs40,vs60"
func_check "xvcvuxdsp vs40,vs60"
func_check "xvcvuxwdp vs40,vs60"
func_check "xvcvuxwsp vs40,vs60"
func_check "xvdivdp vs40,vs50,vs60"
func_check "xvdivsp vs40,vs50,vs60"
func_check "xvmaddadp vs40,vs50,vs60"
func_check "xvmaddmdp vs40,vs50,vs60"
func_check "xvmaddasp vs40,vs50,vs60"
func_check "xvmaddmsp vs40,vs50,vs60"
func_check "xvmaxdp vs40,vs50,vs60"
func_check "xvmaxsp vs40,vs50,vs60"
func_check "xvmindp vs40,vs50,vs60"
func_check "xvminsp vs40,vs50,vs60"
func_check "xvmsubadp vs40,vs50,vs60"
func_check "xvmsubmdp vs40,vs50,vs60"
func_check "xvmsubasp vs40,vs50,vs60"
func_check "xvmsubmsp vs40,vs50,vs60"
func_check "xvmuldp vs40,vs50,vs60"
func_check "xvmulsp vs40,vs50,vs60"
func_check "xvnabsdp vs40,vs60"
func_check "xvnabssp vs40,vs60"
func_check "xvnegdp vs40,vs60"
func_check "xvnegsp vs40,vs60"
func_check "xvnmaddadp vs40,vs50,vs60"
func_check "xvnmaddmdp vs40,vs50,vs60"
func_check "xvnmaddasp vs40,vs50,vs60"
func_check "xvnmaddmsp vs40,vs50,vs60"
func_check "xvnmsubadp vs40,vs50,vs60"
func_check "xvnmsubmdp vs40,vs50,vs60"
func_check "xvnmsubasp vs40,vs50,vs60"
func_check "xvnmsubmsp vs40,vs50,vs60"
func_check "xvrdpi  vs40,vs60"
func_check "xvrdpic vs40,vs60"
func_check "xvrdpim vs40,vs60"
func_check "xvrdpip vs40,vs60"
func_check "xvrdpiz vs40,vs60"
func_check "xvredp  vs40,vs60"
func_check "xvresp  vs40,vs60"
func_check "xvrspi  vs40,vs60"
func_check "xvrspic vs40,vs60"
func_check "xvrspim vs40,vs60"
func_check "xvrspip vs40,vs60"
func_check "xvrspiz vs40,vs60"
func_check "xvrsqrtedp vs40,vs60"
func_check "xvrsqrtesp vs40,vs60"
func_check "xvsqrtdp vs40,vs60"
func_check "xvsqrtsp vs40,vs60"
func_check "xvsubdp vs40,vs50,vs60"
func_check "xvsubsp vs40,vs50,vs60"
func_check "xvtdivdp cr1,vs50,vs60"
func_check "xvtdivsp cr1,vs50,vs60"
func_check "xvtsqrtdp cr1,vs60"
func_check "xvtsqrtsp cr1,vs60"
func_check "xxland  vs40,vs50,vs60"
func_check "xxlandc vs40,vs50,vs60"
func_check "xxlnor  vs40,vs50,vs60"
func_check "xxlor   vs40,vs50,vs60"
func_check "xxlxor  vs40,vs50,vs60"
func_check "xxmrghw vs40,vs50,vs60"
func_check "xxmrglw vs40,vs50,vs60"
func_check "xxmrghd vs40,vs50,vs60"
func_check "xxpermdi vs40,vs50,vs60,1"
func_check "xxpermdi vs40,vs50,vs60,2"
func_check "xxmrgld vs40,vs50,vs60"
func_check "xxspltd vs40,vs50,0"
func_check "xxspltd vs40,vs50,1"
func_check "xxswapd vs40,vs50"
func_check "xxsel   vs40,vs50,vs60,vs62"
func_check "xxsldwi vs40,vs50,vs60,2"
func_check "xxspltw vs40,vs60,2"
func_check "lxvd2x  vs40,0,r20"
func_check "stxvd2x vs40,0,r20"
