aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSvein Seldal <svein@dev.seldal.com>2002-11-18 08:28:44 +0000
committerSvein Seldal <svein@dev.seldal.com>2002-11-18 08:28:44 +0000
commit48c5eb8a707f4a6daf9c3f1da5691a0f3f678884 (patch)
treef8bff8fc06a93750ff72a9c8da4f3eba071390b9
parent23ce3b1cd03d01e68979f3a4a66fd16aba993fe0 (diff)
downloadfsf-binutils-gdb-48c5eb8a707f4a6daf9c3f1da5691a0f3f678884.zip
fsf-binutils-gdb-48c5eb8a707f4a6daf9c3f1da5691a0f3f678884.tar.gz
fsf-binutils-gdb-48c5eb8a707f4a6daf9c3f1da5691a0f3f678884.tar.bz2
TIC4X testcase commit
* binutils/testsuite/binutils-all/objcopy.exp: Disable tic4x from test * binutils/testsuite/binutils-all/objdump.exp: Setup proper values for tic4x testcase * gas/testsuite/gas/all/gas.exp: Setup for tic4x testcase * gas/testsuite/gas/macros/macros.exp: Ditto * gas/testsuite/gas/all/gas.exp: Setup for tic4x testcase * gas/testsuite/gas/macros/macros.exp: Ditto * gas/testsuite/gas/tic4x: New tic4x gas testsuite directory * ld/testsuite/ld-scripts/script.exp: Setup for tic4x testcase
-rw-r--r--binutils/ChangeLog6
-rw-r--r--binutils/testsuite/binutils-all/objcopy.exp2
-rw-r--r--binutils/testsuite/binutils-all/objdump.exp5
-rw-r--r--gas/ChangeLog25
-rw-r--r--gas/testsuite/gas/all/gas.exp10
-rw-r--r--gas/testsuite/gas/macros/macros.exp9
-rw-r--r--gas/testsuite/gas/tic4x/addressing.s371
-rw-r--r--gas/testsuite/gas/tic4x/addressing_c3x.d243
-rw-r--r--gas/testsuite/gas/tic4x/addressing_c4x.d278
-rw-r--r--gas/testsuite/gas/tic4x/allopcodes.S206
-rw-r--r--gas/testsuite/gas/tic4x/data.d93
-rw-r--r--gas/testsuite/gas/tic4x/data.s14
-rw-r--r--gas/testsuite/gas/tic4x/float.d82
-rw-r--r--gas/testsuite/gas/tic4x/float.s28
-rw-r--r--gas/testsuite/gas/tic4x/opclasses.h804
-rw-r--r--gas/testsuite/gas/tic4x/opcodes.s595
-rw-r--r--gas/testsuite/gas/tic4x/opcodes_c3x.d1342
-rw-r--r--gas/testsuite/gas/tic4x/opcodes_c4x.d1937
-rwxr-xr-xgas/testsuite/gas/tic4x/rebuild.sh10
-rw-r--r--gas/testsuite/gas/tic4x/registers.s69
-rw-r--r--gas/testsuite/gas/tic4x/registers_c3x.d46
-rw-r--r--gas/testsuite/gas/tic4x/registers_c4x.d56
-rw-r--r--gas/testsuite/gas/tic4x/tic4x.exp64
-rw-r--r--gas/testsuite/gas/tic4x/zeros.d24
-rw-r--r--gas/testsuite/gas/tic4x/zeros.s35
-rw-r--r--ld/ChangeLog4
-rw-r--r--ld/testsuite/ld-scripts/script.exp4
27 files changed, 6354 insertions, 8 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index bbf1d61..8a58087 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+2002-11-18 Svein E. Seldal <Svein.Seldal@solidas.com>
+
+ * testsuite/binutils-all/objcopy.exp: Disable tic4x from test
+ * testsuite/binutils-all/objdump.exp: Setup proper values for tic4x
+ testcase
+
2002-11-14 Nick Clifton <nickc@redhat.com>
* readelf.c (process_program_headers): Add comment about return
diff --git a/binutils/testsuite/binutils-all/objcopy.exp b/binutils/testsuite/binutils-all/objcopy.exp
index e36f14e..5d4a1bb 100644
--- a/binutils/testsuite/binutils-all/objcopy.exp
+++ b/binutils/testsuite/binutils-all/objcopy.exp
@@ -80,7 +80,7 @@ if ![string match "" $got] then {
setup_xfail "m8*-*"
setup_xfail "or32-*-rtems*" "or32-*-coff"
setup_xfail "sh-*-coff*" "sh-*-rtems*"
- setup_xfail "tic80-*-*" "w65-*" "z8*-*"
+ setup_xfail "tic4x-*-*" "tic80-*-*" "w65-*" "z8*-*"
clear_xfail "hppa*64*-*-hpux*" "hppa*-*-linux*" "hppa*-*-lites*"
clear_xfail "hppa*-*-*n*bsd*" "hppa*-*-rtems*" "*-*-*elf*" "m68*-*-sysv4*"
diff --git a/binutils/testsuite/binutils-all/objdump.exp b/binutils/testsuite/binutils-all/objdump.exp
index 53168d4..bdfc4b1 100644
--- a/binutils/testsuite/binutils-all/objdump.exp
+++ b/binutils/testsuite/binutils-all/objdump.exp
@@ -96,6 +96,11 @@ if ![regexp $want $got all text_name text_size data_name data_size] then {
verbose "data name is $data_name size is $data_size"
set ets 8
set eds 4
+ # The [ti]c4x target has the property sizeof(char)=sizeof(long)=1
+ if [istarget *c4x*-*-*] then {
+ set ets 2
+ set eds 1
+ }
# c54x section sizes are in bytes, not octets; adjust accordingly
if [istarget *c54x*-*-*] then {
set ets 4
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 7c3c96d..338b873 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,28 @@
+2002-11-18 Svein E. Seldal <Svein.Seldal@solidas.com>
+
+ * testsuite/gas/all/gas.exp: Setup for tic4x testcase
+ * testsuite/gas/macros/macros.exp: Ditto
+ * testsuite/gas/tic4x: New tic4x gas testsuite directory
+ * testsuite/gas/tic4x/addressing.s: Create
+ * testsuite/gas/tic4x/addressing_c3x.d: Create
+ * testsuite/gas/tic4x/addressing_c4x.d: Create
+ * testsuite/gas/tic4x/allopcodes.S: Create
+ * testsuite/gas/tic4x/data.d: Create
+ * testsuite/gas/tic4x/data.s: Create
+ * testsuite/gas/tic4x/float.d: Create
+ * testsuite/gas/tic4x/float.s: Create
+ * testsuite/gas/tic4x/opclasses.h: Create
+ * testsuite/gas/tic4x/opcodes.s: Create
+ * testsuite/gas/tic4x/opcodes_c3x.d: Create
+ * testsuite/gas/tic4x/opcodes_c4x.d: Create
+ * testsuite/gas/tic4x/rebuild.sh: Create
+ * testsuite/gas/tic4x/registers.s: Create
+ * testsuite/gas/tic4x/registers_c3x.d: Create
+ * testsuite/gas/tic4x/registers_c4x.d: Create
+ * testsuite/gas/tic4x/tic4x.exp: Create
+ * testsuite/gas/tic4x/zeros.d: Create
+ * testsuite/gas/tic4x/zeros.s: Create
+
2002-11-16 Svein E. Seldal <Svein.Seldal@solidas.com>
* config/tc-tic4x.c: Remove c4x_pseudo_ignore function.
diff --git a/gas/testsuite/gas/all/gas.exp b/gas/testsuite/gas/all/gas.exp
index ddbc76d..31cfa4e 100644
--- a/gas/testsuite/gas/all/gas.exp
+++ b/gas/testsuite/gas/all/gas.exp
@@ -90,8 +90,10 @@ proc do_930509a {} {
# C54x assembler (for compatibility) does not allow differences between
# forward references
# C30 counts a four byte offset as a difference of one.
-if { ![istarget hppa*-*-*]
- && ![istarget *c30*-*-*] && ![istarget *c54x*-*-*] } then {
+if { ![istarget hppa*-*-*] &&
+ ![istarget *c30*-*-*] &&
+ ![istarget *c4x*-*-*] &&
+ ![istarget *c54x*-*-*] } then {
# the vax fails because VMS can apparently actually handle this
# case in relocs, so gas doesn't handle it itself.
setup_xfail "h8300*-*-elf*" "mn10200*-*-*" "mn10300*-*-*" "vax*-*-vms*"
@@ -102,6 +104,7 @@ if { ![istarget hppa*-*-*]
# These directives are done in the c54x-specific tests instead
case $target_triplet in {
{ hppa*-*-* } { }
+ { *c4x*-*-* } { }
{ *c54x*-*-* } { }
default {
run_dump_test struct
@@ -115,7 +118,7 @@ case $target_triplet in {
# We omit the ARM toolchains because they define locals to
# start with '.', which eliminates .eos, .text etc from the output.
# Omit c54x, since .tag and .def mean something different on that target
-if { ([istarget *-*-coff*] && ![istarget m88*-*-*] && ![istarget *arm*-*-coff] && ![istarget thumb*-*-coff] && ![istarget xscale-*-coff] && ![istarget *c54x*-*-coff]) \
+if { ([istarget *-*-coff*] && ![istarget m88*-*-*] && ![istarget *arm*-*-coff] && ![istarget thumb*-*-coff] && ![istarget xscale-*-coff] && ![istarget *c4x*-*-coff] && ![istarget *c54x*-*-coff]) \
||([istarget *-*-pe*] && ![istarget arm*-*-pe*] && ![istarget thumb*-*-pe*]) \
|| [istarget a29k-*-udi*] \
|| [istarget a29k-*-ebmon*] \
@@ -158,6 +161,7 @@ proc test_cond {} {
# again, p2align doesn't work on c54x target
case $target_triplet in {
{ hppa*-*-* } { }
+ { *c4x*-*-* } { }
{ *c54x*-*-* } { }
default {
test_cond
diff --git a/gas/testsuite/gas/macros/macros.exp b/gas/testsuite/gas/macros/macros.exp
index b90cd96..313f612 100644
--- a/gas/testsuite/gas/macros/macros.exp
+++ b/gas/testsuite/gas/macros/macros.exp
@@ -4,13 +4,13 @@ if { ![istarget hppa*-*-*] || [istarget *-*-linux*] } {
run_dump_test test1
}
-if ![istarget *c54x*-*-*] {
+if { ![istarget *c54x*-*-*] && ![istarget *c4x*-*-*] } {
run_dump_test test2
}
run_dump_test test3
-if ![istarget *c54x*-*-*] {
+if { ![istarget *c54x*-*-*] && ![istarget *c4x*-*-*] } {
run_dump_test irp
run_dump_test rept
}
@@ -20,13 +20,14 @@ gas_test_error "err.s" "" "macro infinite recursion"
case $target_triplet in {
{ hppa*-*-* } { if [istarget *-*-linux*] { run_dump_test semi } }
+ { *c4x*-*-* } { }
{ *c54x*-*-* } { }
default {
run_dump_test semi
}
}
-if { ![istarget hppa*-*-*] || [istarget *-*-linux*]} {
+if { ![istarget hppa*-*-*] || [istarget *-*-linux*] } {
# FIXME: Due to macro mishandling of ONLY_STANDARD_ESCAPES.
setup_xfail "avr-*" "cris-*"
@@ -36,6 +37,6 @@ if { ![istarget hppa*-*-*] || [istarget *-*-linux*]} {
setup_xfail "rs6000-*-*"
# FIXME: Due to difference in what "consecutive octets" means.
- setup_xfail "*c54x*-*"
+ setup_xfail "*c4x*-*-*" "*c54x*-*"
run_dump_test strings
}
diff --git a/gas/testsuite/gas/tic4x/addressing.s b/gas/testsuite/gas/tic4x/addressing.s
new file mode 100644
index 0000000..fa09513
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/addressing.s
@@ -0,0 +1,371 @@
+ ;;
+ ;; test all addressing modes and register constraints
+ ;; (types/classes is read from include/opcodes/tic4x.h)
+ ;;
+ .text
+start:
+
+ ;;
+ ;; Type B - infix condition branch
+ ;;
+Type_BI:bu Type_BI ; Unconditional branch (00000)
+ bc Type_BI ; Carry branch (00001)
+ blo Type_BI ; Lower than branch (00001)
+ bls Type_BI ; Lower than or same branch (00010)
+ bhi Type_BI ; Higher than branch (00011)
+ bhs Type_BI ; Higher than or same branch (00100)
+ bnc Type_BI ; No carry branch (00100)
+ beq Type_BI ; Equal to branch (00101)
+ bz Type_BI ; Zero branch (00101)
+ bne Type_BI ; Not equal to branch (00110)
+ bnz Type_BI ; Not zero branch (00110)
+ blt Type_BI ; Less than branch (00111)
+ bn Type_BI ; Negative branch (00111)
+ ble Type_BI ; Less than or equal to branch (01000)
+ bgt Type_BI ; Greater than branch (01001)
+ bp Type_BI ; Positive branch (01001)
+ bge Type_BI ; Greater than or equal branch (01010)
+ bnn Type_BI ; Nonnegative branch (01010)
+ bnv Type_BI ; No overflow branch (01000)
+ bv Type_BI ; Overflow branch (01101)
+ bnuf Type_BI ; No underflow branch (01110)
+ buf Type_BI ; Underflow branch (01111)
+ bnlv Type_BI ; No latched overflow branch (10000)
+ blv Type_BI ; Latched overflow branch (10001)
+ bnluf Type_BI ; No latched FP underflow branch (10010)
+ bluf Type_BI ; Latched FP underflow branch (10011)
+ bzuf Type_BI ; Zero or FP underflow branch (10100)
+ b Type_BI ; Unconditional branch (00000)
+
+ ;;
+ ;; Type C - infix condition load
+ ;;
+Type_CI:ldiu R0,R0 ; Unconditional load (00000)
+ ldic R0,R0 ; Carry load (00001)
+ ldilo R0,R0 ; Lower than load (00001)
+ ldils R0,R0 ; Lower than or same load (00010)
+ ldihi R0,R0 ; Higher than load (00011)
+ ldihs R0,R0 ; Higher than or same load (00100)
+ ldinc R0,R0 ; No carry load (00100)
+ ldieq R0,R0 ; Equal to load (00101)
+ ldiz R0,R0 ; Zero load (00101)
+ ldine R0,R0 ; Not equal to load (00110)
+ ldinz R0,R0 ; Not zero load (00110)
+ ldil R0,R0 ; Less than load (00111)
+ ldin R0,R0 ; Negative load (00111)
+ ldile R0,R0 ; Less than or equal to load (01000)
+ ldigt R0,R0 ; Greater than load (01001)
+ ldip R0,R0 ; Positive load (01001)
+ ldige R0,R0 ; Greater than or equal load (01010)
+ ldinn R0,R0 ; Nonnegative load (01010)
+ ldinv R0,R0 ; No overflow load (01000)
+ ldiv R0,R0 ; Overflow load (01101)
+ ldinuf R0,R0 ; No underflow load (01110)
+ ldiuf R0,R0 ; Underflow load (01111)
+ ldinlv R0,R0 ; No latched overflow load (10000)
+ ldilv R0,R0 ; Latched overflow load (10001)
+ ldinluf R0,R0 ; No latched FP underflow load (10010)
+ ldiluf R0,R0 ; Latched FP underflow load (10011)
+ ldizuf R0,R0 ; Zero or FP underflow load (10100)
+
+ ;;
+ ;; Type * - Indirect (full)
+ ;;
+Type_ind:
+ ldi *AR0,R0 ; Indirect addressing (G=10)
+ ldi *+AR0(5),R0 ; with predisplacement add
+ ldi *-AR0(5),R0 ; with predisplacement subtract
+ ldi *++AR0(5),R0 ; with predisplacement add and modify
+ ldi *--AR0(5),R0 ; with predisplacement subtract and modify
+ ldi *AR0++(5),R0 ; with postdisplacement add and modify
+ ldi *AR0--(5),R0 ; with postdisplacement subtract and modify
+ ldi *AR0++(5)%,R0 ; with postdisplacement add and circular modify
+ ldi *AR0--(5)%,R0 ; with postdisplacement subtract and circular modify
+ ldi *+AR0(IR0),R0 ; with predisplacement add
+ ldi *-AR0(IR0),R0 ; with predisplacement subtract
+ ldi *++AR0(IR0),R0 ; with predisplacement add and modify
+ ldi *--AR0(IR0),R0 ; with predisplacement subtract and modify
+ ldi *AR0++(IR0),R0 ; with postdisplacement add and modify
+ ldi *AR0--(IR0),R0 ; with postdisplacement subtract and modify
+ ldi *AR0++(IR0)%,R0 ; with postdisplacement add and circular modify
+ ldi *AR0--(IR0)%,R0 ; with postdisplacement subtract and circular modify
+ ldi *AR0++(IR0)B,R0 ; with postincrement add and bit-reversed modify
+ ldi *AR0++,R0 ; Same as *AR0++(1)
+
+ ;;
+ ;; Type # - Direct for ldp
+ ;;
+Type_ldp:
+ ldp 12
+ ldp @start
+ ldp start
+
+ ;;
+ ;; Type @ - Direct
+ ;;
+Type_dir:
+ ldi @start,R0
+ ldi start,R0
+ ldi @16,R0
+ ldi @65535,R0
+
+ ;;
+ ;; Type A - Address register
+ ;;
+Type_A: dbc AR0,R0
+ dbc AR2,R0
+ dbc AR7,R0
+
+ ;;
+ ;; Type B - Unsigned integer (PC)
+ ;;
+Type_B: br start
+ br 0x809800
+
+ ;;
+ ;; Type C - Indirect
+ ;;
+ .ifdef TEST_C4X
+Type_C: addc3 *+AR0(5),R0,R0
+ .endif
+
+ ;;
+ ;; Type E - Register (all)
+ ;;
+Type_E: andn3 R0,R0,R0
+ andn3 AR0,R0,R0
+ addc3 DP,R0,R0
+ andn3 R7,R0,R0
+
+ ;;
+ ;; Type e - Register (0-11)
+ ;;
+Type_ee:subf3 R7,R0,R0
+ addf3 R0,R0,R0
+ addf3 R7,R0,R0
+ cmpf3 R7,R0
+ .ifdef TEST_C4X
+ addf3 R11,R0,R0
+ .endif
+
+ ;;
+ ;; Type F - Short float immediate
+ ;;
+Type_F: ldf 0,R0
+ ldf 3.5,R0
+ ldf -3.5,R0
+ ldf 0e-3.5e-1,R0
+
+ ;;
+ ;; Type G - Register (all)
+ ;;
+Type_G: andn3 R0,AR0,R0
+ addc3 R0,DP,R0
+ addc3 R0,R0,R0
+ andn3 R0,R7,R0
+
+ ;;
+ ;; Type g - Register (0-11)
+ ;;
+Type_gg:subf3 R0,R7,R0
+ addf3 R0,R0,R0
+ addf3 R0,R7,R0
+ cmpf3 R0,R7
+ .ifdef TEST_C4X
+ addf3 R0,R11,R0
+ .endif
+
+ ;;
+ ;; Type H - Register (0-7)
+ ;;
+Type_H: stf R0,*AR0 &|| stf R0,*AR0
+ stf R0,*AR0 &|| stf R2,*AR0
+ stf R0,*AR0 &|| stf R7,*AR0
+
+ ;;
+ ;; Type I - Indirect
+ ;;
+Type_I: addf3 *AR0,R0,R0 ; Indirect addressing (G=10)
+ addf3 *+AR0(1),R0,R0 ; with predisplacement add
+ addf3 *-AR0(1),R0,R0 ; with predisplacement subtract
+ addf3 *++AR0(1),R0,R0 ; with predisplacement add and modify
+ addf3 *--AR0(1),R0,R0 ; with predisplacement subtract and modify
+ addf3 *AR0++(1),R0,R0 ; with postdisplacement add and modify
+ addf3 *AR0--(1),R0,R0 ; with postdisplacement subtract and modify
+ addf3 *AR0++(1)%,R0,R0; with postdisplacement add and circular modify
+ addf3 *AR0--(1)%,R0,R0; with postdisplacement subtract and circular modify
+ addf3 *+AR0(IR0),R0,R0; with predisplacement add
+ addf3 *-AR0(IR0),R0,R0; with predisplacement subtract
+ addf3 *++AR0(IR0),R0,R0; with predisplacement add and modify
+ addf3 *--AR0(IR0),R0,R0; with predisplacement subtract and modify
+ addf3 *AR0++(IR0),R0,R0; with postdisplacement add and modify
+ addf3 *AR0--(IR0),R0,R0; with postdisplacement subtract and modify
+ addf3 *AR0++(IR0)%,R0,R0; with postdisplacement add and circular modify
+ addf3 *AR0--(IR0)%,R0,R0; with postdisplacement subtract and circular modify
+ addf3 *AR0++(IR0)B,R0,R0; with postincrement add and bit-reversed modify
+ addf3 *AR0++,R0,R0 ; Same as *AR0++(1)
+
+ ;;
+ ;; Type J - Indirect
+ ;;
+Type_J: addf3 R0,*AR0,R0 ; Indirect addressing (G=10)
+ addf3 R0,*+AR0(1),R0 ; with predisplacement add
+ addf3 R0,*-AR0(1),R0 ; with predisplacement subtract
+ addf3 R0,*++AR0(1),R0 ; with predisplacement add and modify
+ addf3 R0,*--AR0(1),R0 ; with predisplacement subtract and modify
+ addf3 R0,*AR0++(1),R0 ; with postdisplacement add and modify
+ addf3 R0,*AR0--(1),R0 ; with postdisplacement subtract and modify
+ addf3 R0,*AR0++(1)%,R0; with postdisplacement add and circular modify
+ addf3 R0,*AR0--(1)%,R0; with postdisplacement subtract and circular modify
+ addf3 R0,*+AR0(IR0),R0; with predisplacement add
+ addf3 R0,*-AR0(IR0),R0; with predisplacement subtract
+ addf3 R0,*++AR0(IR0),R0; with predisplacement add and modify
+ addf3 R0,*--AR0(IR0),R0; with predisplacement subtract and modify
+ addf3 R0,*AR0++(IR0),R0; with postdisplacement add and modify
+ addf3 R0,*AR0--(IR0),R0; with postdisplacement subtract and modify
+ addf3 R0,*AR0++(IR0)%,R0; with postdisplacement add and circular modify
+ addf3 R0,*AR0--(IR0)%,R0; with postdisplacement subtract and circular modify
+ addf3 R0,*AR0++(IR0)B,R0; with postincrement add and bit-reversed modify
+ addf3 R0,*AR0++,R0 ; Same as *AR0++(1)
+
+ ;;
+ ;; Type K - Register (0-7)
+ ;;
+Type_K: ldf *AR0,R0 &|| ldf *AR0,R0
+ ldf *AR0,R0 &|| ldf *AR0,R2
+ ldf *AR0,R0 &|| ldf *AR0,R7
+
+ ;;
+ ;; Type L - Register (0-7)
+ ;;
+Type_L: stf R0,*AR0 &|| stf R0,*AR0
+ stf R2,*AR0 &|| stf R0,*AR0
+ stf R7,*AR0 &|| stf R0,*AR0
+
+ ;;
+ ;; Type M - Register (2-3)
+ ;;
+Type_M: mpyf3 *AR0,*AR0,R0 &|| addf3 R0,R0,R2
+ mpyf3 *AR0,*AR0,R0 &|| addf3 R0,R0,R3
+
+ ;;
+ ;; Type N - Register (0-1)
+ ;;
+Type_N: mpyf3 *AR0,*AR0,R0 &|| addf3 R0,R0,R2
+ mpyf3 *AR0,*AR0,R1 &|| addf3 R0,R0,R2
+
+ ;;
+ ;; Type O - Indirect
+ ;;
+ .ifdef TEST_C4X
+Type_O: addc3 *+AR0(5),*+AR0(5),R0
+ .endif
+
+ ;;
+ ;; Type P - Displacement (PC rel)
+ ;;
+Type_P: callc start
+ callc 1
+
+ ;;
+ ;; Type Q - Register (all)
+ ;;
+Type_Q: ldi R0,R0
+ ldi AR0,R0
+ ldi DP,R0
+ ldi SP,R0
+
+ ;;
+ ;; Type q - Register (0-11)
+ ;;
+Type_qq:fix R0,R0
+ fix R7,R0
+ .ifdef TEST_C4X
+ fix R11,R0
+ absf R11,R0
+ .endif
+
+ ;;
+ ;; Type R - Register (all)
+ ;;
+Type_R: ldi R0,R0
+ ldi R0,AR0
+ ldi R0,DP
+ ldi R0,SP
+
+ ;;
+ ;; Type r - Register (0-11)
+ ;;
+Type_rr:ldf R0,R0
+ ldf R0,R7
+ .ifdef TEST_C4X
+ ldf R0,R11
+ .endif
+
+ ;;
+ ;; Type S - Signed immediate
+ ;;
+Type_S: ldi 0,R0
+ ldi -123,R0
+ ldi 6543,R0
+ ldi -32768, R0
+
+ ;;
+ ;; Type T - Integer
+ ;;
+ .ifdef TEST_C4X
+Type_T: stik 0,*AR0
+ stik 12,*AR0
+ stik -5,*AR0
+ .endif
+
+ ;;
+ ;; Type U - Unsigned integer
+ ;;
+Type_U: and 0,R0
+ and 256,R0
+ and 65535,R0
+
+ ;;
+ ;; Type V - Vector
+ ;;
+Type_V: trapu 12
+ trapu 0
+ trapu 31
+ .ifdef TEST_C4X
+ trapu 511
+ .endif
+
+ ;;
+ ;; Type W - Short int
+ ;;
+ .ifdef TEST_C4X
+Type_W: addc3 -3,R0,R0
+ addc3 5,R0,R0
+ .endif
+
+ ;;
+ ;; Type X - Expansion register
+ ;;
+ .ifdef TEST_C4X
+Type_X: ldep IVTP,R0
+ ldep TVTP,R0
+ .endif
+
+ ;;
+ ;; Type Y - Address register
+ ;;
+ .ifdef TEST_C4X
+Type_Y: lda R0,AR0
+ lda R0,DP
+ lda R0,SP
+ lda R0,IR0
+ .endif
+
+ ;;
+ ;; Type Z - Expansion register
+ ;;
+ .ifdef TEST_C4X
+Type_Z: ldpe R0,IVTP
+ ldpe R0,TVTP
+ .endif
diff --git a/gas/testsuite/gas/tic4x/addressing_c3x.d b/gas/testsuite/gas/tic4x/addressing_c3x.d
new file mode 100644
index 0000000..cd1c3ea
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/addressing_c3x.d
@@ -0,0 +1,243 @@
+#as: -m30 --defsym TEST_C3X=1
+#objdump: -d -z
+#name: c3x addressing modes
+#source: addressing.s
+
+.*: +file format .*c4x.*
+
+Disassembly of section .text:
+
+00000000 <Type_BI>:
+ 0: 6a00ffff.*
+ 1: 6a01fffe.*
+ 2: 6a01fffd.*
+ 3: 6a02fffc.*
+ 4: 6a03fffb.*
+ 5: 6a04fffa.*
+ 6: 6a04fff9.*
+ 7: 6a05fff8.*
+ 8: 6a05fff7.*
+ 9: 6a06fff6.*
+ a: 6a06fff5.*
+ b: 6a07fff4.*
+ c: 6a07fff3.*
+ d: 6a08fff2.*
+ e: 6a09fff1.*
+ f: 6a09fff0.*
+ 10: 6a0affef.*
+ 11: 6a0affee.*
+ 12: 6a0cffed.*
+ 13: 6a0dffec.*
+ 14: 6a0effeb.*
+ 15: 6a0fffea.*
+ 16: 6a10ffe9.*
+ 17: 6a11ffe8.*
+ 18: 6a12ffe7.*
+ 19: 6a13ffe6.*
+ 1a: 6a14ffe5.*
+ 1b: 6a00ffe4.*
+
+0000001c <Type_CI>:
+ 1c: 50000000.*
+ 1d: 50800000.*
+ 1e: 50800000.*
+ 1f: 51000000.*
+ 20: 51800000.*
+ 21: 52000000.*
+ 22: 52000000.*
+ 23: 52800000.*
+ 24: 52800000.*
+ 25: 53000000.*
+ 26: 53000000.*
+ 27: 53800000.*
+ 28: 53800000.*
+ 29: 54000000.*
+ 2a: 54800000.*
+ 2b: 54800000.*
+ 2c: 55000000.*
+ 2d: 55000000.*
+ 2e: 56000000.*
+ 2f: 56800000.*
+ 30: 57000000.*
+ 31: 57800000.*
+ 32: 58000000.*
+ 33: 58800000.*
+ 34: 59000000.*
+ 35: 59800000.*
+ 36: 5a000000.*
+
+00000037 <Type_ind>:
+ 37: 0840c000.*
+ 38: 08400005.*
+ 39: 08400805.*
+ 3a: 08401005.*
+ 3b: 08401805.*
+ 3c: 08402005.*
+ 3d: 08402805.*
+ 3e: 08403005.*
+ 3f: 08403805.*
+ 40: 08404000.*
+ 41: 08404800.*
+ 42: 08405000.*
+ 43: 08405800.*
+ 44: 08406000.*
+ 45: 08406800.*
+ 46: 08407000.*
+ 47: 08407800.*
+ 48: 0840c800.*
+ 49: 08402001.*
+
+0000004a <Type_ldp>:
+ 4a: 5070000c.*
+ 4b: 50700000.*
+ 4c: 50700000.*
+
+0000004d <Type_dir>:
+ 4d: 08200000.*
+ 4e: 08200000.*
+ 4f: 08200010.*
+ 50: 0820ffff.*
+
+00000051 <Type_A>:
+ 51: 6c010000.*
+ 52: 6c810000.*
+ 53: 6dc10000.*
+
+00000054 <Type_B>:
+ 54: 60000000.*
+ 55: 60809800.*
+
+00000056 <Type_E>:
+ 56: 22000000.*
+ 57: 22000008.*
+ 58: 20000010.*
+ 59: 22000007.*
+
+0000005a <Type_ee>:
+ 5a: 26800007.*
+ 5b: 20800000.*
+ 5c: 20800007.*
+ 5d: 23000007.*
+
+0000005e <Type_F>:
+ 5e: 07608000.*
+ 5f: 07601600.*
+ 60: 07601a00.*
+ 61: 0760eccd.*
+
+00000062 <Type_G>:
+ 62: 22000800.*
+ 63: 20001000.*
+ 64: 20000000.*
+ 65: 22000700.*
+
+00000066 <Type_gg>:
+ 66: 26800700.*
+ 67: 20800000.*
+ 68: 20800700.*
+ 69: 23000700.*
+
+0000006a <Type_H>:
+ 6a: c000c0c0.*
+ 6b: c002c0c0.*
+ 6c: c007c0c0.*
+
+0000006d <Type_I>:
+ 6d: 20c000c0.*
+ 6e: 20c00000.*
+ 6f: 20c00008.*
+ 70: 20c00010.*
+ 71: 20c00018.*
+ 72: 20c00020.*
+ 73: 20c00028.*
+ 74: 20c00030.*
+ 75: 20c00038.*
+ 76: 20c00040.*
+ 77: 20c00048.*
+ 78: 20c00050.*
+ 79: 20c00058.*
+ 7a: 20c00060.*
+ 7b: 20c00068.*
+ 7c: 20c00070.*
+ 7d: 20c00078.*
+ 7e: 20c000c8.*
+ 7f: 20c00020.*
+
+00000080 <Type_J>:
+ 80: 20a0c000.*
+ 81: 20a00000.*
+ 82: 20a00800.*
+ 83: 20a01000.*
+ 84: 20a01800.*
+ 85: 20a02000.*
+ 86: 20a02800.*
+ 87: 20a03000.*
+ 88: 20a03800.*
+ 89: 20a04000.*
+ 8a: 20a04800.*
+ 8b: 20a05000.*
+ 8c: 20a05800.*
+ 8d: 20a06000.*
+ 8e: 20a06800.*
+ 8f: 20a07000.*
+ 90: 20a07800.*
+ 91: 20a0c800.*
+ 92: 20a02000.*
+
+00000093 <Type_K>:
+ 93: c400c0c0.*
+ 94: c410c0c0.*
+ 95: c438c0c0.*
+
+00000096 <Type_L>:
+ 96: c000c0c0.*
+ 97: c080c0c0.*
+ 98: c1c0c0c0.*
+
+00000099 <Type_M>:
+ 99: 8000c0c0.*
+ 9a: 8040c0c0.*
+
+0000009b <Type_N>:
+ 9b: 8000c0c0.*
+ 9c: 8080c0c0.*
+
+0000009d <Type_P>:
+ 9d: 7201ff62.*
+ 9e: 72010001.*
+
+0000009f <Type_Q>:
+ 9f: 08000000.*
+ a0: 08000008.*
+ a1: 08000010.*
+ a2: 08000014.*
+
+000000a3 <Type_qq>:
+ a3: 05000000.*
+ a4: 05000007.*
+
+000000a5 <Type_R>:
+ a5: 08000000.*
+ a6: 08080000.*
+ a7: 08100000.*
+ a8: 08140000.*
+
+000000a9 <Type_rr>:
+ a9: 07000000.*
+ aa: 07070000.*
+
+000000ab <Type_S>:
+ ab: 08600000.*
+ ac: 0860ff85.*
+ ad: 0860198f.*
+ ae: 08608000.*
+
+000000af <Type_U>:
+ af: 02e00000.*
+ b0: 02e00100.*
+ b1: 02e0ffff.*
+
+000000b2 <Type_V>:
+ b2: 7400002c.*
+ b3: 74000020.*
+ b4: 7400003f.*
diff --git a/gas/testsuite/gas/tic4x/addressing_c4x.d b/gas/testsuite/gas/tic4x/addressing_c4x.d
new file mode 100644
index 0000000..0f1aff7
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/addressing_c4x.d
@@ -0,0 +1,278 @@
+#as: -m40 --defsym TEST_C4X=1
+#objdump: -d -z
+#name: c4x addressing modes
+#source: addressing.s
+
+.*: +file format .*c4x.*
+
+Disassembly of section .text:
+
+00000000 <Type_BI>:
+ 0: 6a00ffff.*
+ 1: 6a01fffe.*
+ 2: 6a01fffd.*
+ 3: 6a02fffc.*
+ 4: 6a03fffb.*
+ 5: 6a04fffa.*
+ 6: 6a04fff9.*
+ 7: 6a05fff8.*
+ 8: 6a05fff7.*
+ 9: 6a06fff6.*
+ a: 6a06fff5.*
+ b: 6a07fff4.*
+ c: 6a07fff3.*
+ d: 6a08fff2.*
+ e: 6a09fff1.*
+ f: 6a09fff0.*
+ 10: 6a0affef.*
+ 11: 6a0affee.*
+ 12: 6a0cffed.*
+ 13: 6a0dffec.*
+ 14: 6a0effeb.*
+ 15: 6a0fffea.*
+ 16: 6a10ffe9.*
+ 17: 6a11ffe8.*
+ 18: 6a12ffe7.*
+ 19: 6a13ffe6.*
+ 1a: 6a14ffe5.*
+ 1b: 6a00ffe4.*
+
+0000001c <Type_CI>:
+ 1c: 50000000.*
+ 1d: 50800000.*
+ 1e: 50800000.*
+ 1f: 51000000.*
+ 20: 51800000.*
+ 21: 52000000.*
+ 22: 52000000.*
+ 23: 52800000.*
+ 24: 52800000.*
+ 25: 53000000.*
+ 26: 53000000.*
+ 27: 53800000.*
+ 28: 53800000.*
+ 29: 54000000.*
+ 2a: 54800000.*
+ 2b: 54800000.*
+ 2c: 55000000.*
+ 2d: 55000000.*
+ 2e: 56000000.*
+ 2f: 56800000.*
+ 30: 57000000.*
+ 31: 57800000.*
+ 32: 58000000.*
+ 33: 58800000.*
+ 34: 59000000.*
+ 35: 59800000.*
+ 36: 5a000000.*
+
+00000037 <Type_ind>:
+ 37: 0840c000.*
+ 38: 08400005.*
+ 39: 08400805.*
+ 3a: 08401005.*
+ 3b: 08401805.*
+ 3c: 08402005.*
+ 3d: 08402805.*
+ 3e: 08403005.*
+ 3f: 08403805.*
+ 40: 08404000.*
+ 41: 08404800.*
+ 42: 08405000.*
+ 43: 08405800.*
+ 44: 08406000.*
+ 45: 08406800.*
+ 46: 08407000.*
+ 47: 08407800.*
+ 48: 0840c800.*
+ 49: 08402001.*
+
+0000004a <Type_ldp>:
+ 4a: 5070000c.*
+ 4b: 50700000.*
+ 4c: 50700000.*
+
+0000004d <Type_dir>:
+ 4d: 08200000.*
+ 4e: 08200000.*
+ 4f: 08200010.*
+ 50: 0820ffff.*
+
+00000051 <Type_A>:
+ 51: 6c010000.*
+ 52: 6c810000.*
+ 53: 6dc10000.*
+
+00000054 <Type_B>:
+ 54: 60ffffab.*
+ 55: 60809800.*
+
+00000056 <Type_C>:
+ 56: 30200028.*
+
+00000057 <Type_E>:
+ 57: 22000000.*
+ 58: 22000008.*
+ 59: 20000010.*
+ 5a: 22000007.*
+
+0000005b <Type_ee>:
+ 5b: 26800007.*
+ 5c: 20800000.*
+ 5d: 20800007.*
+ 5e: 23000007.*
+ 5f: 2080001f.*
+
+00000060 <Type_F>:
+ 60: 07608000.*
+ 61: 07601600.*
+ 62: 07601a00.*
+ 63: 0760eccd.*
+
+00000064 <Type_G>:
+ 64: 22000800.*
+ 65: 20001000.*
+ 66: 20000000.*
+ 67: 22000700.*
+
+00000068 <Type_gg>:
+ 68: 26800700.*
+ 69: 20800000.*
+ 6a: 20800700.*
+ 6b: 23000700.*
+ 6c: 20801f00.*
+
+0000006d <Type_H>:
+ 6d: c000c0c0.*
+ 6e: c002c0c0.*
+ 6f: c007c0c0.*
+
+00000070 <Type_I>:
+ 70: 20c000c0.*
+ 71: 20c00000.*
+ 72: 20c00008.*
+ 73: 20c00010.*
+ 74: 20c00018.*
+ 75: 20c00020.*
+ 76: 20c00028.*
+ 77: 20c00030.*
+ 78: 20c00038.*
+ 79: 20c00040.*
+ 7a: 20c00048.*
+ 7b: 20c00050.*
+ 7c: 20c00058.*
+ 7d: 20c00060.*
+ 7e: 20c00068.*
+ 7f: 20c00070.*
+ 80: 20c00078.*
+ 81: 20c000c8.*
+ 82: 20c00020.*
+
+00000083 <Type_J>:
+ 83: 20a0c000.*
+ 84: 20a00000.*
+ 85: 20a00800.*
+ 86: 20a01000.*
+ 87: 20a01800.*
+ 88: 20a02000.*
+ 89: 20a02800.*
+ 8a: 20a03000.*
+ 8b: 20a03800.*
+ 8c: 20a04000.*
+ 8d: 20a04800.*
+ 8e: 20a05000.*
+ 8f: 20a05800.*
+ 90: 20a06000.*
+ 91: 20a06800.*
+ 92: 20a07000.*
+ 93: 20a07800.*
+ 94: 20a0c800.*
+ 95: 20a02000.*
+
+00000096 <Type_K>:
+ 96: c400c0c0.*
+ 97: c410c0c0.*
+ 98: c438c0c0.*
+
+00000099 <Type_L>:
+ 99: c000c0c0.*
+ 9a: c080c0c0.*
+ 9b: c1c0c0c0.*
+
+0000009c <Type_M>:
+ 9c: 8000c0c0.*
+ 9d: 8040c0c0.*
+
+0000009e <Type_N>:
+ 9e: 8000c0c0.*
+ 9f: 8080c0c0.*
+
+000000a0 <Type_O>:
+ a0: 30602828.*
+
+000000a1 <Type_P>:
+ a1: 7201ff5e.*
+ a2: 72010001.*
+
+000000a3 <Type_Q>:
+ a3: 08000000.*
+ a4: 08000008.*
+ a5: 08000010.*
+ a6: 08000014.*
+
+000000a7 <Type_qq>:
+ a7: 05000000.*
+ a8: 05000007.*
+ a9: 0500001f.*
+ aa: 0000001f.*
+
+000000ab <Type_R>:
+ ab: 08000000.*
+ ac: 08080000.*
+ ad: 08100000.*
+ ae: 08140000.*
+
+000000af <Type_rr>:
+ af: 07000000.*
+ b0: 07070000.*
+ b1: 071f0000.*
+
+000000b2 <Type_S>:
+ b2: 08600000.*
+ b3: 0860ff85.*
+ b4: 0860198f.*
+ b5: 08608000.*
+
+000000b6 <Type_T>:
+ b6: 1560c000.*
+ b7: 156cc000.*
+ b8: 157bc000.*
+
+000000b9 <Type_U>:
+ b9: 02e00000.*
+ ba: 02e00100.*
+ bb: 02e0ffff.*
+
+000000bc <Type_V>:
+ bc: 7400000c.*
+ bd: 74000000.*
+ be: 7400001f.*
+ bf: 740001ff.*
+
+000000c0 <Type_W>:
+ c0: 300000fd.*
+ c1: 30000005.*
+
+000000c2 <Type_X>:
+ c2: 76000000.*
+ c3: 76000001.*
+
+000000c4 <Type_Y>:
+ c4: 1e880000.*
+ c5: 1e900000.*
+ c6: 1e940000.*
+ c7: 1e910000.*
+
+000000c8 <Type_Z>:
+ c8: 76800000.*
+ c9: 76810000.*
diff --git a/gas/testsuite/gas/tic4x/allopcodes.S b/gas/testsuite/gas/tic4x/allopcodes.S
new file mode 100644
index 0000000..ec5746f
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/allopcodes.S
@@ -0,0 +1,206 @@
+;;;
+;;; Test all opcodes and argument permuation
+;;; To make our job a lot simpler, we define a couple of
+;;; insn classes, that we use to generate the proper
+;;; test output.
+;;;
+;;; To rebuild this file you must use
+;;; ./rebuild.sh
+;;;
+#include "opclasses.h"
+
+ .text
+start: B_CLASS( absf )
+ P_CLASS( absf, stf )
+ A_CLASS( absi )
+ P_CLASS( absi, sti )
+ A_CLASS( addc )
+ TC_CLASS( addc )
+ B_CLASS( addf )
+ SC_CLASS( addf )
+ QC_CLASS( addf, stf )
+ A_CLASS( addi )
+ TC_CLASS( addi )
+ QC_CLASS( addi, sti )
+ AU_CLASS( and )
+ TC_CLASS( and )
+ QC_CLASS( and, sti )
+ AU_CLASS( andn )
+ T_CLASS( andn )
+ A_CLASS( ash )
+ T_CLASS( ash )
+ Q_CLASS( ash, sti )
+ J_CLASS( bC, b )
+ J_CLASS( bCd, bd )
+br_I: br start
+brd_I: brd start
+call_I: call start
+call_JS: callc R0
+ callc start
+ B_CLASS( cmpf )
+ S2_CLASS( cmpf )
+ A_CLASS( cmpi )
+ T2_CLASS( cmpi )
+ D_CLASS( dbC, db )
+ D_CLASS( dbCd, dbd )
+ AF_CLASS( fix )
+ P_CLASS( fix, sti )
+ BI_CLASS( float )
+ P_CLASS( float, stf )
+iack_Z: iack @start
+ iack *+AR0(1)
+idle_Z: idle
+ .ifdef TEST_IDLE2
+idle2_Z: idle2
+ .endif
+ B_CLASS( lde )
+ B_CLASS( ldf )
+ LL_CLASS( ldf )
+ P_CLASS( ldf, stf )
+ BB_CLASS( ldfC )
+ B6_CLASS( ldfi )
+ A_CLASS( ldi )
+ LL_CLASS( ldi )
+ P_CLASS( ldi, sti )
+ AB_CLASS( ldiC )
+ A6_CLASS( ldii )
+ldp_Z: ldp start
+ B_CLASS( ldm )
+ .ifdef TEST_LPWR
+lopower_Z: lopower
+ .endif
+ A_CLASS( lsh )
+ T_CLASS( lsh )
+ Q_CLASS( lsh, sti )
+ .ifdef TEST_LPWR
+maxspeed_Z: maxspeed
+ .endif
+ B_CLASS( mpyf )
+ SC_CLASS( mpyf )
+ M_CLASS( mpyf, addf )
+ QC_CLASS( mpyf, stf )
+ M_CLASS( mpyf, subf )
+ A_CLASS( mpyi )
+ TC_CLASS( mpyi )
+ M_CLASS( mpyi, addi )
+ QC_CLASS( mpyi, sti )
+ M_CLASS( mpyi, subi )
+ A_CLASS( negb )
+ B_CLASS( negf )
+ P_CLASS( negf, stf )
+ A_CLASS( negi )
+ P_CLASS( negi, sti )
+ A2_CLASS( nop )
+ B_CLASS( norm )
+ AU_CLASS( not )
+ P_CLASS( not, sti )
+ AU_CLASS( or )
+ TC_CLASS( or )
+ QC_CLASS( or, sti )
+ R_CLASS( pop )
+ RF_CLASS( popf )
+ R_CLASS( push )
+ RF_CLASS( pushf )
+reti_Z: retiC
+ reti
+rets_Z: retsC
+ rets
+ B_CLASS( rnd )
+ R_CLASS( rol )
+ R_CLASS( rolc )
+ R_CLASS( ror )
+ R_CLASS( rorc )
+rptb_I2: rptb start
+ A3_CLASS( rpts )
+sigi_Z: sigi
+ B7_CLASS( stf )
+ LS_CLASS( stf )
+ B7_CLASS( stfi )
+ A7_CLASS( sti )
+ LS_CLASS( sti )
+ A7_CLASS( stii )
+ A_CLASS( subb )
+ T_CLASS( subb )
+ A_CLASS( subc )
+ B_CLASS( subf )
+ S_CLASS( subf )
+ Q_CLASS( subf, stf )
+ A_CLASS( subi )
+ T_CLASS( subi )
+ Q_CLASS( subi, sti )
+ A_CLASS( subrb )
+ B_CLASS( subrf )
+ A_CLASS( subri )
+swi_Z: swi
+trap_Z: trapC 10
+ trap 10
+ AU_CLASS( tstb )
+ T2C_CLASS( tstb )
+ AU_CLASS( xor )
+ TC_CLASS( xor )
+ QC_CLASS( xor, sti )
+
+ .ifdef TEST_C4X
+ J_CLASS( bCaf, baf )
+ J_CLASS( bCat, bat )
+ B6_CLASS( frieee )
+ P_CLASS( frieee, stf )
+laj_I: laj start
+laj_JS: lajc R0
+ lajc start
+lat_Z: latC 10
+ A_CLASS( lb0 )
+ A_CLASS( lb1 )
+ A_CLASS( lb2 )
+ A_CLASS( lb3 )
+ AU_CLASS( lbu0 )
+ AU_CLASS( lbu1 )
+ AU_CLASS( lbu2 )
+ AU_CLASS( lbu3 )
+ AY_CLASS( lda )
+ldep_Z: ldep IVTP, AR0
+ldhi_Z: ldhi 35, R0
+ ldhi start, R0
+ldpe_Z: ldpe AR0, IVTP
+ldpk_Z: ldpk start
+ A_CLASS( lh0 )
+ A_CLASS( lh1 )
+ AU_CLASS( lhu0 )
+ AU_CLASS( lhu1 )
+ A_CLASS( lwl0 )
+ A_CLASS( lwl1 )
+ A_CLASS( lwl2 )
+ A_CLASS( lwl3 )
+ A_CLASS( lwr0 )
+ A_CLASS( lwr1 )
+ A_CLASS( lwr2 )
+ A_CLASS( lwr3 )
+ A_CLASS( mb0 )
+ A_CLASS( mb1 )
+ A_CLASS( mb2 )
+ A_CLASS( mb3 )
+ A_CLASS( mh0 )
+ A_CLASS( mh1 )
+ A_CLASS( mh2 )
+ A_CLASS( mh3 )
+ A_CLASS( mpyshi )
+ TC_CLASS( mpyshi )
+ A_CLASS( mpyuhi )
+ TC_CLASS( mpyuhi )
+ BA_CLASS( rcpf )
+retid_Z: retiCd
+ retid
+rptb2_I2: rptb AR0
+rptbd_I2: rptbd start
+ rptbd AR0
+ B_CLASS( rsqrf )
+ A6_CLASS( sigi )
+sti2_A7: sti -5, @start
+ sti -5, *+AR0(5)
+stik_Z: stik -5, @start
+ stik -5, *+AR0(5)
+ B_CLASS( toieee )
+ P_CLASS( toieee, stf )
+ .endif
+ .end
+
diff --git a/gas/testsuite/gas/tic4x/data.d b/gas/testsuite/gas/tic4x/data.d
new file mode 100644
index 0000000..75f8e7b
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/data.d
@@ -0,0 +1,93 @@
+#objdump: -dz
+#name: data tests
+
+.*: +file format .*c4x.*
+
+Disassembly of section .text:
+
+00000000 <BYTE>:
+ 0: 0000000a.*
+ 1: 000000ff.*
+ 2: 00000061.*
+ 3: 00000062.*
+ 4: 00000063.*
+ 5: 00000061.*
+
+00000006 <HWORD>:
+ 6: 0000000a.*
+ 7: 0000ffff.*
+ 8: 00000061.*
+ 9: 00000062.*
+ a: 00000063.*
+ b: 00000061.*
+
+0000000c <INT>:
+ c: 0000000a.*
+ d: 00000000.*
+ e: ffffffff.*
+ f: 00000061.*
+ 10: 00000062.*
+ 11: 00000063.*
+ 12: 00000061.*
+
+00000013 <LONG>:
+ 13: ffffabcd.*
+ 14: 00000141.*
+
+00000015 <WORD>:
+ 15: 00000c80.*
+ 16: 00000042.*
+ 17: ffffffbf.*
+ 18: 0000f410.*
+ 19: 00000041.*
+
+0000001a <STRING>:
+ 1a: 44434241.*
+ 1b: 54535251.*
+ 1c: 73756f48.*
+ 1d: 306e6f74.*
+
+0000001e <ASCII>:
+ 1e: 73696854.*
+ 1f: 20736920.*
+ 20: 65762061.*
+ 21: 6c207972.*
+ 22: 20676e6f.*
+ 23: 74786574.*
+ 24: 69685400.*
+ 25: 73692073.*
+ 26: 6f6e6120.*
+ 27: 72656874.*
+ 28: 00000000.*
+
+00000029 <ASCIZ>:
+ 29: 73696854.*
+ 2a: 20736920.*
+ 2b: 65762061.*
+ 2c: 6c207972.*
+ 2d: 20676e6f.*
+ 2e: 74786574.*
+ 2f: 73696854.*
+ 30: 20736920.*
+ 31: 746f6e61.*
+ 32: 00726568.*
+
+00000033 <BLOCK>:
+ 33: 00000000.*
+ 34: 00000000.*
+ 35: 00000000.*
+ 36: 00000000.*
+
+00000037 <SPACE>:
+ 37: 00000000.*
+ 38: 00000000.*
+ 39: 00000000.*
+ 3a: 00000000.*
+
+0000003b <ALIGN>:
+ 3b: 08000000.*
+ 3c: 0c800000.*
+ 3d: 0c800000.*
+ 3e: 0c800000.*
+ 3f: 0c800000.*
+ 40: 08000000.*
diff --git a/gas/testsuite/gas/tic4x/data.s b/gas/testsuite/gas/tic4x/data.s
new file mode 100644
index 0000000..e77835c
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/data.s
@@ -0,0 +1,14 @@
+ .text
+BYTE: .byte 10,-1,"abc",'a'
+HWORD: .hword 10,-1,"abc",'a'
+INT: .int 10,IEEE,-1,"abc",'a'
+LONG: .long 0FFFFABCDH,'A'+100h
+WORD: .word 3200,1+'A',-'A',0F410h,'A'
+STRING: .string "ABCD", 51h, 52h, 53h, 54h, "Houston", 36+12
+ASCII: .ascii "This is a very long text","This is another"
+ASCIZ: .asciz "This is a very long text","This is another"
+BLOCK: .block 4
+SPACE: .space 4
+ALIGN: ldi r0,r0
+ .align
+ ldi r0,r0
diff --git a/gas/testsuite/gas/tic4x/float.d b/gas/testsuite/gas/tic4x/float.d
new file mode 100644
index 0000000..50545bf
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/float.d
@@ -0,0 +1,82 @@
+#objdump: -d -z
+#name: flonum constants
+
+.*: +file format .*c4x.*
+
+Disassembly of section .text:
+
+00000000 <start>:
+ 0: 07608000.*
+ 1: 076012cd.*
+ 2: 07604580.*
+ 3: 0760e0a4.*
+ 4: 07604a80.*
+ 5: 0760ef5c.*
+ 6: 0760f800.*
+ 7: 07608000.*
+ 8: 07608000.*
+ 9: 0760f000.*
+ a: 0760e800.*
+ b: 076012cd.*
+ c: 0760e0a4.*
+ d: 07604a80.*
+ e: 0760ef5c.*
+
+0000000f <FLOAT>:
+ f: 80000000.*
+ 10: 00000000.*
+ 11: ff000000.*
+ 12: ff800000.*
+ 13: 53fba6af.*
+ 14: 01400000.*
+ 15: 06760000.*
+ 16: 01490fdb.*
+
+00000017 <SINGLE>:
+ 17: 80000000.*
+ 18: 00000000.*
+ 19: ff000000.*
+ 1a: ff800000.*
+ 1b: 53fba6af.*
+ 1c: 01400000.*
+ 1d: 06760000.*
+ 1e: 01490fdb.*
+
+0000001f <DOUBLE>:
+ 1f: 80000000.*
+ 20: 00000000.*
+ 21: ff000000.*
+ 22: ff800000.*
+ 23: 53fba6af.*
+ 24: 01400000.*
+ 25: 06760000.*
+ 26: 01490fdb.*
+
+00000027 <LDOUBLE>:
+ 27: 80000000.*
+ 28: 00000000.*
+ 29: 00000000.*
+ 2a: 00000000.*
+ 2b: ff000000.*
+ 2c: 00000000.*
+ 2d: ff800000.*
+ 2e: 80000000.*
+ 2f: 53fba6ae.*
+ 30: fba6ae9f.*
+ 31: 01400000.*
+ 32: 40000000.*
+ 33: 06760000.*
+ 34: 76000000.*
+ 35: 01490fda.*
+ 36: 490fdaa3.*
+
+00000037 <IEEE>:
+ 37: 00000000.*
+ 38: 3f800000.*
+ 39: 3f000000.*
+ 3a: bf800000.*
+ 3b: 00000000.*
+ 3c: e9045951.*
+ 3d: 40400000.*
+ 3e: 42f60000.*
+ 3f: 40490fdb.*
diff --git a/gas/testsuite/gas/tic4x/float.s b/gas/testsuite/gas/tic4x/float.s
new file mode 100644
index 0000000..af8d820
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/float.s
@@ -0,0 +1,28 @@
+ ;; test float numbers and constants
+ .text
+ ;; Standard GAS syntax
+start: ldf 0e0, f0
+ ldf 0e2.7, f0
+ ldf 0e2.7e1, f0
+ ldf 0e2.7e-1, f0
+ ldf 0e-2.7e1, f0
+ ldf 0e-2.7e-1, f0
+ ldf -0e1.0, f0
+
+ ;; Standard TI syntax
+ ldf 0, f0
+ ldf 0.0, f0
+ ldf 0.5, f0
+ ldf -0.5, f0
+ ldf 2.7, f0
+ ldf 2.7e-1, f0
+ ldf -2.7e1, f0
+ ldf -2.7e-1, f0
+
+FLOAT: .float 0f0, 0f1.0, 0f0.5, 0f-1.0, 0e-1.0e25, 3, 123, 0f3.141592654
+SINGLE: .single 0f0, 0f1.0, 0f0.5, 0f-1.0, 0e-1.0e25, 3, 123, 0f3.141592654
+DOUBLE: .double 0f0, 0f1.0, 0f0.5, 0f-1.0, 0e-1.0e25, 3, 123, 0f3.141592654
+LDOUBLE: .ldouble 0f0, 0f1.0, 0f0.5, 0f-1.0, 0e-1.0e25, 3, 123, 0f3.141592654
+IEEE: .ieee 0f0, 0f1.0, 0f0.5, 0f-1,0, 0e-1.0e25, 3, 123, 0f3.141592654
+
+ .end
diff --git a/gas/testsuite/gas/tic4x/opclasses.h b/gas/testsuite/gas/tic4x/opclasses.h
new file mode 100644
index 0000000..c77c41d
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/opclasses.h
@@ -0,0 +1,804 @@
+/* Opcode infix
+ B condition 16--20 U,C,Z,LO,HI, etc.
+ C condition 23--27 U,C,Z,LO,HI, etc.
+
+ Arguments
+ , required arg follows
+ ; optional arg follows
+
+ General addressing modes
+ * indirect 0--15 *+AR0(5), *++AR0(IR0)
+ # direct (for ldp only) 0--15 @start, start
+ @ direct 0--15 @start, start
+ F short float immediate 0--15 3.5, 0e-3.5e-1
+ Q register 0--15 R0, AR0, DP, SP
+ R register 16--20 R0, AR0, DP, SP
+ S short int immediate 0--15 -5, 5
+ D src and dst same reg
+
+ Three operand addressing modes
+ E register 0--7 R0, R7, R11
+ G register 8--15 R0, R7, R11
+ I indirect(short) 0--7 *+AR0(1), *+AR0(IR0)
+ J indirect(short) 8--15 *+AR0(1), *+AR0(IR0)
+ R register 16--20 R0, R7, R11
+ W short int (C4x) 0--7 -3, 5
+ C indirect(short) (C4x) 0--7 *+AR0(5)
+ O indirect(short) (C4x) 8--15 *+AR0(5)
+
+ Parallel instruction addressing modes
+ E register 0--7 R0, R7, R11
+ G register 8--15 R0, R7, R11
+ H register 18--16 R0, R7
+ I indirect(short) 0--7 *+AR0(1), *+AR0(IR0)
+ J indirect(short) 8--15 *+AR0(1), *+AR0(IR0)
+ K register 19--21 R0, R7
+ L register 22--24 R0, R7
+ M register (R2,R3) 22--22 R2, R3
+ N register (R0,R1) 23--23 R0, R1
+
+ Misc. addressing modes
+ A address register 22--24 AR0, AR7
+ B unsigned integer 0--23 @start, start (absolute on C3x, relative on C4x)
+ P displacement (PC Rel) 0--15 @start, start
+ U unsigned integer 0--15 0, 65535
+ V vector (C4x: 0--8) 0--4 25, 7
+ T integer (C4x) 16--20 -5, 12
+ Y address reg (C4x) 16--20 AR0, DP, SP, IR0
+ X expansion reg (C4x) 0--4 IVTP, TVTP
+ Z expansion reg (C4x) 16--20 IVTP, TVTP
+*/
+
+/* A: General 2-operand integer operations
+ Syntax: <i> src, dst
+ src = Register (Q), Direct (@), Indirect (*), Signed immediate (S)
+ dst = Register (R)
+ Instr: 15/8 - ABSI, ADDC, ADDI, ASH, CMPI, LDI, LSH, MPYI, NEGB, NEGI,
+ SUBB, SUBC, SUBI, SUBRB, SUBRI, C4x: LBn, LHn, LWLn, LWRn,
+ MBn, MHn, MPYSHI, MPYUHI
+*/
+#define A_CLASS(name) \
+name##_A: &\
+ name AR1, AR0 /* Q;R */ &\
+ name AR0 /* Q;R */ &\
+ name @start, AR0 /* @,R */ &\
+ name *+AR0(5), AR0 /* *,R */ &\
+ name -5, AR0 /* S,R */
+
+
+/* AB: General 2-operand integer operation with condition
+ Syntax: <i>c src, dst
+ c = Condition
+ src = Register (Q), Direct (@), Indirect (*), Signed immediate (S)
+ dst = Register (R)
+ Instr: 1/0 - LDIc
+*/
+#define AB_CLASS(name) \
+name##_AB: &\
+ name AR1, AR0 /* Q;R */ &\
+ name AR0 /* Q;R */ &\
+ name @start, AR0 /* @,R */ &\
+ name *+AR0(5), AR0 /* *,R */ &\
+ name -5, AR0 /* S,R */
+
+
+/* AU: General 2-operand unsigned integer operation
+ Syntax: <i> src, dst
+ src = Register (Q), Direct (@), Indirect (*), Unsigned immediate (U)
+ dst = Register (R)
+ Instr: 6/2 - AND, ANDN, NOT, OR, TSTB, XOR, C4x: LBUn, LHUn
+*/
+#define AU_CLASS(name) \
+name##_AU: &\
+ name AR1, AR0 /* Q;R */ &\
+ name AR0 /* Q;R */ &\
+ name @start, AR0 /* @,R */ &\
+ name *+AR0(5), AR0 /* *,R */ &\
+ name 5, AR0 /* U,R */
+
+
+/* AF: General 2-operand float to integer operation
+ Syntax: <i> src, dst
+ src = Register 0-11 (Q), Direct (@), Indirect (*), Float immediate (F)
+ dst = Register (R)
+ Instr: 1/0 - FIX
+*/
+#define AF_CLASS(name) \
+name##_AF: &\
+ name R1, R0 /* Q;R */ &\
+ name R0 /* Q;R */ &\
+ name @start, AR0 /* @,R */ &\
+ name *+AR0(5), AR0 /* *,R */ &\
+ name 3.5, AR0 /* F,R */
+
+
+/* A2: Limited 1-operand (integer) operation
+ Syntax: <i> src
+ src = Register (Q), Indirect (*), None
+ Instr: 1/0 - NOP
+*/
+#define A2_CLASS(name) \
+name##_A2: &\
+ name AR0 /* Q */ &\
+ name *+AR0(5) /* * */ &\
+ name /* */
+
+
+/* A3: General 1-operand unsigned integer operation
+ Syntax: <i> src
+ src = Register (Q), Direct (@), Indirect (*), Unsigned immediate (U)
+ Instr: 1/0 - RPTS
+*/
+#define A3_CLASS(name) \
+name##_A3: &\
+ name AR1 /* Q */ &\
+ name @start /* @ */ &\
+ name *+AR0(5) /* * */ &\
+ name 5 /* U */
+
+
+/* A6: Limited 2-operand integer operation
+ Syntax: <i> src, dst
+ src = Direct (@), Indirect (*)
+ dst = Register (R)
+ Instr: 1/1 - LDII, C4x: SIGI
+*/
+#define A6_CLASS(name) \
+name##_A6: &\
+ name @start, AR0 /* @,R */ &\
+ name *+AR0(5), AR0 /* *,R */
+
+
+/* A7: Limited 2-operand integer store operation
+ Syntax: <i> src, dst
+ src = Register (R)
+ dst = Direct (@), Indirect (*)
+ Instr: 2/0 - STI, STII
+*/
+#define A7_CLASS(name) \
+name##_A7: &\
+ name AR0, @start /* R,@ */ &\
+ name AR0, *+AR0(5) /* R,* */
+
+
+/* AY: General 2-operand signed address load operation
+ Syntax: <i> src, dst
+ src = Register (Q), Direct (@), Indirect (*), Signed immediate (S)
+ dst = Address register - ARx, IRx, DP, BK, SP (Y)
+ Instr: 0/1 - C4x: LDA
+ Note: Q and Y should *never* be the same register
+*/
+#define AY_CLASS(name) \
+name##_AY: &\
+ name AR1, AR0 /* Q,Y */ &\
+ name @start, AR0 /* @,Y */ &\
+ name *+AR0(5), AR0 /* *,Y */ &\
+ name -5, AR0 /* S,Y */
+
+
+/* B: General 2-operand float operation
+ Syntax: <i> src, dst
+ src = Register 0-11 (Q), Direct (@), Indirect (*), Float immediate (F)
+ dst = Register 0-11 (R)
+ Instr: 12/2 - ABSF, ADDF, CMPF, LDE, LDF, LDM, MPYF, NEGF, NORM, RND,
+ SUBF, SUBRF, C4x: RSQRF, TOIEEE
+*/
+#define B_CLASS(name) \
+name##_B: &\
+ name R1, R0 /* Q;R */ &\
+ name R0 /* Q;R */ &\
+ name @start, R0 /* @,R */ &\
+ name *+AR0(5), R0 /* *,R */ &\
+ name 3.5, R0 /* F,R */
+
+
+/* BA: General 2-operand integer to float operation
+ Syntax: <i> src, dst
+ src = Register (Q), Direct (@), Indirect (*), Float immediate (F)
+ dst = Register 0-11 (R)
+ Instr: 0/1 - C4x: CRCPF
+*/
+#define BA_CLASS(name) \
+name##_BA: &\
+ name AR1, R0 /* Q;R */ &\
+ name R0 /* Q;R */ &\
+ name @start, R0 /* @,R */ &\
+ name *+AR0(5), R0 /* *,R */ &\
+ name 3.5, R0 /* F,R */
+
+
+/* BB: General 2-operand conditional float operation
+ Syntax: <i>c src, dst
+ c = Condition
+ src = Register 0-11 (Q), Direct (@), Indirect (*), Float immediate (F)
+ dst = Register 0-11 (R)
+ Instr: 1/0 - LDFc
+*/
+#define BB_CLASS(name) \
+name##_BB: &\
+ name R1, R0 /* Q;R */ &\
+ name R0 /* Q;R */ &\
+ name @start, R0 /* @,R */ &\
+ name *+AR0(5), R0 /* *,R */ &\
+ name 3.5, R0 /* F,R */
+
+
+/* BI: General 2-operand integer to float operation (yet different to BA)
+ Syntax: <i> src, dst
+ src = Register (Q), Direct (@), Indirect (*), Signed immediate (S)
+ dst = Register 0-11 (R)
+ Instr: 1/0 - FLOAT
+*/
+#define BI_CLASS(name) \
+name##_BI: &\
+ name AR1, R0 /* Q;R */ &\
+ name R0 /* Q;R */ &\
+ name @start, R0 /* @,R */ &\
+ name *+AR0(5), R0 /* *,R */ &\
+ name -5, R0 /* S,R */
+
+
+/* B6: Limited 2-operand float operation
+ Syntax: <i> src, dst
+ src = Direct (@), Indirect (*)
+ dst = Register 0-11 (R)
+ Instr: 1/1 - LDFI, C4x: FRIEEE
+*/
+#define B6_CLASS(name) \
+name##_B6: &\
+ name @start, R0 /* @,R */ &\
+ name *+AR0(5), R0 /* *,R */
+
+
+/* B7: Limited 2-operand float store operation
+ Syntax: <i> src, dst
+ src = Register 0-11 (R)
+ dst = Direct (@), Indirect (*)
+ Instr: 2/0 - STF, STFI
+*/
+#define B7_CLASS(name) \
+name##_B7: &\
+ name R0, @start /* R,@ */ &\
+ name R0, *+AR0(5) /* R,* */
+
+
+/* D: Decrement and brach operations
+ Syntax: <i>c ARn, dst
+ c = condition
+ ARn = AR register 0-11 (A)
+ dst = Register (Q), PC-relative (P)
+ Instr: 2/0 - DBc, DBcD
+ Alias: <name1> <name2>
+*/
+#define D_CLASS(name1, name2) \
+name1##_D: &\
+ name1 AR0, R0 /* A,Q */ &\
+ name1 AR0, start /* A,P */ &\
+name2##_D: &\
+ name2 AR0, R0 /* A,Q */ &\
+ name2 AR0, start /* A,P */
+
+
+/* J: General conditional branch operations
+ Syntax: <i>c dst
+ c = Condition
+ dst = Register (Q), PC-relative (P)
+ Instr: 2/3 - Bc, BcD, C4x: BcAF, BcAT, LAJc
+ Alias: <name1> <name2>
+*/
+#define J_CLASS(name1, name2) \
+name1##_J: &\
+ name1 R0 /* Q */ &\
+ name1 start /* P */ &\
+name2##_J: &\
+ name2 R0 /* Q */ &\
+ name2 start /* P */
+
+
+/* LL: Load-load parallell operation
+ Syntax: <i> src2, dst2 || <i> src1, dst1
+ src1 = Indirect 0,1,IR0,IR1 (J)
+ dst1 = Register 0-7 (K)
+ src2 = Indirect 0,1,IR0,IR1 (I)
+ dst2 = Register 0-7 (L)
+ Instr: 2/0 - LDF||LDF, LDI||LDI
+ Alias: i||i, i1||i2, i2||i1
+*/
+#define LL_CLASS(name) \
+name##_LL: &\
+ name *+AR0(1), R0 &|| name *+AR1(1), R1 /* I,L|J,K */ &\
+ name##2 *+AR0(1), R0 &|| name##1 *+AR1(1), R1 /* I,L|J,K */ &\
+ name##1 *+AR1(1), R1 &|| name##2 *+AR0(1), R0 /* J,K|I,L */
+
+
+/* LS: Store-store parallell operation
+ Syntax: <i> src2, dst2 || <i> src1, dst1
+ src1 = Register 0-7 (H)
+ dst1 = Indirect 0,1,IR0,IR1 (J)
+ src2 = Register 0-7 (L)
+ dst2 = Indirect 0,1,IR0,IR1 (I)
+ Instr: 2/0 - STF||STF, STI||STI
+ Alias: i||i, i1||i2, i2||i1.
+*/
+#define LS_CLASS(name) \
+name##_LS: &\
+ name R0, *+AR0(1) &|| name R1, *+AR1(1) /* L,I|H,J */ &\
+ name##2 R0, *+AR0(1) &|| name##1 R1, *+AR1(1) /* L,I|H,J */ &\
+ name##1 R1, *+AR1(1) &|| name##2 R0, *+AR0(1) /* H,J|L,I */
+
+
+/* M: General multiply and add/sub operations
+ Syntax: <ia> src3,src4,dst1 || <ib> src2,src1,dst2 [00] - Manual
+ <ia> src3,src1,dst1 || <ib> src2,src4,dst2 [01] - Manual
+ <ia> src1,src3,dst1 || <ib> src2,src4,dst2 [01]
+ <ia> src1,src2,dst1 || <ib> src4,src3,dst2 [02] - Manual
+ <ia> src3,src1,dst1 || <ib> src4,src2,dst2 [03] - Manual
+ <ia> src1,src3,dst1 || <ib> src4,src2,dst2 [03]
+ src1 = Register 0-7 (K)
+ src2 = Register 0-7 (H)
+ src3 = Indirect 0,1,IR0,IR1 (J)
+ src4 = Indirect 0,1,IR0,IR1 (I)
+ dst1 = Register 0-1 (N)
+ dst2 = Register 2-3 (M)
+ Instr: 4/0 - MPYF3||ADDF3, MPYF3||SUBF3, MPYI3||ADDI3, MPYI3||SUBI3
+ Alias: a||b, a3||n, a||b3, a3||b3, b||a, b3||a, b||a3, b3||a3
+*/
+#define M_CLASS(namea, nameb) \
+namea##_##nameb##_M: &\
+ namea *+AR0(1), *+AR1(1), R0 &|| nameb R0, R1, R2 /* I,J,N|H,K;M */ &\
+ namea *+AR0(1), *+AR1(1), R0 &|| nameb R0, R2 /* I,J,N|H,K;M */ &\
+ namea *+AR0(1), R0, R0 &|| nameb R0, *+AR1(1), R2 /* J,K;N|H,I,M */ &\
+ namea *+AR0(1), R0 &|| nameb R0, *+AR1(1), R2 /* J,K;N|H,I,M */ &\
+ namea R0, *+AR0(1), R0 &|| nameb R0, *+AR1(1), R2 /* K,J,N|H,I,M */ &\
+ namea R2, R1, R0 &|| nameb *+AR0(1), *+AR1(1), R2 /* H,K;N|I,J,M */ &\
+ namea R2, R0 &|| nameb *+AR0(1), *+AR1(1), R2 /* H,K;N|I,J,M */ &\
+ namea *+AR0(1), R1, R0 &|| nameb *+AR1(1), R3, R2 /* J,K;N|I,H;M */ &\
+ namea *+AR0(1), R0 &|| nameb *+AR1(1), R3, R2 /* J,K;N|I,H;M */ &\
+ namea *+AR0(1), R1, R0 &|| nameb *+AR1(1), R2 /* J,K;N|I,H;M */ &\
+ namea *+AR0(1), R0 &|| nameb *+AR1(1), R2 /* J,K;N|I,H;M */ &\
+ namea R0, *+AR0(1), R0 &|| nameb *+AR1(1), R0, R2 /* K,J,N|I,H;M */ &\
+ namea R0, *+AR0(1), R0 &|| nameb *+AR1(1), R2 /* K,J,N|I,H;M */ &\
+namea##3_##nameb##_M: &\
+ namea##3 *+AR0(1), *+AR1(1), R0 &|| nameb R0, R1, R2 /* I,J,N|H,K;M */ &\
+ namea##3 *+AR0(1), *+AR1(1), R0 &|| nameb R0, R2 /* I,J,N|H,K;M */ &\
+ namea##3 *+AR0(1), R0, R0 &|| nameb R0, *+AR1(1), R2 /* J,K;N|H,I,M */ &\
+ namea##3 *+AR0(1), R0 &|| nameb R0, *+AR1(1), R2 /* J,K;N|H,I,M */ &\
+ namea##3 R0, *+AR0(1), R0 &|| nameb R0, *+AR1(1), R2 /* K,J,N|H,I,M */ &\
+ namea##3 R2, R1, R0 &|| nameb *+AR0(1), *+AR1(1), R2 /* H,K;N|I,J,M */ &\
+ namea##3 R2, R0 &|| nameb *+AR0(1), *+AR1(1), R2 /* H,K;N|I,J,M */ &\
+ namea##3 *+AR0(1), R1, R0 &|| nameb *+AR1(1), R3, R2 /* J,K;N|I,H;M */ &\
+ namea##3 *+AR0(1), R0 &|| nameb *+AR1(1), R3, R2 /* J,K;N|I,H;M */ &\
+ namea##3 *+AR0(1), R1, R0 &|| nameb *+AR1(1), R2 /* J,K;N|I,H;M */ &\
+ namea##3 *+AR0(1), R0 &|| nameb *+AR1(1), R2 /* J,K;N|I,H;M */ &\
+ namea##3 R0, *+AR0(1), R0 &|| nameb *+AR1(1), R0, R2 /* K,J,N|I,H;M */ &\
+ namea##3 R0, *+AR0(1), R0 &|| nameb *+AR1(1), R2 /* K,J,N|I,H;M */ &\
+namea##_##nameb##3_M: &\
+ namea *+AR0(1), *+AR1(1), R0 &|| nameb##3 R0, R1, R2 /* I,J,N|H,K;M */ &\
+ namea *+AR0(1), *+AR1(1), R0 &|| nameb##3 R0, R2 /* I,J,N|H,K;M */ &\
+ namea *+AR0(1), R0, R0 &|| nameb##3 R0, *+AR1(1), R2 /* J,K;N|H,I,M */ &\
+ namea *+AR0(1), R0 &|| nameb##3 R0, *+AR1(1), R2 /* J,K;N|H,I,M */ &\
+ namea R0, *+AR0(1), R0 &|| nameb##3 R0, *+AR1(1), R2 /* K,J,N|H,I,M */ &\
+ namea R2, R1, R0 &|| nameb##3 *+AR0(1), *+AR1(1), R2 /* H,K;N|I,J,M */ &\
+ namea R2, R0 &|| nameb##3 *+AR0(1), *+AR1(1), R2 /* H,K;N|I,J,M */ &\
+ namea *+AR0(1), R1, R0 &|| nameb##3 *+AR1(1), R3, R2 /* J,K;N|I,H;M */ &\
+ namea *+AR0(1), R0 &|| nameb##3 *+AR1(1), R3, R2 /* J,K;N|I,H;M */ &\
+ namea *+AR0(1), R1, R0 &|| nameb##3 *+AR1(1), R2 /* J,K;N|I,H;M */ &\
+ namea *+AR0(1), R0 &|| nameb##3 *+AR1(1), R2 /* J,K;N|I,H;M */ &\
+ namea R0, *+AR0(1), R0 &|| nameb##3 *+AR1(1), R0, R2 /* K,J,N|I,H;M */ &\
+ namea R0, *+AR0(1), R0 &|| nameb##3 *+AR1(1), R2 /* K,J,N|I,H;M */ &\
+namea##3_##nameb##3_M: &\
+ namea##3 *+AR0(1), *+AR1(1), R0 &|| nameb##3 R0, R1, R2 /* I,J,N|H,K;M */ &\
+ namea##3 *+AR0(1), *+AR1(1), R0 &|| nameb##3 R0, R2 /* I,J,N|H,K;M */ &\
+ namea##3 *+AR0(1), R0, R0 &|| nameb##3 R0, *+AR1(1), R2 /* J,K;N|H,I,M */ &\
+ namea##3 *+AR0(1), R0 &|| nameb##3 R0, *+AR1(1), R2 /* J,K;N|H,I,M */ &\
+ namea##3 R0, *+AR0(1), R0 &|| nameb##3 R0, *+AR1(1), R2 /* K,J,N|H,I,M */ &\
+ namea##3 R2, R1, R0 &|| nameb##3 *+AR0(1), *+AR1(1), R2 /* H,K;N|I,J,M */ &\
+ namea##3 R2, R0 &|| nameb##3 *+AR0(1), *+AR1(1), R2 /* H,K;N|I,J,M */ &\
+ namea##3 *+AR0(1), R1, R0 &|| nameb##3 *+AR1(1), R3, R2 /* J,K;N|I,H;M */ &\
+ namea##3 *+AR0(1), R0 &|| nameb##3 *+AR1(1), R3, R2 /* J,K;N|I,H;M */ &\
+ namea##3 *+AR0(1), R1, R0 &|| nameb##3 *+AR1(1), R2 /* J,K;N|I,H;M */ &\
+ namea##3 *+AR0(1), R0 &|| nameb##3 *+AR1(1), R2 /* J,K;N|I,H;M */ &\
+ namea##3 R0, *+AR0(1), R0 &|| nameb##3 *+AR1(1), R0, R2 /* K,J,N|I,H;M */ &\
+ namea##3 R0, *+AR0(1), R0 &|| nameb##3 *+AR1(1), R2 /* K,J,N|I,H;M */ &\
+nameb##_##namea##_M: &\
+ nameb R0, R1, R2 &|| namea *+AR0(1), *+AR1(1), R0 /* H,K;M|I,J,N */ &\
+ nameb R0, R2 &|| namea *+AR0(1), *+AR1(1), R0 /* H,K;M|I,J,N */ &\
+ nameb R0, *+AR1(1), R2 &|| namea *+AR0(1), R0, R0 /* H,I,M|J,K;N */ &\
+ nameb R0, *+AR1(1), R2 &|| namea *+AR0(1), R0 /* H,I,M|J,K;N */ &\
+ nameb R0, *+AR1(1), R2 &|| namea R0, *+AR0(1), R0 /* H,I,M|K,J,N */ &\
+ nameb *+AR0(1), *+AR1(1), R2 &|| namea R2, R1, R0 /* I,J,M|H,K;N */ &\
+ nameb *+AR0(1), *+AR1(1), R2 &|| namea R2, R0 /* I,J,M|H,K;N */ &\
+ nameb *+AR1(1), R3, R2 &|| namea *+AR0(1), R1, R0 /* I,H;M|J,K;N */ &\
+ nameb *+AR1(1), R3, R2 &|| namea *+AR0(1), R0 /* I,H;M|J,K;N */ &\
+ nameb *+AR1(1), R2 &|| namea *+AR0(1), R1, R0 /* I,H;M|J,K;N */ &\
+ nameb *+AR1(1), R2 &|| namea *+AR0(1), R0 /* I,H;M|J,K;N */ &\
+ nameb *+AR1(1), R0, R2 &|| namea R0, *+AR0(1), R0 /* I,H;M|K,J,N */ &\
+ nameb *+AR1(1), R2 &|| namea R0, *+AR0(1), R0 /* I,H;M|K,J,N */ &\
+nameb##3_##namea##3_M: &\
+ nameb##3 R0, R1, R2 &|| namea##3 *+AR0(1), *+AR1(1), R0 /* H,K;M|I,J,N */ &\
+ nameb##3 R0, R2 &|| namea##3 *+AR0(1), *+AR1(1), R0 /* H,K;M|I,J,N */ &\
+ nameb##3 R0, *+AR1(1), R2 &|| namea##3 *+AR0(1), R0, R0 /* H,I,M|J,K;N */ &\
+ nameb##3 R0, *+AR1(1), R2 &|| namea##3 *+AR0(1), R0 /* H,I,M|J,K;N */ &\
+ nameb##3 R0, *+AR1(1), R2 &|| namea##3 R0, *+AR0(1), R0 /* H,I,M|K,J,N */ &\
+ nameb##3 *+AR0(1), *+AR1(1), R2 &|| namea##3 R2, R1, R0 /* I,J,M|H,K;N */ &\
+ nameb##3 *+AR0(1), *+AR1(1), R2 &|| namea##3 R2, R0 /* I,J,M|H,K;N */ &\
+ nameb##3 *+AR1(1), R3, R2 &|| namea##3 *+AR0(1), R1, R0 /* I,H;M|J,K;N */ &\
+ nameb##3 *+AR1(1), R3, R2 &|| namea##3 *+AR0(1), R0 /* I,H;M|J,K;N */ &\
+ nameb##3 *+AR1(1), R2 &|| namea##3 *+AR0(1), R1, R0 /* I,H;M|J,K;N */ &\
+ nameb##3 *+AR1(1), R2 &|| namea##3 *+AR0(1), R0 /* I,H;M|J,K;N */ &\
+ nameb##3 *+AR1(1), R0, R2 &|| namea##3 R0, *+AR0(1), R0 /* I,H;M|K,J,N */ &\
+ nameb##3 *+AR1(1), R2 &|| namea##3 R0, *+AR0(1), R0 /* I,H;M|K,J,N */ &\
+nameb##_##namea##3_M: &\
+ nameb R0, R1, R2 &|| namea##3 *+AR0(1), *+AR1(1), R0 /* H,K;M|I,J,N */ &\
+ nameb R0, R2 &|| namea##3 *+AR0(1), *+AR1(1), R0 /* H,K;M|I,J,N */ &\
+ nameb R0, *+AR1(1), R2 &|| namea##3 *+AR0(1), R0, R0 /* H,I,M|J,K;N */ &\
+ nameb R0, *+AR1(1), R2 &|| namea##3 *+AR0(1), R0 /* H,I,M|J,K;N */ &\
+ nameb R0, *+AR1(1), R2 &|| namea##3 R0, *+AR0(1), R0 /* H,I,M|K,J,N */ &\
+ nameb *+AR0(1), *+AR1(1), R2 &|| namea##3 R2, R1, R0 /* I,J,M|H,K;N */ &\
+ nameb *+AR0(1), *+AR1(1), R2 &|| namea##3 R2, R0 /* I,J,M|H,K;N */ &\
+ nameb *+AR1(1), R3, R2 &|| namea##3 *+AR0(1), R1, R0 /* I,H;M|J,K;N */ &\
+ nameb *+AR1(1), R3, R2 &|| namea##3 *+AR0(1), R0 /* I,H;M|J,K;N */ &\
+ nameb *+AR1(1), R2 &|| namea##3 *+AR0(1), R1, R0 /* I,H;M|J,K;N */ &\
+ nameb *+AR1(1), R2 &|| namea##3 *+AR0(1), R0 /* I,H;M|J,K;N */ &\
+ nameb *+AR1(1), R0, R2 &|| namea##3 R0, *+AR0(1), R0 /* I,H;M|K,J,N */ &\
+ nameb *+AR1(1), R2 &|| namea##3 R0, *+AR0(1), R0 /* I,H;M|K,J,N */ &\
+nameb##3_##namea##_M: &\
+ nameb##3 R0, R1, R2 &|| namea *+AR0(1), *+AR1(1), R0 /* H,K;M|I,J,N */ &\
+ nameb##3 R0, R2 &|| namea *+AR0(1), *+AR1(1), R0 /* H,K;M|I,J,N */ &\
+ nameb##3 R0, *+AR1(1), R2 &|| namea *+AR0(1), R0, R0 /* H,I,M|J,K;N */ &\
+ nameb##3 R0, *+AR1(1), R2 &|| namea *+AR0(1), R0 /* H,I,M|J,K;N */ &\
+ nameb##3 R0, *+AR1(1), R2 &|| namea R0, *+AR0(1), R0 /* H,I,M|K,J,N */ &\
+ nameb##3 *+AR0(1), *+AR1(1), R2 &|| namea R2, R1, R0 /* I,J,M|H,K;N */ &\
+ nameb##3 *+AR0(1), *+AR1(1), R2 &|| namea R2, R0 /* I,J,M|H,K;N */ &\
+ nameb##3 *+AR1(1), R3, R2 &|| namea *+AR0(1), R1, R0 /* I,H;M|J,K;N */ &\
+ nameb##3 *+AR1(1), R3, R2 &|| namea *+AR0(1), R0 /* I,H;M|J,K;N */ &\
+ nameb##3 *+AR1(1), R2 &|| namea *+AR0(1), R1, R0 /* I,H;M|J,K;N */ &\
+ nameb##3 *+AR1(1), R2 &|| namea *+AR0(1), R0 /* I,H;M|J,K;N */ &\
+ nameb##3 *+AR1(1), R0, R2 &|| namea R0, *+AR0(1), R0 /* I,H;M|K,J,N */ &\
+ nameb##3 *+AR1(1), R2 &|| namea R0, *+AR0(1), R0 /* I,H;M|K,J,N */ &\
+
+
+/* P: General 2-operand operation with parallell store
+ Syntax: <ia> src2, dst1 || <ib> src3, dst2
+ src2 = Indirect 0,1,IR0,IR1 (I)
+ dst1 = Register 0-7 (L)
+ src3 = Register 0-7 (H)
+ dst2 = Indirect 0,1,IR0,IR1 (J)
+ Instr: 9/2 - ABSF||STF, ABSI||STI, FIX||STI, FLOAT||STF, LDF||STF,
+ LDI||STI, NEGF||STF, NEGI||STI, NOT||STI, C4x: FRIEEE||STF,
+ TOIEEE||STF
+ Alias: a||b, b||a
+*/
+#define P_CLASS(namea, nameb) \
+namea##_##nameb##_P: &\
+ namea *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* I,L|H,J */ &\
+ nameb R1, *+AR1(1) &|| namea *+AR0(1), R0 /* H,J|I,L */
+
+
+/* Q: General 3-operand operation with parallell store
+ Syntax: <ia> src1, src2, dst1 || <ib> src3, dst2
+ src1 = Register 0-7 (K)
+ src2 = Indirect 0,1,IR0,IR1 (I)
+ dst1 = Register 0-7 (L)
+ src3 = Register 0-7 (H)
+ dst2 = Indirect 0,1,IR0,IR1 (J)
+ Instr: 4/0 - ASH3||STI, LSH3||STI, SUBF3||STF, SUBI3||STI
+ Alias: a||b, b||a, a3||b, b||a3
+*/
+#define Q_CLASS(namea, nameb) \
+namea##_##nameb##_Q: &\
+ namea R0, *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* K,I,L|H,J */ &\
+ nameb R1, *+AR1(1) &|| namea R0, *+AR0(1), R0 /* H,J|K,I,L */ &\
+namea##3_##nameb##_Q: &\
+ namea##3 R0, *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* K,I,L|H,J */ &\
+ nameb R1, *+AR1(1) &|| namea##3 R0, *+AR0(1), R0 /* H,J|K,I,L */
+
+
+/* QC: General commutative 3-operand operation with parallell store
+ Syntax: <ia> src2, src1, dst1 || <ib> src3, dst2
+ <ia> src1, src2, dst1 || <ib> src3, dst2 - Manual
+ src1 = Register 0-7 (K)
+ src2 = Indirect 0,1,IR0,IR1 (I)
+ dst1 = Register 0-7 (L)
+ src3 = Register 0-7 (H)
+ dst2 = Indirect 0,1,IR0,IR1 (J)
+ Instr: 7/0 - ADDF3||STF, ADDI3||STI, AND3||STI, MPYF3||STF, MPYI3||STI,
+ OR3||STI, XOR3||STI
+ Alias: a||b, b||a, a3||b, b||a3
+*/
+#define QC_CLASS(namea, nameb) \
+namea##_##nameb##_QC: &\
+ namea *+AR0(1), R1, R0 &|| nameb R1, *+AR1(1) /* I,K;L|H,J */ &\
+ namea *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* I,K;L|H,J */ &\
+ namea R0, *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* K,I,L|H,J */ &\
+ nameb R1, *+AR1(1) &|| namea *+AR0(1), R1, R0 /* H,J|I,K;L */ &\
+ nameb R1, *+AR1(1) &|| namea *+AR0(1), R0 /* H,J|I,K;L */ &\
+ nameb R1, *+AR1(1) &|| namea R0, *+AR0(1), R0 /* H,J|K,I,L */ &\
+namea##3_##nameb##_QC: &\
+ namea##3 *+AR0(1), R1, R0 &|| nameb R1, *+AR1(1) /* I,K;L|H,J */ &\
+ namea##3 *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* I,K;L|H,J */ &\
+ namea##3 R0, *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* K,I,L|H,J */ &\
+ nameb R1, *+AR1(1) &|| namea##3 *+AR0(1), R1, R0 /* H,J|I,K;L */ &\
+ nameb R1, *+AR1(1) &|| namea##3 *+AR0(1), R0 /* H,J|I,K;L */ &\
+ nameb R1, *+AR1(1) &|| namea##3 R0, *+AR0(1), R0 /* H,J|K,I,L */
+
+
+/* R: General register integer operation
+ Syntax: <i> dst
+ dst = Register (R)
+ Instr: 6/0 - POP, PUSH, ROL, ROLC, ROR, RORC
+*/
+#define R_CLASS(name) \
+name##_R: &\
+ name AR0 /* R */
+
+
+/* RF: General register float operation
+ Syntax: <i> dst
+ dst = Register 0-11 (R)
+ Instr: 2/0 - POPF, PUSHF
+*/
+#define RF_CLASS(name) \
+name##_RF: &\
+ name F0 /* R */
+
+
+/* S: General 3-operand float operation
+ Syntax: <i> src2, src1, dst
+ src2 = Register 0-11 (E), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C)
+ src1 = Register 0-11 (G), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (O)
+ dst = Register 0-11 (R)
+ Instr: 1/0 - SUBF3
+ Alias: i, i3
+*/
+#define S_CLASS(name) \
+name##_S: &\
+ name R2, R1, R0 /* E,G;R */ &\
+ name R1, R0 /* E,G;R */ &\
+ name R1, *+AR0(1), R0 /* E,J,R */ &\
+ name *+AR0(1), R1, R0 /* I,G;R */ &\
+ name *+AR0(1), R0 /* I,G;R */ &\
+ name *+AR0(1), *+AR1(1), R0 /* I,J,R */ &\
+ .ifdef TEST_C4X &\
+ name *+AR0(5), R1, R0 /* C,G;R */ &\
+ name *+AR0(5), R0 /* C,G;R */ &\
+ name *+AR0(5), *+AR1(5), R0 /* C,O,R */ &\
+ .endif &\
+name##3_S: &\
+ name##3 R2, R1, R0 /* E,G;R */ &\
+ name##3 R1, R0 /* E,G;R */ &\
+ name##3 R1, *+AR0(1), R0 /* E,J,R */ &\
+ name##3 *+AR0(1), R1, R0 /* I,G;R */ &\
+ name##3 *+AR0(1), R0 /* I,G;R */ &\
+ name##3 *+AR0(1), *+AR1(1), R0 /* I,J,R */ &\
+ .ifdef TEST_C4X &\
+ name##3 *+AR0(5), R1, R0 /* C,G;R */ &\
+ name##3 *+AR0(5), R0 /* C,G;R */ &\
+ name##3 *+AR0(5), *+AR1(5), R0 /* C,O,R */ &\
+ .endif
+
+
+/* SC: General commutative 3-operand float operation
+ Syntax: <i> src2, src1, dst - Manual
+ <i> src1, src2, dst
+ src2 = Register 0-11 (E), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C)
+ src1 = Register 0-11 (G), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (O)
+ dst = Register 0-11 (R)
+ Instr: 2/0 - ADDF3, MPYF3
+ Alias: i, i3
+*/
+#define SC_CLASS(name) \
+name##_SC: &\
+ name R2, R1, R0 /* E,G;R */ &\
+ name R1, R0 /* E,G;R */ &\
+ name R1, *+AR0(1), R0 /* E,J,R */ &\
+ name *+AR0(1), R1, R0 /* I,G;R */ &\
+ name *+AR0(1), R0 /* I,G;R */ &\
+ name *+AR0(1), *+AR1(1), R0 /* I,J,R */ &\
+ .ifdef TEST_C4X &\
+ name *+AR0(5), R1, R0 /* C,G;R */ &\
+ name *+AR0(5), R0 /* C,G;R */ &\
+ name R1, *+AR0(5), R0 /* G,C,R */ &\
+ name *+AR0(5), *+AR1(5), R0 /* C,O,R */ &\
+ .endif &\
+name##3_SC: &\
+ name##3 R2, R1, R0 /* E,G;R */ &\
+ name##3 R1, R0 /* E,G;R */ &\
+ name##3 R1, *+AR0(1), R0 /* E,J,R */ &\
+ name##3 *+AR0(1), R1, R0 /* I,G;R */ &\
+ name##3 *+AR0(1), R0 /* I,G;R */ &\
+ name##3 *+AR0(1), *+AR1(1), R0 /* I,J,R */ &\
+ .ifdef TEST_C4X &\
+ name##3 *+AR0(5), R1, R0 /* C,G;R */ &\
+ name##3 *+AR0(5), R0 /* C,G;R */ &\
+ name##3 R1, *+AR0(5), R0 /* G,C,R */ &\
+ name##3 *+AR0(5), *+AR1(5), R0 /* C,O,R */ &\
+ .endif
+
+
+/* S2: General 3-operand float operation with 2 args
+ Syntax: <i> src2, src1
+ src2 = Register 0-11 (E), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C)
+ src1 = Register 0-11 (G), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (O)
+ Instr: 1/0 - CMPF3
+ Alias: i, i3
+*/
+#define S2_CLASS(name) \
+name##_S2: &\
+ name R2, R1 /* E,G */ &\
+ name R1, *+AR0(1) /* E,J */ &\
+ name *+AR0(1), R1 /* I,G */ &\
+ name *+AR0(1), *+AR1(1) /* I,J */ &\
+ .ifdef TEST_C4X &\
+ name *+AR0(5), R1 /* C,G */ &\
+ name *+AR0(5), *+AR1(5) /* C,O */ &\
+ .endif &\
+name##3_S2: &\
+ name##3 R2, R1 /* E,G */ &\
+ name##3 R1, *+AR0(1) /* E,J */ &\
+ name##3 *+AR0(1), R1 /* I,G */ &\
+ name##3 *+AR0(1), *+AR1(1) /* I,J */ &\
+ .ifdef TEST_C4X &\
+ name##3 *+AR0(5), R1 /* C,G */ &\
+ name##3 *+AR0(5), *+AR1(5) /* C,O */ &\
+ .endif
+
+
+/* T: General 3-operand integer operand
+ Syntax: <i> src2, src1, dst
+ src2 = Register (E), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C), Immediate (W)
+ src1 = Register (G), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (O)
+ dst = Register (R)
+ Instr: 5/0 - ANDN3, ASH3, LSH3, SUBB3, SUBI3
+ Alias: i, i3
+*/
+#define T_CLASS(name) \
+name##_T: &\
+ name AR2, AR1, AR0 /* E,G;R */ &\
+ name AR1, AR0 /* E,G;R */ &\
+ name AR1, *+AR0(1), AR0 /* E,J,R */ &\
+ name *+AR0(1), AR1, AR0 /* I,G;R */ &\
+ name *+AR0(1), AR0 /* I,G;R */ &\
+ name *+AR1(1), *+AR0(1), AR0 /* I,J,R */ &\
+ .ifdef TEST_C4X &\
+ name 5, AR1, AR0 /* W,G;R */ &\
+ name 5, AR0 /* W,G;R */ &\
+ name *+AR0(5), AR1, AR0 /* C,G;R */ &\
+ name *+AR0(5), AR0 /* C,G;R */ &\
+ name 5, *+AR0(5), AR0 /* W,O,R */ &\
+ name *+AR0(5), *+AR1(5), AR0 /* C,O,R */ &\
+ .endif &\
+name##3_T: &\
+ name##3 AR2, AR1, AR0 /* E,G;R */ &\
+ name##3 AR1, AR0 /* E,G;R */ &\
+ name##3 AR1, *+AR0(1), AR0 /* E,J,R */ &\
+ name##3 *+AR0(1), AR1, AR0 /* I,G;R */ &\
+ name##3 *+AR0(1), AR0 /* I,G;R */ &\
+ name##3 *+AR1(1), *+AR0(1), AR0 /* I,J,R */ &\
+ .ifdef TEST_C4X &\
+ name##3 -5, AR1, AR0 /* W,G;R */ &\
+ name##3 -5, AR0 /* W,G;R */ &\
+ name##3 *+AR0(5), AR1, AR0 /* C,G;R */ &\
+ name##3 *+AR0(5), AR0 /* C,G;R */ &\
+ name##3 -5, *+AR0(5), AR0 /* W,O,R */ &\
+ name##3 *+AR0(5), *+AR1(5), AR0 /* C,O,R */ &\
+ .endif
+
+
+/* TC: General commutative 3-operand integer operation
+ Syntax: <i> src2, src1, dst
+ <i> src1, src2, dst
+ src2 = Register (E), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C), Immediate (W)
+ src1 = Register (G), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (O)
+ dst = Register (R)
+ Instr: 6/2 - ADDC3, ADDI3, AND3, MPYI3, OR3, XOR3, C4x: MPYSHI, MPYUHI
+ Alias: i, i3
+*/
+#define TC_CLASS(name) \
+name##_TC: &\
+ name AR2, AR1, AR0 /* E,G;R */ &\
+ name AR1, AR0 /* E,G;R */ &\
+ name AR1, *+AR0(1), AR0 /* E,J,R */ &\
+ name *+AR0(1), AR1, AR0 /* I,G;R */ &\
+ name *+AR0(1), AR0 /* I,G;R */ &\
+ name *+AR1(1), *+AR0(1), AR0 /* I,J,R */ &\
+ .ifdef TEST_C4X &\
+ name 5, AR1, AR0 /* W,G;R */ &\
+ name 5, AR0 /* W,G;R */ &\
+ name AR1, -5, AR0 /* G,W,R */ &\
+ name *+AR0(5), AR1, AR0 /* C,G;R */ &\
+ name *+AR0(5), AR0 /* C,G;R */ &\
+ name AR1, *+AR0(5), AR0 /* G,C,R */ &\
+ name 5, *+AR0(5), AR0 /* W,O,R */ &\
+ name *+AR0(5), -5, AR0 /* O,W,R */ &\
+ name *+AR0(5), *+AR1(5), AR0 /* C,O,R */ &\
+ .endif &\
+name##3_TC: &\
+ name##3 AR2, AR1, AR0 /* E,G;R */ &\
+ name##3 AR1, AR0 /* E,G;R */ &\
+ name##3 AR1, *+AR0(1), AR0 /* E,J,R */ &\
+ name##3 *+AR0(1), AR1, AR0 /* I,G;R */ &\
+ name##3 *+AR0(1), AR0 /* I,G;R */ &\
+ name##3 *+AR1(1), *+AR0(1), AR0 /* I,J,R */ &\
+ .ifdef TEST_C4X &\
+ name##3 -5, AR1, AR0 /* W,G;R */ &\
+ name##3 -5, AR0 /* W,G;R */ &\
+ name##3 AR1, -5, AR0 /* G,W,R */ &\
+ name##3 *+AR0(5), AR1, AR0 /* C,G;R */ &\
+ name##3 *+AR0(5), AR0 /* C,G;R */ &\
+ name##3 AR1, *+AR0(5), AR0 /* G,C,R */ &\
+ name##3 -5, *+AR0(5), AR0 /* W,O,R */ &\
+ name##3 *+AR0(5), -5, AR0 /* O,W,R */ &\
+ name##3 *+AR0(5), *+AR1(5), AR0 /* C,O,R */ &\
+ .endif
+
+
+/* T2: General 3-operand integer operation with 2 args
+ Syntax: <i> src2, src1
+ src2 = Register (E), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C), Immediate (W)
+ src1 = Register (G), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (O)
+ Instr: 1/0 - CMPI3
+ Alias: i, i3
+*/
+#define T2_CLASS(name) \
+name##_T2: &\
+ name AR2, AR1 /* E,G */ &\
+ name AR1, *+AR0(1) /* E,J */ &\
+ name *+AR0(1), AR1 /* I,G */ &\
+ name *+AR1(1), *+AR0(1) /* I,J */ &\
+ .ifdef TEST_C4X &\
+ name -5, AR1 /* W,G */ &\
+ name *+AR0(5), AR1 /* C,G */ &\
+ name -5, *+AR0(5) /* W,O */ &\
+ name *+AR0(5), *+AR1(5) /* C,O */ &\
+ .endif &\
+name##3_T2: &\
+ name##3 AR2, AR1 /* E,G */ &\
+ name##3 AR1, *+AR0(1) /* E,J */ &\
+ name##3 *+AR0(1), AR1 /* I,G */ &\
+ name##3 *+AR1(1), *+AR0(1) /* I,J */ &\
+ .ifdef TEST_C4X &\
+ name##3 -5, AR1 /* W,G */ &\
+ name##3 *+AR0(5), AR1 /* C,G */ &\
+ name##3 -5, *+AR0(5) /* W,O */ &\
+ name##3 *+AR0(5), *+AR1(5) /* C,O */ &\
+ .endif
+
+
+/* T2C: General commutative 3-operand integer operation with 2 args
+ Syntax: <i> src2, src1 - Manual
+ <i> src1, src2
+ src2 = Register (E), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C), Immediate (W)
+ src1 = Register (G), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (0)
+ Instr: 1/0 - TSTB3
+ Alias: i, i3
+*/
+#define T2C_CLASS(name) \
+name##_T2C: &\
+ name AR2, AR1 /* E,G */ &\
+ name AR1, *+AR0(1) /* E,J */ &\
+ name *+AR0(1), AR1 /* I,G */ &\
+ name *+AR1(1), *+AR0(1) /* I,J */ &\
+ .ifdef TEST_C4X &\
+ name 5, AR1 /* W,G */ &\
+ name AR1, -5 /* G,W */ &\
+ name *+AR0(5), AR1 /* C,G */ &\
+ name AR1, *+AR0(5) /* G,C */ &\
+ name 5, *+AR0(5) /* W,O */ &\
+ name *+AR0(5), -5 /* O,W */ &\
+ name *+AR0(5), *+AR1(5) /* C,O */ &\
+ .endif &\
+name##3_T2C: &\
+ name##3 AR2, AR1 /* E,G */ &\
+ name##3 AR1, *+AR0(1) /* E,J */ &\
+ name##3 *+AR0(1), AR1 /* I,G */ &\
+ name##3 *+AR1(1), *+AR0(1) /* I,J */ &\
+ .ifdef TEST_C4X &\
+ name##3 -5, AR1 /* W,G */ &\
+ name##3 AR1, -5 /* G,W */ &\
+ name##3 *+AR0(5), AR1 /* C,G */ &\
+ name##3 AR1, *+AR0(5) /* G,C */ &\
+ name##3 -5, *+AR0(5) /* W,O */ &\
+ name##3 *+AR0(5), -5 /* O,W */ &\
+ name##3 *+AR0(5), *+AR1(5) /* C,O */ &\
+ .endif
diff --git a/gas/testsuite/gas/tic4x/opcodes.s b/gas/testsuite/gas/tic4x/opcodes.s
new file mode 100644
index 0000000..bf2c9b6
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/opcodes.s
@@ -0,0 +1,595 @@
+; File is autogenerated from allopcodes.S - do not edit
+; Please use ./rebuild.sh to rebuild this file
+
+;;;
+;;; Test all opcodes and argument permuation
+;;; To make our job a lot simpler, we define a couple of
+;;; insn classes, that we use to generate the proper
+;;; test output.
+;;;
+;;; To rebuild this file you must use
+;;; ./rebuild.sh
+;;;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .text
+start: absf_B: & absf R1, R0 & absf R0 & absf @start, R0 & absf *+AR0(5), R0 & absf 3.5, R0
+ absf_stf_P: & absf *+AR0(1), R0 &|| stf R1, *+AR1(1) & stf R1, *+AR1(1) &|| absf *+AR0(1), R0
+ absi_A: & absi AR1, AR0 & absi AR0 & absi @start, AR0 & absi *+AR0(5), AR0 & absi -5, AR0
+ absi_sti_P: & absi *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| absi *+AR0(1), R0
+ addc_A: & addc AR1, AR0 & addc AR0 & addc @start, AR0 & addc *+AR0(5), AR0 & addc -5, AR0
+ addc_TC: & addc AR2, AR1, AR0 & addc AR1, AR0 & addc AR1, *+AR0(1), AR0 & addc *+AR0(1), AR1, AR0 & addc *+AR0(1), AR0 & addc *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & addc 5, AR1, AR0 & addc 5, AR0 & addc AR1, -5, AR0 & addc *+AR0(5), AR1, AR0 & addc *+AR0(5), AR0 & addc AR1, *+AR0(5), AR0 & addc 5, *+AR0(5), AR0 & addc *+AR0(5), -5, AR0 & addc *+AR0(5), *+AR1(5), AR0 & .endif & addc3_TC: & addc3 AR2, AR1, AR0 & addc3 AR1, AR0 & addc3 AR1, *+AR0(1), AR0 & addc3 *+AR0(1), AR1, AR0 & addc3 *+AR0(1), AR0 & addc3 *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & addc3 -5, AR1, AR0 & addc3 -5, AR0 & addc3 AR1, -5, AR0 & addc3 *+AR0(5), AR1, AR0 & addc3 *+AR0(5), AR0 & addc3 AR1, *+AR0(5), AR0 & addc3 -5, *+AR0(5), AR0 & addc3 *+AR0(5), -5, AR0 & addc3 *+AR0(5), *+AR1(5), AR0 & .endif
+ addf_B: & addf R1, R0 & addf R0 & addf @start, R0 & addf *+AR0(5), R0 & addf 3.5, R0
+ addf_SC: & addf R2, R1, R0 & addf R1, R0 & addf R1, *+AR0(1), R0 & addf *+AR0(1), R1, R0 & addf *+AR0(1), R0 & addf *+AR0(1), *+AR1(1), R0 & .ifdef TEST_C4X & addf *+AR0(5), R1, R0 & addf *+AR0(5), R0 & addf R1, *+AR0(5), R0 & addf *+AR0(5), *+AR1(5), R0 & .endif & addf3_SC: & addf3 R2, R1, R0 & addf3 R1, R0 & addf3 R1, *+AR0(1), R0 & addf3 *+AR0(1), R1, R0 & addf3 *+AR0(1), R0 & addf3 *+AR0(1), *+AR1(1), R0 & .ifdef TEST_C4X & addf3 *+AR0(5), R1, R0 & addf3 *+AR0(5), R0 & addf3 R1, *+AR0(5), R0 & addf3 *+AR0(5), *+AR1(5), R0 & .endif
+ addf_stf_QC: & addf *+AR0(1), R1, R0 &|| stf R1, *+AR1(1) & addf *+AR0(1), R0 &|| stf R1, *+AR1(1) & addf R0, *+AR0(1), R0 &|| stf R1, *+AR1(1) & stf R1, *+AR1(1) &|| addf *+AR0(1), R1, R0 & stf R1, *+AR1(1) &|| addf *+AR0(1), R0 & stf R1, *+AR1(1) &|| addf R0, *+AR0(1), R0 & addf3_stf_QC: & addf3 *+AR0(1), R1, R0 &|| stf R1, *+AR1(1) & addf3 *+AR0(1), R0 &|| stf R1, *+AR1(1) & addf3 R0, *+AR0(1), R0 &|| stf R1, *+AR1(1) & stf R1, *+AR1(1) &|| addf3 *+AR0(1), R1, R0 & stf R1, *+AR1(1) &|| addf3 *+AR0(1), R0 & stf R1, *+AR1(1) &|| addf3 R0, *+AR0(1), R0
+ addi_A: & addi AR1, AR0 & addi AR0 & addi @start, AR0 & addi *+AR0(5), AR0 & addi -5, AR0
+ addi_TC: & addi AR2, AR1, AR0 & addi AR1, AR0 & addi AR1, *+AR0(1), AR0 & addi *+AR0(1), AR1, AR0 & addi *+AR0(1), AR0 & addi *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & addi 5, AR1, AR0 & addi 5, AR0 & addi AR1, -5, AR0 & addi *+AR0(5), AR1, AR0 & addi *+AR0(5), AR0 & addi AR1, *+AR0(5), AR0 & addi 5, *+AR0(5), AR0 & addi *+AR0(5), -5, AR0 & addi *+AR0(5), *+AR1(5), AR0 & .endif & addi3_TC: & addi3 AR2, AR1, AR0 & addi3 AR1, AR0 & addi3 AR1, *+AR0(1), AR0 & addi3 *+AR0(1), AR1, AR0 & addi3 *+AR0(1), AR0 & addi3 *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & addi3 -5, AR1, AR0 & addi3 -5, AR0 & addi3 AR1, -5, AR0 & addi3 *+AR0(5), AR1, AR0 & addi3 *+AR0(5), AR0 & addi3 AR1, *+AR0(5), AR0 & addi3 -5, *+AR0(5), AR0 & addi3 *+AR0(5), -5, AR0 & addi3 *+AR0(5), *+AR1(5), AR0 & .endif
+ addi_sti_QC: & addi *+AR0(1), R1, R0 &|| sti R1, *+AR1(1) & addi *+AR0(1), R0 &|| sti R1, *+AR1(1) & addi R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| addi *+AR0(1), R1, R0 & sti R1, *+AR1(1) &|| addi *+AR0(1), R0 & sti R1, *+AR1(1) &|| addi R0, *+AR0(1), R0 & addi3_sti_QC: & addi3 *+AR0(1), R1, R0 &|| sti R1, *+AR1(1) & addi3 *+AR0(1), R0 &|| sti R1, *+AR1(1) & addi3 R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| addi3 *+AR0(1), R1, R0 & sti R1, *+AR1(1) &|| addi3 *+AR0(1), R0 & sti R1, *+AR1(1) &|| addi3 R0, *+AR0(1), R0
+ and_AU: & and AR1, AR0 & and AR0 & and @start, AR0 & and *+AR0(5), AR0 & and 5, AR0
+ and_TC: & and AR2, AR1, AR0 & and AR1, AR0 & and AR1, *+AR0(1), AR0 & and *+AR0(1), AR1, AR0 & and *+AR0(1), AR0 & and *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & and 5, AR1, AR0 & and 5, AR0 & and AR1, -5, AR0 & and *+AR0(5), AR1, AR0 & and *+AR0(5), AR0 & and AR1, *+AR0(5), AR0 & and 5, *+AR0(5), AR0 & and *+AR0(5), -5, AR0 & and *+AR0(5), *+AR1(5), AR0 & .endif & and3_TC: & and3 AR2, AR1, AR0 & and3 AR1, AR0 & and3 AR1, *+AR0(1), AR0 & and3 *+AR0(1), AR1, AR0 & and3 *+AR0(1), AR0 & and3 *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & and3 -5, AR1, AR0 & and3 -5, AR0 & and3 AR1, -5, AR0 & and3 *+AR0(5), AR1, AR0 & and3 *+AR0(5), AR0 & and3 AR1, *+AR0(5), AR0 & and3 -5, *+AR0(5), AR0 & and3 *+AR0(5), -5, AR0 & and3 *+AR0(5), *+AR1(5), AR0 & .endif
+ and_sti_QC: & and *+AR0(1), R1, R0 &|| sti R1, *+AR1(1) & and *+AR0(1), R0 &|| sti R1, *+AR1(1) & and R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| and *+AR0(1), R1, R0 & sti R1, *+AR1(1) &|| and *+AR0(1), R0 & sti R1, *+AR1(1) &|| and R0, *+AR0(1), R0 & and3_sti_QC: & and3 *+AR0(1), R1, R0 &|| sti R1, *+AR1(1) & and3 *+AR0(1), R0 &|| sti R1, *+AR1(1) & and3 R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| and3 *+AR0(1), R1, R0 & sti R1, *+AR1(1) &|| and3 *+AR0(1), R0 & sti R1, *+AR1(1) &|| and3 R0, *+AR0(1), R0
+ andn_AU: & andn AR1, AR0 & andn AR0 & andn @start, AR0 & andn *+AR0(5), AR0 & andn 5, AR0
+ andn_T: & andn AR2, AR1, AR0 & andn AR1, AR0 & andn AR1, *+AR0(1), AR0 & andn *+AR0(1), AR1, AR0 & andn *+AR0(1), AR0 & andn *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & andn 5, AR1, AR0 & andn 5, AR0 & andn *+AR0(5), AR1, AR0 & andn *+AR0(5), AR0 & andn 5, *+AR0(5), AR0 & andn *+AR0(5), *+AR1(5), AR0 & .endif & andn3_T: & andn3 AR2, AR1, AR0 & andn3 AR1, AR0 & andn3 AR1, *+AR0(1), AR0 & andn3 *+AR0(1), AR1, AR0 & andn3 *+AR0(1), AR0 & andn3 *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & andn3 -5, AR1, AR0 & andn3 -5, AR0 & andn3 *+AR0(5), AR1, AR0 & andn3 *+AR0(5), AR0 & andn3 -5, *+AR0(5), AR0 & andn3 *+AR0(5), *+AR1(5), AR0 & .endif
+ ash_A: & ash AR1, AR0 & ash AR0 & ash @start, AR0 & ash *+AR0(5), AR0 & ash -5, AR0
+ ash_T: & ash AR2, AR1, AR0 & ash AR1, AR0 & ash AR1, *+AR0(1), AR0 & ash *+AR0(1), AR1, AR0 & ash *+AR0(1), AR0 & ash *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & ash 5, AR1, AR0 & ash 5, AR0 & ash *+AR0(5), AR1, AR0 & ash *+AR0(5), AR0 & ash 5, *+AR0(5), AR0 & ash *+AR0(5), *+AR1(5), AR0 & .endif & ash3_T: & ash3 AR2, AR1, AR0 & ash3 AR1, AR0 & ash3 AR1, *+AR0(1), AR0 & ash3 *+AR0(1), AR1, AR0 & ash3 *+AR0(1), AR0 & ash3 *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & ash3 -5, AR1, AR0 & ash3 -5, AR0 & ash3 *+AR0(5), AR1, AR0 & ash3 *+AR0(5), AR0 & ash3 -5, *+AR0(5), AR0 & ash3 *+AR0(5), *+AR1(5), AR0 & .endif
+ ash_sti_Q: & ash R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| ash R0, *+AR0(1), R0 & ash3_sti_Q: & ash3 R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| ash3 R0, *+AR0(1), R0
+ bC_J: & bC R0 & bC start & b_J: & b R0 & b start
+ bCd_J: & bCd R0 & bCd start & bd_J: & bd R0 & bd start
+br_I: br start
+brd_I: brd start
+call_I: call start
+call_JS: callc R0
+ callc start
+ cmpf_B: & cmpf R1, R0 & cmpf R0 & cmpf @start, R0 & cmpf *+AR0(5), R0 & cmpf 3.5, R0
+ cmpf_S2: & cmpf R2, R1 & cmpf R1, *+AR0(1) & cmpf *+AR0(1), R1 & cmpf *+AR0(1), *+AR1(1) & .ifdef TEST_C4X & cmpf *+AR0(5), R1 & cmpf *+AR0(5), *+AR1(5) & .endif & cmpf3_S2: & cmpf3 R2, R1 & cmpf3 R1, *+AR0(1) & cmpf3 *+AR0(1), R1 & cmpf3 *+AR0(1), *+AR1(1) & .ifdef TEST_C4X & cmpf3 *+AR0(5), R1 & cmpf3 *+AR0(5), *+AR1(5) & .endif
+ cmpi_A: & cmpi AR1, AR0 & cmpi AR0 & cmpi @start, AR0 & cmpi *+AR0(5), AR0 & cmpi -5, AR0
+ cmpi_T2: & cmpi AR2, AR1 & cmpi AR1, *+AR0(1) & cmpi *+AR0(1), AR1 & cmpi *+AR1(1), *+AR0(1) & .ifdef TEST_C4X & cmpi -5, AR1 & cmpi *+AR0(5), AR1 & cmpi -5, *+AR0(5) & cmpi *+AR0(5), *+AR1(5) & .endif & cmpi3_T2: & cmpi3 AR2, AR1 & cmpi3 AR1, *+AR0(1) & cmpi3 *+AR0(1), AR1 & cmpi3 *+AR1(1), *+AR0(1) & .ifdef TEST_C4X & cmpi3 -5, AR1 & cmpi3 *+AR0(5), AR1 & cmpi3 -5, *+AR0(5) & cmpi3 *+AR0(5), *+AR1(5) & .endif
+ dbC_D: & dbC AR0, R0 & dbC AR0, start & db_D: & db AR0, R0 & db AR0, start
+ dbCd_D: & dbCd AR0, R0 & dbCd AR0, start & dbd_D: & dbd AR0, R0 & dbd AR0, start
+ fix_AF: & fix R1, R0 & fix R0 & fix @start, AR0 & fix *+AR0(5), AR0 & fix 3.5, AR0
+ fix_sti_P: & fix *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| fix *+AR0(1), R0
+ float_BI: & float AR1, R0 & float R0 & float @start, R0 & float *+AR0(5), R0 & float -5, R0
+ float_stf_P: & float *+AR0(1), R0 &|| stf R1, *+AR1(1) & stf R1, *+AR1(1) &|| float *+AR0(1), R0
+iack_Z: iack @start
+ iack *+AR0(1)
+idle_Z: idle
+ .ifdef TEST_IDLE2
+idle2_Z: idle2
+ .endif
+ lde_B: & lde R1, R0 & lde R0 & lde @start, R0 & lde *+AR0(5), R0 & lde 3.5, R0
+ ldf_B: & ldf R1, R0 & ldf R0 & ldf @start, R0 & ldf *+AR0(5), R0 & ldf 3.5, R0
+ ldf_LL: & ldf *+AR0(1), R0 &|| ldf *+AR1(1), R1 & ldf2 *+AR0(1), R0 &|| ldf1 *+AR1(1), R1 & ldf1 *+AR1(1), R1 &|| ldf2 *+AR0(1), R0
+ ldf_stf_P: & ldf *+AR0(1), R0 &|| stf R1, *+AR1(1) & stf R1, *+AR1(1) &|| ldf *+AR0(1), R0
+ ldfC_BB: & ldfC R1, R0 & ldfC R0 & ldfC @start, R0 & ldfC *+AR0(5), R0 & ldfC 3.5, R0
+ ldfi_B6: & ldfi @start, R0 & ldfi *+AR0(5), R0
+ ldi_A: & ldi AR1, AR0 & ldi AR0 & ldi @start, AR0 & ldi *+AR0(5), AR0 & ldi -5, AR0
+ ldi_LL: & ldi *+AR0(1), R0 &|| ldi *+AR1(1), R1 & ldi2 *+AR0(1), R0 &|| ldi1 *+AR1(1), R1 & ldi1 *+AR1(1), R1 &|| ldi2 *+AR0(1), R0
+ ldi_sti_P: & ldi *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| ldi *+AR0(1), R0
+ ldiC_AB: & ldiC AR1, AR0 & ldiC AR0 & ldiC @start, AR0 & ldiC *+AR0(5), AR0 & ldiC -5, AR0
+ ldii_A6: & ldii @start, AR0 & ldii *+AR0(5), AR0
+ldp_Z: ldp start
+ ldm_B: & ldm R1, R0 & ldm R0 & ldm @start, R0 & ldm *+AR0(5), R0 & ldm 3.5, R0
+ .ifdef TEST_LPWR
+lopower_Z: lopower
+ .endif
+ lsh_A: & lsh AR1, AR0 & lsh AR0 & lsh @start, AR0 & lsh *+AR0(5), AR0 & lsh -5, AR0
+ lsh_T: & lsh AR2, AR1, AR0 & lsh AR1, AR0 & lsh AR1, *+AR0(1), AR0 & lsh *+AR0(1), AR1, AR0 & lsh *+AR0(1), AR0 & lsh *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & lsh 5, AR1, AR0 & lsh 5, AR0 & lsh *+AR0(5), AR1, AR0 & lsh *+AR0(5), AR0 & lsh 5, *+AR0(5), AR0 & lsh *+AR0(5), *+AR1(5), AR0 & .endif & lsh3_T: & lsh3 AR2, AR1, AR0 & lsh3 AR1, AR0 & lsh3 AR1, *+AR0(1), AR0 & lsh3 *+AR0(1), AR1, AR0 & lsh3 *+AR0(1), AR0 & lsh3 *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & lsh3 -5, AR1, AR0 & lsh3 -5, AR0 & lsh3 *+AR0(5), AR1, AR0 & lsh3 *+AR0(5), AR0 & lsh3 -5, *+AR0(5), AR0 & lsh3 *+AR0(5), *+AR1(5), AR0 & .endif
+ lsh_sti_Q: & lsh R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| lsh R0, *+AR0(1), R0 & lsh3_sti_Q: & lsh3 R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| lsh3 R0, *+AR0(1), R0
+ .ifdef TEST_LPWR
+maxspeed_Z: maxspeed
+ .endif
+ mpyf_B: & mpyf R1, R0 & mpyf R0 & mpyf @start, R0 & mpyf *+AR0(5), R0 & mpyf 3.5, R0
+ mpyf_SC: & mpyf R2, R1, R0 & mpyf R1, R0 & mpyf R1, *+AR0(1), R0 & mpyf *+AR0(1), R1, R0 & mpyf *+AR0(1), R0 & mpyf *+AR0(1), *+AR1(1), R0 & .ifdef TEST_C4X & mpyf *+AR0(5), R1, R0 & mpyf *+AR0(5), R0 & mpyf R1, *+AR0(5), R0 & mpyf *+AR0(5), *+AR1(5), R0 & .endif & mpyf3_SC: & mpyf3 R2, R1, R0 & mpyf3 R1, R0 & mpyf3 R1, *+AR0(1), R0 & mpyf3 *+AR0(1), R1, R0 & mpyf3 *+AR0(1), R0 & mpyf3 *+AR0(1), *+AR1(1), R0 & .ifdef TEST_C4X & mpyf3 *+AR0(5), R1, R0 & mpyf3 *+AR0(5), R0 & mpyf3 R1, *+AR0(5), R0 & mpyf3 *+AR0(5), *+AR1(5), R0 & .endif
+ mpyf_addf_M: & mpyf *+AR0(1), *+AR1(1), R0 &|| addf R0, R1, R2 & mpyf *+AR0(1), *+AR1(1), R0 &|| addf R0, R2 & mpyf *+AR0(1), R0, R0 &|| addf R0, *+AR1(1), R2 & mpyf *+AR0(1), R0 &|| addf R0, *+AR1(1), R2 & mpyf R0, *+AR0(1), R0 &|| addf R0, *+AR1(1), R2 & mpyf R2, R1, R0 &|| addf *+AR0(1), *+AR1(1), R2 & mpyf R2, R0 &|| addf *+AR0(1), *+AR1(1), R2 & mpyf *+AR0(1), R1, R0 &|| addf *+AR1(1), R3, R2 & mpyf *+AR0(1), R0 &|| addf *+AR1(1), R3, R2 & mpyf *+AR0(1), R1, R0 &|| addf *+AR1(1), R2 & mpyf *+AR0(1), R0 &|| addf *+AR1(1), R2 & mpyf R0, *+AR0(1), R0 &|| addf *+AR1(1), R0, R2 & mpyf R0, *+AR0(1), R0 &|| addf *+AR1(1), R2 & mpyf3_addf_M: & mpyf3 *+AR0(1), *+AR1(1), R0 &|| addf R0, R1, R2 & mpyf3 *+AR0(1), *+AR1(1), R0 &|| addf R0, R2 & mpyf3 *+AR0(1), R0, R0 &|| addf R0, *+AR1(1), R2 & mpyf3 *+AR0(1), R0 &|| addf R0, *+AR1(1), R2 & mpyf3 R0, *+AR0(1), R0 &|| addf R0, *+AR1(1), R2 & mpyf3 R2, R1, R0 &|| addf *+AR0(1), *+AR1(1), R2 & mpyf3 R2, R0 &|| addf *+AR0(1), *+AR1(1), R2 & mpyf3 *+AR0(1), R1, R0 &|| addf *+AR1(1), R3, R2 & mpyf3 *+AR0(1), R0 &|| addf *+AR1(1), R3, R2 & mpyf3 *+AR0(1), R1, R0 &|| addf *+AR1(1), R2 & mpyf3 *+AR0(1), R0 &|| addf *+AR1(1), R2 & mpyf3 R0, *+AR0(1), R0 &|| addf *+AR1(1), R0, R2 & mpyf3 R0, *+AR0(1), R0 &|| addf *+AR1(1), R2 & mpyf_addf3_M: & mpyf *+AR0(1), *+AR1(1), R0 &|| addf3 R0, R1, R2 & mpyf *+AR0(1), *+AR1(1), R0 &|| addf3 R0, R2 & mpyf *+AR0(1), R0, R0 &|| addf3 R0, *+AR1(1), R2 & mpyf *+AR0(1), R0 &|| addf3 R0, *+AR1(1), R2 & mpyf R0, *+AR0(1), R0 &|| addf3 R0, *+AR1(1), R2 & mpyf R2, R1, R0 &|| addf3 *+AR0(1), *+AR1(1), R2 & mpyf R2, R0 &|| addf3 *+AR0(1), *+AR1(1), R2 & mpyf *+AR0(1), R1, R0 &|| addf3 *+AR1(1), R3, R2 & mpyf *+AR0(1), R0 &|| addf3 *+AR1(1), R3, R2 & mpyf *+AR0(1), R1, R0 &|| addf3 *+AR1(1), R2 & mpyf *+AR0(1), R0 &|| addf3 *+AR1(1), R2 & mpyf R0, *+AR0(1), R0 &|| addf3 *+AR1(1), R0, R2 & mpyf R0, *+AR0(1), R0 &|| addf3 *+AR1(1), R2 & mpyf3_addf3_M: & mpyf3 *+AR0(1), *+AR1(1), R0 &|| addf3 R0, R1, R2 & mpyf3 *+AR0(1), *+AR1(1), R0 &|| addf3 R0, R2 & mpyf3 *+AR0(1), R0, R0 &|| addf3 R0, *+AR1(1), R2 & mpyf3 *+AR0(1), R0 &|| addf3 R0, *+AR1(1), R2 & mpyf3 R0, *+AR0(1), R0 &|| addf3 R0, *+AR1(1), R2 & mpyf3 R2, R1, R0 &|| addf3 *+AR0(1), *+AR1(1), R2 & mpyf3 R2, R0 &|| addf3 *+AR0(1), *+AR1(1), R2 & mpyf3 *+AR0(1), R1, R0 &|| addf3 *+AR1(1), R3, R2 & mpyf3 *+AR0(1), R0 &|| addf3 *+AR1(1), R3, R2 & mpyf3 *+AR0(1), R1, R0 &|| addf3 *+AR1(1), R2 & mpyf3 *+AR0(1), R0 &|| addf3 *+AR1(1), R2 & mpyf3 R0, *+AR0(1), R0 &|| addf3 *+AR1(1), R0, R2 & mpyf3 R0, *+AR0(1), R0 &|| addf3 *+AR1(1), R2 & addf_mpyf_M: & addf R0, R1, R2 &|| mpyf *+AR0(1), *+AR1(1), R0 & addf R0, R2 &|| mpyf *+AR0(1), *+AR1(1), R0 & addf R0, *+AR1(1), R2 &|| mpyf *+AR0(1), R0, R0 & addf R0, *+AR1(1), R2 &|| mpyf *+AR0(1), R0 & addf R0, *+AR1(1), R2 &|| mpyf R0, *+AR0(1), R0 & addf *+AR0(1), *+AR1(1), R2 &|| mpyf R2, R1, R0 & addf *+AR0(1), *+AR1(1), R2 &|| mpyf R2, R0 & addf *+AR1(1), R3, R2 &|| mpyf *+AR0(1), R1, R0 & addf *+AR1(1), R3, R2 &|| mpyf *+AR0(1), R0 & addf *+AR1(1), R2 &|| mpyf *+AR0(1), R1, R0 & addf *+AR1(1), R2 &|| mpyf *+AR0(1), R0 & addf *+AR1(1), R0, R2 &|| mpyf R0, *+AR0(1), R0 & addf *+AR1(1), R2 &|| mpyf R0, *+AR0(1), R0 & addf3_mpyf3_M: & addf3 R0, R1, R2 &|| mpyf3 *+AR0(1), *+AR1(1), R0 & addf3 R0, R2 &|| mpyf3 *+AR0(1), *+AR1(1), R0 & addf3 R0, *+AR1(1), R2 &|| mpyf3 *+AR0(1), R0, R0 & addf3 R0, *+AR1(1), R2 &|| mpyf3 *+AR0(1), R0 & addf3 R0, *+AR1(1), R2 &|| mpyf3 R0, *+AR0(1), R0 & addf3 *+AR0(1), *+AR1(1), R2 &|| mpyf3 R2, R1, R0 & addf3 *+AR0(1), *+AR1(1), R2 &|| mpyf3 R2, R0 & addf3 *+AR1(1), R3, R2 &|| mpyf3 *+AR0(1), R1, R0 & addf3 *+AR1(1), R3, R2 &|| mpyf3 *+AR0(1), R0 & addf3 *+AR1(1), R2 &|| mpyf3 *+AR0(1), R1, R0 & addf3 *+AR1(1), R2 &|| mpyf3 *+AR0(1), R0 & addf3 *+AR1(1), R0, R2 &|| mpyf3 R0, *+AR0(1), R0 & addf3 *+AR1(1), R2 &|| mpyf3 R0, *+AR0(1), R0 & addf_mpyf3_M: & addf R0, R1, R2 &|| mpyf3 *+AR0(1), *+AR1(1), R0 & addf R0, R2 &|| mpyf3 *+AR0(1), *+AR1(1), R0 & addf R0, *+AR1(1), R2 &|| mpyf3 *+AR0(1), R0, R0 & addf R0, *+AR1(1), R2 &|| mpyf3 *+AR0(1), R0 & addf R0, *+AR1(1), R2 &|| mpyf3 R0, *+AR0(1), R0 & addf *+AR0(1), *+AR1(1), R2 &|| mpyf3 R2, R1, R0 & addf *+AR0(1), *+AR1(1), R2 &|| mpyf3 R2, R0 & addf *+AR1(1), R3, R2 &|| mpyf3 *+AR0(1), R1, R0 & addf *+AR1(1), R3, R2 &|| mpyf3 *+AR0(1), R0 & addf *+AR1(1), R2 &|| mpyf3 *+AR0(1), R1, R0 & addf *+AR1(1), R2 &|| mpyf3 *+AR0(1), R0 & addf *+AR1(1), R0, R2 &|| mpyf3 R0, *+AR0(1), R0 & addf *+AR1(1), R2 &|| mpyf3 R0, *+AR0(1), R0 & addf3_mpyf_M: & addf3 R0, R1, R2 &|| mpyf *+AR0(1), *+AR1(1), R0 & addf3 R0, R2 &|| mpyf *+AR0(1), *+AR1(1), R0 & addf3 R0, *+AR1(1), R2 &|| mpyf *+AR0(1), R0, R0 & addf3 R0, *+AR1(1), R2 &|| mpyf *+AR0(1), R0 & addf3 R0, *+AR1(1), R2 &|| mpyf R0, *+AR0(1), R0 & addf3 *+AR0(1), *+AR1(1), R2 &|| mpyf R2, R1, R0 & addf3 *+AR0(1), *+AR1(1), R2 &|| mpyf R2, R0 & addf3 *+AR1(1), R3, R2 &|| mpyf *+AR0(1), R1, R0 & addf3 *+AR1(1), R3, R2 &|| mpyf *+AR0(1), R0 & addf3 *+AR1(1), R2 &|| mpyf *+AR0(1), R1, R0 & addf3 *+AR1(1), R2 &|| mpyf *+AR0(1), R0 & addf3 *+AR1(1), R0, R2 &|| mpyf R0, *+AR0(1), R0 & addf3 *+AR1(1), R2 &|| mpyf R0, *+AR0(1), R0 &
+ mpyf_stf_QC: & mpyf *+AR0(1), R1, R0 &|| stf R1, *+AR1(1) & mpyf *+AR0(1), R0 &|| stf R1, *+AR1(1) & mpyf R0, *+AR0(1), R0 &|| stf R1, *+AR1(1) & stf R1, *+AR1(1) &|| mpyf *+AR0(1), R1, R0 & stf R1, *+AR1(1) &|| mpyf *+AR0(1), R0 & stf R1, *+AR1(1) &|| mpyf R0, *+AR0(1), R0 & mpyf3_stf_QC: & mpyf3 *+AR0(1), R1, R0 &|| stf R1, *+AR1(1) & mpyf3 *+AR0(1), R0 &|| stf R1, *+AR1(1) & mpyf3 R0, *+AR0(1), R0 &|| stf R1, *+AR1(1) & stf R1, *+AR1(1) &|| mpyf3 *+AR0(1), R1, R0 & stf R1, *+AR1(1) &|| mpyf3 *+AR0(1), R0 & stf R1, *+AR1(1) &|| mpyf3 R0, *+AR0(1), R0
+ mpyf_subf_M: & mpyf *+AR0(1), *+AR1(1), R0 &|| subf R0, R1, R2 & mpyf *+AR0(1), *+AR1(1), R0 &|| subf R0, R2 & mpyf *+AR0(1), R0, R0 &|| subf R0, *+AR1(1), R2 & mpyf *+AR0(1), R0 &|| subf R0, *+AR1(1), R2 & mpyf R0, *+AR0(1), R0 &|| subf R0, *+AR1(1), R2 & mpyf R2, R1, R0 &|| subf *+AR0(1), *+AR1(1), R2 & mpyf R2, R0 &|| subf *+AR0(1), *+AR1(1), R2 & mpyf *+AR0(1), R1, R0 &|| subf *+AR1(1), R3, R2 & mpyf *+AR0(1), R0 &|| subf *+AR1(1), R3, R2 & mpyf *+AR0(1), R1, R0 &|| subf *+AR1(1), R2 & mpyf *+AR0(1), R0 &|| subf *+AR1(1), R2 & mpyf R0, *+AR0(1), R0 &|| subf *+AR1(1), R0, R2 & mpyf R0, *+AR0(1), R0 &|| subf *+AR1(1), R2 & mpyf3_subf_M: & mpyf3 *+AR0(1), *+AR1(1), R0 &|| subf R0, R1, R2 & mpyf3 *+AR0(1), *+AR1(1), R0 &|| subf R0, R2 & mpyf3 *+AR0(1), R0, R0 &|| subf R0, *+AR1(1), R2 & mpyf3 *+AR0(1), R0 &|| subf R0, *+AR1(1), R2 & mpyf3 R0, *+AR0(1), R0 &|| subf R0, *+AR1(1), R2 & mpyf3 R2, R1, R0 &|| subf *+AR0(1), *+AR1(1), R2 & mpyf3 R2, R0 &|| subf *+AR0(1), *+AR1(1), R2 & mpyf3 *+AR0(1), R1, R0 &|| subf *+AR1(1), R3, R2 & mpyf3 *+AR0(1), R0 &|| subf *+AR1(1), R3, R2 & mpyf3 *+AR0(1), R1, R0 &|| subf *+AR1(1), R2 & mpyf3 *+AR0(1), R0 &|| subf *+AR1(1), R2 & mpyf3 R0, *+AR0(1), R0 &|| subf *+AR1(1), R0, R2 & mpyf3 R0, *+AR0(1), R0 &|| subf *+AR1(1), R2 & mpyf_subf3_M: & mpyf *+AR0(1), *+AR1(1), R0 &|| subf3 R0, R1, R2 & mpyf *+AR0(1), *+AR1(1), R0 &|| subf3 R0, R2 & mpyf *+AR0(1), R0, R0 &|| subf3 R0, *+AR1(1), R2 & mpyf *+AR0(1), R0 &|| subf3 R0, *+AR1(1), R2 & mpyf R0, *+AR0(1), R0 &|| subf3 R0, *+AR1(1), R2 & mpyf R2, R1, R0 &|| subf3 *+AR0(1), *+AR1(1), R2 & mpyf R2, R0 &|| subf3 *+AR0(1), *+AR1(1), R2 & mpyf *+AR0(1), R1, R0 &|| subf3 *+AR1(1), R3, R2 & mpyf *+AR0(1), R0 &|| subf3 *+AR1(1), R3, R2 & mpyf *+AR0(1), R1, R0 &|| subf3 *+AR1(1), R2 & mpyf *+AR0(1), R0 &|| subf3 *+AR1(1), R2 & mpyf R0, *+AR0(1), R0 &|| subf3 *+AR1(1), R0, R2 & mpyf R0, *+AR0(1), R0 &|| subf3 *+AR1(1), R2 & mpyf3_subf3_M: & mpyf3 *+AR0(1), *+AR1(1), R0 &|| subf3 R0, R1, R2 & mpyf3 *+AR0(1), *+AR1(1), R0 &|| subf3 R0, R2 & mpyf3 *+AR0(1), R0, R0 &|| subf3 R0, *+AR1(1), R2 & mpyf3 *+AR0(1), R0 &|| subf3 R0, *+AR1(1), R2 & mpyf3 R0, *+AR0(1), R0 &|| subf3 R0, *+AR1(1), R2 & mpyf3 R2, R1, R0 &|| subf3 *+AR0(1), *+AR1(1), R2 & mpyf3 R2, R0 &|| subf3 *+AR0(1), *+AR1(1), R2 & mpyf3 *+AR0(1), R1, R0 &|| subf3 *+AR1(1), R3, R2 & mpyf3 *+AR0(1), R0 &|| subf3 *+AR1(1), R3, R2 & mpyf3 *+AR0(1), R1, R0 &|| subf3 *+AR1(1), R2 & mpyf3 *+AR0(1), R0 &|| subf3 *+AR1(1), R2 & mpyf3 R0, *+AR0(1), R0 &|| subf3 *+AR1(1), R0, R2 & mpyf3 R0, *+AR0(1), R0 &|| subf3 *+AR1(1), R2 & subf_mpyf_M: & subf R0, R1, R2 &|| mpyf *+AR0(1), *+AR1(1), R0 & subf R0, R2 &|| mpyf *+AR0(1), *+AR1(1), R0 & subf R0, *+AR1(1), R2 &|| mpyf *+AR0(1), R0, R0 & subf R0, *+AR1(1), R2 &|| mpyf *+AR0(1), R0 & subf R0, *+AR1(1), R2 &|| mpyf R0, *+AR0(1), R0 & subf *+AR0(1), *+AR1(1), R2 &|| mpyf R2, R1, R0 & subf *+AR0(1), *+AR1(1), R2 &|| mpyf R2, R0 & subf *+AR1(1), R3, R2 &|| mpyf *+AR0(1), R1, R0 & subf *+AR1(1), R3, R2 &|| mpyf *+AR0(1), R0 & subf *+AR1(1), R2 &|| mpyf *+AR0(1), R1, R0 & subf *+AR1(1), R2 &|| mpyf *+AR0(1), R0 & subf *+AR1(1), R0, R2 &|| mpyf R0, *+AR0(1), R0 & subf *+AR1(1), R2 &|| mpyf R0, *+AR0(1), R0 & subf3_mpyf3_M: & subf3 R0, R1, R2 &|| mpyf3 *+AR0(1), *+AR1(1), R0 & subf3 R0, R2 &|| mpyf3 *+AR0(1), *+AR1(1), R0 & subf3 R0, *+AR1(1), R2 &|| mpyf3 *+AR0(1), R0, R0 & subf3 R0, *+AR1(1), R2 &|| mpyf3 *+AR0(1), R0 & subf3 R0, *+AR1(1), R2 &|| mpyf3 R0, *+AR0(1), R0 & subf3 *+AR0(1), *+AR1(1), R2 &|| mpyf3 R2, R1, R0 & subf3 *+AR0(1), *+AR1(1), R2 &|| mpyf3 R2, R0 & subf3 *+AR1(1), R3, R2 &|| mpyf3 *+AR0(1), R1, R0 & subf3 *+AR1(1), R3, R2 &|| mpyf3 *+AR0(1), R0 & subf3 *+AR1(1), R2 &|| mpyf3 *+AR0(1), R1, R0 & subf3 *+AR1(1), R2 &|| mpyf3 *+AR0(1), R0 & subf3 *+AR1(1), R0, R2 &|| mpyf3 R0, *+AR0(1), R0 & subf3 *+AR1(1), R2 &|| mpyf3 R0, *+AR0(1), R0 & subf_mpyf3_M: & subf R0, R1, R2 &|| mpyf3 *+AR0(1), *+AR1(1), R0 & subf R0, R2 &|| mpyf3 *+AR0(1), *+AR1(1), R0 & subf R0, *+AR1(1), R2 &|| mpyf3 *+AR0(1), R0, R0 & subf R0, *+AR1(1), R2 &|| mpyf3 *+AR0(1), R0 & subf R0, *+AR1(1), R2 &|| mpyf3 R0, *+AR0(1), R0 & subf *+AR0(1), *+AR1(1), R2 &|| mpyf3 R2, R1, R0 & subf *+AR0(1), *+AR1(1), R2 &|| mpyf3 R2, R0 & subf *+AR1(1), R3, R2 &|| mpyf3 *+AR0(1), R1, R0 & subf *+AR1(1), R3, R2 &|| mpyf3 *+AR0(1), R0 & subf *+AR1(1), R2 &|| mpyf3 *+AR0(1), R1, R0 & subf *+AR1(1), R2 &|| mpyf3 *+AR0(1), R0 & subf *+AR1(1), R0, R2 &|| mpyf3 R0, *+AR0(1), R0 & subf *+AR1(1), R2 &|| mpyf3 R0, *+AR0(1), R0 & subf3_mpyf_M: & subf3 R0, R1, R2 &|| mpyf *+AR0(1), *+AR1(1), R0 & subf3 R0, R2 &|| mpyf *+AR0(1), *+AR1(1), R0 & subf3 R0, *+AR1(1), R2 &|| mpyf *+AR0(1), R0, R0 & subf3 R0, *+AR1(1), R2 &|| mpyf *+AR0(1), R0 & subf3 R0, *+AR1(1), R2 &|| mpyf R0, *+AR0(1), R0 & subf3 *+AR0(1), *+AR1(1), R2 &|| mpyf R2, R1, R0 & subf3 *+AR0(1), *+AR1(1), R2 &|| mpyf R2, R0 & subf3 *+AR1(1), R3, R2 &|| mpyf *+AR0(1), R1, R0 & subf3 *+AR1(1), R3, R2 &|| mpyf *+AR0(1), R0 & subf3 *+AR1(1), R2 &|| mpyf *+AR0(1), R1, R0 & subf3 *+AR1(1), R2 &|| mpyf *+AR0(1), R0 & subf3 *+AR1(1), R0, R2 &|| mpyf R0, *+AR0(1), R0 & subf3 *+AR1(1), R2 &|| mpyf R0, *+AR0(1), R0 &
+ mpyi_A: & mpyi AR1, AR0 & mpyi AR0 & mpyi @start, AR0 & mpyi *+AR0(5), AR0 & mpyi -5, AR0
+ mpyi_TC: & mpyi AR2, AR1, AR0 & mpyi AR1, AR0 & mpyi AR1, *+AR0(1), AR0 & mpyi *+AR0(1), AR1, AR0 & mpyi *+AR0(1), AR0 & mpyi *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & mpyi 5, AR1, AR0 & mpyi 5, AR0 & mpyi AR1, -5, AR0 & mpyi *+AR0(5), AR1, AR0 & mpyi *+AR0(5), AR0 & mpyi AR1, *+AR0(5), AR0 & mpyi 5, *+AR0(5), AR0 & mpyi *+AR0(5), -5, AR0 & mpyi *+AR0(5), *+AR1(5), AR0 & .endif & mpyi3_TC: & mpyi3 AR2, AR1, AR0 & mpyi3 AR1, AR0 & mpyi3 AR1, *+AR0(1), AR0 & mpyi3 *+AR0(1), AR1, AR0 & mpyi3 *+AR0(1), AR0 & mpyi3 *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & mpyi3 -5, AR1, AR0 & mpyi3 -5, AR0 & mpyi3 AR1, -5, AR0 & mpyi3 *+AR0(5), AR1, AR0 & mpyi3 *+AR0(5), AR0 & mpyi3 AR1, *+AR0(5), AR0 & mpyi3 -5, *+AR0(5), AR0 & mpyi3 *+AR0(5), -5, AR0 & mpyi3 *+AR0(5), *+AR1(5), AR0 & .endif
+ mpyi_addi_M: & mpyi *+AR0(1), *+AR1(1), R0 &|| addi R0, R1, R2 & mpyi *+AR0(1), *+AR1(1), R0 &|| addi R0, R2 & mpyi *+AR0(1), R0, R0 &|| addi R0, *+AR1(1), R2 & mpyi *+AR0(1), R0 &|| addi R0, *+AR1(1), R2 & mpyi R0, *+AR0(1), R0 &|| addi R0, *+AR1(1), R2 & mpyi R2, R1, R0 &|| addi *+AR0(1), *+AR1(1), R2 & mpyi R2, R0 &|| addi *+AR0(1), *+AR1(1), R2 & mpyi *+AR0(1), R1, R0 &|| addi *+AR1(1), R3, R2 & mpyi *+AR0(1), R0 &|| addi *+AR1(1), R3, R2 & mpyi *+AR0(1), R1, R0 &|| addi *+AR1(1), R2 & mpyi *+AR0(1), R0 &|| addi *+AR1(1), R2 & mpyi R0, *+AR0(1), R0 &|| addi *+AR1(1), R0, R2 & mpyi R0, *+AR0(1), R0 &|| addi *+AR1(1), R2 & mpyi3_addi_M: & mpyi3 *+AR0(1), *+AR1(1), R0 &|| addi R0, R1, R2 & mpyi3 *+AR0(1), *+AR1(1), R0 &|| addi R0, R2 & mpyi3 *+AR0(1), R0, R0 &|| addi R0, *+AR1(1), R2 & mpyi3 *+AR0(1), R0 &|| addi R0, *+AR1(1), R2 & mpyi3 R0, *+AR0(1), R0 &|| addi R0, *+AR1(1), R2 & mpyi3 R2, R1, R0 &|| addi *+AR0(1), *+AR1(1), R2 & mpyi3 R2, R0 &|| addi *+AR0(1), *+AR1(1), R2 & mpyi3 *+AR0(1), R1, R0 &|| addi *+AR1(1), R3, R2 & mpyi3 *+AR0(1), R0 &|| addi *+AR1(1), R3, R2 & mpyi3 *+AR0(1), R1, R0 &|| addi *+AR1(1), R2 & mpyi3 *+AR0(1), R0 &|| addi *+AR1(1), R2 & mpyi3 R0, *+AR0(1), R0 &|| addi *+AR1(1), R0, R2 & mpyi3 R0, *+AR0(1), R0 &|| addi *+AR1(1), R2 & mpyi_addi3_M: & mpyi *+AR0(1), *+AR1(1), R0 &|| addi3 R0, R1, R2 & mpyi *+AR0(1), *+AR1(1), R0 &|| addi3 R0, R2 & mpyi *+AR0(1), R0, R0 &|| addi3 R0, *+AR1(1), R2 & mpyi *+AR0(1), R0 &|| addi3 R0, *+AR1(1), R2 & mpyi R0, *+AR0(1), R0 &|| addi3 R0, *+AR1(1), R2 & mpyi R2, R1, R0 &|| addi3 *+AR0(1), *+AR1(1), R2 & mpyi R2, R0 &|| addi3 *+AR0(1), *+AR1(1), R2 & mpyi *+AR0(1), R1, R0 &|| addi3 *+AR1(1), R3, R2 & mpyi *+AR0(1), R0 &|| addi3 *+AR1(1), R3, R2 & mpyi *+AR0(1), R1, R0 &|| addi3 *+AR1(1), R2 & mpyi *+AR0(1), R0 &|| addi3 *+AR1(1), R2 & mpyi R0, *+AR0(1), R0 &|| addi3 *+AR1(1), R0, R2 & mpyi R0, *+AR0(1), R0 &|| addi3 *+AR1(1), R2 & mpyi3_addi3_M: & mpyi3 *+AR0(1), *+AR1(1), R0 &|| addi3 R0, R1, R2 & mpyi3 *+AR0(1), *+AR1(1), R0 &|| addi3 R0, R2 & mpyi3 *+AR0(1), R0, R0 &|| addi3 R0, *+AR1(1), R2 & mpyi3 *+AR0(1), R0 &|| addi3 R0, *+AR1(1), R2 & mpyi3 R0, *+AR0(1), R0 &|| addi3 R0, *+AR1(1), R2 & mpyi3 R2, R1, R0 &|| addi3 *+AR0(1), *+AR1(1), R2 & mpyi3 R2, R0 &|| addi3 *+AR0(1), *+AR1(1), R2 & mpyi3 *+AR0(1), R1, R0 &|| addi3 *+AR1(1), R3, R2 & mpyi3 *+AR0(1), R0 &|| addi3 *+AR1(1), R3, R2 & mpyi3 *+AR0(1), R1, R0 &|| addi3 *+AR1(1), R2 & mpyi3 *+AR0(1), R0 &|| addi3 *+AR1(1), R2 & mpyi3 R0, *+AR0(1), R0 &|| addi3 *+AR1(1), R0, R2 & mpyi3 R0, *+AR0(1), R0 &|| addi3 *+AR1(1), R2 & addi_mpyi_M: & addi R0, R1, R2 &|| mpyi *+AR0(1), *+AR1(1), R0 & addi R0, R2 &|| mpyi *+AR0(1), *+AR1(1), R0 & addi R0, *+AR1(1), R2 &|| mpyi *+AR0(1), R0, R0 & addi R0, *+AR1(1), R2 &|| mpyi *+AR0(1), R0 & addi R0, *+AR1(1), R2 &|| mpyi R0, *+AR0(1), R0 & addi *+AR0(1), *+AR1(1), R2 &|| mpyi R2, R1, R0 & addi *+AR0(1), *+AR1(1), R2 &|| mpyi R2, R0 & addi *+AR1(1), R3, R2 &|| mpyi *+AR0(1), R1, R0 & addi *+AR1(1), R3, R2 &|| mpyi *+AR0(1), R0 & addi *+AR1(1), R2 &|| mpyi *+AR0(1), R1, R0 & addi *+AR1(1), R2 &|| mpyi *+AR0(1), R0 & addi *+AR1(1), R0, R2 &|| mpyi R0, *+AR0(1), R0 & addi *+AR1(1), R2 &|| mpyi R0, *+AR0(1), R0 & addi3_mpyi3_M: & addi3 R0, R1, R2 &|| mpyi3 *+AR0(1), *+AR1(1), R0 & addi3 R0, R2 &|| mpyi3 *+AR0(1), *+AR1(1), R0 & addi3 R0, *+AR1(1), R2 &|| mpyi3 *+AR0(1), R0, R0 & addi3 R0, *+AR1(1), R2 &|| mpyi3 *+AR0(1), R0 & addi3 R0, *+AR1(1), R2 &|| mpyi3 R0, *+AR0(1), R0 & addi3 *+AR0(1), *+AR1(1), R2 &|| mpyi3 R2, R1, R0 & addi3 *+AR0(1), *+AR1(1), R2 &|| mpyi3 R2, R0 & addi3 *+AR1(1), R3, R2 &|| mpyi3 *+AR0(1), R1, R0 & addi3 *+AR1(1), R3, R2 &|| mpyi3 *+AR0(1), R0 & addi3 *+AR1(1), R2 &|| mpyi3 *+AR0(1), R1, R0 & addi3 *+AR1(1), R2 &|| mpyi3 *+AR0(1), R0 & addi3 *+AR1(1), R0, R2 &|| mpyi3 R0, *+AR0(1), R0 & addi3 *+AR1(1), R2 &|| mpyi3 R0, *+AR0(1), R0 & addi_mpyi3_M: & addi R0, R1, R2 &|| mpyi3 *+AR0(1), *+AR1(1), R0 & addi R0, R2 &|| mpyi3 *+AR0(1), *+AR1(1), R0 & addi R0, *+AR1(1), R2 &|| mpyi3 *+AR0(1), R0, R0 & addi R0, *+AR1(1), R2 &|| mpyi3 *+AR0(1), R0 & addi R0, *+AR1(1), R2 &|| mpyi3 R0, *+AR0(1), R0 & addi *+AR0(1), *+AR1(1), R2 &|| mpyi3 R2, R1, R0 & addi *+AR0(1), *+AR1(1), R2 &|| mpyi3 R2, R0 & addi *+AR1(1), R3, R2 &|| mpyi3 *+AR0(1), R1, R0 & addi *+AR1(1), R3, R2 &|| mpyi3 *+AR0(1), R0 & addi *+AR1(1), R2 &|| mpyi3 *+AR0(1), R1, R0 & addi *+AR1(1), R2 &|| mpyi3 *+AR0(1), R0 & addi *+AR1(1), R0, R2 &|| mpyi3 R0, *+AR0(1), R0 & addi *+AR1(1), R2 &|| mpyi3 R0, *+AR0(1), R0 & addi3_mpyi_M: & addi3 R0, R1, R2 &|| mpyi *+AR0(1), *+AR1(1), R0 & addi3 R0, R2 &|| mpyi *+AR0(1), *+AR1(1), R0 & addi3 R0, *+AR1(1), R2 &|| mpyi *+AR0(1), R0, R0 & addi3 R0, *+AR1(1), R2 &|| mpyi *+AR0(1), R0 & addi3 R0, *+AR1(1), R2 &|| mpyi R0, *+AR0(1), R0 & addi3 *+AR0(1), *+AR1(1), R2 &|| mpyi R2, R1, R0 & addi3 *+AR0(1), *+AR1(1), R2 &|| mpyi R2, R0 & addi3 *+AR1(1), R3, R2 &|| mpyi *+AR0(1), R1, R0 & addi3 *+AR1(1), R3, R2 &|| mpyi *+AR0(1), R0 & addi3 *+AR1(1), R2 &|| mpyi *+AR0(1), R1, R0 & addi3 *+AR1(1), R2 &|| mpyi *+AR0(1), R0 & addi3 *+AR1(1), R0, R2 &|| mpyi R0, *+AR0(1), R0 & addi3 *+AR1(1), R2 &|| mpyi R0, *+AR0(1), R0 &
+ mpyi_sti_QC: & mpyi *+AR0(1), R1, R0 &|| sti R1, *+AR1(1) & mpyi *+AR0(1), R0 &|| sti R1, *+AR1(1) & mpyi R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| mpyi *+AR0(1), R1, R0 & sti R1, *+AR1(1) &|| mpyi *+AR0(1), R0 & sti R1, *+AR1(1) &|| mpyi R0, *+AR0(1), R0 & mpyi3_sti_QC: & mpyi3 *+AR0(1), R1, R0 &|| sti R1, *+AR1(1) & mpyi3 *+AR0(1), R0 &|| sti R1, *+AR1(1) & mpyi3 R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| mpyi3 *+AR0(1), R1, R0 & sti R1, *+AR1(1) &|| mpyi3 *+AR0(1), R0 & sti R1, *+AR1(1) &|| mpyi3 R0, *+AR0(1), R0
+ mpyi_subi_M: & mpyi *+AR0(1), *+AR1(1), R0 &|| subi R0, R1, R2 & mpyi *+AR0(1), *+AR1(1), R0 &|| subi R0, R2 & mpyi *+AR0(1), R0, R0 &|| subi R0, *+AR1(1), R2 & mpyi *+AR0(1), R0 &|| subi R0, *+AR1(1), R2 & mpyi R0, *+AR0(1), R0 &|| subi R0, *+AR1(1), R2 & mpyi R2, R1, R0 &|| subi *+AR0(1), *+AR1(1), R2 & mpyi R2, R0 &|| subi *+AR0(1), *+AR1(1), R2 & mpyi *+AR0(1), R1, R0 &|| subi *+AR1(1), R3, R2 & mpyi *+AR0(1), R0 &|| subi *+AR1(1), R3, R2 & mpyi *+AR0(1), R1, R0 &|| subi *+AR1(1), R2 & mpyi *+AR0(1), R0 &|| subi *+AR1(1), R2 & mpyi R0, *+AR0(1), R0 &|| subi *+AR1(1), R0, R2 & mpyi R0, *+AR0(1), R0 &|| subi *+AR1(1), R2 & mpyi3_subi_M: & mpyi3 *+AR0(1), *+AR1(1), R0 &|| subi R0, R1, R2 & mpyi3 *+AR0(1), *+AR1(1), R0 &|| subi R0, R2 & mpyi3 *+AR0(1), R0, R0 &|| subi R0, *+AR1(1), R2 & mpyi3 *+AR0(1), R0 &|| subi R0, *+AR1(1), R2 & mpyi3 R0, *+AR0(1), R0 &|| subi R0, *+AR1(1), R2 & mpyi3 R2, R1, R0 &|| subi *+AR0(1), *+AR1(1), R2 & mpyi3 R2, R0 &|| subi *+AR0(1), *+AR1(1), R2 & mpyi3 *+AR0(1), R1, R0 &|| subi *+AR1(1), R3, R2 & mpyi3 *+AR0(1), R0 &|| subi *+AR1(1), R3, R2 & mpyi3 *+AR0(1), R1, R0 &|| subi *+AR1(1), R2 & mpyi3 *+AR0(1), R0 &|| subi *+AR1(1), R2 & mpyi3 R0, *+AR0(1), R0 &|| subi *+AR1(1), R0, R2 & mpyi3 R0, *+AR0(1), R0 &|| subi *+AR1(1), R2 & mpyi_subi3_M: & mpyi *+AR0(1), *+AR1(1), R0 &|| subi3 R0, R1, R2 & mpyi *+AR0(1), *+AR1(1), R0 &|| subi3 R0, R2 & mpyi *+AR0(1), R0, R0 &|| subi3 R0, *+AR1(1), R2 & mpyi *+AR0(1), R0 &|| subi3 R0, *+AR1(1), R2 & mpyi R0, *+AR0(1), R0 &|| subi3 R0, *+AR1(1), R2 & mpyi R2, R1, R0 &|| subi3 *+AR0(1), *+AR1(1), R2 & mpyi R2, R0 &|| subi3 *+AR0(1), *+AR1(1), R2 & mpyi *+AR0(1), R1, R0 &|| subi3 *+AR1(1), R3, R2 & mpyi *+AR0(1), R0 &|| subi3 *+AR1(1), R3, R2 & mpyi *+AR0(1), R1, R0 &|| subi3 *+AR1(1), R2 & mpyi *+AR0(1), R0 &|| subi3 *+AR1(1), R2 & mpyi R0, *+AR0(1), R0 &|| subi3 *+AR1(1), R0, R2 & mpyi R0, *+AR0(1), R0 &|| subi3 *+AR1(1), R2 & mpyi3_subi3_M: & mpyi3 *+AR0(1), *+AR1(1), R0 &|| subi3 R0, R1, R2 & mpyi3 *+AR0(1), *+AR1(1), R0 &|| subi3 R0, R2 & mpyi3 *+AR0(1), R0, R0 &|| subi3 R0, *+AR1(1), R2 & mpyi3 *+AR0(1), R0 &|| subi3 R0, *+AR1(1), R2 & mpyi3 R0, *+AR0(1), R0 &|| subi3 R0, *+AR1(1), R2 & mpyi3 R2, R1, R0 &|| subi3 *+AR0(1), *+AR1(1), R2 & mpyi3 R2, R0 &|| subi3 *+AR0(1), *+AR1(1), R2 & mpyi3 *+AR0(1), R1, R0 &|| subi3 *+AR1(1), R3, R2 & mpyi3 *+AR0(1), R0 &|| subi3 *+AR1(1), R3, R2 & mpyi3 *+AR0(1), R1, R0 &|| subi3 *+AR1(1), R2 & mpyi3 *+AR0(1), R0 &|| subi3 *+AR1(1), R2 & mpyi3 R0, *+AR0(1), R0 &|| subi3 *+AR1(1), R0, R2 & mpyi3 R0, *+AR0(1), R0 &|| subi3 *+AR1(1), R2 & subi_mpyi_M: & subi R0, R1, R2 &|| mpyi *+AR0(1), *+AR1(1), R0 & subi R0, R2 &|| mpyi *+AR0(1), *+AR1(1), R0 & subi R0, *+AR1(1), R2 &|| mpyi *+AR0(1), R0, R0 & subi R0, *+AR1(1), R2 &|| mpyi *+AR0(1), R0 & subi R0, *+AR1(1), R2 &|| mpyi R0, *+AR0(1), R0 & subi *+AR0(1), *+AR1(1), R2 &|| mpyi R2, R1, R0 & subi *+AR0(1), *+AR1(1), R2 &|| mpyi R2, R0 & subi *+AR1(1), R3, R2 &|| mpyi *+AR0(1), R1, R0 & subi *+AR1(1), R3, R2 &|| mpyi *+AR0(1), R0 & subi *+AR1(1), R2 &|| mpyi *+AR0(1), R1, R0 & subi *+AR1(1), R2 &|| mpyi *+AR0(1), R0 & subi *+AR1(1), R0, R2 &|| mpyi R0, *+AR0(1), R0 & subi *+AR1(1), R2 &|| mpyi R0, *+AR0(1), R0 & subi3_mpyi3_M: & subi3 R0, R1, R2 &|| mpyi3 *+AR0(1), *+AR1(1), R0 & subi3 R0, R2 &|| mpyi3 *+AR0(1), *+AR1(1), R0 & subi3 R0, *+AR1(1), R2 &|| mpyi3 *+AR0(1), R0, R0 & subi3 R0, *+AR1(1), R2 &|| mpyi3 *+AR0(1), R0 & subi3 R0, *+AR1(1), R2 &|| mpyi3 R0, *+AR0(1), R0 & subi3 *+AR0(1), *+AR1(1), R2 &|| mpyi3 R2, R1, R0 & subi3 *+AR0(1), *+AR1(1), R2 &|| mpyi3 R2, R0 & subi3 *+AR1(1), R3, R2 &|| mpyi3 *+AR0(1), R1, R0 & subi3 *+AR1(1), R3, R2 &|| mpyi3 *+AR0(1), R0 & subi3 *+AR1(1), R2 &|| mpyi3 *+AR0(1), R1, R0 & subi3 *+AR1(1), R2 &|| mpyi3 *+AR0(1), R0 & subi3 *+AR1(1), R0, R2 &|| mpyi3 R0, *+AR0(1), R0 & subi3 *+AR1(1), R2 &|| mpyi3 R0, *+AR0(1), R0 & subi_mpyi3_M: & subi R0, R1, R2 &|| mpyi3 *+AR0(1), *+AR1(1), R0 & subi R0, R2 &|| mpyi3 *+AR0(1), *+AR1(1), R0 & subi R0, *+AR1(1), R2 &|| mpyi3 *+AR0(1), R0, R0 & subi R0, *+AR1(1), R2 &|| mpyi3 *+AR0(1), R0 & subi R0, *+AR1(1), R2 &|| mpyi3 R0, *+AR0(1), R0 & subi *+AR0(1), *+AR1(1), R2 &|| mpyi3 R2, R1, R0 & subi *+AR0(1), *+AR1(1), R2 &|| mpyi3 R2, R0 & subi *+AR1(1), R3, R2 &|| mpyi3 *+AR0(1), R1, R0 & subi *+AR1(1), R3, R2 &|| mpyi3 *+AR0(1), R0 & subi *+AR1(1), R2 &|| mpyi3 *+AR0(1), R1, R0 & subi *+AR1(1), R2 &|| mpyi3 *+AR0(1), R0 & subi *+AR1(1), R0, R2 &|| mpyi3 R0, *+AR0(1), R0 & subi *+AR1(1), R2 &|| mpyi3 R0, *+AR0(1), R0 & subi3_mpyi_M: & subi3 R0, R1, R2 &|| mpyi *+AR0(1), *+AR1(1), R0 & subi3 R0, R2 &|| mpyi *+AR0(1), *+AR1(1), R0 & subi3 R0, *+AR1(1), R2 &|| mpyi *+AR0(1), R0, R0 & subi3 R0, *+AR1(1), R2 &|| mpyi *+AR0(1), R0 & subi3 R0, *+AR1(1), R2 &|| mpyi R0, *+AR0(1), R0 & subi3 *+AR0(1), *+AR1(1), R2 &|| mpyi R2, R1, R0 & subi3 *+AR0(1), *+AR1(1), R2 &|| mpyi R2, R0 & subi3 *+AR1(1), R3, R2 &|| mpyi *+AR0(1), R1, R0 & subi3 *+AR1(1), R3, R2 &|| mpyi *+AR0(1), R0 & subi3 *+AR1(1), R2 &|| mpyi *+AR0(1), R1, R0 & subi3 *+AR1(1), R2 &|| mpyi *+AR0(1), R0 & subi3 *+AR1(1), R0, R2 &|| mpyi R0, *+AR0(1), R0 & subi3 *+AR1(1), R2 &|| mpyi R0, *+AR0(1), R0 &
+ negb_A: & negb AR1, AR0 & negb AR0 & negb @start, AR0 & negb *+AR0(5), AR0 & negb -5, AR0
+ negf_B: & negf R1, R0 & negf R0 & negf @start, R0 & negf *+AR0(5), R0 & negf 3.5, R0
+ negf_stf_P: & negf *+AR0(1), R0 &|| stf R1, *+AR1(1) & stf R1, *+AR1(1) &|| negf *+AR0(1), R0
+ negi_A: & negi AR1, AR0 & negi AR0 & negi @start, AR0 & negi *+AR0(5), AR0 & negi -5, AR0
+ negi_sti_P: & negi *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| negi *+AR0(1), R0
+ nop_A2: & nop AR0 & nop *+AR0(5) & nop
+ norm_B: & norm R1, R0 & norm R0 & norm @start, R0 & norm *+AR0(5), R0 & norm 3.5, R0
+ not_AU: & not AR1, AR0 & not AR0 & not @start, AR0 & not *+AR0(5), AR0 & not 5, AR0
+ not_sti_P: & not *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| not *+AR0(1), R0
+ or_AU: & or AR1, AR0 & or AR0 & or @start, AR0 & or *+AR0(5), AR0 & or 5, AR0
+ or_TC: & or AR2, AR1, AR0 & or AR1, AR0 & or AR1, *+AR0(1), AR0 & or *+AR0(1), AR1, AR0 & or *+AR0(1), AR0 & or *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & or 5, AR1, AR0 & or 5, AR0 & or AR1, -5, AR0 & or *+AR0(5), AR1, AR0 & or *+AR0(5), AR0 & or AR1, *+AR0(5), AR0 & or 5, *+AR0(5), AR0 & or *+AR0(5), -5, AR0 & or *+AR0(5), *+AR1(5), AR0 & .endif & or3_TC: & or3 AR2, AR1, AR0 & or3 AR1, AR0 & or3 AR1, *+AR0(1), AR0 & or3 *+AR0(1), AR1, AR0 & or3 *+AR0(1), AR0 & or3 *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & or3 -5, AR1, AR0 & or3 -5, AR0 & or3 AR1, -5, AR0 & or3 *+AR0(5), AR1, AR0 & or3 *+AR0(5), AR0 & or3 AR1, *+AR0(5), AR0 & or3 -5, *+AR0(5), AR0 & or3 *+AR0(5), -5, AR0 & or3 *+AR0(5), *+AR1(5), AR0 & .endif
+ or_sti_QC: & or *+AR0(1), R1, R0 &|| sti R1, *+AR1(1) & or *+AR0(1), R0 &|| sti R1, *+AR1(1) & or R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| or *+AR0(1), R1, R0 & sti R1, *+AR1(1) &|| or *+AR0(1), R0 & sti R1, *+AR1(1) &|| or R0, *+AR0(1), R0 & or3_sti_QC: & or3 *+AR0(1), R1, R0 &|| sti R1, *+AR1(1) & or3 *+AR0(1), R0 &|| sti R1, *+AR1(1) & or3 R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| or3 *+AR0(1), R1, R0 & sti R1, *+AR1(1) &|| or3 *+AR0(1), R0 & sti R1, *+AR1(1) &|| or3 R0, *+AR0(1), R0
+ pop_R: & pop AR0
+ popf_RF: & popf F0
+ push_R: & push AR0
+ pushf_RF: & pushf F0
+reti_Z: retiC
+ reti
+rets_Z: retsC
+ rets
+ rnd_B: & rnd R1, R0 & rnd R0 & rnd @start, R0 & rnd *+AR0(5), R0 & rnd 3.5, R0
+ rol_R: & rol AR0
+ rolc_R: & rolc AR0
+ ror_R: & ror AR0
+ rorc_R: & rorc AR0
+rptb_I2: rptb start
+ rpts_A3: & rpts AR1 & rpts @start & rpts *+AR0(5) & rpts 5
+sigi_Z: sigi
+ stf_B7: & stf R0, @start & stf R0, *+AR0(5)
+ stf_LS: & stf R0, *+AR0(1) &|| stf R1, *+AR1(1) & stf2 R0, *+AR0(1) &|| stf1 R1, *+AR1(1) & stf1 R1, *+AR1(1) &|| stf2 R0, *+AR0(1)
+ stfi_B7: & stfi R0, @start & stfi R0, *+AR0(5)
+ sti_A7: & sti AR0, @start & sti AR0, *+AR0(5)
+ sti_LS: & sti R0, *+AR0(1) &|| sti R1, *+AR1(1) & sti2 R0, *+AR0(1) &|| sti1 R1, *+AR1(1) & sti1 R1, *+AR1(1) &|| sti2 R0, *+AR0(1)
+ stii_A7: & stii AR0, @start & stii AR0, *+AR0(5)
+ subb_A: & subb AR1, AR0 & subb AR0 & subb @start, AR0 & subb *+AR0(5), AR0 & subb -5, AR0
+ subb_T: & subb AR2, AR1, AR0 & subb AR1, AR0 & subb AR1, *+AR0(1), AR0 & subb *+AR0(1), AR1, AR0 & subb *+AR0(1), AR0 & subb *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & subb 5, AR1, AR0 & subb 5, AR0 & subb *+AR0(5), AR1, AR0 & subb *+AR0(5), AR0 & subb 5, *+AR0(5), AR0 & subb *+AR0(5), *+AR1(5), AR0 & .endif & subb3_T: & subb3 AR2, AR1, AR0 & subb3 AR1, AR0 & subb3 AR1, *+AR0(1), AR0 & subb3 *+AR0(1), AR1, AR0 & subb3 *+AR0(1), AR0 & subb3 *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & subb3 -5, AR1, AR0 & subb3 -5, AR0 & subb3 *+AR0(5), AR1, AR0 & subb3 *+AR0(5), AR0 & subb3 -5, *+AR0(5), AR0 & subb3 *+AR0(5), *+AR1(5), AR0 & .endif
+ subc_A: & subc AR1, AR0 & subc AR0 & subc @start, AR0 & subc *+AR0(5), AR0 & subc -5, AR0
+ subf_B: & subf R1, R0 & subf R0 & subf @start, R0 & subf *+AR0(5), R0 & subf 3.5, R0
+ subf_S: & subf R2, R1, R0 & subf R1, R0 & subf R1, *+AR0(1), R0 & subf *+AR0(1), R1, R0 & subf *+AR0(1), R0 & subf *+AR0(1), *+AR1(1), R0 & .ifdef TEST_C4X & subf *+AR0(5), R1, R0 & subf *+AR0(5), R0 & subf *+AR0(5), *+AR1(5), R0 & .endif & subf3_S: & subf3 R2, R1, R0 & subf3 R1, R0 & subf3 R1, *+AR0(1), R0 & subf3 *+AR0(1), R1, R0 & subf3 *+AR0(1), R0 & subf3 *+AR0(1), *+AR1(1), R0 & .ifdef TEST_C4X & subf3 *+AR0(5), R1, R0 & subf3 *+AR0(5), R0 & subf3 *+AR0(5), *+AR1(5), R0 & .endif
+ subf_stf_Q: & subf R0, *+AR0(1), R0 &|| stf R1, *+AR1(1) & stf R1, *+AR1(1) &|| subf R0, *+AR0(1), R0 & subf3_stf_Q: & subf3 R0, *+AR0(1), R0 &|| stf R1, *+AR1(1) & stf R1, *+AR1(1) &|| subf3 R0, *+AR0(1), R0
+ subi_A: & subi AR1, AR0 & subi AR0 & subi @start, AR0 & subi *+AR0(5), AR0 & subi -5, AR0
+ subi_T: & subi AR2, AR1, AR0 & subi AR1, AR0 & subi AR1, *+AR0(1), AR0 & subi *+AR0(1), AR1, AR0 & subi *+AR0(1), AR0 & subi *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & subi 5, AR1, AR0 & subi 5, AR0 & subi *+AR0(5), AR1, AR0 & subi *+AR0(5), AR0 & subi 5, *+AR0(5), AR0 & subi *+AR0(5), *+AR1(5), AR0 & .endif & subi3_T: & subi3 AR2, AR1, AR0 & subi3 AR1, AR0 & subi3 AR1, *+AR0(1), AR0 & subi3 *+AR0(1), AR1, AR0 & subi3 *+AR0(1), AR0 & subi3 *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & subi3 -5, AR1, AR0 & subi3 -5, AR0 & subi3 *+AR0(5), AR1, AR0 & subi3 *+AR0(5), AR0 & subi3 -5, *+AR0(5), AR0 & subi3 *+AR0(5), *+AR1(5), AR0 & .endif
+ subi_sti_Q: & subi R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| subi R0, *+AR0(1), R0 & subi3_sti_Q: & subi3 R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| subi3 R0, *+AR0(1), R0
+ subrb_A: & subrb AR1, AR0 & subrb AR0 & subrb @start, AR0 & subrb *+AR0(5), AR0 & subrb -5, AR0
+ subrf_B: & subrf R1, R0 & subrf R0 & subrf @start, R0 & subrf *+AR0(5), R0 & subrf 3.5, R0
+ subri_A: & subri AR1, AR0 & subri AR0 & subri @start, AR0 & subri *+AR0(5), AR0 & subri -5, AR0
+swi_Z: swi
+trap_Z: trapC 10
+ trap 10
+ tstb_AU: & tstb AR1, AR0 & tstb AR0 & tstb @start, AR0 & tstb *+AR0(5), AR0 & tstb 5, AR0
+ tstb_T2C: & tstb AR2, AR1 & tstb AR1, *+AR0(1) & tstb *+AR0(1), AR1 & tstb *+AR1(1), *+AR0(1) & .ifdef TEST_C4X & tstb 5, AR1 & tstb AR1, -5 & tstb *+AR0(5), AR1 & tstb AR1, *+AR0(5) & tstb 5, *+AR0(5) & tstb *+AR0(5), -5 & tstb *+AR0(5), *+AR1(5) & .endif & tstb3_T2C: & tstb3 AR2, AR1 & tstb3 AR1, *+AR0(1) & tstb3 *+AR0(1), AR1 & tstb3 *+AR1(1), *+AR0(1) & .ifdef TEST_C4X & tstb3 -5, AR1 & tstb3 AR1, -5 & tstb3 *+AR0(5), AR1 & tstb3 AR1, *+AR0(5) & tstb3 -5, *+AR0(5) & tstb3 *+AR0(5), -5 & tstb3 *+AR0(5), *+AR1(5) & .endif
+ xor_AU: & xor AR1, AR0 & xor AR0 & xor @start, AR0 & xor *+AR0(5), AR0 & xor 5, AR0
+ xor_TC: & xor AR2, AR1, AR0 & xor AR1, AR0 & xor AR1, *+AR0(1), AR0 & xor *+AR0(1), AR1, AR0 & xor *+AR0(1), AR0 & xor *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & xor 5, AR1, AR0 & xor 5, AR0 & xor AR1, -5, AR0 & xor *+AR0(5), AR1, AR0 & xor *+AR0(5), AR0 & xor AR1, *+AR0(5), AR0 & xor 5, *+AR0(5), AR0 & xor *+AR0(5), -5, AR0 & xor *+AR0(5), *+AR1(5), AR0 & .endif & xor3_TC: & xor3 AR2, AR1, AR0 & xor3 AR1, AR0 & xor3 AR1, *+AR0(1), AR0 & xor3 *+AR0(1), AR1, AR0 & xor3 *+AR0(1), AR0 & xor3 *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & xor3 -5, AR1, AR0 & xor3 -5, AR0 & xor3 AR1, -5, AR0 & xor3 *+AR0(5), AR1, AR0 & xor3 *+AR0(5), AR0 & xor3 AR1, *+AR0(5), AR0 & xor3 -5, *+AR0(5), AR0 & xor3 *+AR0(5), -5, AR0 & xor3 *+AR0(5), *+AR1(5), AR0 & .endif
+ xor_sti_QC: & xor *+AR0(1), R1, R0 &|| sti R1, *+AR1(1) & xor *+AR0(1), R0 &|| sti R1, *+AR1(1) & xor R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| xor *+AR0(1), R1, R0 & sti R1, *+AR1(1) &|| xor *+AR0(1), R0 & sti R1, *+AR1(1) &|| xor R0, *+AR0(1), R0 & xor3_sti_QC: & xor3 *+AR0(1), R1, R0 &|| sti R1, *+AR1(1) & xor3 *+AR0(1), R0 &|| sti R1, *+AR1(1) & xor3 R0, *+AR0(1), R0 &|| sti R1, *+AR1(1) & sti R1, *+AR1(1) &|| xor3 *+AR0(1), R1, R0 & sti R1, *+AR1(1) &|| xor3 *+AR0(1), R0 & sti R1, *+AR1(1) &|| xor3 R0, *+AR0(1), R0
+
+ .ifdef TEST_C4X
+ bCaf_J: & bCaf R0 & bCaf start & baf_J: & baf R0 & baf start
+ bCat_J: & bCat R0 & bCat start & bat_J: & bat R0 & bat start
+ frieee_B6: & frieee @start, R0 & frieee *+AR0(5), R0
+ frieee_stf_P: & frieee *+AR0(1), R0 &|| stf R1, *+AR1(1) & stf R1, *+AR1(1) &|| frieee *+AR0(1), R0
+laj_I: laj start
+laj_JS: lajc R0
+ lajc start
+lat_Z: latC 10
+ lb0_A: & lb0 AR1, AR0 & lb0 AR0 & lb0 @start, AR0 & lb0 *+AR0(5), AR0 & lb0 -5, AR0
+ lb1_A: & lb1 AR1, AR0 & lb1 AR0 & lb1 @start, AR0 & lb1 *+AR0(5), AR0 & lb1 -5, AR0
+ lb2_A: & lb2 AR1, AR0 & lb2 AR0 & lb2 @start, AR0 & lb2 *+AR0(5), AR0 & lb2 -5, AR0
+ lb3_A: & lb3 AR1, AR0 & lb3 AR0 & lb3 @start, AR0 & lb3 *+AR0(5), AR0 & lb3 -5, AR0
+ lbu0_AU: & lbu0 AR1, AR0 & lbu0 AR0 & lbu0 @start, AR0 & lbu0 *+AR0(5), AR0 & lbu0 5, AR0
+ lbu1_AU: & lbu1 AR1, AR0 & lbu1 AR0 & lbu1 @start, AR0 & lbu1 *+AR0(5), AR0 & lbu1 5, AR0
+ lbu2_AU: & lbu2 AR1, AR0 & lbu2 AR0 & lbu2 @start, AR0 & lbu2 *+AR0(5), AR0 & lbu2 5, AR0
+ lbu3_AU: & lbu3 AR1, AR0 & lbu3 AR0 & lbu3 @start, AR0 & lbu3 *+AR0(5), AR0 & lbu3 5, AR0
+ lda_AY: & lda AR1, AR0 & lda @start, AR0 & lda *+AR0(5), AR0 & lda -5, AR0
+ldep_Z: ldep IVTP, AR0
+ldhi_Z: ldhi 35, R0
+ ldhi start, R0
+ldpe_Z: ldpe AR0, IVTP
+ldpk_Z: ldpk start
+ lh0_A: & lh0 AR1, AR0 & lh0 AR0 & lh0 @start, AR0 & lh0 *+AR0(5), AR0 & lh0 -5, AR0
+ lh1_A: & lh1 AR1, AR0 & lh1 AR0 & lh1 @start, AR0 & lh1 *+AR0(5), AR0 & lh1 -5, AR0
+ lhu0_AU: & lhu0 AR1, AR0 & lhu0 AR0 & lhu0 @start, AR0 & lhu0 *+AR0(5), AR0 & lhu0 5, AR0
+ lhu1_AU: & lhu1 AR1, AR0 & lhu1 AR0 & lhu1 @start, AR0 & lhu1 *+AR0(5), AR0 & lhu1 5, AR0
+ lwl0_A: & lwl0 AR1, AR0 & lwl0 AR0 & lwl0 @start, AR0 & lwl0 *+AR0(5), AR0 & lwl0 -5, AR0
+ lwl1_A: & lwl1 AR1, AR0 & lwl1 AR0 & lwl1 @start, AR0 & lwl1 *+AR0(5), AR0 & lwl1 -5, AR0
+ lwl2_A: & lwl2 AR1, AR0 & lwl2 AR0 & lwl2 @start, AR0 & lwl2 *+AR0(5), AR0 & lwl2 -5, AR0
+ lwl3_A: & lwl3 AR1, AR0 & lwl3 AR0 & lwl3 @start, AR0 & lwl3 *+AR0(5), AR0 & lwl3 -5, AR0
+ lwr0_A: & lwr0 AR1, AR0 & lwr0 AR0 & lwr0 @start, AR0 & lwr0 *+AR0(5), AR0 & lwr0 -5, AR0
+ lwr1_A: & lwr1 AR1, AR0 & lwr1 AR0 & lwr1 @start, AR0 & lwr1 *+AR0(5), AR0 & lwr1 -5, AR0
+ lwr2_A: & lwr2 AR1, AR0 & lwr2 AR0 & lwr2 @start, AR0 & lwr2 *+AR0(5), AR0 & lwr2 -5, AR0
+ lwr3_A: & lwr3 AR1, AR0 & lwr3 AR0 & lwr3 @start, AR0 & lwr3 *+AR0(5), AR0 & lwr3 -5, AR0
+ mb0_A: & mb0 AR1, AR0 & mb0 AR0 & mb0 @start, AR0 & mb0 *+AR0(5), AR0 & mb0 -5, AR0
+ mb1_A: & mb1 AR1, AR0 & mb1 AR0 & mb1 @start, AR0 & mb1 *+AR0(5), AR0 & mb1 -5, AR0
+ mb2_A: & mb2 AR1, AR0 & mb2 AR0 & mb2 @start, AR0 & mb2 *+AR0(5), AR0 & mb2 -5, AR0
+ mb3_A: & mb3 AR1, AR0 & mb3 AR0 & mb3 @start, AR0 & mb3 *+AR0(5), AR0 & mb3 -5, AR0
+ mh0_A: & mh0 AR1, AR0 & mh0 AR0 & mh0 @start, AR0 & mh0 *+AR0(5), AR0 & mh0 -5, AR0
+ mh1_A: & mh1 AR1, AR0 & mh1 AR0 & mh1 @start, AR0 & mh1 *+AR0(5), AR0 & mh1 -5, AR0
+ mh2_A: & mh2 AR1, AR0 & mh2 AR0 & mh2 @start, AR0 & mh2 *+AR0(5), AR0 & mh2 -5, AR0
+ mh3_A: & mh3 AR1, AR0 & mh3 AR0 & mh3 @start, AR0 & mh3 *+AR0(5), AR0 & mh3 -5, AR0
+ mpyshi_A: & mpyshi AR1, AR0 & mpyshi AR0 & mpyshi @start, AR0 & mpyshi *+AR0(5), AR0 & mpyshi -5, AR0
+ mpyshi_TC: & mpyshi AR2, AR1, AR0 & mpyshi AR1, AR0 & mpyshi AR1, *+AR0(1), AR0 & mpyshi *+AR0(1), AR1, AR0 & mpyshi *+AR0(1), AR0 & mpyshi *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & mpyshi 5, AR1, AR0 & mpyshi 5, AR0 & mpyshi AR1, -5, AR0 & mpyshi *+AR0(5), AR1, AR0 & mpyshi *+AR0(5), AR0 & mpyshi AR1, *+AR0(5), AR0 & mpyshi 5, *+AR0(5), AR0 & mpyshi *+AR0(5), -5, AR0 & mpyshi *+AR0(5), *+AR1(5), AR0 & .endif & mpyshi3_TC: & mpyshi3 AR2, AR1, AR0 & mpyshi3 AR1, AR0 & mpyshi3 AR1, *+AR0(1), AR0 & mpyshi3 *+AR0(1), AR1, AR0 & mpyshi3 *+AR0(1), AR0 & mpyshi3 *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & mpyshi3 -5, AR1, AR0 & mpyshi3 -5, AR0 & mpyshi3 AR1, -5, AR0 & mpyshi3 *+AR0(5), AR1, AR0 & mpyshi3 *+AR0(5), AR0 & mpyshi3 AR1, *+AR0(5), AR0 & mpyshi3 -5, *+AR0(5), AR0 & mpyshi3 *+AR0(5), -5, AR0 & mpyshi3 *+AR0(5), *+AR1(5), AR0 & .endif
+ mpyuhi_A: & mpyuhi AR1, AR0 & mpyuhi AR0 & mpyuhi @start, AR0 & mpyuhi *+AR0(5), AR0 & mpyuhi -5, AR0
+ mpyuhi_TC: & mpyuhi AR2, AR1, AR0 & mpyuhi AR1, AR0 & mpyuhi AR1, *+AR0(1), AR0 & mpyuhi *+AR0(1), AR1, AR0 & mpyuhi *+AR0(1), AR0 & mpyuhi *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & mpyuhi 5, AR1, AR0 & mpyuhi 5, AR0 & mpyuhi AR1, -5, AR0 & mpyuhi *+AR0(5), AR1, AR0 & mpyuhi *+AR0(5), AR0 & mpyuhi AR1, *+AR0(5), AR0 & mpyuhi 5, *+AR0(5), AR0 & mpyuhi *+AR0(5), -5, AR0 & mpyuhi *+AR0(5), *+AR1(5), AR0 & .endif & mpyuhi3_TC: & mpyuhi3 AR2, AR1, AR0 & mpyuhi3 AR1, AR0 & mpyuhi3 AR1, *+AR0(1), AR0 & mpyuhi3 *+AR0(1), AR1, AR0 & mpyuhi3 *+AR0(1), AR0 & mpyuhi3 *+AR1(1), *+AR0(1), AR0 & .ifdef TEST_C4X & mpyuhi3 -5, AR1, AR0 & mpyuhi3 -5, AR0 & mpyuhi3 AR1, -5, AR0 & mpyuhi3 *+AR0(5), AR1, AR0 & mpyuhi3 *+AR0(5), AR0 & mpyuhi3 AR1, *+AR0(5), AR0 & mpyuhi3 -5, *+AR0(5), AR0 & mpyuhi3 *+AR0(5), -5, AR0 & mpyuhi3 *+AR0(5), *+AR1(5), AR0 & .endif
+ rcpf_BA: & rcpf AR1, R0 & rcpf R0 & rcpf @start, R0 & rcpf *+AR0(5), R0 & rcpf 3.5, R0
+retid_Z: retiCd
+ retid
+rptb2_I2: rptb AR0
+rptbd_I2: rptbd start
+ rptbd AR0
+ rsqrf_B: & rsqrf R1, R0 & rsqrf R0 & rsqrf @start, R0 & rsqrf *+AR0(5), R0 & rsqrf 3.5, R0
+ sigi_A6: & sigi @start, AR0 & sigi *+AR0(5), AR0
+sti2_A7: sti -5, @start
+ sti -5, *+AR0(5)
+stik_Z: stik -5, @start
+ stik -5, *+AR0(5)
+ toieee_B: & toieee R1, R0 & toieee R0 & toieee @start, R0 & toieee *+AR0(5), R0 & toieee 3.5, R0
+ toieee_stf_P: & toieee *+AR0(1), R0 &|| stf R1, *+AR1(1) & stf R1, *+AR1(1) &|| toieee *+AR0(1), R0
+ .endif
+ .end
+
diff --git a/gas/testsuite/gas/tic4x/opcodes_c3x.d b/gas/testsuite/gas/tic4x/opcodes_c3x.d
new file mode 100644
index 0000000..ae92bfa
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/opcodes_c3x.d
@@ -0,0 +1,1342 @@
+#as: -m30 --defsym TEST_C3X=1
+#objdump: -d -z
+#name: c3x opcodes
+#source: opcodes.s
+
+.*: +file format .*c4x.*
+
+Disassembly of section .text:
+
+00000000 <absf_B>:
+ 0: 00000001.*
+ 1: 00000000.*
+ 2: 00200000.*
+ 3: 00400005.*
+ 4: 00601600.*
+
+00000005 <absf_stf_P>:
+ 5: c8010100.*
+ 6: c8010100.*
+
+00000007 <absi_A>:
+ 7: 00880009.*
+ 8: 00880008.*
+ 9: 00a80000.*
+ a: 00c80005.*
+ b: 00e8fffb.*
+
+0000000c <absi_sti_P>:
+ c: ca010100.*
+ d: ca010100.*
+
+0000000e <addc_A>:
+ e: 01080009.*
+ f: 01080008.*
+ 10: 01280000.*
+ 11: 01480005.*
+ 12: 0168fffb.*
+
+00000013 <addc_TC>:
+ 13: 2008090a.*
+ 14: 01080009.*
+ 15: 20280009.*
+ 16: 20480900.*
+ 17: 01480001.*
+ 18: 20680001.*
+
+00000019 <addc3_TC>:
+ 19: 2008090a.*
+ 1a: 20080809.*
+ 1b: 20280009.*
+ 1c: 20480900.*
+ 1d: 20480800.*
+ 1e: 20680001.*
+
+0000001f <addf_B>:
+ 1f: 01800001.*
+ 20: 01800000.*
+ 21: 01a00000.*
+ 22: 01c00005.*
+ 23: 01e01600.*
+
+00000024 <addf_SC>:
+ 24: 20800102.*
+ 25: 01800001.*
+ 26: 20a00001.*
+ 27: 20c00100.*
+ 28: 01c00001.*
+ 29: 20e00100.*
+
+0000002a <addf3_SC>:
+ 2a: 20800102.*
+ 2b: 20800001.*
+ 2c: 20a00001.*
+ 2d: 20c00100.*
+ 2e: 20c00000.*
+ 2f: 20e00100.*
+
+00000030 <addf_stf_QC>:
+ 30: cc090100.*
+ 31: cc010100.*
+ 32: cc010100.*
+ 33: cc090100.*
+ 34: cc010100.*
+ 35: cc010100.*
+
+00000036 <addf3_stf_QC>:
+ 36: cc090100.*
+ 37: cc010100.*
+ 38: cc010100.*
+ 39: cc090100.*
+ 3a: cc010100.*
+ 3b: cc010100.*
+
+0000003c <addi_A>:
+ 3c: 02080009.*
+ 3d: 02080008.*
+ 3e: 02280000.*
+ 3f: 02480005.*
+ 40: 0268fffb.*
+
+00000041 <addi_TC>:
+ 41: 2108090a.*
+ 42: 02080009.*
+ 43: 21280009.*
+ 44: 21480900.*
+ 45: 02480001.*
+ 46: 21680001.*
+
+00000047 <addi3_TC>:
+ 47: 2108090a.*
+ 48: 21080809.*
+ 49: 21280009.*
+ 4a: 21480900.*
+ 4b: 21480800.*
+ 4c: 21680001.*
+
+0000004d <addi_sti_QC>:
+ 4d: ce090100.*
+ 4e: ce010100.*
+ 4f: ce010100.*
+ 50: ce090100.*
+ 51: ce010100.*
+ 52: ce010100.*
+
+00000053 <addi3_sti_QC>:
+ 53: ce090100.*
+ 54: ce010100.*
+ 55: ce010100.*
+ 56: ce090100.*
+ 57: ce010100.*
+ 58: ce010100.*
+
+00000059 <and_AU>:
+ 59: 02880009.*
+ 5a: 02880008.*
+ 5b: 02a80000.*
+ 5c: 02c80005.*
+ 5d: 02e80005.*
+
+0000005e <and_TC>:
+ 5e: 2188090a.*
+ 5f: 02880009.*
+ 60: 21a80009.*
+ 61: 21c80900.*
+ 62: 02c80001.*
+ 63: 21e80001.*
+
+00000064 <and3_TC>:
+ 64: 2188090a.*
+ 65: 21880809.*
+ 66: 21a80009.*
+ 67: 21c80900.*
+ 68: 21c80800.*
+ 69: 21e80001.*
+
+0000006a <and_sti_QC>:
+ 6a: d0090100.*
+ 6b: d0010100.*
+ 6c: d0010100.*
+ 6d: d0090100.*
+ 6e: d0010100.*
+ 6f: d0010100.*
+
+00000070 <and3_sti_QC>:
+ 70: d0090100.*
+ 71: d0010100.*
+ 72: d0010100.*
+ 73: d0090100.*
+ 74: d0010100.*
+ 75: d0010100.*
+
+00000076 <andn_AU>:
+ 76: 03080009.*
+ 77: 03080008.*
+ 78: 03280000.*
+ 79: 03480005.*
+ 7a: 03680005.*
+
+0000007b <andn_T>:
+ 7b: 2208090a.*
+ 7c: 03080009.*
+ 7d: 22280009.*
+ 7e: 22480900.*
+ 7f: 03480001.*
+ 80: 22680001.*
+
+00000081 <andn3_T>:
+ 81: 2208090a.*
+ 82: 22080809.*
+ 83: 22280009.*
+ 84: 22480900.*
+ 85: 22480800.*
+ 86: 22680001.*
+
+00000087 <ash_A>:
+ 87: 03880009.*
+ 88: 03880008.*
+ 89: 03a80000.*
+ 8a: 03c80005.*
+ 8b: 03e8fffb.*
+
+0000008c <ash_T>:
+ 8c: 2288090a.*
+ 8d: 03880009.*
+ 8e: 22a80009.*
+ 8f: 22c80900.*
+ 90: 03c80001.*
+ 91: 22e80001.*
+
+00000092 <ash3_T>:
+ 92: 2288090a.*
+ 93: 22880809.*
+ 94: 22a80009.*
+ 95: 22c80900.*
+ 96: 22c80800.*
+ 97: 22e80001.*
+
+00000098 <ash_sti_Q>:
+ 98: d2010100.*
+ 99: d2010100.*
+
+0000009a <ash3_sti_Q>:
+ 9a: d2010100.*
+ 9b: d2010100.*
+
+0000009c <bC_J>:
+ 9c: 68010000.*
+ 9d: 6a01ff62.*
+
+0000009e <b_J>:
+ 9e: 68000000.*
+ 9f: 6a00ff60.*
+
+000000a0 <bCd_J>:
+ a0: 68210000.*
+ a1: 6a21ff5c.*
+
+000000a2 <bd_J>:
+ a2: 68200000.*
+ a3: 6a20ff5a.*
+
+000000a4 <br_I>:
+ a4: 60000000.*
+
+000000a5 <brd_I>:
+ a5: 61000000.*
+
+000000a6 <call_I>:
+ a6: 62000000.*
+
+000000a7 <call_JS>:
+ a7: 70010000.*
+ a8: 7201ff57.*
+
+000000a9 <cmpf_B>:
+ a9: 04000001.*
+ aa: 04000000.*
+ ab: 04200000.*
+ ac: 04400005.*
+ ad: 04601600.*
+
+000000ae <cmpf_S2>:
+ ae: 04010002.*
+ af: 23200001.*
+ b0: 04410001.*
+ b1: 23600100.*
+
+000000b2 <cmpf3_S2>:
+ b2: 23000102.*
+ b3: 23200001.*
+ b4: 23400100.*
+ b5: 23600100.*
+
+000000b6 <cmpi_A>:
+ b6: 04880009.*
+ b7: 04880008.*
+ b8: 04a80000.*
+ b9: 04c80005.*
+ ba: 04e8fffb.*
+
+000000bb <cmpi_T2>:
+ bb: 0489000a.*
+ bc: 23a00009.*
+ bd: 04c90001.*
+ be: 23e00001.*
+
+000000bf <cmpi3_T2>:
+ bf: 2380090a.*
+ c0: 23a00009.*
+ c1: 23c00900.*
+ c2: 23e00001.*
+
+000000c3 <dbC_D>:
+ c3: 6c010000.*
+ c4: 6e01ff3b.*
+
+000000c5 <db_D>:
+ c5: 6c000000.*
+ c6: 6e00ff39.*
+
+000000c7 <dbCd_D>:
+ c7: 6c210000.*
+ c8: 6e21ff35.*
+
+000000c9 <dbd_D>:
+ c9: 6c200000.*
+ ca: 6e20ff33.*
+
+000000cb <fix_AF>:
+ cb: 05000001.*
+ cc: 05000000.*
+ cd: 05280000.*
+ ce: 05480005.*
+ cf: 05681600.*
+
+000000d0 <fix_sti_P>:
+ d0: d4010100.*
+ d1: d4010100.*
+
+000000d2 <float_BI>:
+ d2: 05800009.*
+ d3: 05800000.*
+ d4: 05a00000.*
+ d5: 05c00005.*
+ d6: 05e0fffb.*
+
+000000d7 <float_stf_P>:
+ d7: d6010100.*
+ d8: d6010100.*
+
+000000d9 <iack_Z>:
+ d9: 1b200000.*
+ da: 1b400001.*
+
+000000db <idle_Z>:
+ db: 06000000.*
+
+000000dc <lde_B>:
+ dc: 06800001.*
+ dd: 06800000.*
+ de: 06a00000.*
+ df: 06c00005.*
+ e0: 06e01600.*
+
+000000e1 <ldf_B>:
+ e1: 07000001.*
+ e2: 07000000.*
+ e3: 07200000.*
+ e4: 07400005.*
+ e5: 07601600.*
+
+000000e6 <ldf_LL>:
+ e6: c4080100.*
+ e7: c4080100.*
+ e8: c4080100.*
+
+000000e9 <ldf_stf_P>:
+ e9: d8010100.*
+ ea: d8010100.*
+
+000000eb <ldfC_BB>:
+ eb: 40800001.*
+ ec: 40800000.*
+ ed: 40a00000.*
+ ee: 40c00005.*
+ ef: 40e01600.*
+
+000000f0 <ldfi_B6>:
+ f0: 07a00000.*
+ f1: 07c00005.*
+
+000000f2 <ldi_A>:
+ f2: 08080009.*
+ f3: 08080008.*
+ f4: 08280000.*
+ f5: 08480005.*
+ f6: 0868fffb.*
+
+000000f7 <ldi_LL>:
+ f7: c6080100.*
+ f8: c6080100.*
+ f9: c6080100.*
+
+000000fa <ldi_sti_P>:
+ fa: da010100.*
+ fb: da010100.*
+
+000000fc <ldiC_AB>:
+ fc: 50880009.*
+ fd: 50880008.*
+ fe: 50a80000.*
+ ff: 50c80005.*
+ 100: 50e8fffb.*
+
+00000101 <ldii_A6>:
+ 101: 08a80000.*
+ 102: 08c80005.*
+
+00000103 <ldp_Z>:
+ 103: 50700000.*
+
+00000104 <ldm_B>:
+ 104: 09000001.*
+ 105: 09000000.*
+ 106: 09200000.*
+ 107: 09400005.*
+ 108: 09601600.*
+
+00000109 <lsh_A>:
+ 109: 09880009.*
+ 10a: 09880008.*
+ 10b: 09a80000.*
+ 10c: 09c80005.*
+ 10d: 09e8fffb.*
+
+0000010e <lsh_T>:
+ 10e: 2408090a.*
+ 10f: 09880009.*
+ 110: 24280009.*
+ 111: 24480900.*
+ 112: 09c80001.*
+ 113: 24680001.*
+
+00000114 <lsh3_T>:
+ 114: 2408090a.*
+ 115: 24080809.*
+ 116: 24280009.*
+ 117: 24480900.*
+ 118: 24480800.*
+ 119: 24680001.*
+
+0000011a <lsh_sti_Q>:
+ 11a: dc010100.*
+ 11b: dc010100.*
+
+0000011c <lsh3_sti_Q>:
+ 11c: dc010100.*
+ 11d: dc010100.*
+
+0000011e <mpyf_B>:
+ 11e: 0a000001.*
+ 11f: 0a000000.*
+ 120: 0a200000.*
+ 121: 0a400005.*
+ 122: 0a601600.*
+
+00000123 <mpyf_SC>:
+ 123: 24800102.*
+ 124: 0a000001.*
+ 125: 24a00001.*
+ 126: 24c00100.*
+ 127: 0a400001.*
+ 128: 24e00100.*
+
+00000129 <mpyf3_SC>:
+ 129: 24800102.*
+ 12a: 24800001.*
+ 12b: 24a00001.*
+ 12c: 24c00100.*
+ 12d: 24c00000.*
+ 12e: 24e00100.*
+
+0000012f <mpyf_addf_M>:
+ 12f: 80080100.*
+ 130: 80100100.*
+ 131: 81000001.*
+ 132: 81000001.*
+ 133: 81000001.*
+ 134: 820a0100.*
+ 135: 82020100.*
+ 136: 830b0001.*
+ 137: 83030001.*
+ 138: 830a0001.*
+ 139: 83020001.*
+ 13a: 83000001.*
+ 13b: 83020001.*
+
+0000013c <mpyf3_addf_M>:
+ 13c: 80080100.*
+ 13d: 80100100.*
+ 13e: 81000001.*
+ 13f: 81000001.*
+ 140: 81000001.*
+ 141: 820a0100.*
+ 142: 82020100.*
+ 143: 830b0001.*
+ 144: 83030001.*
+ 145: 830a0001.*
+ 146: 83020001.*
+ 147: 83000001.*
+ 148: 83020001.*
+
+00000149 <mpyf_addf3_M>:
+ 149: 80080100.*
+ 14a: 80100100.*
+ 14b: 81000001.*
+ 14c: 81000001.*
+ 14d: 81000001.*
+ 14e: 820a0100.*
+ 14f: 82020100.*
+ 150: 830b0001.*
+ 151: 83030001.*
+ 152: 830a0001.*
+ 153: 83020001.*
+ 154: 83000001.*
+ 155: 83020001.*
+
+00000156 <mpyf3_addf3_M>:
+ 156: 80080100.*
+ 157: 80100100.*
+ 158: 81000001.*
+ 159: 81000001.*
+ 15a: 81000001.*
+ 15b: 820a0100.*
+ 15c: 82020100.*
+ 15d: 830b0001.*
+ 15e: 83030001.*
+ 15f: 830a0001.*
+ 160: 83020001.*
+ 161: 83000001.*
+ 162: 83020001.*
+
+00000163 <addf_mpyf_M>:
+ 163: 80080100.*
+ 164: 80100100.*
+ 165: 81000001.*
+ 166: 81000001.*
+ 167: 81000001.*
+ 168: 820a0100.*
+ 169: 82020100.*
+ 16a: 830b0001.*
+ 16b: 83030001.*
+ 16c: 830a0001.*
+ 16d: 83020001.*
+ 16e: 83000001.*
+ 16f: 83020001.*
+
+00000170 <addf3_mpyf3_M>:
+ 170: 80080100.*
+ 171: 80100100.*
+ 172: 81000001.*
+ 173: 81000001.*
+ 174: 81000001.*
+ 175: 820a0100.*
+ 176: 82020100.*
+ 177: 830b0001.*
+ 178: 83030001.*
+ 179: 830a0001.*
+ 17a: 83020001.*
+ 17b: 83000001.*
+ 17c: 83020001.*
+
+0000017d <addf_mpyf3_M>:
+ 17d: 80080100.*
+ 17e: 80100100.*
+ 17f: 81000001.*
+ 180: 81000001.*
+ 181: 81000001.*
+ 182: 820a0100.*
+ 183: 82020100.*
+ 184: 830b0001.*
+ 185: 83030001.*
+ 186: 830a0001.*
+ 187: 83020001.*
+ 188: 83000001.*
+ 189: 83020001.*
+
+0000018a <addf3_mpyf_M>:
+ 18a: 80080100.*
+ 18b: 80100100.*
+ 18c: 81000001.*
+ 18d: 81000001.*
+ 18e: 81000001.*
+ 18f: 820a0100.*
+ 190: 82020100.*
+ 191: 830b0001.*
+ 192: 83030001.*
+ 193: 830a0001.*
+ 194: 83020001.*
+ 195: 83000001.*
+ 196: 83020001.*
+
+00000197 <mpyf_stf_QC>:
+ 197: de090100.*
+ 198: de010100.*
+ 199: de010100.*
+ 19a: de090100.*
+ 19b: de010100.*
+ 19c: de010100.*
+
+0000019d <mpyf3_stf_QC>:
+ 19d: de090100.*
+ 19e: de010100.*
+ 19f: de010100.*
+ 1a0: de090100.*
+ 1a1: de010100.*
+ 1a2: de010100.*
+
+000001a3 <mpyf_subf_M>:
+ 1a3: 84080100.*
+ 1a4: 84100100.*
+ 1a5: 85000001.*
+ 1a6: 85000001.*
+ 1a7: 85000001.*
+ 1a8: 860a0100.*
+ 1a9: 86020100.*
+ 1aa: 870b0001.*
+ 1ab: 87030001.*
+ 1ac: 870a0001.*
+ 1ad: 87020001.*
+ 1ae: 87000001.*
+ 1af: 87020001.*
+
+000001b0 <mpyf3_subf_M>:
+ 1b0: 84080100.*
+ 1b1: 84100100.*
+ 1b2: 85000001.*
+ 1b3: 85000001.*
+ 1b4: 85000001.*
+ 1b5: 860a0100.*
+ 1b6: 86020100.*
+ 1b7: 870b0001.*
+ 1b8: 87030001.*
+ 1b9: 870a0001.*
+ 1ba: 87020001.*
+ 1bb: 87000001.*
+ 1bc: 87020001.*
+
+000001bd <mpyf_subf3_M>:
+ 1bd: 84080100.*
+ 1be: 84100100.*
+ 1bf: 85000001.*
+ 1c0: 85000001.*
+ 1c1: 85000001.*
+ 1c2: 860a0100.*
+ 1c3: 86020100.*
+ 1c4: 870b0001.*
+ 1c5: 87030001.*
+ 1c6: 870a0001.*
+ 1c7: 87020001.*
+ 1c8: 87000001.*
+ 1c9: 87020001.*
+
+000001ca <mpyf3_subf3_M>:
+ 1ca: 84080100.*
+ 1cb: 84100100.*
+ 1cc: 85000001.*
+ 1cd: 85000001.*
+ 1ce: 85000001.*
+ 1cf: 860a0100.*
+ 1d0: 86020100.*
+ 1d1: 870b0001.*
+ 1d2: 87030001.*
+ 1d3: 870a0001.*
+ 1d4: 87020001.*
+ 1d5: 87000001.*
+ 1d6: 87020001.*
+
+000001d7 <subf_mpyf_M>:
+ 1d7: 84080100.*
+ 1d8: 84100100.*
+ 1d9: 85000001.*
+ 1da: 85000001.*
+ 1db: 85000001.*
+ 1dc: 860a0100.*
+ 1dd: 86020100.*
+ 1de: 870b0001.*
+ 1df: 87030001.*
+ 1e0: 870a0001.*
+ 1e1: 87020001.*
+ 1e2: 87000001.*
+ 1e3: 87020001.*
+
+000001e4 <subf3_mpyf3_M>:
+ 1e4: 84080100.*
+ 1e5: 84100100.*
+ 1e6: 85000001.*
+ 1e7: 85000001.*
+ 1e8: 85000001.*
+ 1e9: 860a0100.*
+ 1ea: 86020100.*
+ 1eb: 870b0001.*
+ 1ec: 87030001.*
+ 1ed: 870a0001.*
+ 1ee: 87020001.*
+ 1ef: 87000001.*
+ 1f0: 87020001.*
+
+000001f1 <subf_mpyf3_M>:
+ 1f1: 84080100.*
+ 1f2: 84100100.*
+ 1f3: 85000001.*
+ 1f4: 85000001.*
+ 1f5: 85000001.*
+ 1f6: 860a0100.*
+ 1f7: 86020100.*
+ 1f8: 870b0001.*
+ 1f9: 87030001.*
+ 1fa: 870a0001.*
+ 1fb: 87020001.*
+ 1fc: 87000001.*
+ 1fd: 87020001.*
+
+000001fe <subf3_mpyf_M>:
+ 1fe: 84080100.*
+ 1ff: 84100100.*
+ 200: 85000001.*
+ 201: 85000001.*
+ 202: 85000001.*
+ 203: 860a0100.*
+ 204: 86020100.*
+ 205: 870b0001.*
+ 206: 87030001.*
+ 207: 870a0001.*
+ 208: 87020001.*
+ 209: 87000001.*
+ 20a: 87020001.*
+
+0000020b <mpyi_A>:
+ 20b: 0a880009.*
+ 20c: 0a880008.*
+ 20d: 0aa80000.*
+ 20e: 0ac80005.*
+ 20f: 0ae8fffb.*
+
+00000210 <mpyi_TC>:
+ 210: 2508090a.*
+ 211: 0a880009.*
+ 212: 25280009.*
+ 213: 25480900.*
+ 214: 0ac80001.*
+ 215: 25680001.*
+
+00000216 <mpyi3_TC>:
+ 216: 2508090a.*
+ 217: 25080809.*
+ 218: 25280009.*
+ 219: 25480900.*
+ 21a: 25480800.*
+ 21b: 25680001.*
+
+0000021c <mpyi_addi_M>:
+ 21c: 88080100.*
+ 21d: 88100100.*
+ 21e: 89000001.*
+ 21f: 89000001.*
+ 220: 89000001.*
+ 221: 8a0a0100.*
+ 222: 8a020100.*
+ 223: 8b0b0001.*
+ 224: 8b030001.*
+ 225: 8b0a0001.*
+ 226: 8b020001.*
+ 227: 8b000001.*
+ 228: 8b020001.*
+
+00000229 <mpyi3_addi_M>:
+ 229: 88080100.*
+ 22a: 88100100.*
+ 22b: 89000001.*
+ 22c: 89000001.*
+ 22d: 89000001.*
+ 22e: 8a0a0100.*
+ 22f: 8a020100.*
+ 230: 8b0b0001.*
+ 231: 8b030001.*
+ 232: 8b0a0001.*
+ 233: 8b020001.*
+ 234: 8b000001.*
+ 235: 8b020001.*
+
+00000236 <mpyi_addi3_M>:
+ 236: 88080100.*
+ 237: 88100100.*
+ 238: 89000001.*
+ 239: 89000001.*
+ 23a: 89000001.*
+ 23b: 8a0a0100.*
+ 23c: 8a020100.*
+ 23d: 8b0b0001.*
+ 23e: 8b030001.*
+ 23f: 8b0a0001.*
+ 240: 8b020001.*
+ 241: 8b000001.*
+ 242: 8b020001.*
+
+00000243 <mpyi3_addi3_M>:
+ 243: 88080100.*
+ 244: 88100100.*
+ 245: 89000001.*
+ 246: 89000001.*
+ 247: 89000001.*
+ 248: 8a0a0100.*
+ 249: 8a020100.*
+ 24a: 8b0b0001.*
+ 24b: 8b030001.*
+ 24c: 8b0a0001.*
+ 24d: 8b020001.*
+ 24e: 8b000001.*
+ 24f: 8b020001.*
+
+00000250 <addi_mpyi_M>:
+ 250: 88080100.*
+ 251: 88100100.*
+ 252: 89000001.*
+ 253: 89000001.*
+ 254: 89000001.*
+ 255: 8a0a0100.*
+ 256: 8a020100.*
+ 257: 8b0b0001.*
+ 258: 8b030001.*
+ 259: 8b0a0001.*
+ 25a: 8b020001.*
+ 25b: 8b000001.*
+ 25c: 8b020001.*
+
+0000025d <addi3_mpyi3_M>:
+ 25d: 88080100.*
+ 25e: 88100100.*
+ 25f: 89000001.*
+ 260: 89000001.*
+ 261: 89000001.*
+ 262: 8a0a0100.*
+ 263: 8a020100.*
+ 264: 8b0b0001.*
+ 265: 8b030001.*
+ 266: 8b0a0001.*
+ 267: 8b020001.*
+ 268: 8b000001.*
+ 269: 8b020001.*
+
+0000026a <addi_mpyi3_M>:
+ 26a: 88080100.*
+ 26b: 88100100.*
+ 26c: 89000001.*
+ 26d: 89000001.*
+ 26e: 89000001.*
+ 26f: 8a0a0100.*
+ 270: 8a020100.*
+ 271: 8b0b0001.*
+ 272: 8b030001.*
+ 273: 8b0a0001.*
+ 274: 8b020001.*
+ 275: 8b000001.*
+ 276: 8b020001.*
+
+00000277 <addi3_mpyi_M>:
+ 277: 88080100.*
+ 278: 88100100.*
+ 279: 89000001.*
+ 27a: 89000001.*
+ 27b: 89000001.*
+ 27c: 8a0a0100.*
+ 27d: 8a020100.*
+ 27e: 8b0b0001.*
+ 27f: 8b030001.*
+ 280: 8b0a0001.*
+ 281: 8b020001.*
+ 282: 8b000001.*
+ 283: 8b020001.*
+
+00000284 <mpyi_sti_QC>:
+ 284: e0090100.*
+ 285: e0010100.*
+ 286: e0010100.*
+ 287: e0090100.*
+ 288: e0010100.*
+ 289: e0010100.*
+
+0000028a <mpyi3_sti_QC>:
+ 28a: e0090100.*
+ 28b: e0010100.*
+ 28c: e0010100.*
+ 28d: e0090100.*
+ 28e: e0010100.*
+ 28f: e0010100.*
+
+00000290 <mpyi_subi_M>:
+ 290: 8c080100.*
+ 291: 8c100100.*
+ 292: 8d000001.*
+ 293: 8d000001.*
+ 294: 8d000001.*
+ 295: 8e0a0100.*
+ 296: 8e020100.*
+ 297: 8f0b0001.*
+ 298: 8f030001.*
+ 299: 8f0a0001.*
+ 29a: 8f020001.*
+ 29b: 8f000001.*
+ 29c: 8f020001.*
+
+0000029d <mpyi3_subi_M>:
+ 29d: 8c080100.*
+ 29e: 8c100100.*
+ 29f: 8d000001.*
+ 2a0: 8d000001.*
+ 2a1: 8d000001.*
+ 2a2: 8e0a0100.*
+ 2a3: 8e020100.*
+ 2a4: 8f0b0001.*
+ 2a5: 8f030001.*
+ 2a6: 8f0a0001.*
+ 2a7: 8f020001.*
+ 2a8: 8f000001.*
+ 2a9: 8f020001.*
+
+000002aa <mpyi_subi3_M>:
+ 2aa: 8c080100.*
+ 2ab: 8c100100.*
+ 2ac: 8d000001.*
+ 2ad: 8d000001.*
+ 2ae: 8d000001.*
+ 2af: 8e0a0100.*
+ 2b0: 8e020100.*
+ 2b1: 8f0b0001.*
+ 2b2: 8f030001.*
+ 2b3: 8f0a0001.*
+ 2b4: 8f020001.*
+ 2b5: 8f000001.*
+ 2b6: 8f020001.*
+
+000002b7 <mpyi3_subi3_M>:
+ 2b7: 8c080100.*
+ 2b8: 8c100100.*
+ 2b9: 8d000001.*
+ 2ba: 8d000001.*
+ 2bb: 8d000001.*
+ 2bc: 8e0a0100.*
+ 2bd: 8e020100.*
+ 2be: 8f0b0001.*
+ 2bf: 8f030001.*
+ 2c0: 8f0a0001.*
+ 2c1: 8f020001.*
+ 2c2: 8f000001.*
+ 2c3: 8f020001.*
+
+000002c4 <subi_mpyi_M>:
+ 2c4: 8c080100.*
+ 2c5: 8c100100.*
+ 2c6: 8d000001.*
+ 2c7: 8d000001.*
+ 2c8: 8d000001.*
+ 2c9: 8e0a0100.*
+ 2ca: 8e020100.*
+ 2cb: 8f0b0001.*
+ 2cc: 8f030001.*
+ 2cd: 8f0a0001.*
+ 2ce: 8f020001.*
+ 2cf: 8f000001.*
+ 2d0: 8f020001.*
+
+000002d1 <subi3_mpyi3_M>:
+ 2d1: 8c080100.*
+ 2d2: 8c100100.*
+ 2d3: 8d000001.*
+ 2d4: 8d000001.*
+ 2d5: 8d000001.*
+ 2d6: 8e0a0100.*
+ 2d7: 8e020100.*
+ 2d8: 8f0b0001.*
+ 2d9: 8f030001.*
+ 2da: 8f0a0001.*
+ 2db: 8f020001.*
+ 2dc: 8f000001.*
+ 2dd: 8f020001.*
+
+000002de <subi_mpyi3_M>:
+ 2de: 8c080100.*
+ 2df: 8c100100.*
+ 2e0: 8d000001.*
+ 2e1: 8d000001.*
+ 2e2: 8d000001.*
+ 2e3: 8e0a0100.*
+ 2e4: 8e020100.*
+ 2e5: 8f0b0001.*
+ 2e6: 8f030001.*
+ 2e7: 8f0a0001.*
+ 2e8: 8f020001.*
+ 2e9: 8f000001.*
+ 2ea: 8f020001.*
+
+000002eb <subi3_mpyi_M>:
+ 2eb: 8c080100.*
+ 2ec: 8c100100.*
+ 2ed: 8d000001.*
+ 2ee: 8d000001.*
+ 2ef: 8d000001.*
+ 2f0: 8e0a0100.*
+ 2f1: 8e020100.*
+ 2f2: 8f0b0001.*
+ 2f3: 8f030001.*
+ 2f4: 8f0a0001.*
+ 2f5: 8f020001.*
+ 2f6: 8f000001.*
+ 2f7: 8f020001.*
+
+000002f8 <negb_A>:
+ 2f8: 0b080009.*
+ 2f9: 0b080008.*
+ 2fa: 0b280000.*
+ 2fb: 0b480005.*
+ 2fc: 0b68fffb.*
+
+000002fd <negf_B>:
+ 2fd: 0b800001.*
+ 2fe: 0b800000.*
+ 2ff: 0ba00000.*
+ 300: 0bc00005.*
+ 301: 0be01600.*
+
+00000302 <negf_stf_P>:
+ 302: e2010100.*
+ 303: e2010100.*
+
+00000304 <negi_A>:
+ 304: 0c080009.*
+ 305: 0c080008.*
+ 306: 0c280000.*
+ 307: 0c480005.*
+ 308: 0c68fffb.*
+
+00000309 <negi_sti_P>:
+ 309: e4010100.*
+ 30a: e4010100.*
+
+0000030b <nop_A2>:
+ 30b: 0c800008.*
+ 30c: 0cc00005.*
+ 30d: 0c800000.*
+
+0000030e <norm_B>:
+ 30e: 0d000001.*
+ 30f: 0d000000.*
+ 310: 0d200000.*
+ 311: 0d400005.*
+ 312: 0d601600.*
+
+00000313 <not_AU>:
+ 313: 0d880009.*
+ 314: 0d880008.*
+ 315: 0da80000.*
+ 316: 0dc80005.*
+ 317: 0de80005.*
+
+00000318 <not_sti_P>:
+ 318: e6010100.*
+ 319: e6010100.*
+
+0000031a <or_AU>:
+ 31a: 10080009.*
+ 31b: 10080008.*
+ 31c: 10280000.*
+ 31d: 10480005.*
+ 31e: 10680005.*
+
+0000031f <or_TC>:
+ 31f: 2588090a.*
+ 320: 10080009.*
+ 321: 25a80009.*
+ 322: 25c80900.*
+ 323: 10480001.*
+ 324: 25e80001.*
+
+00000325 <or3_TC>:
+ 325: 2588090a.*
+ 326: 25880809.*
+ 327: 25a80009.*
+ 328: 25c80900.*
+ 329: 25c80800.*
+ 32a: 25e80001.*
+
+0000032b <or_sti_QC>:
+ 32b: e8090100.*
+ 32c: e8010100.*
+ 32d: e8010100.*
+ 32e: e8090100.*
+ 32f: e8010100.*
+ 330: e8010100.*
+
+00000331 <or3_sti_QC>:
+ 331: e8090100.*
+ 332: e8010100.*
+ 333: e8010100.*
+ 334: e8090100.*
+ 335: e8010100.*
+ 336: e8010100.*
+
+00000337 <pop_R>:
+ 337: 0e280000.*
+
+00000338 <popf_RF>:
+ 338: 0ea00000.*
+
+00000339 <push_R>:
+ 339: 0f280000.*
+
+0000033a <pushf_RF>:
+ 33a: 0fa00000.*
+
+0000033b <reti_Z>:
+ 33b: 78010000.*
+ 33c: 78000000.*
+
+0000033d <rets_Z>:
+ 33d: 78810000.*
+ 33e: 78800000.*
+
+0000033f <rnd_B>:
+ 33f: 11000001.*
+ 340: 11000000.*
+ 341: 11200000.*
+ 342: 11400005.*
+ 343: 11601600.*
+
+00000344 <rol_R>:
+ 344: 11e80001.*
+
+00000345 <rolc_R>:
+ 345: 12680001.*
+
+00000346 <ror_R>:
+ 346: 12e8ffff.*
+
+00000347 <rorc_R>:
+ 347: 1368ffff.*
+
+00000348 <rptb_I2>:
+ 348: 64000000.*
+
+00000349 <rpts_A3>:
+ 349: 139b0009.*
+ 34a: 13bb0000.*
+ 34b: 13db0005.*
+ 34c: 13fb0005.*
+
+0000034d <sigi_Z>:
+ 34d: 16000000.*
+
+0000034e <stf_B7>:
+ 34e: 14200000.*
+ 34f: 14400005.*
+
+00000350 <stf_LS>:
+ 350: c0010100.*
+ 351: c0010100.*
+ 352: c0010100.*
+
+00000353 <stfi_B7>:
+ 353: 14a00000.*
+ 354: 14c00005.*
+
+00000355 <sti_A7>:
+ 355: 15280000.*
+ 356: 15480005.*
+
+00000357 <sti_LS>:
+ 357: c2010100.*
+ 358: c2010100.*
+ 359: c2010100.*
+
+0000035a <stii_A7>:
+ 35a: 15a80000.*
+ 35b: 15c80005.*
+
+0000035c <subb_A>:
+ 35c: 16880009.*
+ 35d: 16880008.*
+ 35e: 16a80000.*
+ 35f: 16c80005.*
+ 360: 16e8fffb.*
+
+00000361 <subb_T>:
+ 361: 2608090a.*
+ 362: 16880009.*
+ 363: 26280009.*
+ 364: 26480900.*
+ 365: 16c80001.*
+ 366: 26680001.*
+
+00000367 <subb3_T>:
+ 367: 2608090a.*
+ 368: 26080809.*
+ 369: 26280009.*
+ 36a: 26480900.*
+ 36b: 26480800.*
+ 36c: 26680001.*
+
+0000036d <subc_A>:
+ 36d: 17080009.*
+ 36e: 17080008.*
+ 36f: 17280000.*
+ 370: 17480005.*
+ 371: 1768fffb.*
+
+00000372 <subf_B>:
+ 372: 17800001.*
+ 373: 17800000.*
+ 374: 17a00000.*
+ 375: 17c00005.*
+ 376: 17e01600.*
+
+00000377 <subf_S>:
+ 377: 26800102.*
+ 378: 17800001.*
+ 379: 26a00001.*
+ 37a: 26c00100.*
+ 37b: 17c00001.*
+ 37c: 26e00100.*
+
+0000037d <subf3_S>:
+ 37d: 26800102.*
+ 37e: 26800001.*
+ 37f: 26a00001.*
+ 380: 26c00100.*
+ 381: 26c00000.*
+ 382: 26e00100.*
+
+00000383 <subf_stf_Q>:
+ 383: ea010100.*
+ 384: ea010100.*
+
+00000385 <subf3_stf_Q>:
+ 385: ea010100.*
+ 386: ea010100.*
+
+00000387 <subi_A>:
+ 387: 18080009.*
+ 388: 18080008.*
+ 389: 18280000.*
+ 38a: 18480005.*
+ 38b: 1868fffb.*
+
+0000038c <subi_T>:
+ 38c: 2708090a.*
+ 38d: 18080009.*
+ 38e: 27280009.*
+ 38f: 27480900.*
+ 390: 18480001.*
+ 391: 27680001.*
+
+00000392 <subi3_T>:
+ 392: 2708090a.*
+ 393: 27080809.*
+ 394: 27280009.*
+ 395: 27480900.*
+ 396: 27480800.*
+ 397: 27680001.*
+
+00000398 <subi_sti_Q>:
+ 398: ec010100.*
+ 399: ec010100.*
+
+0000039a <subi3_sti_Q>:
+ 39a: ec010100.*
+ 39b: ec010100.*
+
+0000039c <subrb_A>:
+ 39c: 18880009.*
+ 39d: 18880008.*
+ 39e: 18a80000.*
+ 39f: 18c80005.*
+ 3a0: 18e8fffb.*
+
+000003a1 <subrf_B>:
+ 3a1: 19000001.*
+ 3a2: 19000000.*
+ 3a3: 19200000.*
+ 3a4: 19400005.*
+ 3a5: 19601600.*
+
+000003a6 <subri_A>:
+ 3a6: 19880009.*
+ 3a7: 19880008.*
+ 3a8: 19a80000.*
+ 3a9: 19c80005.*
+ 3aa: 19e8fffb.*
+
+000003ab <swi_Z>:
+ 3ab: 66000000.*
+
+000003ac <trap_Z>:
+ 3ac: 7401002a.*
+ 3ad: 7400002a.*
+
+000003ae <tstb_AU>:
+ 3ae: 1a080009.*
+ 3af: 1a080008.*
+ 3b0: 1a280000.*
+ 3b1: 1a480005.*
+ 3b2: 1a680005.*
+
+000003b3 <tstb_T2C>:
+ 3b3: 1a09000a.*
+ 3b4: 27a00009.*
+ 3b5: 1a490001.*
+ 3b6: 27e00001.*
+
+000003b7 <tstb3_T2C>:
+ 3b7: 2780090a.*
+ 3b8: 27a00009.*
+ 3b9: 27c00900.*
+ 3ba: 27e00001.*
+
+000003bb <xor_AU>:
+ 3bb: 1a880009.*
+ 3bc: 1a880008.*
+ 3bd: 1aa80000.*
+ 3be: 1ac80005.*
+ 3bf: 1ae80005.*
+
+000003c0 <xor_TC>:
+ 3c0: 2808090a.*
+ 3c1: 1a880009.*
+ 3c2: 28280009.*
+ 3c3: 28480900.*
+ 3c4: 1ac80001.*
+ 3c5: 28680001.*
+
+000003c6 <xor3_TC>:
+ 3c6: 2808090a.*
+ 3c7: 28080809.*
+ 3c8: 28280009.*
+ 3c9: 28480900.*
+ 3ca: 28480800.*
+ 3cb: 28680001.*
+
+000003cc <xor_sti_QC>:
+ 3cc: ee090100.*
+ 3cd: ee010100.*
+ 3ce: ee010100.*
+ 3cf: ee090100.*
+ 3d0: ee010100.*
+ 3d1: ee010100.*
+
+000003d2 <xor3_sti_QC>:
+ 3d2: ee090100.*
+ 3d3: ee010100.*
+ 3d4: ee010100.*
+ 3d5: ee090100.*
+ 3d6: ee010100.*
+ 3d7: ee010100.*
diff --git a/gas/testsuite/gas/tic4x/opcodes_c4x.d b/gas/testsuite/gas/tic4x/opcodes_c4x.d
new file mode 100644
index 0000000..4e29684
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/opcodes_c4x.d
@@ -0,0 +1,1937 @@
+#as: -m40 --defsym TEST_C4X=1
+#objdump: -d -z
+#name: c4x opcodes
+#source: opcodes.s
+
+.*: +file format .*c4x.*
+
+Disassembly of section .text:
+
+00000000 <absf_B>:
+ 0: 00000001.*
+ 1: 00000000.*
+ 2: 00200000.*
+ 3: 00400005.*
+ 4: 00601600.*
+
+00000005 <absf_stf_P>:
+ 5: c8010100.*
+ 6: c8010100.*
+
+00000007 <absi_A>:
+ 7: 00880009.*
+ 8: 00880008.*
+ 9: 00a80000.*
+ a: 00c80005.*
+ b: 00e8fffb.*
+
+0000000c <absi_sti_P>:
+ c: ca010100.*
+ d: ca010100.*
+
+0000000e <addc_A>:
+ e: 01080009.*
+ f: 01080008.*
+ 10: 01280000.*
+ 11: 01480005.*
+ 12: 0168fffb.*
+
+00000013 <addc_TC>:
+ 13: 2008090a.*
+ 14: 01080009.*
+ 15: 20280009.*
+ 16: 20480900.*
+ 17: 01480001.*
+ 18: 20680001.*
+ 19: 30080905.*
+ 1a: 01680005.*
+ 1b: 300809fb.*
+ 1c: 30280928.*
+ 1d: 01480005.*
+ 1e: 30280928.*
+ 1f: 30482805.*
+ 20: 304828fb.*
+ 21: 30682928.*
+
+00000022 <addc3_TC>:
+ 22: 2008090a.*
+ 23: 20080809.*
+ 24: 20280009.*
+ 25: 20480900.*
+ 26: 20480800.*
+ 27: 20680001.*
+ 28: 300809fb.*
+ 29: 300808fb.*
+ 2a: 300809fb.*
+ 2b: 30280928.*
+ 2c: 30280828.*
+ 2d: 30280928.*
+ 2e: 304828fb.*
+ 2f: 304828fb.*
+ 30: 30682928.*
+
+00000031 <addf_B>:
+ 31: 01800001.*
+ 32: 01800000.*
+ 33: 01a00000.*
+ 34: 01c00005.*
+ 35: 01e01600.*
+
+00000036 <addf_SC>:
+ 36: 20800102.*
+ 37: 01800001.*
+ 38: 20a00001.*
+ 39: 20c00100.*
+ 3a: 01c00001.*
+ 3b: 20e00100.*
+ 3c: 30a00128.*
+ 3d: 01c00005.*
+ 3e: 30a00128.*
+ 3f: 30e02928.*
+
+00000040 <addf3_SC>:
+ 40: 20800102.*
+ 41: 20800001.*
+ 42: 20a00001.*
+ 43: 20c00100.*
+ 44: 20c00000.*
+ 45: 20e00100.*
+ 46: 30a00128.*
+ 47: 30a00028.*
+ 48: 30a00128.*
+ 49: 30e02928.*
+
+0000004a <addf_stf_QC>:
+ 4a: cc090100.*
+ 4b: cc010100.*
+ 4c: cc010100.*
+ 4d: cc090100.*
+ 4e: cc010100.*
+ 4f: cc010100.*
+
+00000050 <addf3_stf_QC>:
+ 50: cc090100.*
+ 51: cc010100.*
+ 52: cc010100.*
+ 53: cc090100.*
+ 54: cc010100.*
+ 55: cc010100.*
+
+00000056 <addi_A>:
+ 56: 02080009.*
+ 57: 02080008.*
+ 58: 02280000.*
+ 59: 02480005.*
+ 5a: 0268fffb.*
+
+0000005b <addi_TC>:
+ 5b: 2108090a.*
+ 5c: 02080009.*
+ 5d: 21280009.*
+ 5e: 21480900.*
+ 5f: 02480001.*
+ 60: 21680001.*
+ 61: 31080905.*
+ 62: 02680005.*
+ 63: 310809fb.*
+ 64: 31280928.*
+ 65: 02480005.*
+ 66: 31280928.*
+ 67: 31482805.*
+ 68: 314828fb.*
+ 69: 31682928.*
+
+0000006a <addi3_TC>:
+ 6a: 2108090a.*
+ 6b: 21080809.*
+ 6c: 21280009.*
+ 6d: 21480900.*
+ 6e: 21480800.*
+ 6f: 21680001.*
+ 70: 310809fb.*
+ 71: 310808fb.*
+ 72: 310809fb.*
+ 73: 31280928.*
+ 74: 31280828.*
+ 75: 31280928.*
+ 76: 314828fb.*
+ 77: 314828fb.*
+ 78: 31682928.*
+
+00000079 <addi_sti_QC>:
+ 79: ce090100.*
+ 7a: ce010100.*
+ 7b: ce010100.*
+ 7c: ce090100.*
+ 7d: ce010100.*
+ 7e: ce010100.*
+
+0000007f <addi3_sti_QC>:
+ 7f: ce090100.*
+ 80: ce010100.*
+ 81: ce010100.*
+ 82: ce090100.*
+ 83: ce010100.*
+ 84: ce010100.*
+
+00000085 <and_AU>:
+ 85: 02880009.*
+ 86: 02880008.*
+ 87: 02a80000.*
+ 88: 02c80005.*
+ 89: 02e80005.*
+
+0000008a <and_TC>:
+ 8a: 2188090a.*
+ 8b: 02880009.*
+ 8c: 21a80009.*
+ 8d: 21c80900.*
+ 8e: 02c80001.*
+ 8f: 21e80001.*
+ 90: 31880905.*
+ 91: 02e80005.*
+ 92: 318809fb.*
+ 93: 31a80928.*
+ 94: 02c80005.*
+ 95: 31a80928.*
+ 96: 31c82805.*
+ 97: 31c828fb.*
+ 98: 31e82928.*
+
+00000099 <and3_TC>:
+ 99: 2188090a.*
+ 9a: 21880809.*
+ 9b: 21a80009.*
+ 9c: 21c80900.*
+ 9d: 21c80800.*
+ 9e: 21e80001.*
+ 9f: 318809fb.*
+ a0: 318808fb.*
+ a1: 318809fb.*
+ a2: 31a80928.*
+ a3: 31a80828.*
+ a4: 31a80928.*
+ a5: 31c828fb.*
+ a6: 31c828fb.*
+ a7: 31e82928.*
+
+000000a8 <and_sti_QC>:
+ a8: d0090100.*
+ a9: d0010100.*
+ aa: d0010100.*
+ ab: d0090100.*
+ ac: d0010100.*
+ ad: d0010100.*
+
+000000ae <and3_sti_QC>:
+ ae: d0090100.*
+ af: d0010100.*
+ b0: d0010100.*
+ b1: d0090100.*
+ b2: d0010100.*
+ b3: d0010100.*
+
+000000b4 <andn_AU>:
+ b4: 03080009.*
+ b5: 03080008.*
+ b6: 03280000.*
+ b7: 03480005.*
+ b8: 03680005.*
+
+000000b9 <andn_T>:
+ b9: 2208090a.*
+ ba: 03080009.*
+ bb: 22280009.*
+ bc: 22480900.*
+ bd: 03480001.*
+ be: 22680001.*
+ bf: 32080905.*
+ c0: 03680005.*
+ c1: 32280928.*
+ c2: 03480005.*
+ c3: 32482805.*
+ c4: 32682928.*
+
+000000c5 <andn3_T>:
+ c5: 2208090a.*
+ c6: 22080809.*
+ c7: 22280009.*
+ c8: 22480900.*
+ c9: 22480800.*
+ ca: 22680001.*
+ cb: 320809fb.*
+ cc: 320808fb.*
+ cd: 32280928.*
+ ce: 32280828.*
+ cf: 324828fb.*
+ d0: 32682928.*
+
+000000d1 <ash_A>:
+ d1: 03880009.*
+ d2: 03880008.*
+ d3: 03a80000.*
+ d4: 03c80005.*
+ d5: 03e8fffb.*
+
+000000d6 <ash_T>:
+ d6: 2288090a.*
+ d7: 03880009.*
+ d8: 22a80009.*
+ d9: 22c80900.*
+ da: 03c80001.*
+ db: 22e80001.*
+ dc: 32880905.*
+ dd: 03e80005.*
+ de: 32a80928.*
+ df: 03c80005.*
+ e0: 32c82805.*
+ e1: 32e82928.*
+
+000000e2 <ash3_T>:
+ e2: 2288090a.*
+ e3: 22880809.*
+ e4: 22a80009.*
+ e5: 22c80900.*
+ e6: 22c80800.*
+ e7: 22e80001.*
+ e8: 328809fb.*
+ e9: 328808fb.*
+ ea: 32a80928.*
+ eb: 32a80828.*
+ ec: 32c828fb.*
+ ed: 32e82928.*
+
+000000ee <ash_sti_Q>:
+ ee: d2010100.*
+ ef: d2010100.*
+
+000000f0 <ash3_sti_Q>:
+ f0: d2010100.*
+ f1: d2010100.*
+
+000000f2 <bC_J>:
+ f2: 68010000.*
+ f3: 6a01ff0c.*
+
+000000f4 <b_J>:
+ f4: 68000000.*
+ f5: 6a00ff0a.*
+
+000000f6 <bCd_J>:
+ f6: 68210000.*
+ f7: 6a21ff06.*
+
+000000f8 <bd_J>:
+ f8: 68200000.*
+ f9: 6a20ff04.*
+
+000000fa <br_I>:
+ fa: 60ffff05.*
+
+000000fb <brd_I>:
+ fb: 61ffff02.*
+
+000000fc <call_I>:
+ fc: 62ffff03.*
+
+000000fd <call_JS>:
+ fd: 70010000.*
+ fe: 7201ff01.*
+
+000000ff <cmpf_B>:
+ ff: 04000001.*
+ 100: 04000000.*
+ 101: 04200000.*
+ 102: 04400005.*
+ 103: 04601600.*
+
+00000104 <cmpf_S2>:
+ 104: 04010002.*
+ 105: 23200001.*
+ 106: 04410001.*
+ 107: 23600100.*
+ 108: 04410005.*
+ 109: 33602928.*
+
+0000010a <cmpf3_S2>:
+ 10a: 23000102.*
+ 10b: 23200001.*
+ 10c: 23400100.*
+ 10d: 23600100.*
+ 10e: 33200128.*
+ 10f: 33602928.*
+
+00000110 <cmpi_A>:
+ 110: 04880009.*
+ 111: 04880008.*
+ 112: 04a80000.*
+ 113: 04c80005.*
+ 114: 04e8fffb.*
+
+00000115 <cmpi_T2>:
+ 115: 0489000a.*
+ 116: 23a00009.*
+ 117: 04c90001.*
+ 118: 23e00001.*
+ 119: 04e9fffb.*
+ 11a: 04c90005.*
+ 11b: 33c028fb.*
+ 11c: 33e02928.*
+
+0000011d <cmpi3_T2>:
+ 11d: 2380090a.*
+ 11e: 23a00009.*
+ 11f: 23c00900.*
+ 120: 23e00001.*
+ 121: 338009fb.*
+ 122: 33a00928.*
+ 123: 33c028fb.*
+ 124: 33e02928.*
+
+00000125 <dbC_D>:
+ 125: 6c010000.*
+ 126: 6e01fed9.*
+
+00000127 <db_D>:
+ 127: 6c000000.*
+ 128: 6e00fed7.*
+
+00000129 <dbCd_D>:
+ 129: 6c210000.*
+ 12a: 6e21fed3.*
+
+0000012b <dbd_D>:
+ 12b: 6c200000.*
+ 12c: 6e20fed1.*
+
+0000012d <fix_AF>:
+ 12d: 05000001.*
+ 12e: 05000000.*
+ 12f: 05280000.*
+ 130: 05480005.*
+ 131: 05681600.*
+
+00000132 <fix_sti_P>:
+ 132: d4010100.*
+ 133: d4010100.*
+
+00000134 <float_BI>:
+ 134: 05800009.*
+ 135: 05800000.*
+ 136: 05a00000.*
+ 137: 05c00005.*
+ 138: 05e0fffb.*
+
+00000139 <float_stf_P>:
+ 139: d6010100.*
+ 13a: d6010100.*
+
+0000013b <iack_Z>:
+ 13b: 1b200000.*
+ 13c: 1b400001.*
+
+0000013d <idle_Z>:
+ 13d: 06000000.*
+
+0000013e <lde_B>:
+ 13e: 06800001.*
+ 13f: 06800000.*
+ 140: 06a00000.*
+ 141: 06c00005.*
+ 142: 06e01600.*
+
+00000143 <ldf_B>:
+ 143: 07000001.*
+ 144: 07000000.*
+ 145: 07200000.*
+ 146: 07400005.*
+ 147: 07601600.*
+
+00000148 <ldf_LL>:
+ 148: c4080100.*
+ 149: c4080100.*
+ 14a: c4080100.*
+
+0000014b <ldf_stf_P>:
+ 14b: d8010100.*
+ 14c: d8010100.*
+
+0000014d <ldfC_BB>:
+ 14d: 40800001.*
+ 14e: 40800000.*
+ 14f: 40a00000.*
+ 150: 40c00005.*
+ 151: 40e01600.*
+
+00000152 <ldfi_B6>:
+ 152: 07a00000.*
+ 153: 07c00005.*
+
+00000154 <ldi_A>:
+ 154: 08080009.*
+ 155: 08080008.*
+ 156: 08280000.*
+ 157: 08480005.*
+ 158: 0868fffb.*
+
+00000159 <ldi_LL>:
+ 159: c6080100.*
+ 15a: c6080100.*
+ 15b: c6080100.*
+
+0000015c <ldi_sti_P>:
+ 15c: da010100.*
+ 15d: da010100.*
+
+0000015e <ldiC_AB>:
+ 15e: 50880009.*
+ 15f: 50880008.*
+ 160: 50a80000.*
+ 161: 50c80005.*
+ 162: 50e8fffb.*
+
+00000163 <ldii_A6>:
+ 163: 08a80000.*
+ 164: 08c80005.*
+
+00000165 <ldp_Z>:
+ 165: 50700000.*
+
+00000166 <ldm_B>:
+ 166: 09000001.*
+ 167: 09000000.*
+ 168: 09200000.*
+ 169: 09400005.*
+ 16a: 09601600.*
+
+0000016b <lsh_A>:
+ 16b: 09880009.*
+ 16c: 09880008.*
+ 16d: 09a80000.*
+ 16e: 09c80005.*
+ 16f: 09e8fffb.*
+
+00000170 <lsh_T>:
+ 170: 2408090a.*
+ 171: 09880009.*
+ 172: 24280009.*
+ 173: 24480900.*
+ 174: 09c80001.*
+ 175: 24680001.*
+ 176: 34080905.*
+ 177: 09e80005.*
+ 178: 34280928.*
+ 179: 09c80005.*
+ 17a: 34482805.*
+ 17b: 34682928.*
+
+0000017c <lsh3_T>:
+ 17c: 2408090a.*
+ 17d: 24080809.*
+ 17e: 24280009.*
+ 17f: 24480900.*
+ 180: 24480800.*
+ 181: 24680001.*
+ 182: 340809fb.*
+ 183: 340808fb.*
+ 184: 34280928.*
+ 185: 34280828.*
+ 186: 344828fb.*
+ 187: 34682928.*
+
+00000188 <lsh_sti_Q>:
+ 188: dc010100.*
+ 189: dc010100.*
+
+0000018a <lsh3_sti_Q>:
+ 18a: dc010100.*
+ 18b: dc010100.*
+
+0000018c <mpyf_B>:
+ 18c: 0a000001.*
+ 18d: 0a000000.*
+ 18e: 0a200000.*
+ 18f: 0a400005.*
+ 190: 0a601600.*
+
+00000191 <mpyf_SC>:
+ 191: 24800102.*
+ 192: 0a000001.*
+ 193: 24a00001.*
+ 194: 24c00100.*
+ 195: 0a400001.*
+ 196: 24e00100.*
+ 197: 34a00128.*
+ 198: 0a400005.*
+ 199: 34a00128.*
+ 19a: 34e02928.*
+
+0000019b <mpyf3_SC>:
+ 19b: 24800102.*
+ 19c: 24800001.*
+ 19d: 24a00001.*
+ 19e: 24c00100.*
+ 19f: 24c00000.*
+ 1a0: 24e00100.*
+ 1a1: 34a00128.*
+ 1a2: 34a00028.*
+ 1a3: 34a00128.*
+ 1a4: 34e02928.*
+
+000001a5 <mpyf_addf_M>:
+ 1a5: 80080100.*
+ 1a6: 80100100.*
+ 1a7: 81000001.*
+ 1a8: 81000001.*
+ 1a9: 81000001.*
+ 1aa: 820a0100.*
+ 1ab: 82020100.*
+ 1ac: 830b0001.*
+ 1ad: 83030001.*
+ 1ae: 830a0001.*
+ 1af: 83020001.*
+ 1b0: 83000001.*
+ 1b1: 83020001.*
+
+000001b2 <mpyf3_addf_M>:
+ 1b2: 80080100.*
+ 1b3: 80100100.*
+ 1b4: 81000001.*
+ 1b5: 81000001.*
+ 1b6: 81000001.*
+ 1b7: 820a0100.*
+ 1b8: 82020100.*
+ 1b9: 830b0001.*
+ 1ba: 83030001.*
+ 1bb: 830a0001.*
+ 1bc: 83020001.*
+ 1bd: 83000001.*
+ 1be: 83020001.*
+
+000001bf <mpyf_addf3_M>:
+ 1bf: 80080100.*
+ 1c0: 80100100.*
+ 1c1: 81000001.*
+ 1c2: 81000001.*
+ 1c3: 81000001.*
+ 1c4: 820a0100.*
+ 1c5: 82020100.*
+ 1c6: 830b0001.*
+ 1c7: 83030001.*
+ 1c8: 830a0001.*
+ 1c9: 83020001.*
+ 1ca: 83000001.*
+ 1cb: 83020001.*
+
+000001cc <mpyf3_addf3_M>:
+ 1cc: 80080100.*
+ 1cd: 80100100.*
+ 1ce: 81000001.*
+ 1cf: 81000001.*
+ 1d0: 81000001.*
+ 1d1: 820a0100.*
+ 1d2: 82020100.*
+ 1d3: 830b0001.*
+ 1d4: 83030001.*
+ 1d5: 830a0001.*
+ 1d6: 83020001.*
+ 1d7: 83000001.*
+ 1d8: 83020001.*
+
+000001d9 <addf_mpyf_M>:
+ 1d9: 80080100.*
+ 1da: 80100100.*
+ 1db: 81000001.*
+ 1dc: 81000001.*
+ 1dd: 81000001.*
+ 1de: 820a0100.*
+ 1df: 82020100.*
+ 1e0: 830b0001.*
+ 1e1: 83030001.*
+ 1e2: 830a0001.*
+ 1e3: 83020001.*
+ 1e4: 83000001.*
+ 1e5: 83020001.*
+
+000001e6 <addf3_mpyf3_M>:
+ 1e6: 80080100.*
+ 1e7: 80100100.*
+ 1e8: 81000001.*
+ 1e9: 81000001.*
+ 1ea: 81000001.*
+ 1eb: 820a0100.*
+ 1ec: 82020100.*
+ 1ed: 830b0001.*
+ 1ee: 83030001.*
+ 1ef: 830a0001.*
+ 1f0: 83020001.*
+ 1f1: 83000001.*
+ 1f2: 83020001.*
+
+000001f3 <addf_mpyf3_M>:
+ 1f3: 80080100.*
+ 1f4: 80100100.*
+ 1f5: 81000001.*
+ 1f6: 81000001.*
+ 1f7: 81000001.*
+ 1f8: 820a0100.*
+ 1f9: 82020100.*
+ 1fa: 830b0001.*
+ 1fb: 83030001.*
+ 1fc: 830a0001.*
+ 1fd: 83020001.*
+ 1fe: 83000001.*
+ 1ff: 83020001.*
+
+00000200 <addf3_mpyf_M>:
+ 200: 80080100.*
+ 201: 80100100.*
+ 202: 81000001.*
+ 203: 81000001.*
+ 204: 81000001.*
+ 205: 820a0100.*
+ 206: 82020100.*
+ 207: 830b0001.*
+ 208: 83030001.*
+ 209: 830a0001.*
+ 20a: 83020001.*
+ 20b: 83000001.*
+ 20c: 83020001.*
+
+0000020d <mpyf_stf_QC>:
+ 20d: de090100.*
+ 20e: de010100.*
+ 20f: de010100.*
+ 210: de090100.*
+ 211: de010100.*
+ 212: de010100.*
+
+00000213 <mpyf3_stf_QC>:
+ 213: de090100.*
+ 214: de010100.*
+ 215: de010100.*
+ 216: de090100.*
+ 217: de010100.*
+ 218: de010100.*
+
+00000219 <mpyf_subf_M>:
+ 219: 84080100.*
+ 21a: 84100100.*
+ 21b: 85000001.*
+ 21c: 85000001.*
+ 21d: 85000001.*
+ 21e: 860a0100.*
+ 21f: 86020100.*
+ 220: 870b0001.*
+ 221: 87030001.*
+ 222: 870a0001.*
+ 223: 87020001.*
+ 224: 87000001.*
+ 225: 87020001.*
+
+00000226 <mpyf3_subf_M>:
+ 226: 84080100.*
+ 227: 84100100.*
+ 228: 85000001.*
+ 229: 85000001.*
+ 22a: 85000001.*
+ 22b: 860a0100.*
+ 22c: 86020100.*
+ 22d: 870b0001.*
+ 22e: 87030001.*
+ 22f: 870a0001.*
+ 230: 87020001.*
+ 231: 87000001.*
+ 232: 87020001.*
+
+00000233 <mpyf_subf3_M>:
+ 233: 84080100.*
+ 234: 84100100.*
+ 235: 85000001.*
+ 236: 85000001.*
+ 237: 85000001.*
+ 238: 860a0100.*
+ 239: 86020100.*
+ 23a: 870b0001.*
+ 23b: 87030001.*
+ 23c: 870a0001.*
+ 23d: 87020001.*
+ 23e: 87000001.*
+ 23f: 87020001.*
+
+00000240 <mpyf3_subf3_M>:
+ 240: 84080100.*
+ 241: 84100100.*
+ 242: 85000001.*
+ 243: 85000001.*
+ 244: 85000001.*
+ 245: 860a0100.*
+ 246: 86020100.*
+ 247: 870b0001.*
+ 248: 87030001.*
+ 249: 870a0001.*
+ 24a: 87020001.*
+ 24b: 87000001.*
+ 24c: 87020001.*
+
+0000024d <subf_mpyf_M>:
+ 24d: 84080100.*
+ 24e: 84100100.*
+ 24f: 85000001.*
+ 250: 85000001.*
+ 251: 85000001.*
+ 252: 860a0100.*
+ 253: 86020100.*
+ 254: 870b0001.*
+ 255: 87030001.*
+ 256: 870a0001.*
+ 257: 87020001.*
+ 258: 87000001.*
+ 259: 87020001.*
+
+0000025a <subf3_mpyf3_M>:
+ 25a: 84080100.*
+ 25b: 84100100.*
+ 25c: 85000001.*
+ 25d: 85000001.*
+ 25e: 85000001.*
+ 25f: 860a0100.*
+ 260: 86020100.*
+ 261: 870b0001.*
+ 262: 87030001.*
+ 263: 870a0001.*
+ 264: 87020001.*
+ 265: 87000001.*
+ 266: 87020001.*
+
+00000267 <subf_mpyf3_M>:
+ 267: 84080100.*
+ 268: 84100100.*
+ 269: 85000001.*
+ 26a: 85000001.*
+ 26b: 85000001.*
+ 26c: 860a0100.*
+ 26d: 86020100.*
+ 26e: 870b0001.*
+ 26f: 87030001.*
+ 270: 870a0001.*
+ 271: 87020001.*
+ 272: 87000001.*
+ 273: 87020001.*
+
+00000274 <subf3_mpyf_M>:
+ 274: 84080100.*
+ 275: 84100100.*
+ 276: 85000001.*
+ 277: 85000001.*
+ 278: 85000001.*
+ 279: 860a0100.*
+ 27a: 86020100.*
+ 27b: 870b0001.*
+ 27c: 87030001.*
+ 27d: 870a0001.*
+ 27e: 87020001.*
+ 27f: 87000001.*
+ 280: 87020001.*
+
+00000281 <mpyi_A>:
+ 281: 0a880009.*
+ 282: 0a880008.*
+ 283: 0aa80000.*
+ 284: 0ac80005.*
+ 285: 0ae8fffb.*
+
+00000286 <mpyi_TC>:
+ 286: 2508090a.*
+ 287: 0a880009.*
+ 288: 25280009.*
+ 289: 25480900.*
+ 28a: 0ac80001.*
+ 28b: 25680001.*
+ 28c: 35080905.*
+ 28d: 0ae80005.*
+ 28e: 350809fb.*
+ 28f: 35280928.*
+ 290: 0ac80005.*
+ 291: 35280928.*
+ 292: 35482805.*
+ 293: 354828fb.*
+ 294: 35682928.*
+
+00000295 <mpyi3_TC>:
+ 295: 2508090a.*
+ 296: 25080809.*
+ 297: 25280009.*
+ 298: 25480900.*
+ 299: 25480800.*
+ 29a: 25680001.*
+ 29b: 350809fb.*
+ 29c: 350808fb.*
+ 29d: 350809fb.*
+ 29e: 35280928.*
+ 29f: 35280828.*
+ 2a0: 35280928.*
+ 2a1: 354828fb.*
+ 2a2: 354828fb.*
+ 2a3: 35682928.*
+
+000002a4 <mpyi_addi_M>:
+ 2a4: 88080100.*
+ 2a5: 88100100.*
+ 2a6: 89000001.*
+ 2a7: 89000001.*
+ 2a8: 89000001.*
+ 2a9: 8a0a0100.*
+ 2aa: 8a020100.*
+ 2ab: 8b0b0001.*
+ 2ac: 8b030001.*
+ 2ad: 8b0a0001.*
+ 2ae: 8b020001.*
+ 2af: 8b000001.*
+ 2b0: 8b020001.*
+
+000002b1 <mpyi3_addi_M>:
+ 2b1: 88080100.*
+ 2b2: 88100100.*
+ 2b3: 89000001.*
+ 2b4: 89000001.*
+ 2b5: 89000001.*
+ 2b6: 8a0a0100.*
+ 2b7: 8a020100.*
+ 2b8: 8b0b0001.*
+ 2b9: 8b030001.*
+ 2ba: 8b0a0001.*
+ 2bb: 8b020001.*
+ 2bc: 8b000001.*
+ 2bd: 8b020001.*
+
+000002be <mpyi_addi3_M>:
+ 2be: 88080100.*
+ 2bf: 88100100.*
+ 2c0: 89000001.*
+ 2c1: 89000001.*
+ 2c2: 89000001.*
+ 2c3: 8a0a0100.*
+ 2c4: 8a020100.*
+ 2c5: 8b0b0001.*
+ 2c6: 8b030001.*
+ 2c7: 8b0a0001.*
+ 2c8: 8b020001.*
+ 2c9: 8b000001.*
+ 2ca: 8b020001.*
+
+000002cb <mpyi3_addi3_M>:
+ 2cb: 88080100.*
+ 2cc: 88100100.*
+ 2cd: 89000001.*
+ 2ce: 89000001.*
+ 2cf: 89000001.*
+ 2d0: 8a0a0100.*
+ 2d1: 8a020100.*
+ 2d2: 8b0b0001.*
+ 2d3: 8b030001.*
+ 2d4: 8b0a0001.*
+ 2d5: 8b020001.*
+ 2d6: 8b000001.*
+ 2d7: 8b020001.*
+
+000002d8 <addi_mpyi_M>:
+ 2d8: 88080100.*
+ 2d9: 88100100.*
+ 2da: 89000001.*
+ 2db: 89000001.*
+ 2dc: 89000001.*
+ 2dd: 8a0a0100.*
+ 2de: 8a020100.*
+ 2df: 8b0b0001.*
+ 2e0: 8b030001.*
+ 2e1: 8b0a0001.*
+ 2e2: 8b020001.*
+ 2e3: 8b000001.*
+ 2e4: 8b020001.*
+
+000002e5 <addi3_mpyi3_M>:
+ 2e5: 88080100.*
+ 2e6: 88100100.*
+ 2e7: 89000001.*
+ 2e8: 89000001.*
+ 2e9: 89000001.*
+ 2ea: 8a0a0100.*
+ 2eb: 8a020100.*
+ 2ec: 8b0b0001.*
+ 2ed: 8b030001.*
+ 2ee: 8b0a0001.*
+ 2ef: 8b020001.*
+ 2f0: 8b000001.*
+ 2f1: 8b020001.*
+
+000002f2 <addi_mpyi3_M>:
+ 2f2: 88080100.*
+ 2f3: 88100100.*
+ 2f4: 89000001.*
+ 2f5: 89000001.*
+ 2f6: 89000001.*
+ 2f7: 8a0a0100.*
+ 2f8: 8a020100.*
+ 2f9: 8b0b0001.*
+ 2fa: 8b030001.*
+ 2fb: 8b0a0001.*
+ 2fc: 8b020001.*
+ 2fd: 8b000001.*
+ 2fe: 8b020001.*
+
+000002ff <addi3_mpyi_M>:
+ 2ff: 88080100.*
+ 300: 88100100.*
+ 301: 89000001.*
+ 302: 89000001.*
+ 303: 89000001.*
+ 304: 8a0a0100.*
+ 305: 8a020100.*
+ 306: 8b0b0001.*
+ 307: 8b030001.*
+ 308: 8b0a0001.*
+ 309: 8b020001.*
+ 30a: 8b000001.*
+ 30b: 8b020001.*
+
+0000030c <mpyi_sti_QC>:
+ 30c: e0090100.*
+ 30d: e0010100.*
+ 30e: e0010100.*
+ 30f: e0090100.*
+ 310: e0010100.*
+ 311: e0010100.*
+
+00000312 <mpyi3_sti_QC>:
+ 312: e0090100.*
+ 313: e0010100.*
+ 314: e0010100.*
+ 315: e0090100.*
+ 316: e0010100.*
+ 317: e0010100.*
+
+00000318 <mpyi_subi_M>:
+ 318: 8c080100.*
+ 319: 8c100100.*
+ 31a: 8d000001.*
+ 31b: 8d000001.*
+ 31c: 8d000001.*
+ 31d: 8e0a0100.*
+ 31e: 8e020100.*
+ 31f: 8f0b0001.*
+ 320: 8f030001.*
+ 321: 8f0a0001.*
+ 322: 8f020001.*
+ 323: 8f000001.*
+ 324: 8f020001.*
+
+00000325 <mpyi3_subi_M>:
+ 325: 8c080100.*
+ 326: 8c100100.*
+ 327: 8d000001.*
+ 328: 8d000001.*
+ 329: 8d000001.*
+ 32a: 8e0a0100.*
+ 32b: 8e020100.*
+ 32c: 8f0b0001.*
+ 32d: 8f030001.*
+ 32e: 8f0a0001.*
+ 32f: 8f020001.*
+ 330: 8f000001.*
+ 331: 8f020001.*
+
+00000332 <mpyi_subi3_M>:
+ 332: 8c080100.*
+ 333: 8c100100.*
+ 334: 8d000001.*
+ 335: 8d000001.*
+ 336: 8d000001.*
+ 337: 8e0a0100.*
+ 338: 8e020100.*
+ 339: 8f0b0001.*
+ 33a: 8f030001.*
+ 33b: 8f0a0001.*
+ 33c: 8f020001.*
+ 33d: 8f000001.*
+ 33e: 8f020001.*
+
+0000033f <mpyi3_subi3_M>:
+ 33f: 8c080100.*
+ 340: 8c100100.*
+ 341: 8d000001.*
+ 342: 8d000001.*
+ 343: 8d000001.*
+ 344: 8e0a0100.*
+ 345: 8e020100.*
+ 346: 8f0b0001.*
+ 347: 8f030001.*
+ 348: 8f0a0001.*
+ 349: 8f020001.*
+ 34a: 8f000001.*
+ 34b: 8f020001.*
+
+0000034c <subi_mpyi_M>:
+ 34c: 8c080100.*
+ 34d: 8c100100.*
+ 34e: 8d000001.*
+ 34f: 8d000001.*
+ 350: 8d000001.*
+ 351: 8e0a0100.*
+ 352: 8e020100.*
+ 353: 8f0b0001.*
+ 354: 8f030001.*
+ 355: 8f0a0001.*
+ 356: 8f020001.*
+ 357: 8f000001.*
+ 358: 8f020001.*
+
+00000359 <subi3_mpyi3_M>:
+ 359: 8c080100.*
+ 35a: 8c100100.*
+ 35b: 8d000001.*
+ 35c: 8d000001.*
+ 35d: 8d000001.*
+ 35e: 8e0a0100.*
+ 35f: 8e020100.*
+ 360: 8f0b0001.*
+ 361: 8f030001.*
+ 362: 8f0a0001.*
+ 363: 8f020001.*
+ 364: 8f000001.*
+ 365: 8f020001.*
+
+00000366 <subi_mpyi3_M>:
+ 366: 8c080100.*
+ 367: 8c100100.*
+ 368: 8d000001.*
+ 369: 8d000001.*
+ 36a: 8d000001.*
+ 36b: 8e0a0100.*
+ 36c: 8e020100.*
+ 36d: 8f0b0001.*
+ 36e: 8f030001.*
+ 36f: 8f0a0001.*
+ 370: 8f020001.*
+ 371: 8f000001.*
+ 372: 8f020001.*
+
+00000373 <subi3_mpyi_M>:
+ 373: 8c080100.*
+ 374: 8c100100.*
+ 375: 8d000001.*
+ 376: 8d000001.*
+ 377: 8d000001.*
+ 378: 8e0a0100.*
+ 379: 8e020100.*
+ 37a: 8f0b0001.*
+ 37b: 8f030001.*
+ 37c: 8f0a0001.*
+ 37d: 8f020001.*
+ 37e: 8f000001.*
+ 37f: 8f020001.*
+
+00000380 <negb_A>:
+ 380: 0b080009.*
+ 381: 0b080008.*
+ 382: 0b280000.*
+ 383: 0b480005.*
+ 384: 0b68fffb.*
+
+00000385 <negf_B>:
+ 385: 0b800001.*
+ 386: 0b800000.*
+ 387: 0ba00000.*
+ 388: 0bc00005.*
+ 389: 0be01600.*
+
+0000038a <negf_stf_P>:
+ 38a: e2010100.*
+ 38b: e2010100.*
+
+0000038c <negi_A>:
+ 38c: 0c080009.*
+ 38d: 0c080008.*
+ 38e: 0c280000.*
+ 38f: 0c480005.*
+ 390: 0c68fffb.*
+
+00000391 <negi_sti_P>:
+ 391: e4010100.*
+ 392: e4010100.*
+
+00000393 <nop_A2>:
+ 393: 0c800008.*
+ 394: 0cc00005.*
+ 395: 0c800000.*
+
+00000396 <norm_B>:
+ 396: 0d000001.*
+ 397: 0d000000.*
+ 398: 0d200000.*
+ 399: 0d400005.*
+ 39a: 0d601600.*
+
+0000039b <not_AU>:
+ 39b: 0d880009.*
+ 39c: 0d880008.*
+ 39d: 0da80000.*
+ 39e: 0dc80005.*
+ 39f: 0de80005.*
+
+000003a0 <not_sti_P>:
+ 3a0: e6010100.*
+ 3a1: e6010100.*
+
+000003a2 <or_AU>:
+ 3a2: 10080009.*
+ 3a3: 10080008.*
+ 3a4: 10280000.*
+ 3a5: 10480005.*
+ 3a6: 10680005.*
+
+000003a7 <or_TC>:
+ 3a7: 2588090a.*
+ 3a8: 10080009.*
+ 3a9: 25a80009.*
+ 3aa: 25c80900.*
+ 3ab: 10480001.*
+ 3ac: 25e80001.*
+ 3ad: 35880905.*
+ 3ae: 10680005.*
+ 3af: 358809fb.*
+ 3b0: 35a80928.*
+ 3b1: 10480005.*
+ 3b2: 35a80928.*
+ 3b3: 35c82805.*
+ 3b4: 35c828fb.*
+ 3b5: 35e82928.*
+
+000003b6 <or3_TC>:
+ 3b6: 2588090a.*
+ 3b7: 25880809.*
+ 3b8: 25a80009.*
+ 3b9: 25c80900.*
+ 3ba: 25c80800.*
+ 3bb: 25e80001.*
+ 3bc: 358809fb.*
+ 3bd: 358808fb.*
+ 3be: 358809fb.*
+ 3bf: 35a80928.*
+ 3c0: 35a80828.*
+ 3c1: 35a80928.*
+ 3c2: 35c828fb.*
+ 3c3: 35c828fb.*
+ 3c4: 35e82928.*
+
+000003c5 <or_sti_QC>:
+ 3c5: e8090100.*
+ 3c6: e8010100.*
+ 3c7: e8010100.*
+ 3c8: e8090100.*
+ 3c9: e8010100.*
+ 3ca: e8010100.*
+
+000003cb <or3_sti_QC>:
+ 3cb: e8090100.*
+ 3cc: e8010100.*
+ 3cd: e8010100.*
+ 3ce: e8090100.*
+ 3cf: e8010100.*
+ 3d0: e8010100.*
+
+000003d1 <pop_R>:
+ 3d1: 0e280000.*
+
+000003d2 <popf_RF>:
+ 3d2: 0ea00000.*
+
+000003d3 <push_R>:
+ 3d3: 0f280000.*
+
+000003d4 <pushf_RF>:
+ 3d4: 0fa00000.*
+
+000003d5 <reti_Z>:
+ 3d5: 78010000.*
+ 3d6: 78000000.*
+
+000003d7 <rets_Z>:
+ 3d7: 78810000.*
+ 3d8: 78800000.*
+
+000003d9 <rnd_B>:
+ 3d9: 11000001.*
+ 3da: 11000000.*
+ 3db: 11200000.*
+ 3dc: 11400005.*
+ 3dd: 11601600.*
+
+000003de <rol_R>:
+ 3de: 11e80001.*
+
+000003df <rolc_R>:
+ 3df: 12680001.*
+
+000003e0 <ror_R>:
+ 3e0: 12e8ffff.*
+
+000003e1 <rorc_R>:
+ 3e1: 1368ffff.*
+
+000003e2 <rptb_I2>:
+ 3e2: 64fffc1d.*
+
+000003e3 <rpts_A3>:
+ 3e3: 139b0009.*
+ 3e4: 13bb0000.*
+ 3e5: 13db0005.*
+ 3e6: 13fb0005.*
+
+000003e7 <sigi_Z>:
+ 3e7: 16000000.*
+
+000003e8 <stf_B7>:
+ 3e8: 14200000.*
+ 3e9: 14400005.*
+
+000003ea <stf_LS>:
+ 3ea: c0010100.*
+ 3eb: c0010100.*
+ 3ec: c0010100.*
+
+000003ed <stfi_B7>:
+ 3ed: 14a00000.*
+ 3ee: 14c00005.*
+
+000003ef <sti_A7>:
+ 3ef: 15280000.*
+ 3f0: 15480005.*
+
+000003f1 <sti_LS>:
+ 3f1: c2010100.*
+ 3f2: c2010100.*
+ 3f3: c2010100.*
+
+000003f4 <stii_A7>:
+ 3f4: 15a80000.*
+ 3f5: 15c80005.*
+
+000003f6 <subb_A>:
+ 3f6: 16880009.*
+ 3f7: 16880008.*
+ 3f8: 16a80000.*
+ 3f9: 16c80005.*
+ 3fa: 16e8fffb.*
+
+000003fb <subb_T>:
+ 3fb: 2608090a.*
+ 3fc: 16880009.*
+ 3fd: 26280009.*
+ 3fe: 26480900.*
+ 3ff: 16c80001.*
+ 400: 26680001.*
+ 401: 36080905.*
+ 402: 16e80005.*
+ 403: 36280928.*
+ 404: 16c80005.*
+ 405: 36482805.*
+ 406: 36682928.*
+
+00000407 <subb3_T>:
+ 407: 2608090a.*
+ 408: 26080809.*
+ 409: 26280009.*
+ 40a: 26480900.*
+ 40b: 26480800.*
+ 40c: 26680001.*
+ 40d: 360809fb.*
+ 40e: 360808fb.*
+ 40f: 36280928.*
+ 410: 36280828.*
+ 411: 364828fb.*
+ 412: 36682928.*
+
+00000413 <subc_A>:
+ 413: 17080009.*
+ 414: 17080008.*
+ 415: 17280000.*
+ 416: 17480005.*
+ 417: 1768fffb.*
+
+00000418 <subf_B>:
+ 418: 17800001.*
+ 419: 17800000.*
+ 41a: 17a00000.*
+ 41b: 17c00005.*
+ 41c: 17e01600.*
+
+0000041d <subf_S>:
+ 41d: 26800102.*
+ 41e: 17800001.*
+ 41f: 26a00001.*
+ 420: 26c00100.*
+ 421: 17c00001.*
+ 422: 26e00100.*
+ 423: 36a00128.*
+ 424: 17c00005.*
+ 425: 36e02928.*
+
+00000426 <subf3_S>:
+ 426: 26800102.*
+ 427: 26800001.*
+ 428: 26a00001.*
+ 429: 26c00100.*
+ 42a: 26c00000.*
+ 42b: 26e00100.*
+ 42c: 36a00128.*
+ 42d: 36a00028.*
+ 42e: 36e02928.*
+
+0000042f <subf_stf_Q>:
+ 42f: ea010100.*
+ 430: ea010100.*
+
+00000431 <subf3_stf_Q>:
+ 431: ea010100.*
+ 432: ea010100.*
+
+00000433 <subi_A>:
+ 433: 18080009.*
+ 434: 18080008.*
+ 435: 18280000.*
+ 436: 18480005.*
+ 437: 1868fffb.*
+
+00000438 <subi_T>:
+ 438: 2708090a.*
+ 439: 18080009.*
+ 43a: 27280009.*
+ 43b: 27480900.*
+ 43c: 18480001.*
+ 43d: 27680001.*
+ 43e: 37080905.*
+ 43f: 18680005.*
+ 440: 37280928.*
+ 441: 18480005.*
+ 442: 37482805.*
+ 443: 37682928.*
+
+00000444 <subi3_T>:
+ 444: 2708090a.*
+ 445: 27080809.*
+ 446: 27280009.*
+ 447: 27480900.*
+ 448: 27480800.*
+ 449: 27680001.*
+ 44a: 370809fb.*
+ 44b: 370808fb.*
+ 44c: 37280928.*
+ 44d: 37280828.*
+ 44e: 374828fb.*
+ 44f: 37682928.*
+
+00000450 <subi_sti_Q>:
+ 450: ec010100.*
+ 451: ec010100.*
+
+00000452 <subi3_sti_Q>:
+ 452: ec010100.*
+ 453: ec010100.*
+
+00000454 <subrb_A>:
+ 454: 18880009.*
+ 455: 18880008.*
+ 456: 18a80000.*
+ 457: 18c80005.*
+ 458: 18e8fffb.*
+
+00000459 <subrf_B>:
+ 459: 19000001.*
+ 45a: 19000000.*
+ 45b: 19200000.*
+ 45c: 19400005.*
+ 45d: 19601600.*
+
+0000045e <subri_A>:
+ 45e: 19880009.*
+ 45f: 19880008.*
+ 460: 19a80000.*
+ 461: 19c80005.*
+ 462: 19e8fffb.*
+
+00000463 <swi_Z>:
+ 463: 66000000.*
+
+00000464 <trap_Z>:
+ 464: 7401000a.*
+ 465: 7400000a.*
+
+00000466 <tstb_AU>:
+ 466: 1a080009.*
+ 467: 1a080008.*
+ 468: 1a280000.*
+ 469: 1a480005.*
+ 46a: 1a680005.*
+
+0000046b <tstb_T2C>:
+ 46b: 1a09000a.*
+ 46c: 27a00009.*
+ 46d: 1a490001.*
+ 46e: 27e00001.*
+ 46f: 1a690005.*
+ 470: 378009fb.*
+ 471: 1a490005.*
+ 472: 37a00928.*
+ 473: 37c02805.*
+ 474: 37c028fb.*
+ 475: 37e02928.*
+
+00000476 <tstb3_T2C>:
+ 476: 2780090a.*
+ 477: 27a00009.*
+ 478: 27c00900.*
+ 479: 27e00001.*
+ 47a: 378009fb.*
+ 47b: 378009fb.*
+ 47c: 37a00928.*
+ 47d: 37a00928.*
+ 47e: 37c028fb.*
+ 47f: 37c028fb.*
+ 480: 37e02928.*
+
+00000481 <xor_AU>:
+ 481: 1a880009.*
+ 482: 1a880008.*
+ 483: 1aa80000.*
+ 484: 1ac80005.*
+ 485: 1ae80005.*
+
+00000486 <xor_TC>:
+ 486: 2808090a.*
+ 487: 1a880009.*
+ 488: 28280009.*
+ 489: 28480900.*
+ 48a: 1ac80001.*
+ 48b: 28680001.*
+ 48c: 38080905.*
+ 48d: 1ae80005.*
+ 48e: 380809fb.*
+ 48f: 38280928.*
+ 490: 1ac80005.*
+ 491: 38280928.*
+ 492: 38482805.*
+ 493: 384828fb.*
+ 494: 38682928.*
+
+00000495 <xor3_TC>:
+ 495: 2808090a.*
+ 496: 28080809.*
+ 497: 28280009.*
+ 498: 28480900.*
+ 499: 28480800.*
+ 49a: 28680001.*
+ 49b: 380809fb.*
+ 49c: 380808fb.*
+ 49d: 380809fb.*
+ 49e: 38280928.*
+ 49f: 38280828.*
+ 4a0: 38280928.*
+ 4a1: 384828fb.*
+ 4a2: 384828fb.*
+ 4a3: 38682928.*
+
+000004a4 <xor_sti_QC>:
+ 4a4: ee090100.*
+ 4a5: ee010100.*
+ 4a6: ee010100.*
+ 4a7: ee090100.*
+ 4a8: ee010100.*
+ 4a9: ee010100.*
+
+000004aa <xor3_sti_QC>:
+ 4aa: ee090100.*
+ 4ab: ee010100.*
+ 4ac: ee010100.*
+ 4ad: ee090100.*
+ 4ae: ee010100.*
+ 4af: ee010100.*
+
+000004b0 <bCaf_J>:
+ 4b0: 68a10000.*
+ 4b1: 6aa1fb4c.*
+
+000004b2 <baf_J>:
+ 4b2: 68a00000.*
+ 4b3: 6aa0fb4a.*
+
+000004b4 <bCat_J>:
+ 4b4: 68610000.*
+ 4b5: 6a61fb48.*
+
+000004b6 <bat_J>:
+ 4b6: 68600000.*
+ 4b7: 6a60fb46.*
+
+000004b8 <frieee_B6>:
+ 4b8: 1c200000.*
+ 4b9: 1c400005.*
+
+000004ba <frieee_stf_P>:
+ 4ba: f2010100.*
+ 4bb: f2010100.*
+
+000004bc <laj_I>:
+ 4bc: 63fffb41.*
+
+000004bd <laj_JS>:
+ 4bd: 70210000.*
+ 4be: 7221fb3f.*
+
+000004bf <lat_Z>:
+ 4bf: 7481000a.*
+
+000004c0 <lb0_A>:
+ 4c0: b0080009.*
+ 4c1: b0080008.*
+ 4c2: b0280000.*
+ 4c3: b0480005.*
+ 4c4: b068fffb.*
+
+000004c5 <lb1_A>:
+ 4c5: b0880009.*
+ 4c6: b0880008.*
+ 4c7: b0a80000.*
+ 4c8: b0c80005.*
+ 4c9: b0e8fffb.*
+
+000004ca <lb2_A>:
+ 4ca: b1080009.*
+ 4cb: b1080008.*
+ 4cc: b1280000.*
+ 4cd: b1480005.*
+ 4ce: b168fffb.*
+
+000004cf <lb3_A>:
+ 4cf: b1880009.*
+ 4d0: b1880008.*
+ 4d1: b1a80000.*
+ 4d2: b1c80005.*
+ 4d3: b1e8fffb.*
+
+000004d4 <lbu0_AU>:
+ 4d4: b2080009.*
+ 4d5: b2080008.*
+ 4d6: b2280000.*
+ 4d7: b2480005.*
+ 4d8: b2680005.*
+
+000004d9 <lbu1_AU>:
+ 4d9: b2880009.*
+ 4da: b2880008.*
+ 4db: b2a80000.*
+ 4dc: b2c80005.*
+ 4dd: b2e80005.*
+
+000004de <lbu2_AU>:
+ 4de: b3080009.*
+ 4df: b3080008.*
+ 4e0: b3280000.*
+ 4e1: b3480005.*
+ 4e2: b3680005.*
+
+000004e3 <lbu3_AU>:
+ 4e3: b3880009.*
+ 4e4: b3880008.*
+ 4e5: b3a80000.*
+ 4e6: b3c80005.*
+ 4e7: b3e80005.*
+
+000004e8 <lda_AY>:
+ 4e8: 1e880009.*
+ 4e9: 1ea80000.*
+ 4ea: 1ec80005.*
+ 4eb: 1ee8fffb.*
+
+000004ec <ldep_Z>:
+ 4ec: 76080000.*
+
+000004ed <ldhi_Z>:
+ 4ed: 1fe00023.*
+ 4ee: 1fe00000.*
+
+000004ef <ldpe_Z>:
+ 4ef: 76800008.*
+
+000004f0 <ldpk_Z>:
+ 4f0: 1f700000.*
+
+000004f1 <lh0_A>:
+ 4f1: ba080009.*
+ 4f2: ba080008.*
+ 4f3: ba280000.*
+ 4f4: ba480005.*
+ 4f5: ba68fffb.*
+
+000004f6 <lh1_A>:
+ 4f6: ba880009.*
+ 4f7: ba880008.*
+ 4f8: baa80000.*
+ 4f9: bac80005.*
+ 4fa: bae8fffb.*
+
+000004fb <lhu0_AU>:
+ 4fb: bb080009.*
+ 4fc: bb080008.*
+ 4fd: bb280000.*
+ 4fe: bb480005.*
+ 4ff: bb680005.*
+
+00000500 <lhu1_AU>:
+ 500: bb880009.*
+ 501: bb880008.*
+ 502: bba80000.*
+ 503: bbc80005.*
+ 504: bbe80005.*
+
+00000505 <lwl0_A>:
+ 505: b4080009.*
+ 506: b4080008.*
+ 507: b4280000.*
+ 508: b4480005.*
+ 509: b468fffb.*
+
+0000050a <lwl1_A>:
+ 50a: b4880009.*
+ 50b: b4880008.*
+ 50c: b4a80000.*
+ 50d: b4c80005.*
+ 50e: b4e8fffb.*
+
+0000050f <lwl2_A>:
+ 50f: b5080009.*
+ 510: b5080008.*
+ 511: b5280000.*
+ 512: b5480005.*
+ 513: b568fffb.*
+
+00000514 <lwl3_A>:
+ 514: b5880009.*
+ 515: b5880008.*
+ 516: b5a80000.*
+ 517: b5c80005.*
+ 518: b5e8fffb.*
+
+00000519 <lwr0_A>:
+ 519: b6080009.*
+ 51a: b6080008.*
+ 51b: b6280000.*
+ 51c: b6480005.*
+ 51d: b668fffb.*
+
+0000051e <lwr1_A>:
+ 51e: b6880009.*
+ 51f: b6880008.*
+ 520: b6a80000.*
+ 521: b6c80005.*
+ 522: b6e8fffb.*
+
+00000523 <lwr2_A>:
+ 523: b7080009.*
+ 524: b7080008.*
+ 525: b7280000.*
+ 526: b7480005.*
+ 527: b768fffb.*
+
+00000528 <lwr3_A>:
+ 528: b7880009.*
+ 529: b7880008.*
+ 52a: b7a80000.*
+ 52b: b7c80005.*
+ 52c: b7e8fffb.*
+
+0000052d <mb0_A>:
+ 52d: b8080009.*
+ 52e: b8080008.*
+ 52f: b8280000.*
+ 530: b8480005.*
+ 531: b868fffb.*
+
+00000532 <mb1_A>:
+ 532: b8880009.*
+ 533: b8880008.*
+ 534: b8a80000.*
+ 535: b8c80005.*
+ 536: b8e8fffb.*
+
+00000537 <mb2_A>:
+ 537: b9080009.*
+ 538: b9080008.*
+ 539: b9280000.*
+ 53a: b9480005.*
+ 53b: b968fffb.*
+
+0000053c <mb3_A>:
+ 53c: b9880009.*
+ 53d: b9880008.*
+ 53e: b9a80000.*
+ 53f: b9c80005.*
+ 540: b9e8fffb.*
+
+00000541 <mh0_A>:
+ 541: bc080009.*
+ 542: bc080008.*
+ 543: bc280000.*
+ 544: bc480005.*
+ 545: bc68fffb.*
+
+00000546 <mh1_A>:
+ 546: bc880009.*
+ 547: bc880008.*
+ 548: bca80000.*
+ 549: bcc80005.*
+ 54a: bce8fffb.*
+
+0000054b <mh2_A>:
+ 54b: bd080009.*
+ 54c: bd080008.*
+ 54d: bd280000.*
+ 54e: bd480005.*
+ 54f: bd68fffb.*
+
+00000550 <mh3_A>:
+ 550: bd880009.*
+ 551: bd880008.*
+ 552: bda80000.*
+ 553: bdc80005.*
+ 554: bde8fffb.*
+
+00000555 <mpyshi_A>:
+ 555: 1d880009.*
+ 556: 1d880008.*
+ 557: 1da80000.*
+ 558: 1dc80005.*
+ 559: 1de8fffb.*
+
+0000055a <mpyshi_TC>:
+ 55a: 2888090a.*
+ 55b: 1d880009.*
+ 55c: 28a80009.*
+ 55d: 28c80900.*
+ 55e: 1dc80001.*
+ 55f: 28e80001.*
+ 560: 38880905.*
+ 561: 1de80005.*
+ 562: 388809fb.*
+ 563: 38a80928.*
+ 564: 1dc80005.*
+ 565: 38a80928.*
+ 566: 38c82805.*
+ 567: 38c828fb.*
+ 568: 38e82928.*
+
+00000569 <mpyshi3_TC>:
+ 569: 2888090a.*
+ 56a: 28880809.*
+ 56b: 28a80009.*
+ 56c: 28c80900.*
+ 56d: 28c80800.*
+ 56e: 28e80001.*
+ 56f: 388809fb.*
+ 570: 388808fb.*
+ 571: 388809fb.*
+ 572: 38a80928.*
+ 573: 38a80828.*
+ 574: 38a80928.*
+ 575: 38c828fb.*
+ 576: 38c828fb.*
+ 577: 38e82928.*
+
+00000578 <mpyuhi_A>:
+ 578: 1e080009.*
+ 579: 1e080008.*
+ 57a: 1e280000.*
+ 57b: 1e480005.*
+ 57c: 1e68fffb.*
+
+0000057d <mpyuhi_TC>:
+ 57d: 2908090a.*
+ 57e: 1e080009.*
+ 57f: 29280009.*
+ 580: 29480900.*
+ 581: 1e480001.*
+ 582: 29680001.*
+ 583: 39080905.*
+ 584: 1e680005.*
+ 585: 390809fb.*
+ 586: 39280928.*
+ 587: 1e480005.*
+ 588: 39280928.*
+ 589: 39482805.*
+ 58a: 394828fb.*
+ 58b: 39682928.*
+
+0000058c <mpyuhi3_TC>:
+ 58c: 2908090a.*
+ 58d: 29080809.*
+ 58e: 29280009.*
+ 58f: 29480900.*
+ 590: 29480800.*
+ 591: 29680001.*
+ 592: 390809fb.*
+ 593: 390808fb.*
+ 594: 390809fb.*
+ 595: 39280928.*
+ 596: 39280828.*
+ 597: 39280928.*
+ 598: 394828fb.*
+ 599: 394828fb.*
+ 59a: 39682928.*
+
+0000059b <rcpf_BA>:
+ 59b: 1d000009.*
+ 59c: 1d000000.*
+ 59d: 1d200000.*
+ 59e: 1d400005.*
+ 59f: 1d601600.*
+
+000005a0 <retid_Z>:
+ 5a0: 78210000.*
+ 5a1: 78200000.*
+
+000005a2 <rptb2_I2>:
+ 5a2: 79000008.*
+
+000005a3 <rptbd_I2>:
+ 5a3: 65fffa5a.*
+ 5a4: 79800008.*
+
+000005a5 <rsqrf_B>:
+ 5a5: 1c800001.*
+ 5a6: 1c800000.*
+ 5a7: 1ca00000.*
+ 5a8: 1cc00005.*
+ 5a9: 1ce01600.*
+
+000005aa <sigi_A6>:
+ 5aa: 16280000.*
+ 5ab: 16480005.*
+
+000005ac <sti2_A7>:
+ 5ac: 151b0000.*
+ 5ad: 157b0005.*
+
+000005ae <stik_Z>:
+ 5ae: 151b0000.*
+ 5af: 157b0005.*
+
+000005b0 <toieee_B>:
+ 5b0: 1b800001.*
+ 5b1: 1b800000.*
+ 5b2: 1ba00000.*
+ 5b3: 1bc00005.*
+ 5b4: 1be01600.*
+
+000005b5 <toieee_stf_P>:
+ 5b5: f0010100.*
+ 5b6: f0010100.*
diff --git a/gas/testsuite/gas/tic4x/rebuild.sh b/gas/testsuite/gas/tic4x/rebuild.sh
new file mode 100755
index 0000000..3e98a32
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/rebuild.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+echo "Rebuilding opcodes.s from allopcodes.S"
+cat <<EOF >opcodes.s
+; File is autogenerated from allopcodes.S - do not edit
+; Please use ./rebuild.sh to rebuild this file
+
+EOF
+
+cpp -P allopcodes.S >>opcodes.s
diff --git a/gas/testsuite/gas/tic4x/registers.s b/gas/testsuite/gas/tic4x/registers.s
new file mode 100644
index 0000000..b45f063
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/registers.s
@@ -0,0 +1,69 @@
+ ;; test all register names c3x
+ .text
+ ;; Test the base names
+ .ifdef TEST_ALL
+start: ldi R0,R0
+ ldi R0,R1
+ ldi R0,R2
+ ldi R0,R3
+ ldi R0,R4
+ ldi R0,R5
+ ldi R0,R6
+ ldi R0,R7
+ ldi R0,AR0
+ ldi R0,AR1
+ ldi R0,AR2
+ ldi R0,AR3
+ ldi R0,AR4
+ ldi R0,AR5
+ ldi R0,AR6
+ ldi R0,AR7
+ ldi R0,DP
+ ldi R0,IR0
+ ldi R0,IR1
+ ldi R0,BK
+ ldi R0,SP
+ ldi R0,ST
+ .endif
+ .ifdef TEST_C3X
+ ldi R0,IE
+ ldi R0,IF
+ ldi R0,IOF
+ .endif
+ .ifdef TEST_C4X
+ ldi R0,DIE
+ ldi R0,IIE
+ ldi R0,IIF
+ .endif
+ .ifdef TEST_ALL
+ ldi R0,RS
+ ldi R0,RE
+ ldi R0,RC
+ .endif
+ .ifdef TEST_C4X
+ ldi R0,R8
+ ldi R0,R9
+ ldi R0,R10
+ ldi R0,R11
+ ldpe R0,IVTP
+ ldpe R0,TVTP
+ .endif
+
+ ;; Test the alternative names
+ .ifdef TEST_ALL
+ ldf F0,F0
+ ldf F0,F1
+ ldf F0,F2
+ ldf F0,F3
+ ldf F0,F4
+ ldf F0,F5
+ ldf F0,F6
+ ldf F0,F7
+ .endif
+ .ifdef TEST_C4X
+ ldf F0,F8
+ ldf F0,F9
+ ldf F0,F10
+ ldf F0,F11
+ .endif
+ .end
diff --git a/gas/testsuite/gas/tic4x/registers_c3x.d b/gas/testsuite/gas/tic4x/registers_c3x.d
new file mode 100644
index 0000000..b7b3bf0
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/registers_c3x.d
@@ -0,0 +1,46 @@
+#as: -m30 --defsym TEST_ALL=1 --defsym TEST_C3X=1
+#objdump: -d -z
+#name: c3x registers
+#source: registers.s
+
+.*: +file format .*c4x.*
+
+Disassembly of section .text:
+
+00000000 <start>:
+ 0: 08000000.*
+ 1: 08010000.*
+ 2: 08020000.*
+ 3: 08030000.*
+ 4: 08040000.*
+ 5: 08050000.*
+ 6: 08060000.*
+ 7: 08070000.*
+ 8: 08080000.*
+ 9: 08090000.*
+ a: 080a0000.*
+ b: 080b0000.*
+ c: 080c0000.*
+ d: 080d0000.*
+ e: 080e0000.*
+ f: 080f0000.*
+ 10: 08100000.*
+ 11: 08110000.*
+ 12: 08120000.*
+ 13: 08130000.*
+ 14: 08140000.*
+ 15: 08150000.*
+ 16: 08160000.*
+ 17: 08170000.*
+ 18: 08180000.*
+ 19: 08190000.*
+ 1a: 081a0000.*
+ 1b: 081b0000.*
+ 1c: 07000000.*
+ 1d: 07010000.*
+ 1e: 07020000.*
+ 1f: 07030000.*
+ 20: 07040000.*
+ 21: 07050000.*
+ 22: 07060000.*
+ 23: 07070000.*
diff --git a/gas/testsuite/gas/tic4x/registers_c4x.d b/gas/testsuite/gas/tic4x/registers_c4x.d
new file mode 100644
index 0000000..cf9fa50
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/registers_c4x.d
@@ -0,0 +1,56 @@
+#as: -m40 --defsym TEST_ALL=1 --defsym TEST_C4X=1
+#objdump: -d -z
+#name: c4x registers
+#source: registers.s
+
+.*: +file format .*c4x.*
+
+Disassembly of section .text:
+
+00000000 <start>:
+ 0: 08000000.*
+ 1: 08010000.*
+ 2: 08020000.*
+ 3: 08030000.*
+ 4: 08040000.*
+ 5: 08050000.*
+ 6: 08060000.*
+ 7: 08070000.*
+ 8: 08080000.*
+ 9: 08090000.*
+ a: 080a0000.*
+ b: 080b0000.*
+ c: 080c0000.*
+ d: 080d0000.*
+ e: 080e0000.*
+ f: 080f0000.*
+ 10: 08100000.*
+ 11: 08110000.*
+ 12: 08120000.*
+ 13: 08130000.*
+ 14: 08140000.*
+ 15: 08150000.*
+ 16: 08160000.*
+ 17: 08170000.*
+ 18: 08180000.*
+ 19: 08190000.*
+ 1a: 081a0000.*
+ 1b: 081b0000.*
+ 1c: 081c0000.*
+ 1d: 081d0000.*
+ 1e: 081e0000.*
+ 1f: 081f0000.*
+ 20: 76800000.*
+ 21: 76810000.*
+ 22: 07000000.*
+ 23: 07010000.*
+ 24: 07020000.*
+ 25: 07030000.*
+ 26: 07040000.*
+ 27: 07050000.*
+ 28: 07060000.*
+ 29: 07070000.*
+ 2a: 071c0000.*
+ 2b: 071d0000.*
+ 2c: 071e0000.*
+ 2d: 071f0000.*
diff --git a/gas/testsuite/gas/tic4x/tic4x.exp b/gas/testsuite/gas/tic4x/tic4x.exp
new file mode 100644
index 0000000..100bdf9
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/tic4x.exp
@@ -0,0 +1,64 @@
+
+#
+# Test x930509a -- correct assembly of differences involving forward
+# references.
+#
+proc do_930509a_tic4x {} {
+ set testname "difference between forward references (tic4x version)"
+ set x 0
+ gas_start "../all/x930509.s" "-al"
+ while 1 {
+# We need to accomodate both byte orders here.
+# If ".long" means an 8-byte value on some target someday, this test will have
+# to be fixed.
+ expect {
+ -re "^ +1 .... 00 ?00 ?00 ?00" { fail $testname; set x 1 }
+ -re "^ +1 .... 01 ?00 ?00 ?00" { pass $testname; set x 1 }
+ -re "^ +1 .... 00 ?00 ?00 ?01" { pass $testname; set x 1 }
+ -re "\[^\n\]*\n" { }
+ timeout { perror "timeout\n"; break }
+ eof { break }
+ }
+ }
+ gas_finish
+ if !$x then { fail $testname }
+}
+
+
+#
+# TI TMS320C4X tests.
+#
+if [istarget *c4x*-*-*] then {
+ do_930509a_tic4x
+
+ # Test zero-based disassemble test
+ run_dump_test "zeros"
+
+ # Test the register names on the c3x and on the c4x
+ run_dump_test "registers_c3x"
+ run_dump_test "registers_c4x"
+
+ # Make sure the c4x registers dont work on c3x
+ gas_test_error "registers.s" "-m30 --defsym TEST_C4X=1" "c4x register usage in c3x"
+
+ # Test data storage
+ run_dump_test "data"
+
+ # Test flonums
+ run_dump_test "float"
+
+ # Test all addressing modes
+ run_dump_test "addressing_c3x"
+ run_dump_test "addressing_c4x"
+
+ # Make sure the c4x addressing dont work on c3x
+ gas_test_error "addressing.s" "-m30 --defsym TEST_C4X=1" "c4x addressing usage in c3x"
+
+ # Test float instructions
+ run_dump_test "opcodes_c3x"
+ run_dump_test "opcodes_c4x"
+
+ # Make sure the c4x ops dont work on c3x
+ #gas_test_error "opcodes.s" "-m30 --defsym TEST_C4X=1" "c4x instruction usage in c3x"
+ # -- for some reason this test crashes dejagnu, hence disabled!
+}
diff --git a/gas/testsuite/gas/tic4x/zeros.d b/gas/testsuite/gas/tic4x/zeros.d
new file mode 100644
index 0000000..8e45968
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/zeros.d
@@ -0,0 +1,24 @@
+#objdump: -d
+#name: zero-value disassemble check
+
+.*: +file format .*c4x.*
+
+Disassembly of section .text:
+
+00000000 <start>:
+ 0: 00000000.*
+ 1: 00000000.*
+ 2: 00000002.*
+ ...
+ 16: 00000001.*
+ 17: 00000001.*
+ 18: 00000002.*
+ 19: 00000000.*
+ 1a: 00000001.*
+ 1b: 00000001.*
+ 1c: 00000002.*
+ 1d: 00000000.*
+ 1e: 00000000.*
+ 1f: 00000002.*
+ 20: 00000000.*
+ 21: 00000000.*
diff --git a/gas/testsuite/gas/tic4x/zeros.s b/gas/testsuite/gas/tic4x/zeros.s
new file mode 100644
index 0000000..d7295ad
--- /dev/null
+++ b/gas/testsuite/gas/tic4x/zeros.s
@@ -0,0 +1,35 @@
+ .text
+start: .long 0
+ .long 0
+ .long 2
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1
+ .long 1
+ .long 2
+ .long 0
+ .long 1
+ .long 1
+ .long 2
+ .long 0
+ .long 0
+ .long 2
+ .long 0
+ .long 0
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 3e98cde..304973e 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2002-11-18 Svein E. Seldal <Svein.Seldal@solidas.com>
+
+ * testsuite/ld-scripts/script.exp: Setup for tic4x testcase
+
2002-11-14 Egor Duda <deo@logos-m.ru>
* ldmain.c (main): Make runtime relocs disabled by default. Remove
diff --git a/ld/testsuite/ld-scripts/script.exp b/ld/testsuite/ld-scripts/script.exp
index a7f6bad..96cf04b 100644
--- a/ld/testsuite/ld-scripts/script.exp
+++ b/ld/testsuite/ld-scripts/script.exp
@@ -42,6 +42,10 @@ proc check_script { } {
} else {
set text_end 0x104
set data_end 0x1004
+ if [istarget *c4x*-*-*] then {
+ set text_end 0x101
+ set data_end 0x1001
+ }
if [istarget *c54x*-*-*] then {
set text_end 0x102
set data_end 0x1002