aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorOleg Endo <olegendo@gcc.gnu.org>2015-02-25 21:22:54 +0100
committerOleg Endo <olegendo@gcc.gnu.org>2015-02-25 21:26:59 +0100
commitac99436572d903781c124fa3cc72d83360202b76 (patch)
treed72fdca826abc94298d3dab727ad6c378044ef94 /gas
parent4469186b996eb84ee9341f4cdcd0f92c412b3f27 (diff)
downloadfsf-binutils-gdb-ac99436572d903781c124fa3cc72d83360202b76.zip
fsf-binutils-gdb-ac99436572d903781c124fa3cc72d83360202b76.tar.gz
fsf-binutils-gdb-ac99436572d903781c124fa3cc72d83360202b76.tar.bz2
[SH] Fix clrs, sets, pref insn arch memberships.
opcodes/ * sh-opc.h (clrs, sets): Mark as arch_sh3_nommu_up instead of arch_sh_up. (pref): Mark as arch_sh2a_nofpu_or_sh3_nommu_up instead of arch_sh2a_nofpu_or_sh4_nommu_nofpu_up. gas/testsuite/ * gas/sh/arch/arch.exp: Replace dead code to generate expected .s files with ... * gas/sh/arch/sh-opc-gen-as.pl: ... this new script. * gas/sh/arch/arch_expected.txt: Regenerate. * gas/sh/arch/sh-dsp.s: Likewise. * gas/sh/arch/sh-opc-gen-as.pl: Likewise. * gas/sh/arch/sh.s: Likewise. * gas/sh/arch/sh2.s: Likewise. * gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s: Likewise. * gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s: Likewise. * gas/sh/arch/sh2a-nofpu.s: Likewise. * gas/sh/arch/sh2a-or-sh3e.s: Likewise. * gas/sh/arch/sh2a-or-sh4.s: Likewise. * gas/sh/arch/sh2a.s: Likewise. * gas/sh/arch/sh2e.s: Likewise. * gas/sh/arch/sh3-dsp.s: Likewise. * gas/sh/arch/sh3-nommu.s: Likewise. * gas/sh/arch/sh3.s: Likewise. * gas/sh/arch/sh3e.s: Likewise. * gas/sh/arch/sh4-nofpu.s: Likewise. * gas/sh/arch/sh4-nommu-nofpu.s: Likewise. * gas/sh/arch/sh4.s: Likewise. * gas/sh/arch/sh4a-nofpu.s: Likewise. * gas/sh/arch/sh4a.s: Likewise. * gas/sh/arch/sh4al-dsp.s: Likewise. ld/testsuite/ * ld-sh/arch/arch_expected.txt: Regenerate. * ld-sh/arch/sh-dsp.s: Likewise. * ld-sh/arch/sh.s: Likewise. * ld-sh/arch/sh2.s: Likewise. * ld-sh/arch/sh2a-nofpu-or-sh3-nommu.s: Likewise. * ld-sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s: Likewise. * ld-sh/arch/sh2a-nofpu.s: Likewise. * ld-sh/arch/sh2a-or-sh3e.s: Likewise. * ld-sh/arch/sh2a-or-sh4.s: Likewise. * ld-sh/arch/sh2a.s: Likewise. * ld-sh/arch/sh2e.s: Likewise. * ld-sh/arch/sh3-dsp.s: Likewise. * ld-sh/arch/sh3-nommu.s: Likewise. * ld-sh/arch/sh3.s: Likewise. * ld-sh/arch/sh3e.s: Likewise. * ld-sh/arch/sh4-nofpu.s: Likewise. * ld-sh/arch/sh4-nommu-nofpu.s: Likewise. * ld-sh/arch/sh4.s: Likewise. * ld-sh/arch/sh4a-nofpu.s: Likewise. * ld-sh/arch/sh4a.s: Likewise. * ld-sh/arch/sh4al-dsp.s: Likewise.
Diffstat (limited to 'gas')
-rw-r--r--gas/testsuite/ChangeLog29
-rw-r--r--gas/testsuite/gas/sh/arch/arch.exp314
-rw-r--r--gas/testsuite/gas/sh/arch/arch_expected.txt42
-rw-r--r--gas/testsuite/gas/sh/arch/sh-dsp.s11
-rw-r--r--gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl249
-rw-r--r--gas/testsuite/gas/sh/arch/sh.s13
-rw-r--r--gas/testsuite/gas/sh/arch/sh2.s11
-rw-r--r--gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s12
-rw-r--r--gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s13
-rw-r--r--gas/testsuite/gas/sh/arch/sh2a-nofpu.s13
-rw-r--r--gas/testsuite/gas/sh/arch/sh2a-or-sh3e.s12
-rw-r--r--gas/testsuite/gas/sh/arch/sh2a-or-sh4.s13
-rw-r--r--gas/testsuite/gas/sh/arch/sh2a.s13
-rw-r--r--gas/testsuite/gas/sh/arch/sh2e.s11
-rw-r--r--gas/testsuite/gas/sh/arch/sh3-dsp.s14
-rw-r--r--gas/testsuite/gas/sh/arch/sh3-nommu.s14
-rw-r--r--gas/testsuite/gas/sh/arch/sh3.s14
-rw-r--r--gas/testsuite/gas/sh/arch/sh3e.s14
-rw-r--r--gas/testsuite/gas/sh/arch/sh4-nofpu.s15
-rw-r--r--gas/testsuite/gas/sh/arch/sh4-nommu-nofpu.s15
-rw-r--r--gas/testsuite/gas/sh/arch/sh4.s15
-rw-r--r--gas/testsuite/gas/sh/arch/sh4a-nofpu.s15
-rw-r--r--gas/testsuite/gas/sh/arch/sh4a.s15
-rw-r--r--gas/testsuite/gas/sh/arch/sh4al-dsp.s15
24 files changed, 416 insertions, 486 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 615e3a6..1cf803e 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,32 @@
+2015-02-25 Kaz Kojima <kkojima@rr.iij4u.or.jp>
+ Oleg Endo <olegendo@gcc.gnu.org>
+
+ * gas/sh/arch/arch.exp: Replace dead code to generate expected .s files
+ with ...
+ * gas/sh/arch/sh-opc-gen-as.pl: ... this new script.
+ * gas/sh/arch/arch_expected.txt: Regenerate.
+ * gas/sh/arch/sh-dsp.s: Likewise.
+ * gas/sh/arch/sh-opc-gen-as.pl: Likewise.
+ * gas/sh/arch/sh.s: Likewise.
+ * gas/sh/arch/sh2.s: Likewise.
+ * gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s: Likewise.
+ * gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s: Likewise.
+ * gas/sh/arch/sh2a-nofpu.s: Likewise.
+ * gas/sh/arch/sh2a-or-sh3e.s: Likewise.
+ * gas/sh/arch/sh2a-or-sh4.s: Likewise.
+ * gas/sh/arch/sh2a.s: Likewise.
+ * gas/sh/arch/sh2e.s: Likewise.
+ * gas/sh/arch/sh3-dsp.s: Likewise.
+ * gas/sh/arch/sh3-nommu.s: Likewise.
+ * gas/sh/arch/sh3.s: Likewise.
+ * gas/sh/arch/sh3e.s: Likewise.
+ * gas/sh/arch/sh4-nofpu.s: Likewise.
+ * gas/sh/arch/sh4-nommu-nofpu.s: Likewise.
+ * gas/sh/arch/sh4.s: Likewise.
+ * gas/sh/arch/sh4a-nofpu.s: Likewise.
+ * gas/sh/arch/sh4a.s: Likewise.
+ * gas/sh/arch/sh4al-dsp.s: Likewise.
+
2015-02-24 Nick Clifton <nickc@redhat.com>
* gas/elf/elf.exp: Add special version of the section2 test for
diff --git a/gas/testsuite/gas/sh/arch/arch.exp b/gas/testsuite/gas/sh/arch/arch.exp
index 8841b4b..07177ec 100644
--- a/gas/testsuite/gas/sh/arch/arch.exp
+++ b/gas/testsuite/gas/sh/arch/arch.exp
@@ -204,318 +204,4 @@ if [istarget sh*-*-elf] then {
close $outfile
}
-return
-
-#########################################################################
-# Generate one sh*.s file for each architecture defined in sh-opc.h
-# This will contain all the instructions valid on that platform
-#
-# This code produces pass or fail reports for each instruction
-# in order to ensure that problems are visible to the developer,
-# rather than just warnings hidden in the log file.
-
-# These variables will contains the architecture
-# and instruction data extracted from sh-opc.h
-array set arches {}
-set archcount 0
-array set insns {}
-set insncount 0
-
-# Pull the architecture inheritance macros out of sh-opc.h
-# Pull all the insns out of the sh-opc.h file.
-send_log "Reading sh-opc.h\n"
-send_log "========================================================\n"
-spawn -noecho cat "$srcdir/../../opcodes/sh-opc.h" ;# -open doesn't seem to be reliable
-expect {
- -re {#define\s+arch_([^ ]*)_up\s*\(([^)]*)\)} {
- set arches($archcount) [string map {_ -} $expect_out(1,string)]
- set arches($archcount,descendents) [string map {_ -} $expect_out(2,string)]
- incr archcount
- pass "Architecture arch_$expect_out(1,string) read OK"
- exp_continue
- }
- # Match all 32 bit opcodes
- -re {(?x) # enable expanded regexp syntax
- ^/\* # open C comment at start of input
- (?:\s*\S+){2} # 2 binary words (for 32 bit opcodes)
- \s+ ([^*]+?) # instruction mnemonics (must not leave comment)
- \s* \*/ # close C comment
- \s* \{ # open brace of data initialiser
- (?:[^\}]+\}){2}# 2 brace pairs (operands and nibbles)
- \s* , # comma
- \s* arch_(\S+)_up # architecture name
- \s* \| # literal or
- \s* arch_op32 # 32 bit opcode indicator
- \s* \} # close brace of data initialiser
- } {
- set insns(insn,$insncount) $expect_out(1,string)
- set insns(arch,$insncount) [string map {_ -} $expect_out(2,string)]
- set insns(context,$insncount) $expect_out(0,string)
- incr insncount
- pass "Instruction '$expect_out(1,string)' read OK"
- exp_continue
- }
- # Special case: Match the repeat pseudo op
- -re {(?x) # enable expanded regexp syntax
- ^/\* # open C comment at start of input
- \s* repeat # repeat does not have a bit pattern
- \s+ start\s+end # don't read fake operands as such (replaced below)
- \s+ ([^*]+?) # instruction operand
- \s* \*/ # close C comment
- \s* \{ # open brace of data initialiser
- (?:[^\}]+\}){2}# 2 brace pairs (operands and nibbles)
- \s* , # comma
- \s* arch_(\S+)_up # architecture name
- \s* \} # close brace of data initialiser
- } {
- set insns(insn,$insncount) "repeat 10 20 $expect_out(1,string)"
- set insns(arch,$insncount) [string map {_ -} $expect_out(2,string)]
- set insns(context,$insncount) $expect_out(0,string)
- incr insncount
- pass "Instruction '$expect_out(1,string)' read OK"
- exp_continue
- }
- # Match all 16 bit opcodes
- -re {(?x) # enable expanded regexp syntax
- ^/\* # open C comment at start of input
- \s* \S+ # 1 binary word (for 16 bit opcodes)
- \s+ ([^*]+?) # instruction mnemonics (must not leave comment)
- \s* \*/ # close C comment
- \s* \{ # open brace of data initialiser
- (?:[^\}]+\}){2}# 2 brace pairs (operands and nibbles)
- \s* , # comma
- \s* arch_(\S+)_up # architecture name
- \s* \} # close brace of data initialiser
- } {
- set insns(insn,$insncount) $expect_out(1,string)
- set insns(arch,$insncount) [string map {_ -} $expect_out(2,string)]
- set insns(context,$insncount) $expect_out(0,string)
- incr insncount
- pass "Instruction '$expect_out(1,string)' read OK"
- exp_continue
- }
- # Match all remaining possible instructions (error detection)
- -re {(?x) # enable expanded regexp syntax
- ^/\* # open C comment at start of input
- (?:[^*]*(?:\*[^/])?)+ # match contents of comment allowing *
- \*/ # close C comment
- \s* \{ # open brace of data initialiser
- (?:[^\}]+\}){2}# 2 brace pairs (operands and nibbles)
- \s* , # comma
- [^\}]*
- arch # look for 'arch' anywhere before closing brace
- [^\}]*
- \} # close brace of data initialiser
- } {
- fail "Found something that looks like an instruction but cannot be decoded:\n\t$expect_out(0,string)"
- exp_continue
- }
- # No match so move to next (possible) comment
- -re {^.+?((?=/\*)|(?=\#\s*define))} exp_continue
-}
-send_log "--------------------------------------------------------\n"
-
-if {$archcount == 0} then {
- fail "Unable to read any architectures from sh-opc.h"
-} else {
- pass "Read architecture data from sh-opc.h"
-}
-if {$insncount == 0} then {
- fail "Unable to read any instructions from sh-opc.h"
-} else {
- pass "Read instruction data from sh-opc.h"
-}
-
-# Munge the insns such that they will assemble
-# Each instruction in sh-opc.h has an example format
-# with placeholders for the parameters. These placeholders
-# need to be replaced with real registers and constants
-# as appropriate in order to assemble correctly.
-for {set i 0} {$i < $insncount} {incr i} {
- set out $insns(insn,$i)
- if {[regexp {AY_.{3,4}_N} $insns(context,$i)] == 1} then {
- regsub -nocase {<REG_N>} $out {r6} out
- } else {
- regsub -nocase {<REG_N>} $out {r4} out
- }
- regsub -nocase {<REG_M>} $out {r5} out
- if {[regexp {IMM0_20BY8} $insns(context,$i)] == 1} then {
- regsub -nocase {<imm>} $out {1024} out
- } else {
- regsub -nocase {<imm>} $out {4} out
- }
- regsub -nocase {<bdisp\d*>} $out {.+8} out
- regsub -nocase {<disp12>} $out {2048} out
- regsub -nocase {<disp\d*>} $out {8} out
- regsub -nocase {Rn_BANK} $out {r1_bank} out
- regsub -nocase {Rm_BANK} $out {r2_bank} out
- regsub -nocase {<F_REG_N>} $out {fr1} out
- regsub -nocase {<F_REG_M>} $out {fr2} out
- regsub -nocase {<D_REG_N>} $out {dr2} out
- regsub -nocase {<D_REG_M>} $out {dr4} out
- regsub -nocase {<V_REG_N>} $out {fv0} out
- regsub -nocase {<V_REG_M>} $out {fv4} out
- regsub -nocase {<DX_REG_N>} $out {xd2} out
- regsub -nocase {<DX_REG_M>} $out {xd4} out
- regsub -nocase (XMTRX_M4) $out {xmtrx} out
- regsub -nocase (<DSP_REG_X>) $out {x1} out
- regsub -nocase (<DSP_REG_Y>) $out {y0} out
- regsub -nocase (<DSP_REG_M>) $out {a1} out
- regsub -nocase (<DSP_REG_N>) $out {m0} out
- regsub -nocase (<REG_Axy>) $out {r1} out
- regsub -nocase (<REG_Ayx>) $out {r3} out
- regsub -nocase (<DSP_REG_XY>) $out {y1} out
- regsub -nocase (<DSP_REG_YX>) $out {y1} out
- regsub -nocase (<DSP_REG_AX>) $out {a0} out
- regsub -nocase (<DSP_REG_AY>) $out {a0} out
- regsub (Se) $out {x0} out
- regsub (Sf) $out {y0} out
- regsub (Dg) $out {m0} out
- # Put in a dct in order to differentiate between
- # conditional and non-conditional pabs and prnd
- # i.e. between sh-dsp and sh4al-dsp
- if {[regexp {PPIC} $insns(context,$i)] == 1} then {
- set out "dct $out"
- }
- # Make sure the proper alignments are ok.
- if [regexp {i8p4} $insns(context,$i)] {
- set out ".align 2\n\t$out"
- }
-
- # Write back the results.
- set insns(insn,$i) $out
- set insns(context,$i) [string map {\n " " \r " "} $insns(context,$i)]
-}
-
-# Initialise the data structure for the inheritance
-array set archtree {}
-for {set a 0} {$a < $archcount} {incr a} {
- set archtree($arches($a)) {}
-}
-
-# For each architecture, extract its immediate parents
-for {set a 0} {$a < $archcount} {incr a} {
- set s $arches($a,descendents)
- regsub -all {[\s|]+} $s { } s
- foreach word [split $s { }] {
- # Word should be one of arch-..., | (or), or arch-...-up
- # We only want the -up information
- # Note that the _ -> - translation was done above
- if {[regexp {^arch-(.*)-up$} $word match arch] == 1} then {
- # $arch is the descendent of $arches($a),
- # so $arches($a) is the parent of $arch
- lappend archtree($arch) $arches($a)
- }
- }
-}
-
-# Propagate the inhertances through the list
-# Iterate to ensure all inheritances are found (necessary?)
-set changesmade 1
-while {$changesmade == 1} {
- set changesmade 0
- foreach a [array names archtree] {
- foreach b [array names archtree] {
- # If arch 'a' is a parent of arch 'b' then b inherits from a
- if {[lsearch -exact $archtree($b) $a] != -1} then {
- # Only add each arch if it is not already present
- foreach arch $archtree($a) {
- if {[lsearch -exact $archtree($b) $arch] == -1} then {
- lappend archtree($b) $arch
- set changesmade 1
- }
- }
- }
- }
- }
-}
-
-# Generate the assembler file for each architecture
-# Also count up how many instructions should be valid for each architecture
-array set insns_valid {}
-for {set arch 0} {$arch < $archcount} {incr arch} {
- set insns_valid($arches($arch)) 0
- set fd [open $arches($arch).s w 0666]
- puts $fd "! Generated file. DO NOT EDIT.\n!"
- puts $fd "! This file was generated by gas/testsuite/gas/sh/arch/arch.exp ."
- puts $fd "! This file should contain every instruction valid on"
- puts $fd "! architecture $arches($arch) but no more."
- puts $fd "! If the tests are failing because the expected results"
- puts $fd "! have changed then run 'make check' and copy the new file"
- puts $fd "! from <objdir>/gas/testsuite/$arches($arch).s"
- puts $fd "! to <srcdir>/gas/testsuite/gas/sh/arch/$arches($arch).s ."
- puts $fd "! Make sure there are no unexpected or missing instructions."
- puts $fd "\n\t.section .text"
- puts $fd "[string map {- _} $arches($arch)]:"
- puts $fd "! Instructions introduced into $arches($arch)"
- for {set i 0} {$i < $insncount} {incr i} {
- if [string equal $arches($arch) $insns(arch,$i)] then {
- puts $fd [format "\t%-25s ;!%s" $insns(insn,$i) $insns(context,$i)]
- incr insns_valid($arches($arch))
- }
- }
- puts $fd "\n! Instructions inherited from ancestors: [lsort -increasing $archtree($arches($arch))]"
- for {set i 0} {$i < $insncount} {incr i} {
- if {[string equal $arches($arch) $insns(arch,$i)] != 1 && [lsearch -exact $archtree($arches($arch)) $insns(arch,$i)] != -1} then {
- puts $fd [format "\t%-25s ;!%s" $insns(insn,$i) $insns(context,$i)]
- incr insns_valid($arches($arch))
- }
- }
- close $fd
-}
-
-
-###################################################################
-# Compare the newly created sh*.s files with the existing
-# ones in the testsuite
-
-for {set arch 0} {$arch < $archcount} {incr arch} {
- send_log "diff $srcdir/$subdir/$arches($arch).s $arches($arch).s\n"
- catch "exec diff $srcdir/$subdir/$arches($arch).s $arches($arch).s" diff_output
- if {[string equal $diff_output ""] == 0} then {
- send_log $diff_output
- fail "Check $arches($arch) architecture has not changed"
- } else {
- pass "Check $arches($arch) architecture has not changed"
- }
-}
-
-
-###################################################################
-# Generate an assembler file with every instruction
-# Then use it to test how many failures there are for
-# each architecture. If this does not match the predicted value
-# then the assembler accepts too many instructions for a given
-# architecture.
-
-
-set fd [open "all_insns.s" w 0666]
-for {set i 0} {$i < $insncount} {incr i} {
- puts $fd [format "\t%-25s ;!%s" $insns(insn,$i) $insns(context,$i)]
-}
-close $fd
-
-# Assemble the all_insns.s file for each isa and count how many failures there are
-foreach arch [array names insns_valid] {
- set errormessages 0
- set expected [expr $insncount - $insns_valid($arch)]
-
- # The -Z option ensures that all error messages are output,
- # even those from later phases of assembly (such as offset range errors)
- send_log "$AS -Z -isa=$arch all_insns.s -o /dev/null\n"
- spawn $AS -Z -isa=$arch all_insns.s -o /dev/null
- expect Error: {incr errormessages; exp_continue}
-
- if {$errormessages == $expected} then {
- pass "$expected insns should not assemble on $arch"
- } else {
- if {([istarget sh*-*-coff] || [istarget sh*-hms]) && [string match {*dsp} $arch]} {
- xfail "$expected insns should not assemble on $arch ($errormessages did not)"
- } else {
- fail "$expected insns should not assemble on $arch ($errormessages did not)"
- }
- }
-}
-
-
} ;# istarget sh*-*-*
diff --git a/gas/testsuite/gas/sh/arch/arch_expected.txt b/gas/testsuite/gas/sh/arch/arch_expected.txt
index c8f0ffb..8e901ab 100644
--- a/gas/testsuite/gas/sh/arch/arch_expected.txt
+++ b/gas/testsuite/gas/sh/arch/arch_expected.txt
@@ -190,39 +190,39 @@ sh2a-nofpu-or-sh3-nommu.s -isa=sh4a sh4a
sh2a-nofpu-or-sh3-nommu.s -isa=sh4a-up sh4a
sh2a-nofpu-or-sh3-nommu.s -isa=sh4al-dsp sh4al-dsp
sh2a-nofpu-or-sh3-nommu.s -isa=sh4al-dsp-up sh4al-dsp
-sh2a-nofpu-or-sh4-nommu-nofpu.s default-options sh2a-nofpu-or-sh4-nommu-nofpu
-sh2a-nofpu-or-sh4-nommu-nofpu.s -dsp sh2a-nofpu-or-sh4-nommu-nofpu
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=any sh2a-nofpu-or-sh4-nommu-nofpu
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=dsp sh2a-nofpu-or-sh4-nommu-nofpu
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=fp sh2a-nofpu-or-sh4-nommu-nofpu
+sh2a-nofpu-or-sh4-nommu-nofpu.s default-options sh2a-nofpu-or-sh3-nommu
+sh2a-nofpu-or-sh4-nommu-nofpu.s -dsp sh2a-nofpu-or-sh3-nommu
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=any sh2a-nofpu-or-sh3-nommu
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=dsp sh2a-nofpu-or-sh3-nommu
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=fp sh2a-nofpu-or-sh3-nommu
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh-dsp ERROR
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh-dsp-up sh4al-dsp
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh-dsp-up sh3-dsp
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh ERROR
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh-up sh2a-nofpu-or-sh4-nommu-nofpu
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh-up sh2a-nofpu-or-sh3-nommu
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2 ERROR
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2-up sh2a-nofpu-or-sh4-nommu-nofpu
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-nofpu-or-sh3-nommu ERROR
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-nofpu-or-sh3-nommu-up sh2a-nofpu-or-sh4-nommu-nofpu
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2-up sh2a-nofpu-or-sh3-nommu
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-nofpu-or-sh3-nommu-up sh2a-nofpu-or-sh3-nommu
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-nofpu-or-sh4-nommu-nofpu sh2a-nofpu-or-sh4-nommu-nofpu
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-nofpu-or-sh4-nommu-nofpu-up sh2a-nofpu-or-sh4-nommu-nofpu
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-nofpu sh2a-nofpu
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-nofpu-up sh2a-nofpu
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-or-sh3e ERROR
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-or-sh3e-up sh2a-or-sh4
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-or-sh3e sh2a-or-sh3e
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-or-sh3e-up sh2a-or-sh3e
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-or-sh4 sh2a-or-sh4
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-or-sh4-up sh2a-or-sh4
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a sh2a
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2a-up sh2a
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2e ERROR
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2e-up sh2a-or-sh4
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3-dsp ERROR
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3-dsp-up sh4al-dsp
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3-nommu ERROR
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3-nommu-up sh4-nommu-nofpu
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3 ERROR
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3-up sh4-nofpu
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3e ERROR
-sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3e-up sh4
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh2e-up sh2a-or-sh3e
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3-dsp sh3-dsp
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3-dsp-up sh3-dsp
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3-nommu sh3-nommu
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3-nommu-up sh3-nommu
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3 sh3
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3-up sh3
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3e sh3e
+sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh3e-up sh3e
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh4-nofpu sh4-nofpu
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh4-nofpu-up sh4-nofpu
sh2a-nofpu-or-sh4-nommu-nofpu.s -isa=sh4-nommu-nofpu sh4-nommu-nofpu
diff --git a/gas/testsuite/gas/sh/arch/sh-dsp.s b/gas/testsuite/gas/sh/arch/sh-dsp.s
index cd87a22..b26e898 100644
--- a/gas/testsuite/gas/sh/arch/sh-dsp.s
+++ b/gas/testsuite/gas/sh/arch/sh-dsp.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh-dsp but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh-dsp.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh-dsp.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -136,7 +135,6 @@ sh_dsp:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -225,7 +223,6 @@ sh_dsp:
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
diff --git a/gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl b/gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl
new file mode 100644
index 0000000..cf8001f
--- /dev/null
+++ b/gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl
@@ -0,0 +1,249 @@
+# Generate one sh*.s file for each architecture defined in sh-opc.h
+# This will contain all the instructions valid on that platform
+
+# Pull the architecture inheritance macros out of sh-opc.h
+# Pull all the insns out of the sh-opc.h file.
+while (<>)
+{
+ chomp;
+ # Handle line continuation
+ if (s/\\$//) {
+ $_ .= <>;
+ redo unless eof();
+ }
+ # Concat comment line and the next line
+ if (/^\s*\/\*
+ (?:\s*\S+){2}
+ \s+ ([^*]+?)
+ \s* \*\/ $
+ /x)
+ {
+ $_ .= " ";
+ $_ .= <>;
+ redo unless eof();
+ }
+ if (/#define\s+arch_([^ ]*)_up\s*\(([^)]*)\)/)
+ {
+ ($arches[$archcount] = $1) =~ tr/_/-/;
+ ($descendents[$archcount] = $2) =~ tr/_/-/;
+ $archcount += 1;
+ next;
+ }
+ # Special case: Match the repeat pseudo op
+ if (/^\s*\/\*
+ \s* repeat
+ \s+ start\s+end
+ \s+ ([^*]+?) # instruction operand
+ \s* \*\/
+ \s* \{
+ ((?:[^\}]+\}){2}) # 2 brace pairs (operands and nibbles)
+ \s* ,
+ \s* arch_(\S+)_up # architecture name
+ \s* \}
+ /x)
+ {
+ $insns[$insncount] = "repeat 10 20 ".$1;
+ $insns_context[$insncount] = $_;
+ ($insns_arch[$insncount] = $3) =~ tr/_/-/;
+ $insncount += 1;
+ next;
+ }
+ # Match all 32 bit opcodes
+ if (/^\s*\/\*
+ (?:\s*\S+){2}
+ \s+ ([^*]+?) # instruction operand
+ \s* \*\/
+ \s* \{
+ ((?:[^\}]+\}){2}) # 2 brace pairs (operands and nibbles)
+ \s* ,
+ \s* arch_(\S+)_up # architecture name
+ \s* \|
+ \s* arch_op32
+ \s* \}
+ /x)
+ {
+ $insns[$insncount] = $1;
+ $insns_context[$insncount] = $_;
+ ($insns_arch[$insncount] = $3) =~ tr/_/-/;
+ $insncount += 1;
+ next;
+ }
+ # Match all 16 bit opcodes
+ if (/^\s*\/\*
+ \s* \S+
+ \s+ ([^*]+?) # instruction operand
+ \s* \*\/
+ \s* \{
+ ((?:[^\}]+\}){2}) # 2 brace pairs (operands and nibbles)
+ \s* ,
+ \s* arch_(\S+)_up # architecture name
+ \s* \}
+ /x)
+ {
+ $insns[$insncount] = $1;
+ $insns_context[$insncount] = $_;
+ ($insns_arch[$insncount] = $3) =~ tr/_/-/;
+ $insncount += 1;
+ next;
+ }
+ # Match all remaining possible instructions (error detection)
+ if (/^\s*\/\*
+ (?:[^*]*(?:\*[^\/])?)+ # match contents of comment allowing *
+ \*\/
+ \s* \{
+ (?:[^\}]+\}){2} # 2 brace pairs (operands and nibbles)
+ \s* ,
+ [^\}]*
+ arch
+ [^\}]*
+ \}
+ /x)
+ {
+ print ("Found something that looks like an instruction",
+ " but cannot be decoded:\n", "\t", $_);
+ next;
+ }
+}
+
+#print $insncount, "\n";
+print $archcount, "\n";
+
+# Munge the insns such that they will assemble
+# Each instruction in sh-opc.h has an example format
+# with placeholders for the parameters. These placeholders
+# need to be replaced with real registers and constants
+# as appropriate in order to assemble correctly.
+
+foreach $i (0 .. $insncount) {
+ $out = $insns[$i];
+ if ($insns_context[$i] =~ /AY_.{3,4}_N/) {
+ $out =~ s/<REG_N>/r6/;
+ } else {
+ $out =~ s/<REG_N>/r4/;
+ }
+ $out =~ s/<REG_M>/r5/;
+ if ($insns_context[$i] =~ /IMM0_20BY8/) {
+ $out =~ s/<imm>/1024/;
+ } else {
+ $out =~ s/<imm>/4/;
+ }
+ $out =~ s/<bdisp\d*>/.+8/;
+ $out =~ s/<disp12>/2048/;
+ $out =~ s/<DISP12>/2048/;
+ $out =~ s/<disp\d*>/8/;
+ $out =~ s/Rn_BANK/r1_bank/;
+ $out =~ s/Rm_BANK/r2_bank/;
+ $out =~ s/<F_REG_N>/fr1/;
+ $out =~ s/<F_REG_M>/fr2/;
+ $out =~ s/<D_REG_N>/dr2/;
+ $out =~ s/<D_REG_M>/dr4/;
+ $out =~ s/<V_REG_[Nn]>/fv0/;
+ $out =~ s/<V_REG_M>/fv4/;
+ $out =~ s/<DX_REG_N>/xd2/;
+ $out =~ s/<DX_REG_M>/xd4/;
+ $out =~ s/XMTRX_M4/xmtrx/;
+ $out =~ s/<DSP_REG_X>/x1/;
+ $out =~ s/<DSP_REG_Y>/y0/;
+ $out =~ s/<DSP_REG_M>/a1/;
+ $out =~ s/<DSP_REG_N>/m0/;
+ $out =~ s/<REG_Axy>/r1/;
+ $out =~ s/<REG_Ayx>/r3/;
+ $out =~ s/<DSP_REG_XY>/y1/;
+ $out =~ s/<DSP_REG_YX>/y1/;
+ $out =~ s/<DSP_REG_AX>/a0/;
+ $out =~ s/<DSP_REG_AY>/a0/;
+ $out =~ s/Se/x0/;
+ $out =~ s/Sf/y0/;
+ $out =~ s/Dg/m0/;
+ if ($insns_context[$i] =~ /PPIC/) {
+ $out = "dct $out";
+ }
+ if ($insns_context[$i] =~ /i8p4/) {
+ $out = ".align 2\n\t$out";
+ }
+ # Write back the results.
+ # print ($out, "\n");
+ $insns[$i] = $out;
+}
+
+# For each architecture, extract its immediate parents
+foreach $a (0 .. $archcount) {
+ $s = $descendents[$a];
+ $s =~ s/[\s|]+/ /g;
+ @list = split(' ', $s);
+ while ($word = shift (@list)) {
+ if ($word =~ /^arch-(.*)-up$/) {
+ push @{$archtree{$1}}, $arches[$a];
+ }
+ }
+}
+
+# Propagate the inhertances through the list
+# Iterate to ensure all inheritances are found (necessary?)
+$changesmade = 1;
+while ($changesmade) {
+ $changesmade = 0;
+ foreach $a (@arches) {
+ foreach $b (@arches) {
+ # If arch 'a' is a parent of arch 'b' then b inherits from a
+ if (grep {$_ eq $a} @{$archtree{$b}}) {
+ # Only add each arch if it is not already present
+ foreach $c (@{$archtree{$a}}) {
+ if ((grep {$_ eq $c} @{$archtree{$b}}) == 0) {
+ push @{$archtree{$b}}, $c;
+ $changesmade = 1;
+ }
+ }
+ }
+ }
+ }
+}
+
+# Generate the assembler file for each architecture
+# Also count up how many instructions should be valid for each architecture
+
+foreach $arch (0 .. ($archcount - 1)) {
+ print $arches[$arch], "\n";
+ $insns_valid{$arches[$arch]} = 0;
+ unless (open ($fd, ">$arches[$arch].s")) {
+ die "Can't open $arches[$arch].s\n";
+ }
+ print $fd "! Generated file. DO NOT EDIT.\n";
+ print $fd "!\n";
+ print $fd "! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .\n";
+ print $fd "! This file should contain every instruction valid on\n";
+ print $fd "! architecture $arches[$arch] but no more.\n";
+ print $fd "! If the tests are failing because the expected results have changed then run\n";
+ print $fd "! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'\n";
+ print $fd "! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.\n";
+ print $fd "! Make sure there are no unexpected or missing instructions.\n";
+ print $fd "\n\t.section .text\n";
+ ($lab = $arches[$arch]) =~ tr/-/_/;
+ print $fd "$lab:\n";
+ print $fd "! Instructions introduced into $arches[$arch]\n";
+ foreach $i (0 .. $insncount) {
+ if ($arches[$arch] eq $insns_arch[$i]) {
+ $context = $insns_context[$i];
+ $context =~ s/,$//;
+ $context =~ s/^\s*\//\//;
+ printf $fd "\t%-25s ;!%s\n", $insns[$i], $context;
+ $insns_valid{$arches[$arch]} += 1;
+ }
+ }
+ print $fd "\n! Instructions inherited from ancestors:";
+ foreach $anc (sort @{$archtree{$arches[$arch]}}) {
+ print $fd " $anc";
+ }
+ print $fd "\n";
+ foreach $i (0 .. $insncount) {
+ if (($arches[$arch] ne $insns_arch[$i])
+ && (grep {$_ eq $insns_arch[$i]} @{$archtree{$arches[$arch]}})) {
+ $context = $insns_context[$i];
+ $context =~ s/,$//;
+ $context =~ s/^\s*\//\//;
+ printf $fd "\t%-25s ;!%s\n", $insns[$i], $context;
+ $insns_valid{$arches[$arch]} += 1;
+ }
+ }
+ close $fd;
+}
diff --git a/gas/testsuite/gas/sh/arch/sh.s b/gas/testsuite/gas/sh/arch/sh.s
index 86de648..ce9a2a2 100644
--- a/gas/testsuite/gas/sh/arch/sh.s
+++ b/gas/testsuite/gas/sh/arch/sh.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -24,7 +23,6 @@ sh:
bt .+8 ;!/* 10001001i8p1.... bt <bdisp8> */{"bt",{A_BDISP8},{HEX_8,HEX_9,BRANCH_8}, arch_sh_up}
bf .+8 ;!/* 10001011i8p1.... bf <bdisp8> */{"bf",{A_BDISP8},{HEX_8,HEX_B,BRANCH_8}, arch_sh_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -112,7 +110,6 @@ sh:
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
@@ -152,4 +149,4 @@ sh:
xor.b #4,@(R0,GBR) ;!/* 11001110i8*1.... xor.b #<imm>,@(R0,GBR)*/{"xor.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_E,IMM0_8}, arch_sh_up}
xtrct r5,r4 ;!/* 0010nnnnmmmm1101 xtrct <REG_M>,<REG_N>*/{"xtrct",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_D}, arch_sh_up}
-! Instructions inherited from ancestors:
+! Instructions inherited from ancestors:
diff --git a/gas/testsuite/gas/sh/arch/sh2.s b/gas/testsuite/gas/sh/arch/sh2.s
index 3659942..7f2e02a 100644
--- a/gas/testsuite/gas/sh/arch/sh2.s
+++ b/gas/testsuite/gas/sh/arch/sh2.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh2 but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh2.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh2.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -37,7 +36,6 @@ sh2:
bt .+8 ;!/* 10001001i8p1.... bt <bdisp8> */{"bt",{A_BDISP8},{HEX_8,HEX_9,BRANCH_8}, arch_sh_up}
bf .+8 ;!/* 10001011i8p1.... bf <bdisp8> */{"bf",{A_BDISP8},{HEX_8,HEX_B,BRANCH_8}, arch_sh_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -125,7 +123,6 @@ sh2:
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
diff --git a/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s b/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s
index ce93bc9..cc29889 100644
--- a/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s
+++ b/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s
@@ -1,17 +1,17 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh2a-nofpu-or-sh3-nommu but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh2a-nofpu-or-sh3-nommu.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
sh2a_nofpu_or_sh3_nommu:
! Instructions introduced into sh2a-nofpu-or-sh3-nommu
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
@@ -32,7 +32,6 @@ sh2a_nofpu_or_sh3_nommu:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -121,7 +120,6 @@ sh2a_nofpu_or_sh3_nommu:
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
diff --git a/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s b/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s
index cc350c0..c702845 100644
--- a/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s
+++ b/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s
@@ -1,18 +1,16 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh2a-nofpu-or-sh4-nommu-nofpu but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh2a-nofpu-or-sh4-nommu-nofpu.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
sh2a_nofpu_or_sh4_nommu_nofpu:
! Instructions introduced into sh2a-nofpu-or-sh4-nommu-nofpu
- pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh4_nommu_nofpu_up}
! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu
add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
@@ -31,7 +29,6 @@ sh2a_nofpu_or_sh4_nommu_nofpu:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -114,13 +111,13 @@ sh2a_nofpu_or_sh4_nommu_nofpu:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
rotl r4 ;!/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh_up}
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
diff --git a/gas/testsuite/gas/sh/arch/sh2a-nofpu.s b/gas/testsuite/gas/sh/arch/sh2a-nofpu.s
index 878a5a3..6f4a17e 100644
--- a/gas/testsuite/gas/sh/arch/sh2a-nofpu.s
+++ b/gas/testsuite/gas/sh/arch/sh2a-nofpu.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh2a-nofpu but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh2a-nofpu.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh2a-nofpu.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -82,7 +81,6 @@ sh2a_nofpu:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -165,14 +163,13 @@ sh2a_nofpu:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
- pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh4_nommu_nofpu_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
rotl r4 ;!/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh_up}
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
diff --git a/gas/testsuite/gas/sh/arch/sh2a-or-sh3e.s b/gas/testsuite/gas/sh/arch/sh2a-or-sh3e.s
index b7be336..25c8ae1 100644
--- a/gas/testsuite/gas/sh/arch/sh2a-or-sh3e.s
+++ b/gas/testsuite/gas/sh/arch/sh2a-or-sh3e.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh2a-or-sh3e but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh2a-or-sh3e.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh2a-or-sh3e.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -31,7 +30,6 @@ sh2a_or_sh3e:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -118,13 +116,13 @@ sh2a_or_sh3e:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
rotl r4 ;!/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh_up}
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
diff --git a/gas/testsuite/gas/sh/arch/sh2a-or-sh4.s b/gas/testsuite/gas/sh/arch/sh2a-or-sh4.s
index 0200796..d3300ca 100644
--- a/gas/testsuite/gas/sh/arch/sh2a-or-sh4.s
+++ b/gas/testsuite/gas/sh/arch/sh2a-or-sh4.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh2a-or-sh4 but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh2a-or-sh4.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh2a-or-sh4.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -57,7 +56,6 @@ sh2a_or_sh4:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -144,14 +142,13 @@ sh2a_or_sh4:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
- pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh4_nommu_nofpu_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
rotl r4 ;!/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh_up}
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
diff --git a/gas/testsuite/gas/sh/arch/sh2a.s b/gas/testsuite/gas/sh/arch/sh2a.s
index 04e10f0..370dbd4 100644
--- a/gas/testsuite/gas/sh/arch/sh2a.s
+++ b/gas/testsuite/gas/sh/arch/sh2a.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh2a but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh2a.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh2a.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -34,7 +33,6 @@ sh2a:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -134,14 +132,13 @@ sh2a:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
- pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh4_nommu_nofpu_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
rotl r4 ;!/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh_up}
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
diff --git a/gas/testsuite/gas/sh/arch/sh2e.s b/gas/testsuite/gas/sh/arch/sh2e.s
index a62e3ab..e12732a 100644
--- a/gas/testsuite/gas/sh/arch/sh2e.s
+++ b/gas/testsuite/gas/sh/arch/sh2e.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh2e but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh2e.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh2e.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -66,7 +65,6 @@ sh2e:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -155,7 +153,6 @@ sh2e:
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
diff --git a/gas/testsuite/gas/sh/arch/sh3-dsp.s b/gas/testsuite/gas/sh/arch/sh3-dsp.s
index 7000596..acc26be 100644
--- a/gas/testsuite/gas/sh/arch/sh3-dsp.s
+++ b/gas/testsuite/gas/sh/arch/sh3-dsp.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh3-dsp but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh3-dsp.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh3-dsp.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -30,7 +29,7 @@ sh3_dsp:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
+ clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh3_nommu_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -140,13 +139,14 @@ sh3_dsp:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
rotl r4 ;!/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh_up}
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
setrc r4 ;!/* 0100nnnn00010100 setrc <REG_N> */{"setrc",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_4}, arch_sh_dsp_up}
setrc #4 ;!/* 10000010i8*1.... setrc #<imm> */{"setrc",{A_IMM},{HEX_8,HEX_2,IMM0_8}, arch_sh_dsp_up}
diff --git a/gas/testsuite/gas/sh/arch/sh3-nommu.s b/gas/testsuite/gas/sh/arch/sh3-nommu.s
index bc6096e..3e8ff02 100644
--- a/gas/testsuite/gas/sh/arch/sh3-nommu.s
+++ b/gas/testsuite/gas/sh/arch/sh3-nommu.s
@@ -1,23 +1,24 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh3-nommu but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh3-nommu.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh3-nommu.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
sh3_nommu:
! Instructions introduced into sh3-nommu
+ clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh3_nommu_up}
ldc r4,SSR ;!/* 0100nnnn00111110 ldc <REG_N>,SSR */{"ldc",{A_REG_N,A_SSR},{HEX_4,REG_N,HEX_3,HEX_E}, arch_sh3_nommu_up}
ldc r4,SPC ;!/* 0100nnnn01001110 ldc <REG_N>,SPC */{"ldc",{A_REG_N,A_SPC},{HEX_4,REG_N,HEX_4,HEX_E}, arch_sh3_nommu_up}
ldc r4,r1_bank ;!/* 0100nnnn1xxx1110 ldc <REG_N>,Rn_BANK */{"ldc",{A_REG_N,A_REG_B},{HEX_4,REG_N,REG_B,HEX_E}, arch_sh3_nommu_up}
ldc.l @r4+,SSR ;!/* 0100nnnn00110111 ldc.l @<REG_N>+,SSR */{"ldc.l",{A_INC_N,A_SSR},{HEX_4,REG_N,HEX_3,HEX_7}, arch_sh3_nommu_up}
ldc.l @r4+,SPC ;!/* 0100nnnn01000111 ldc.l @<REG_N>+,SPC */{"ldc.l",{A_INC_N,A_SPC},{HEX_4,REG_N,HEX_4,HEX_7}, arch_sh3_nommu_up}
ldc.l @r4+,r1_bank ;!/* 0100nnnn1xxx0111 ldc.l @<REG_N>+,Rn_BANK */{"ldc.l",{A_INC_N,A_REG_B},{HEX_4,REG_N,REG_B,HEX_7}, arch_sh3_nommu_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
stc SSR,r4 ;!/* 0000nnnn00110010 stc SSR,<REG_N> */{"stc",{A_SSR,A_REG_N},{HEX_0,REG_N,HEX_3,HEX_2}, arch_sh3_nommu_up}
stc SPC,r4 ;!/* 0000nnnn01000010 stc SPC,<REG_N> */{"stc",{A_SPC,A_REG_N},{HEX_0,REG_N,HEX_4,HEX_2}, arch_sh3_nommu_up}
stc r1_bank,r4 ;!/* 0000nnnn1xxx0010 stc Rn_BANK,<REG_N> */{"stc",{A_REG_B,A_REG_N},{HEX_0,REG_N,REG_B,HEX_2}, arch_sh3_nommu_up}
@@ -42,7 +43,6 @@ sh3_nommu:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -125,13 +125,13 @@ sh3_nommu:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
rotl r4 ;!/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh_up}
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
diff --git a/gas/testsuite/gas/sh/arch/sh3.s b/gas/testsuite/gas/sh/arch/sh3.s
index 5e031c0..97ab939 100644
--- a/gas/testsuite/gas/sh/arch/sh3.s
+++ b/gas/testsuite/gas/sh/arch/sh3.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh3 but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh3.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh3.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -31,7 +30,7 @@ sh3:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
+ clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh3_nommu_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -120,13 +119,14 @@ sh3:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
rotl r4 ;!/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh_up}
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
diff --git a/gas/testsuite/gas/sh/arch/sh3e.s b/gas/testsuite/gas/sh/arch/sh3e.s
index 7076dfc..f5c8ab9 100644
--- a/gas/testsuite/gas/sh/arch/sh3e.s
+++ b/gas/testsuite/gas/sh/arch/sh3e.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh3e but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh3e.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh3e.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -30,7 +29,7 @@ sh3e:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
+ clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh3_nommu_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -124,13 +123,14 @@ sh3e:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
rotl r4 ;!/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh_up}
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
diff --git a/gas/testsuite/gas/sh/arch/sh4-nofpu.s b/gas/testsuite/gas/sh/arch/sh4-nofpu.s
index fb225a1..32b58f9 100644
--- a/gas/testsuite/gas/sh/arch/sh4-nofpu.s
+++ b/gas/testsuite/gas/sh/arch/sh4-nofpu.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh4-nofpu but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh4-nofpu.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh4-nofpu.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -30,7 +29,7 @@ sh4_nofpu:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
+ clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh3_nommu_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -128,14 +127,14 @@ sh4_nofpu:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
- pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh4_nommu_nofpu_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
rotl r4 ;!/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh_up}
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
diff --git a/gas/testsuite/gas/sh/arch/sh4-nommu-nofpu.s b/gas/testsuite/gas/sh/arch/sh4-nommu-nofpu.s
index fc2877a..61f0bc6 100644
--- a/gas/testsuite/gas/sh/arch/sh4-nommu-nofpu.s
+++ b/gas/testsuite/gas/sh/arch/sh4-nommu-nofpu.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh4-nommu-nofpu but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh4-nommu-nofpu.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh4-nommu-nofpu.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -42,7 +41,7 @@ sh4_nommu_nofpu:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
+ clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh3_nommu_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -131,14 +130,14 @@ sh4_nommu_nofpu:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
- pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh4_nommu_nofpu_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
rotl r4 ;!/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh_up}
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
diff --git a/gas/testsuite/gas/sh/arch/sh4.s b/gas/testsuite/gas/sh/arch/sh4.s
index 5b1c980..af135ce 100644
--- a/gas/testsuite/gas/sh/arch/sh4.s
+++ b/gas/testsuite/gas/sh/arch/sh4.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh4 but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh4.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh4.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -35,7 +34,7 @@ sh4:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
+ clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh3_nommu_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -137,14 +136,14 @@ sh4:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
- pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh4_nommu_nofpu_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
rotl r4 ;!/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh_up}
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
diff --git a/gas/testsuite/gas/sh/arch/sh4a-nofpu.s b/gas/testsuite/gas/sh/arch/sh4a-nofpu.s
index 202db6f..9522bb6 100644
--- a/gas/testsuite/gas/sh/arch/sh4a-nofpu.s
+++ b/gas/testsuite/gas/sh/arch/sh4a-nofpu.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh4a-nofpu but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh4a-nofpu.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh4a-nofpu.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -37,7 +36,7 @@ sh4a_nofpu:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
+ clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh3_nommu_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -135,14 +134,14 @@ sh4a_nofpu:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
- pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh4_nommu_nofpu_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
rotl r4 ;!/* 0100nnnn00000100 rotl <REG_N> */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh_up}
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
diff --git a/gas/testsuite/gas/sh/arch/sh4a.s b/gas/testsuite/gas/sh/arch/sh4a.s
index c710ddc..950ed2d 100644
--- a/gas/testsuite/gas/sh/arch/sh4a.s
+++ b/gas/testsuite/gas/sh/arch/sh4a.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh4a but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh4a.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh4a.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -31,7 +30,7 @@ sh4a:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
+ clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh3_nommu_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -138,7 +137,7 @@ sh4a:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
- pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh4_nommu_nofpu_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
prefi @r4 ;!/* 0000nnnn11010011 prefi @<REG_N> */{"prefi",{A_IND_N},{HEX_0,REG_N,HEX_D,HEX_3}, arch_sh4a_nofpu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
@@ -146,7 +145,7 @@ sh4a:
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
diff --git a/gas/testsuite/gas/sh/arch/sh4al-dsp.s b/gas/testsuite/gas/sh/arch/sh4al-dsp.s
index 8d48962..6caaf2c 100644
--- a/gas/testsuite/gas/sh/arch/sh4al-dsp.s
+++ b/gas/testsuite/gas/sh/arch/sh4al-dsp.s
@@ -1,12 +1,11 @@
! Generated file. DO NOT EDIT.
!
-! This file was generated by gas/testsuite/gas/sh/arch/arch.exp .
+! This file was generated by gas/testsuite/gas/sh/arch/sh-opc-gen-as.pl .
! This file should contain every instruction valid on
! architecture sh4al-dsp but no more.
-! If the tests are failing because the expected results
-! have changed then run 'make check' and copy the new file
-! from <objdir>/gas/testsuite/sh4al-dsp.s
-! to <srcdir>/gas/testsuite/gas/sh/arch/sh4al-dsp.s .
+! If the tests are failing because the expected results have changed then run
+! 'cat ../../../../../opcodes/sh-opc.h | perl sh-opc-gen-as.pl'
+! in <srcdir>/gas/testsuite/gas/sh/arch to re-generate the files.
! Make sure there are no unexpected or missing instructions.
.section .text
@@ -66,7 +65,7 @@ sh4al_dsp:
bf.s .+8 ;!/* 10001111i8p1.... bf.s <bdisp8> */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
bf/s .+8 ;!/* 10001111i8p1.... bf/s <bdisp8> */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}
clrmac ;!/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh_up}
- clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh_up}
+ clrs ;!/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh3_nommu_up}
clrt ;!/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh_up}
cmp/eq #4,R0 ;!/* 10001000i8*1.... cmp/eq #<imm>,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh_up}
cmp/eq r5,r4 ;!/* 0011nnnnmmmm0000 cmp/eq <REG_M>,<REG_N>*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh_up}
@@ -189,7 +188,7 @@ sh4al_dsp:
or #4,R0 ;!/* 11001011i8*1.... or #<imm>,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh_up}
or r5,r4 ;!/* 0010nnnnmmmm1011 or <REG_M>,<REG_N> */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh_up}
or.b #4,@(R0,GBR) ;!/* 11001111i8*1.... or.b #<imm>,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh_up}
- pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh4_nommu_nofpu_up}
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
prefi @r4 ;!/* 0000nnnn11010011 prefi @<REG_N> */{"prefi",{A_IND_N},{HEX_0,REG_N,HEX_D,HEX_3}, arch_sh4a_nofpu_up}
rotcl r4 ;!/* 0100nnnn00100100 rotcl <REG_N> */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh_up}
rotcr r4 ;!/* 0100nnnn00100101 rotcr <REG_N> */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh_up}
@@ -197,7 +196,7 @@ sh4al_dsp:
rotr r4 ;!/* 0100nnnn00000101 rotr <REG_N> */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh_up}
rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
- sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
setrc r4 ;!/* 0100nnnn00010100 setrc <REG_N> */{"setrc",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_4}, arch_sh_dsp_up}
setrc #4 ;!/* 10000010i8*1.... setrc #<imm> */{"setrc",{A_IMM},{HEX_8,HEX_2,IMM0_8}, arch_sh_dsp_up}