aboutsummaryrefslogtreecommitdiff
path: root/gas/testsuite
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2001-10-30 15:20:14 +0000
committerNick Clifton <nickc@redhat.com>2001-10-30 15:20:14 +0000
commit3c3bdf30e42268e6193693acd1dc66d2d1792536 (patch)
tree8f6b2752d885c3e71d0bef5717e981faac396928 /gas/testsuite
parentf5ffc9190a633d0f8eb1632a64a28eda75206b55 (diff)
downloadgdb-3c3bdf30e42268e6193693acd1dc66d2d1792536.zip
gdb-3c3bdf30e42268e6193693acd1dc66d2d1792536.tar.gz
gdb-3c3bdf30e42268e6193693acd1dc66d2d1792536.tar.bz2
Add MMIX support
Diffstat (limited to 'gas/testsuite')
-rw-r--r--gas/testsuite/ChangeLog4
-rw-r--r--gas/testsuite/gas/mmix/1cjmp1b-n.d12
-rw-r--r--gas/testsuite/gas/mmix/1cjmp1b-r.d15
-rw-r--r--gas/testsuite/gas/mmix/1cjmp1b.d10
-rw-r--r--gas/testsuite/gas/mmix/1cjmp1b.l14
-rw-r--r--gas/testsuite/gas/mmix/1cjmp1b.s4
-rw-r--r--gas/testsuite/gas/mmix/1cjmp1brn.d15
-rw-r--r--gas/testsuite/gas/mmix/1hjmp1b.d10
-rw-r--r--gas/testsuite/gas/mmix/1hjmp1b.l14
-rw-r--r--gas/testsuite/gas/mmix/1hjmp1b.s4
-rw-r--r--gas/testsuite/gas/mmix/align-1.d18
-rw-r--r--gas/testsuite/gas/mmix/align-1.s11
-rw-r--r--gas/testsuite/gas/mmix/basep-1.d10
-rw-r--r--gas/testsuite/gas/mmix/basep-1.s4
-rw-r--r--gas/testsuite/gas/mmix/basep-2.d23
-rw-r--r--gas/testsuite/gas/mmix/basep-2.s12
-rw-r--r--gas/testsuite/gas/mmix/basep-3.d13
-rw-r--r--gas/testsuite/gas/mmix/basep-3.s5
-rw-r--r--gas/testsuite/gas/mmix/bspec-1.d48
-rw-r--r--gas/testsuite/gas/mmix/bspec-1.s4
-rw-r--r--gas/testsuite/gas/mmix/bspec-2.d47
-rw-r--r--gas/testsuite/gas/mmix/bspec-2.s11
-rw-r--r--gas/testsuite/gas/mmix/builtin1.d22
-rw-r--r--gas/testsuite/gas/mmix/builtin1.s8
-rw-r--r--gas/testsuite/gas/mmix/builtin2.d24
-rw-r--r--gas/testsuite/gas/mmix/builtin3.d24
-rw-r--r--gas/testsuite/gas/mmix/byte-1.d41
-rw-r--r--gas/testsuite/gas/mmix/byte-1.s6
-rw-r--r--gas/testsuite/gas/mmix/bz-c.d30
-rw-r--r--gas/testsuite/gas/mmix/bz-c.s5
-rw-r--r--gas/testsuite/gas/mmix/comment-1.d69
-rw-r--r--gas/testsuite/gas/mmix/comment-1.s46
-rw-r--r--gas/testsuite/gas/mmix/comment-2.d15
-rw-r--r--gas/testsuite/gas/mmix/comment-2.s1
-rw-r--r--gas/testsuite/gas/mmix/comment-3.d21
-rw-r--r--gas/testsuite/gas/mmix/comment-3.s2
-rw-r--r--gas/testsuite/gas/mmix/cons-1.d7
-rw-r--r--gas/testsuite/gas/mmix/cons-1.s2
-rw-r--r--gas/testsuite/gas/mmix/cons-2.d14
-rw-r--r--gas/testsuite/gas/mmix/cons-2.s4
-rw-r--r--gas/testsuite/gas/mmix/err-bpo1.s12
-rw-r--r--gas/testsuite/gas/mmix/err-bspec-1.s4
-rw-r--r--gas/testsuite/gas/mmix/err-bspec-2.s7
-rw-r--r--gas/testsuite/gas/mmix/err-bspec-3.s4
-rw-r--r--gas/testsuite/gas/mmix/err-bspec-4.s7
-rw-r--r--gas/testsuite/gas/mmix/err-bspec-5.s23
-rw-r--r--gas/testsuite/gas/mmix/err-builtin.s14
-rw-r--r--gas/testsuite/gas/mmix/err-byte1.s11
-rw-r--r--gas/testsuite/gas/mmix/err-byte2.s17
-rw-r--r--gas/testsuite/gas/mmix/err-case.s8
-rw-r--r--gas/testsuite/gas/mmix/err-fb-1.s7
-rw-r--r--gas/testsuite/gas/mmix/err-greg1.s10
-rw-r--r--gas/testsuite/gas/mmix/err-insn.s5
-rw-r--r--gas/testsuite/gas/mmix/err-is-1.s4
-rw-r--r--gas/testsuite/gas/mmix/err-loc-1.s5
-rw-r--r--gas/testsuite/gas/mmix/err-loc-2.s5
-rw-r--r--gas/testsuite/gas/mmix/err-loc-3.s4
-rw-r--r--gas/testsuite/gas/mmix/err-loc-4.s4
-rw-r--r--gas/testsuite/gas/mmix/err-loc-5.s4
-rw-r--r--gas/testsuite/gas/mmix/err-loc-6.s4
-rw-r--r--gas/testsuite/gas/mmix/err-loc-7.s4
-rw-r--r--gas/testsuite/gas/mmix/err-loc-8.s4
-rw-r--r--gas/testsuite/gas/mmix/err-local1.s6
-rw-r--r--gas/testsuite/gas/mmix/err-local2.s3
-rw-r--r--gas/testsuite/gas/mmix/err-ser-1.s10
-rw-r--r--gas/testsuite/gas/mmix/err-set.s7
-rw-r--r--gas/testsuite/gas/mmix/expr-1.d7
-rw-r--r--gas/testsuite/gas/mmix/expr-1.s6
-rw-r--r--gas/testsuite/gas/mmix/fb-1.d21
-rw-r--r--gas/testsuite/gas/mmix/fb-1.s4
-rw-r--r--gas/testsuite/gas/mmix/fb-2.d33
-rw-r--r--gas/testsuite/gas/mmix/fb-2.s20
-rw-r--r--gas/testsuite/gas/mmix/get-op-r.d11
-rw-r--r--gas/testsuite/gas/mmix/get-op.d9
-rw-r--r--gas/testsuite/gas/mmix/get-op.l17
-rw-r--r--gas/testsuite/gas/mmix/get-op.s6
-rw-r--r--gas/testsuite/gas/mmix/geta-c.d26
-rw-r--r--gas/testsuite/gas/mmix/geta-c.s5
-rw-r--r--gas/testsuite/gas/mmix/geta-op-r.d37
-rw-r--r--gas/testsuite/gas/mmix/geta-op.d25
-rw-r--r--gas/testsuite/gas/mmix/geta-op.l31
-rw-r--r--gas/testsuite/gas/mmix/geta-op.s16
-rw-r--r--gas/testsuite/gas/mmix/geta-opn.d27
-rw-r--r--gas/testsuite/gas/mmix/geta-oprn.d37
-rw-r--r--gas/testsuite/gas/mmix/greg1.d36
-rw-r--r--gas/testsuite/gas/mmix/greg1.s17
-rw-r--r--gas/testsuite/gas/mmix/greg1a.d40
-rw-r--r--gas/testsuite/gas/mmix/greg2.d36
-rw-r--r--gas/testsuite/gas/mmix/greg2.s21
-rw-r--r--gas/testsuite/gas/mmix/greg2a.d40
-rw-r--r--gas/testsuite/gas/mmix/greg3.d31
-rw-r--r--gas/testsuite/gas/mmix/greg3.s11
-rw-r--r--gas/testsuite/gas/mmix/greg4.d29
-rw-r--r--gas/testsuite/gas/mmix/greg4.s4
-rw-r--r--gas/testsuite/gas/mmix/greg5.d29
-rw-r--r--gas/testsuite/gas/mmix/greg5.s9
-rw-r--r--gas/testsuite/gas/mmix/greg6.d36
-rw-r--r--gas/testsuite/gas/mmix/greg6.s11
-rw-r--r--gas/testsuite/gas/mmix/greg7.d28
-rw-r--r--gas/testsuite/gas/mmix/greg7.s8
-rw-r--r--gas/testsuite/gas/mmix/greg8.d33
-rw-r--r--gas/testsuite/gas/mmix/greg8.s10
-rw-r--r--gas/testsuite/gas/mmix/greg9.d14
-rw-r--r--gas/testsuite/gas/mmix/greg9.s8
-rw-r--r--gas/testsuite/gas/mmix/hex-r.d11
-rw-r--r--gas/testsuite/gas/mmix/hex.d9
-rw-r--r--gas/testsuite/gas/mmix/hex.l13
-rw-r--r--gas/testsuite/gas/mmix/hex.s3
-rw-r--r--gas/testsuite/gas/mmix/is-1.d12
-rw-r--r--gas/testsuite/gas/mmix/is-1.s7
-rw-r--r--gas/testsuite/gas/mmix/jmp-op-n.d23
-rw-r--r--gas/testsuite/gas/mmix/jmp-op-r.d29
-rw-r--r--gas/testsuite/gas/mmix/jmp-op.d21
-rw-r--r--gas/testsuite/gas/mmix/jmp-op.l23
-rw-r--r--gas/testsuite/gas/mmix/jmp-op.s10
-rw-r--r--gas/testsuite/gas/mmix/jmp-oprn.d29
-rw-r--r--gas/testsuite/gas/mmix/jump-c.d28
-rw-r--r--gas/testsuite/gas/mmix/jump-c.s5
-rw-r--r--gas/testsuite/gas/mmix/list-in-n.d281
-rw-r--r--gas/testsuite/gas/mmix/list-in-r.d315
-rw-r--r--gas/testsuite/gas/mmix/list-in-rn.d315
-rw-r--r--gas/testsuite/gas/mmix/list-insns.d279
-rw-r--r--gas/testsuite/gas/mmix/list-insns.l301
-rw-r--r--gas/testsuite/gas/mmix/list-insns.s279
-rw-r--r--gas/testsuite/gas/mmix/list-pseudoints.l20
-rw-r--r--gas/testsuite/gas/mmix/list-pseudoints.s6
-rw-r--r--gas/testsuite/gas/mmix/list-textfirst5
-rw-r--r--gas/testsuite/gas/mmix/list-textfirst.l17
-rw-r--r--gas/testsuite/gas/mmix/list-textfirst.s6
-rw-r--r--gas/testsuite/gas/mmix/loc-1.d45
-rw-r--r--gas/testsuite/gas/mmix/loc-1.s7
-rw-r--r--gas/testsuite/gas/mmix/loc-2.d39
-rw-r--r--gas/testsuite/gas/mmix/loc-2.s5
-rw-r--r--gas/testsuite/gas/mmix/loc-3.d43
-rw-r--r--gas/testsuite/gas/mmix/loc-3.s14
-rw-r--r--gas/testsuite/gas/mmix/loc-4.d44
-rw-r--r--gas/testsuite/gas/mmix/loc-4.s8
-rw-r--r--gas/testsuite/gas/mmix/loc-5.d45
-rw-r--r--gas/testsuite/gas/mmix/loc-5.s11
-rw-r--r--gas/testsuite/gas/mmix/local-1.d38
-rw-r--r--gas/testsuite/gas/mmix/local-1.s12
-rw-r--r--gas/testsuite/gas/mmix/locall1.d15
-rw-r--r--gas/testsuite/gas/mmix/locall1.s14
-rw-r--r--gas/testsuite/gas/mmix/mmix-err.exp30
-rw-r--r--gas/testsuite/gas/mmix/mmix-list.exp48
-rw-r--r--gas/testsuite/gas/mmix/mmix.exp38
-rw-r--r--gas/testsuite/gas/mmix/odd-1.d28
-rw-r--r--gas/testsuite/gas/mmix/odd-1.s9
-rw-r--r--gas/testsuite/gas/mmix/op-0-1.d28
-rw-r--r--gas/testsuite/gas/mmix/op-0-1.s8
-rw-r--r--gas/testsuite/gas/mmix/op-0-2.d26
-rw-r--r--gas/testsuite/gas/mmix/pop-op-r.d12
-rw-r--r--gas/testsuite/gas/mmix/pop-op.d10
-rw-r--r--gas/testsuite/gas/mmix/pop-op.l21
-rw-r--r--gas/testsuite/gas/mmix/pop-op.s9
-rw-r--r--gas/testsuite/gas/mmix/prefix1.d38
-rw-r--r--gas/testsuite/gas/mmix/prefix1.s21
-rw-r--r--gas/testsuite/gas/mmix/prefix2.d15
-rw-r--r--gas/testsuite/gas/mmix/prefix2.s3
-rw-r--r--gas/testsuite/gas/mmix/prefix3.d32
-rw-r--r--gas/testsuite/gas/mmix/prefix3.s9
-rw-r--r--gas/testsuite/gas/mmix/pseudo-1.d16
-rw-r--r--gas/testsuite/gas/mmix/pseudo-1.s1
-rw-r--r--gas/testsuite/gas/mmix/pushgo-op-r.d64
-rw-r--r--gas/testsuite/gas/mmix/pushgo-op.d62
-rw-r--r--gas/testsuite/gas/mmix/pushgo-op.l87
-rw-r--r--gas/testsuite/gas/mmix/pushgo-op.s69
-rw-r--r--gas/testsuite/gas/mmix/pushj-c.d28
-rw-r--r--gas/testsuite/gas/mmix/pushj-c.s5
-rw-r--r--gas/testsuite/gas/mmix/put-op-r.d17
-rw-r--r--gas/testsuite/gas/mmix/put-op.d15
-rw-r--r--gas/testsuite/gas/mmix/put-op.l27
-rw-r--r--gas/testsuite/gas/mmix/put-op.s14
-rw-r--r--gas/testsuite/gas/mmix/reg-op-r.d16
-rw-r--r--gas/testsuite/gas/mmix/reg-op.d14
-rw-r--r--gas/testsuite/gas/mmix/reg-op.l26
-rw-r--r--gas/testsuite/gas/mmix/reg-op.s13
-rw-r--r--gas/testsuite/gas/mmix/reg3-op-r.d32
-rw-r--r--gas/testsuite/gas/mmix/reg3-op.d30
-rw-r--r--gas/testsuite/gas/mmix/reg3-op.l46
-rw-r--r--gas/testsuite/gas/mmix/reg3-op.s32
-rw-r--r--gas/testsuite/gas/mmix/regt-op-r.d136
-rw-r--r--gas/testsuite/gas/mmix/regt-op.d134
-rw-r--r--gas/testsuite/gas/mmix/regt-op.l160
-rw-r--r--gas/testsuite/gas/mmix/regt-op.s140
-rw-r--r--gas/testsuite/gas/mmix/regx-op-r.d36
-rw-r--r--gas/testsuite/gas/mmix/regx-op.d34
-rw-r--r--gas/testsuite/gas/mmix/regx-op.l51
-rw-r--r--gas/testsuite/gas/mmix/regx-op.s37
-rw-r--r--gas/testsuite/gas/mmix/regy-op-r.d36
-rw-r--r--gas/testsuite/gas/mmix/regy-op.d34
-rw-r--r--gas/testsuite/gas/mmix/regy-op.l51
-rw-r--r--gas/testsuite/gas/mmix/regy-op.s37
-rw-r--r--gas/testsuite/gas/mmix/relax1-n.d90
-rw-r--r--gas/testsuite/gas/mmix/relax1-r.d145
-rw-r--r--gas/testsuite/gas/mmix/relax1-rn.d117
-rw-r--r--gas/testsuite/gas/mmix/relax1.d118
-rw-r--r--gas/testsuite/gas/mmix/relax1.l128
-rw-r--r--gas/testsuite/gas/mmix/relax1.s43
-rw-r--r--gas/testsuite/gas/mmix/reloc16-n.d14
-rw-r--r--gas/testsuite/gas/mmix/reloc16-r.d14
-rw-r--r--gas/testsuite/gas/mmix/reloc16.d12
-rw-r--r--gas/testsuite/gas/mmix/reloc16.l17
-rw-r--r--gas/testsuite/gas/mmix/reloc16.s4
-rw-r--r--gas/testsuite/gas/mmix/reloc8-r.d20
-rw-r--r--gas/testsuite/gas/mmix/reloc8.d18
-rw-r--r--gas/testsuite/gas/mmix/reloc8.l26
-rw-r--r--gas/testsuite/gas/mmix/reloc8.s8
-rw-r--r--gas/testsuite/gas/mmix/relocl-n.d27
-rw-r--r--gas/testsuite/gas/mmix/reloclab-r.d49
-rw-r--r--gas/testsuite/gas/mmix/reloclab.d43
-rw-r--r--gas/testsuite/gas/mmix/reloclab.l46
-rw-r--r--gas/testsuite/gas/mmix/reloclab.s14
-rw-r--r--gas/testsuite/gas/mmix/reloclrn.d33
-rw-r--r--gas/testsuite/gas/mmix/relocxrn.d14
-rw-r--r--gas/testsuite/gas/mmix/resume-op-r.d12
-rw-r--r--gas/testsuite/gas/mmix/resume-op.d10
-rw-r--r--gas/testsuite/gas/mmix/resume-op.l20
-rw-r--r--gas/testsuite/gas/mmix/resume-op.s8
-rw-r--r--gas/testsuite/gas/mmix/round2-op-r.d19
-rw-r--r--gas/testsuite/gas/mmix/round2-op.d17
-rw-r--r--gas/testsuite/gas/mmix/round2-op.l28
-rw-r--r--gas/testsuite/gas/mmix/round2-op.s15
-rw-r--r--gas/testsuite/gas/mmix/roundi-op-r.d22
-rw-r--r--gas/testsuite/gas/mmix/roundi-op.d20
-rw-r--r--gas/testsuite/gas/mmix/roundi-op.l31
-rw-r--r--gas/testsuite/gas/mmix/roundi-op.s18
-rw-r--r--gas/testsuite/gas/mmix/roundr-op-r.d15
-rw-r--r--gas/testsuite/gas/mmix/roundr-op.d13
-rw-r--r--gas/testsuite/gas/mmix/roundr-op.l22
-rw-r--r--gas/testsuite/gas/mmix/roundr-op.s10
-rw-r--r--gas/testsuite/gas/mmix/save-op-r.d11
-rw-r--r--gas/testsuite/gas/mmix/save-op.d9
-rw-r--r--gas/testsuite/gas/mmix/save-op.l19
-rw-r--r--gas/testsuite/gas/mmix/save-op.s7
-rw-r--r--gas/testsuite/gas/mmix/set-r.d14
-rw-r--r--gas/testsuite/gas/mmix/set.d12
-rw-r--r--gas/testsuite/gas/mmix/set.l21
-rw-r--r--gas/testsuite/gas/mmix/set.s9
-rw-r--r--gas/testsuite/gas/mmix/swym-op-r.d16
-rw-r--r--gas/testsuite/gas/mmix/swym-op.d14
-rw-r--r--gas/testsuite/gas/mmix/swym-op.l30
-rw-r--r--gas/testsuite/gas/mmix/swym-op.s15
-rw-r--r--gas/testsuite/gas/mmix/sym-1.d51
-rw-r--r--gas/testsuite/gas/mmix/sym-1.s19
-rw-r--r--gas/testsuite/gas/mmix/sync-op-r.d14
-rw-r--r--gas/testsuite/gas/mmix/sync-op.d12
-rw-r--r--gas/testsuite/gas/mmix/sync-op.l23
-rw-r--r--gas/testsuite/gas/mmix/sync-op.s10
-rw-r--r--gas/testsuite/gas/mmix/tst.s6
-rw-r--r--gas/testsuite/gas/mmix/two-op-r.d24
-rw-r--r--gas/testsuite/gas/mmix/two-op.d22
-rw-r--r--gas/testsuite/gas/mmix/two-op.l35
-rw-r--r--gas/testsuite/gas/mmix/two-op.s23
-rw-r--r--gas/testsuite/gas/mmix/unsave-op-r.d11
-rw-r--r--gas/testsuite/gas/mmix/unsave-op.d9
-rw-r--r--gas/testsuite/gas/mmix/unsave-op.l19
-rw-r--r--gas/testsuite/gas/mmix/unsave-op.s7
-rw-r--r--gas/testsuite/gas/mmix/zerop-1.d20
-rw-r--r--gas/testsuite/gas/mmix/zerop-1.s9
260 files changed, 7674 insertions, 0 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 50e3674..d7667ff 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2001-10-30 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gas/mmix: New testsuite directory.
+
2001-10-24 Chris Demetriou <cgd@broadcom.com>
* gas/mips/ld-empic.d: Remove extra whitespace at beginning of
diff --git a/gas/testsuite/gas/mmix/1cjmp1b-n.d b/gas/testsuite/gas/mmix/1cjmp1b-n.d
new file mode 100644
index 0000000..ddc4191
--- /dev/null
+++ b/gas/testsuite/gas/mmix/1cjmp1b-n.d
@@ -0,0 +1,12 @@
+# objdump: -dr
+# source: 1cjmp1b.s
+# as: -no-expand
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd000000 swym 0,0,0
+ 4: f0000001 jmp 8 <Main\+0x8>
+ 8: f0000000 jmp 8 <Main\+0x8>
+ c: f1ffffff jmp 8 <Main\+0x8>
diff --git a/gas/testsuite/gas/mmix/1cjmp1b-r.d b/gas/testsuite/gas/mmix/1cjmp1b-r.d
new file mode 100644
index 0000000..8178ea8
--- /dev/null
+++ b/gas/testsuite/gas/mmix/1cjmp1b-r.d
@@ -0,0 +1,15 @@
+# objdump: -dr
+# as: -linkrelax
+# source: 1cjmp1b.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd000000 swym 0,0,0
+ 4: f0000001 jmp 8 <Main\+0x8>
+ 4: R_MMIX_ADDR27 \.text\+0x8
+ 8: f0000000 jmp 8 <Main\+0x8>
+ 8: R_MMIX_ADDR27 \.text\+0x8
+ c: f1ffffff jmp 8 <Main\+0x8>
+ c: R_MMIX_ADDR27 \.text\+0x8
diff --git a/gas/testsuite/gas/mmix/1cjmp1b.d b/gas/testsuite/gas/mmix/1cjmp1b.d
new file mode 100644
index 0000000..de7b9b9
--- /dev/null
+++ b/gas/testsuite/gas/mmix/1cjmp1b.d
@@ -0,0 +1,10 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd000000 swym 0,0,0
+ 4: f0000001 jmp 8 <Main\+0x8>
+ 8: f0000000 jmp 8 <Main\+0x8>
+ c: f1ffffff jmp 8 <Main\+0x8>
diff --git a/gas/testsuite/gas/mmix/1cjmp1b.l b/gas/testsuite/gas/mmix/1cjmp1b.l
new file mode 100644
index 0000000..dbd30bd
--- /dev/null
+++ b/gas/testsuite/gas/mmix/1cjmp1b.l
@@ -0,0 +1,14 @@
+GAS for MMIX .*/1cjmp1b.s page 1
+
+
+ 1 0000 FD000000 Main SWYM 0,0,0
+ 2 0004 F0000001 1: JMP 1f
+ 3 0008 F0000000 1: JMP 1b
+ 4 000c F1FFFFFF JMP 1b
+ GAS for MMIX .*/1cjmp1b.s page 2
+
+
+DEFINED SYMBOLS
+.*/1cjmp1b.s:1 .text:0000000000000000 Main
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/1cjmp1b.s b/gas/testsuite/gas/mmix/1cjmp1b.s
new file mode 100644
index 0000000..cf96265
--- /dev/null
+++ b/gas/testsuite/gas/mmix/1cjmp1b.s
@@ -0,0 +1,4 @@
+Main SWYM 0,0,0
+1: JMP 1f
+1: JMP 1b
+ JMP 1b
diff --git a/gas/testsuite/gas/mmix/1cjmp1brn.d b/gas/testsuite/gas/mmix/1cjmp1brn.d
new file mode 100644
index 0000000..0ecc003
--- /dev/null
+++ b/gas/testsuite/gas/mmix/1cjmp1brn.d
@@ -0,0 +1,15 @@
+# objdump: -dr
+# source: 1cjmp1b.s
+# as: -linkrelax -no-expand
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd000000 swym 0,0,0
+ 4: f0000000 jmp 4 <Main\+0x4>
+ 4: R_MMIX_ADDR27 \.text\+0x8
+ 8: f0000000 jmp 8 <Main\+0x8>
+ 8: R_MMIX_ADDR27 \.text\+0x8
+ c: f0000000 jmp c <Main\+0xc>
+ c: R_MMIX_ADDR27 \.text\+0x8
diff --git a/gas/testsuite/gas/mmix/1hjmp1b.d b/gas/testsuite/gas/mmix/1hjmp1b.d
new file mode 100644
index 0000000..866c796
--- /dev/null
+++ b/gas/testsuite/gas/mmix/1hjmp1b.d
@@ -0,0 +1,10 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd000000 swym 0,0,0
+ 4: f0000001 jmp 8 <Main\+0x8>
+ 8: f1ffffff jmp 4 <Main\+0x4>
+ c: f1ffffff jmp 8 <Main\+0x8>
diff --git a/gas/testsuite/gas/mmix/1hjmp1b.l b/gas/testsuite/gas/mmix/1hjmp1b.l
new file mode 100644
index 0000000..2222541
--- /dev/null
+++ b/gas/testsuite/gas/mmix/1hjmp1b.l
@@ -0,0 +1,14 @@
+GAS for MMIX .*/1hjmp1b.s page 1
+
+
+ 1 0000 FD000000 Main SWYM 0,0,0
+ 2 0004 F0000001 1H JMP 1F
+ 3 0008 F1FFFFFF 1H JMP 1B
+ 4 000c F1FFFFFF JMP 1B
+ GAS for MMIX .*/1hjmp1b.s page 2
+
+
+DEFINED SYMBOLS
+.*/1hjmp1b.s:1 .text:0000000000000000 Main
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/1hjmp1b.s b/gas/testsuite/gas/mmix/1hjmp1b.s
new file mode 100644
index 0000000..bff7551
--- /dev/null
+++ b/gas/testsuite/gas/mmix/1hjmp1b.s
@@ -0,0 +1,4 @@
+Main SWYM 0,0,0
+1H JMP 1F
+1H JMP 1B
+ JMP 1B
diff --git a/gas/testsuite/gas/mmix/align-1.d b/gas/testsuite/gas/mmix/align-1.d
new file mode 100644
index 0000000..c4b4c41
--- /dev/null
+++ b/gas/testsuite/gas/mmix/align-1.d
@@ -0,0 +1,18 @@
+#objdump: -srt
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0000000000000000 l d \.text 0000000000000000
+0000000000000000 l d \.data 0000000000000000
+0000000000000000 l d \.bss 0000000000000000
+0000000000000002 l \.text 0000000000000000 a
+0000000000000008 l \.text 0000000000000000 b
+0000000000000010 l \.text 0000000000000000 c
+000000000000001c g F \.text 0000000000000000 Main
+
+
+Contents of section \.text:
+ 0000 00000001 02000000 00000003 04000000 .*
+ 0010 00000000 00000005 06000000 fd000102 .*
+Contents of section \.data:
diff --git a/gas/testsuite/gas/mmix/align-1.s b/gas/testsuite/gas/mmix/align-1.s
new file mode 100644
index 0000000..5c90385
--- /dev/null
+++ b/gas/testsuite/gas/mmix/align-1.s
@@ -0,0 +1,11 @@
+# Check that alignment is applied for instructions and pseudos, and that
+# labels to such entities are aligned.
+
+ BYTE 0
+a WYDE 1
+ BYTE 2
+b TETRA 3
+ BYTE 4
+c OCTA 5
+ BYTE 6
+Main SWYM 0,1,2
diff --git a/gas/testsuite/gas/mmix/basep-1.d b/gas/testsuite/gas/mmix/basep-1.d
new file mode 100644
index 0000000..f2dcfae
--- /dev/null
+++ b/gas/testsuite/gas/mmix/basep-1.d
@@ -0,0 +1,10 @@
+#objdump: -dr
+
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0+ <a>:
+ 0: 0000002a trap 0,0,42
+ 4: 8d2b0034 ldo \$43,\$0,52
+ 6: R_MMIX_REG \.MMIX\.reg_contents
diff --git a/gas/testsuite/gas/mmix/basep-1.s b/gas/testsuite/gas/mmix/basep-1.s
new file mode 100644
index 0000000..a10ea1c
--- /dev/null
+++ b/gas/testsuite/gas/mmix/basep-1.s
@@ -0,0 +1,4 @@
+# Simple base-plus-offset
+b GREG @
+a TETRA 42
+ LDO $43,a+52
diff --git a/gas/testsuite/gas/mmix/basep-2.d b/gas/testsuite/gas/mmix/basep-2.d
new file mode 100644
index 0000000..09f2d9a
--- /dev/null
+++ b/gas/testsuite/gas/mmix/basep-2.d
@@ -0,0 +1,23 @@
+#as: --no-predefined-syms
+#objdump: -dr
+
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <a>:
+ 0: 0000002a trap 0,0,42
+ 4: 8d2b0034 ldo \$43,\$0,52
+ 6: R_MMIX_REG \.MMIX\.reg_contents\+0x8
+ \.\.\.
+
+0000000000000108 <d>:
+ 108: 0000001c trap 0,0,28
+ 10c: 8d8f000c ldo \$143,\$0,12
+ 10e: R_MMIX_REG \.MMIX\.reg_contents
+ 110: 8df3000c ldo \$243,\$0,12
+ 112: R_MMIX_REG \.MMIX\.reg_contents\+0x8
+ 114: 23670028 addu \$103,\$0,40
+ 116: R_MMIX_REG \.MMIX\.reg_contents
+ 118: 230d0018 addu \$13,\$0,24
+ 11a: R_MMIX_REG \.MMIX\.reg_contents\+0x8
diff --git a/gas/testsuite/gas/mmix/basep-2.s b/gas/testsuite/gas/mmix/basep-2.s
new file mode 100644
index 0000000..53012a8
--- /dev/null
+++ b/gas/testsuite/gas/mmix/basep-2.s
@@ -0,0 +1,12 @@
+# Simple base-plus-offset
+b GREG @
+a TETRA 42
+ LDO $43,a+52
+
+ LOC @+256
+c GREG @
+d TETRA 28
+ LDO $143,d+12
+ LDO $243,a+12
+ LDA $103,d+40
+ LDA $13,a+24
diff --git a/gas/testsuite/gas/mmix/basep-3.d b/gas/testsuite/gas/mmix/basep-3.d
new file mode 100644
index 0000000..87ed646
--- /dev/null
+++ b/gas/testsuite/gas/mmix/basep-3.d
@@ -0,0 +1,13 @@
+#objdump: -dr
+
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0+ <Main>:
+ 0: bf2a0000 pushgo \$42,\$0,0
+ 2: R_MMIX_REG \.MMIX\.reg_contents
+ 4: fd000000 swym 0,0,0
+
+0+8 <extfn>:
+ 8: f8000000 pop 0,0
diff --git a/gas/testsuite/gas/mmix/basep-3.s b/gas/testsuite/gas/mmix/basep-3.s
new file mode 100644
index 0000000..20d7c1b
--- /dev/null
+++ b/gas/testsuite/gas/mmix/basep-3.s
@@ -0,0 +1,5 @@
+# PUSHGO is eligible for base-plus-offset addressing.
+ GREG fn
+Main PUSHGO $42,fn
+ SWYM 0
+extfn POP 0,0
diff --git a/gas/testsuite/gas/mmix/bspec-1.d b/gas/testsuite/gas/mmix/bspec-1.d
new file mode 100644
index 0000000..9775b36
--- /dev/null
+++ b/gas/testsuite/gas/mmix/bspec-1.d
@@ -0,0 +1,48 @@
+#readelf: -Ssr -x1 -x4
+
+There are 9 section headers, starting at offset 0xa0:
+
+Section Headers:
+ \[Nr\] Name Type Address Offset
+ Size EntSize Flags Link Info Align
+ \[ 0\] NULL 0000000000000000 00000000
+ 0000000000000000 0000000000000000 0 0 0
+ \[ 1\] \.text PROGBITS 0000000000000000 00000040
+ 0000000000000004 0000000000000000 AX 0 0 4
+ \[ 2\] \.data PROGBITS 0000000000000000 00000044
+ 0000000000000000 0000000000000000 WA 0 0 1
+ \[ 3\] \.bss NOBITS 0000000000000000 00000044
+ 0000000000000000 0000000000000000 WA 0 0 1
+ \[ 4\] \.MMIX\.spec_data\.2 PROGBITS 0000000000000000 00000044
+ 0000000000000004 0000000000000000 0 0 4
+ \[ 5\] \.rela\.MMIX\.spec_d RELA 0000000000000000 00000378
+ 0000000000000018 0000000000000018 7 4 8
+ \[ 6\] \.shstrtab STRTAB 0000000000000000 00000048
+ 0000000000000055 0000000000000000 0 0 1
+ \[ 7\] \.symtab SYMTAB 0000000000000000 000002e0
+ 0000000000000090 0000000000000018 8 5 8
+ \[ 8\] \.strtab STRTAB 0000000000000000 00000370
+ 0000000000000006 0000000000000000 0 0 1
+Key to Flags:
+ W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
+ I \(info\), L \(link order\), G \(group\), x \(unknown\)
+ O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
+
+Relocation section '\.rela\.MMIX\.spec_data\.2' at offset 0x378 contains 1 entries:
+[ ]+Offset[ ]+Info[ ]+Type[ ]+Symbol's Value[ ]+Symbol's Name[ ]+Addend
+0+ 0+500000004 R_MMIX_32 0+ forw \+ 0
+
+Symbol table '\.symtab' contains 6 entries:
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0+ 0 NOTYPE LOCAL DEFAULT UND
+ 1: 0+ 0 SECTION LOCAL DEFAULT 1
+ 2: 0+ 0 SECTION LOCAL DEFAULT 2
+ 3: 0+ 0 SECTION LOCAL DEFAULT 3
+ 4: 0+ 0 SECTION LOCAL DEFAULT 4
+ 5: 0+ 0 NOTYPE GLOBAL DEFAULT UND forw
+
+Hex dump of section '\.text':
+ 0x00000000 fd010203 .*
+
+Hex dump of section '\.MMIX\.spec_data\.2':
+ 0x00000000 00000000 .*
diff --git a/gas/testsuite/gas/mmix/bspec-1.s b/gas/testsuite/gas/mmix/bspec-1.s
new file mode 100644
index 0000000..f4a992b
--- /dev/null
+++ b/gas/testsuite/gas/mmix/bspec-1.s
@@ -0,0 +1,4 @@
+ SWYM 1,2,3
+ BSPEC 2
+ TETRA forw
+ ESPEC
diff --git a/gas/testsuite/gas/mmix/bspec-2.d b/gas/testsuite/gas/mmix/bspec-2.d
new file mode 100644
index 0000000..aef2758
--- /dev/null
+++ b/gas/testsuite/gas/mmix/bspec-2.d
@@ -0,0 +1,47 @@
+#readelf: -Sr -x1 -x4
+There are 11 section headers, starting at offset 0xe0:
+
+Section Headers:
+ \[Nr\] Name Type Address Offset
+ Size EntSize Flags Link Info Align
+ \[ 0\] NULL 0+ 0+
+ 0+ 0+ 0 0 0
+ \[ 1\] \.text PROGBITS 0+ 0+40
+ 0+4 0+ AX 0 0 4
+ \[ 2\] \.data PROGBITS 0+ 0+44
+ 0+ 0+ WA 0 0 1
+ \[ 3\] \.bss NOBITS 0+ 0+44
+ 0+ 0+ WA 0 0 1
+ \[ 4\] \.MMIX\.spec_data\.2 PROGBITS 0+ 0+48
+ 0+10 0+ 0 0 8
+ \[ 5\] \.rela\.MMIX\.spec_d RELA 0+ 0+470
+ 0+30 0+18 9 4 8
+ \[ 6\] \.MMIX\.spec_data\.3 PROGBITS 0+ 0+58
+ 0+8 0+ 0 0 8
+ \[ 7\] \.rela\.MMIX\.spec_d RELA 0+ 0+4a0
+ 0+18 0+18 9 6 8
+ \[ 8\] \.shstrtab STRTAB 0+ 0+60
+ 0+7e 0+ 0 0 1
+ \[ 9\] \.symtab SYMTAB 0+ 0+3a0
+ 0+c0 0+18 10 6 8
+ \[10\] \.strtab STRTAB 0+ 0+460
+ 0+c 0+ 0 0 1
+Key to Flags:
+ W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
+ I \(info\), L \(link order\), G \(group\), x \(unknown\)
+ O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
+
+Relocation section '\.rela\.MMIX\.spec_data\.2' at offset 0x470 contains 2 entries:
+[ ]+Offset[ ]+Info[ ]+Type[ ]+Symbol's Value[ ]+Symbol's Name[ ]+Addend
+0+ 0+600000004 R_MMIX_32 0+ forw \+ 0
+0+8 0+700000005 R_MMIX_64 0+ other \+ 0
+
+Relocation section '\.rela\.MMIX\.spec_data\.3' at offset 0x4a0 contains 1 entries:
+[ ]+Offset[ ]+Info[ ]+Type[ ]+Symbol's Value[ ]+Symbol's Name[ ]+Addend
+0+ 0+700000005 R_MMIX_64 0+ other \+ 0
+
+Hex dump of section '\.text':
+ 0x00000000 fd010203 .*
+
+Hex dump of section '\.MMIX\.spec_data\.2':
+ 0x00000000 00000000 0000002a 00000000 00000000 .*
diff --git a/gas/testsuite/gas/mmix/bspec-2.s b/gas/testsuite/gas/mmix/bspec-2.s
new file mode 100644
index 0000000..aab1bee
--- /dev/null
+++ b/gas/testsuite/gas/mmix/bspec-2.s
@@ -0,0 +1,11 @@
+ SWYM 1,2,3
+ BSPEC 2
+ TETRA forw
+ ESPEC
+ BSPEC 3
+ OCTA other
+ ESPEC
+ BSPEC 2
+ TETRA 42
+ OCTA other
+ ESPEC
diff --git a/gas/testsuite/gas/mmix/builtin1.d b/gas/testsuite/gas/mmix/builtin1.d
new file mode 100644
index 0000000..1733cf4
--- /dev/null
+++ b/gas/testsuite/gas/mmix/builtin1.d
@@ -0,0 +1,22 @@
+# objdump: -dtr
+
+# Make sure we can override a built-in symbol with a known constant, like
+# with mmixal.
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+14 l \*ABS\* 0+ rJ
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ g F \.text 0+ Main
+
+
+Disassembly of section \.text:
+
+0+ <Main>:
+ 0: fe050014 get \$5,rL
+ 4: fe060014 get \$6,rL
+ 8: f6140007 put rL,\$7
+ c: f6140008 put rL,\$8
diff --git a/gas/testsuite/gas/mmix/builtin1.s b/gas/testsuite/gas/mmix/builtin1.s
new file mode 100644
index 0000000..6c7c282
--- /dev/null
+++ b/gas/testsuite/gas/mmix/builtin1.s
@@ -0,0 +1,8 @@
+# When disallowing built-in names, we have to treat GET and PUT
+# specially, so when parsing the special register operand we do
+# not use the symbol table.
+rJ IS 20
+Main GET $5,rJ
+ GET $6,:rJ
+ PUT rJ,$7
+ PUT :rJ,$8
diff --git a/gas/testsuite/gas/mmix/builtin2.d b/gas/testsuite/gas/mmix/builtin2.d
new file mode 100644
index 0000000..f0e1c6a
--- /dev/null
+++ b/gas/testsuite/gas/mmix/builtin2.d
@@ -0,0 +1,24 @@
+# as: -no-predefined-syms
+# objdump: -dtr
+# source: builtin1.s
+
+# Make sure we don't look at the symbol table when parsing special
+# register names.
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+14 l \*ABS\* 0+ rJ
+0+ g F \.text 0+ Main
+
+
+Disassembly of section \.text:
+
+0+ <Main>:
+ 0: fe050004 get \$5,rJ
+ 4: fe060004 get \$6,rJ
+ 8: f6040007 put rJ,\$7
+ c: f6040008 put rJ,\$8
diff --git a/gas/testsuite/gas/mmix/builtin3.d b/gas/testsuite/gas/mmix/builtin3.d
new file mode 100644
index 0000000..4c03230
--- /dev/null
+++ b/gas/testsuite/gas/mmix/builtin3.d
@@ -0,0 +1,24 @@
+# as: -fixed-special-register-names
+# objdump: -dtr
+# source: builtin1.s
+
+# Make sure we don't look at the symbol table when parsing special
+# register names.
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+14 l \*ABS\* 0+ rJ
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ g F \.text 0+ Main
+
+
+Disassembly of section \.text:
+
+0+ <Main>:
+ 0: fe050004 get \$5,rJ
+ 4: fe060004 get \$6,rJ
+ 8: f6040007 put rJ,\$7
+ c: f6040008 put rJ,\$8
diff --git a/gas/testsuite/gas/mmix/byte-1.d b/gas/testsuite/gas/mmix/byte-1.d
new file mode 100644
index 0000000..3f26d02
--- /dev/null
+++ b/gas/testsuite/gas/mmix/byte-1.d
@@ -0,0 +1,41 @@
+#readelf: -Ssrx1
+There are 7 section headers, starting at offset 0x88:
+
+Section Headers:
+ \[Nr\] Name Type Address Offset
+ Size EntSize Flags Link Info Align
+ \[ 0\] NULL 0000000000000000 00000000
+ 0000000000000000 0000000000000000 0 0 0
+ \[ 1\] \.text PROGBITS 0000000000000000 00000040
+ 0000000000000018 0000000000000000 AX 0 0 4
+ \[ 2\] \.data PROGBITS 0000000000000000 00000058
+ 0000000000000000 0000000000000000 WA 0 0 1
+ \[ 3\] \.bss NOBITS 0000000000000000 00000058
+ 0000000000000000 0000000000000000 WA 0 0 1
+ \[ 4\] \.shstrtab STRTAB 0000000000000000 00000058
+ 000000000000002c 0000000000000000 0 0 1
+ \[ 5\] \.symtab SYMTAB 0000000000000000 00000248
+ 00000000000000c0 0000000000000018 6 7 8
+ \[ 6\] \.strtab STRTAB 0000000000000000 00000308
+ 0000000000000018 0000000000000000 0 0 1
+Key to Flags:
+ W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
+ I \(info\), L \(link order\), G \(group\), x \(unknown\)
+ O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
+
+There are no relocations in this file\.
+
+Symbol table '\.symtab' contains 8 entries:
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0+ 0 NOTYPE LOCAL DEFAULT UND
+ 1: 0+ 0 SECTION LOCAL DEFAULT 1
+ 2: 0+ 0 SECTION LOCAL DEFAULT 2
+ 3: 0+ 0 SECTION LOCAL DEFAULT 3
+ 4: 0+2a 0 NOTYPE LOCAL DEFAULT ABS number
+ 5: 0+4 0 NOTYPE LOCAL DEFAULT 1 label
+ 6: 0+c 0 NOTYPE LOCAL DEFAULT 1 lab2
+ 7: 0+ 0 FUNC GLOBAL DEFAULT 1 Main
+
+Hex dump of section '\.text':
+ 0x00000000 fd2b2a29 73747269 6e670aff 8e007374 .*
+ 0x00000010 72696e67 320a0000 .*
diff --git a/gas/testsuite/gas/mmix/byte-1.s b/gas/testsuite/gas/mmix/byte-1.s
new file mode 100644
index 0000000..d5f8401
--- /dev/null
+++ b/gas/testsuite/gas/mmix/byte-1.s
@@ -0,0 +1,6 @@
+# Test BYTE sequences, excercising code paths for valid input.
+number IS 42
+Main SWYM 43,number,41
+
+label BYTE "string",#a,255
+lab2 BYTE number+100,0,"string2",#a
diff --git a/gas/testsuite/gas/mmix/bz-c.d b/gas/testsuite/gas/mmix/bz-c.d
new file mode 100644
index 0000000..6043258
--- /dev/null
+++ b/gas/testsuite/gas/mmix/bz-c.d
@@ -0,0 +1,30 @@
+#as: -x
+#objdump: -tdr
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d .text 0+
+0+ l d .data 0+
+0+ l d .bss 0+
+ffff0000ffff0000 l \*ABS\* 0+ i1
+ffff0000ffff0000 l \*ABS\* 0+ i2
+0+ g F .text 0+ Main
+
+Disassembly of section .text:
+
+0+ <Main>:
+ 0: 42ff0000 bz \$255,0 <Main>
+ 0: R_MMIX_CBRANCH \*ABS\*\+0xffff0000ffff0000
+ 4: fd000000 swym 0,0,0
+ 8: fd000000 swym 0,0,0
+ c: fd000000 swym 0,0,0
+ 10: fd000000 swym 0,0,0
+ 14: fd000000 swym 0,0,0
+ 18: 42ff0000 bz \$255,18 <Main\+0x18>
+ 18: R_MMIX_CBRANCH i2
+ 1c: fd000000 swym 0,0,0
+ 20: fd000000 swym 0,0,0
+ 24: fd000000 swym 0,0,0
+ 28: fd000000 swym 0,0,0
+ 2c: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/bz-c.s b/gas/testsuite/gas/mmix/bz-c.s
new file mode 100644
index 0000000..4591570
--- /dev/null
+++ b/gas/testsuite/gas/mmix/bz-c.s
@@ -0,0 +1,5 @@
+% BZ far away must not fail
+i1 IS #ffff0000ffff0000
+Main BZ $255,i1
+ BZ $255,i2
+i2 IS #ffff0000ffff0000
diff --git a/gas/testsuite/gas/mmix/comment-1.d b/gas/testsuite/gas/mmix/comment-1.d
new file mode 100644
index 0000000..7c91eb9
--- /dev/null
+++ b/gas/testsuite/gas/mmix/comment-1.d
@@ -0,0 +1,69 @@
+#as: -no-expand
+#readelf: -Ssrx1 -x6
+
+There are 10 section headers, starting at offset 0x130:
+
+Section Headers:
+ \[Nr\] Name Type Address Offset
+ Size EntSize Flags Link Info Align
+ \[ 0\] NULL 0+ 0+
+ 0+ 0+ 0 0 0
+ \[ 1\] \.text PROGBITS 0+ 0+40
+ 0+88 0+ AX 0 0 8
+ \[ 2\] \.rela\.text RELA 0+ 0+4f8
+ 0+78 0+18 8 1 8
+ \[ 3\] \.data PROGBITS 0+ 0+c8
+ 0+ 0+ WA 0 0 1
+ \[ 4\] \.bss NOBITS 0+ 0+c8
+ 0+ 0+ WA 0 0 1
+ \[ 5\] \.MMIX\.spec_data\.4 PROGBITS 0+ 0+c8
+ 0+ 0+ 0 0 1
+ \[ 6\] \.MMIX\.reg_content PROGBITS 0+ 0+c8
+ 0+8 0+ W 0 0 1
+ \[ 7\] \.shstrtab STRTAB 0+ 0+d0
+ 0+5d 0+ 0 0 1
+ \[ 8\] \.symtab SYMTAB 0+ 0+3b0
+ 0+120 0+18 9 8 8
+ \[ 9\] \.strtab STRTAB 0+ 0+4d0
+ 0+21 0+ 0 0 1
+Key to Flags:
+ W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
+ I \(info\), L \(link order\), G \(group\), x \(unknown\)
+ O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
+
+Relocation section '\.rela\.text' at offset 0x4f8 contains 5 entries:
+[ ]+Offset[ ]+Info[ ]+Type[ ]+Symbol's Value[ ]+Symbol's Name[ ]+Addend
+0+34 0+90000001e R_MMIX_ADDR19 0+ target \+ 2c
+0+46 0+a00000002 R_MMIX_16 0+ target2 \+ 30
+0+48 0+b0000001f R_MMIX_ADDR27 0+ target3 \+ 38
+0+54 0+b0000001e R_MMIX_ADDR19 0+ target3 \+ 0
+0+78 0+23 R_MMIX_LOCAL 0+30
+
+Symbol table '\.symtab' contains 12 entries:
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0+ 0 NOTYPE LOCAL DEFAULT UND
+ 1: 0+ 0 SECTION LOCAL DEFAULT 1
+ 2: 0+ 0 SECTION LOCAL DEFAULT 3
+ 3: 0+ 0 SECTION LOCAL DEFAULT 4
+ 4: 0+18 0 NOTYPE LOCAL DEFAULT ABS z
+ 5: 0+80 0 NOTYPE LOCAL DEFAULT 1 x
+ 6: 0+ 0 SECTION LOCAL DEFAULT 5
+ 7: 0+ 0 SECTION LOCAL DEFAULT 6
+ 8: 0+ 0 FUNC GLOBAL DEFAULT 1 Main
+ 9: 0+ 0 NOTYPE GLOBAL DEFAULT UND target
+ 10: 0+ 0 NOTYPE GLOBAL DEFAULT UND target2
+ 11: 0+ 0 NOTYPE GLOBAL DEFAULT UND target3
+
+Hex dump of section '\.text':
+ 0x0+ 0000007b 00010017 00010203 01030201 .*
+ 0x0+10 09050006 09070208 0509000a 050b030c .*
+ 0x0+20 230f1011 23121300 23141516 34170018 .*
+ 0x0+30 34191a1b 401c0000 b91d1e1f bf202122 .*
+ 0x0+40 c1232400 e0250000 f0000000 f8260027 .*
+ 0x0+50 f9000028 f2290000 fa2a0000 fb00002b .*
+ 0x0+60 f604002c fe2d0004 00000000 03020104 .*
+ 0x0+70 0007000c 00000014 00000000 0000001c .*
+ 0x0+80 fd221538 00000000 .*
+
+Hex dump of section '\.MMIX\.reg_contents':
+ 0x0+ 00000000 00000033 .*
diff --git a/gas/testsuite/gas/mmix/comment-1.s b/gas/testsuite/gas/mmix/comment-1.s
new file mode 100644
index 0000000..9186c6a
--- /dev/null
+++ b/gas/testsuite/gas/mmix/comment-1.s
@@ -0,0 +1,46 @@
+# Check that "naked" comments are accepted and ignored on all different
+# mnemonic types and pseudos. The goal is to use all combinations of
+# operands where varying number of operands are allowed. If any
+# combinations are missing, for simplicity, add them to another file.
+Main TRAP 123 ignore; x y z
+ TRAP 1,23 all; x y z
+ TRAP 1,2,3 these; x y z
+ FCMP $3,$2,$1 comments; x y z
+ FLOT $5,6 and; x y z
+ FLOT $7,ROUND_UP,8 do; x y z
+ FIX $9,$10 nothing; x y z
+ FIX $11,ROUND_DOWN,$12 that; x y z
+ ADDU $15,$16,17 would make; x y z
+ LDA $18,$19 a; x y z
+ LDA $20,$21,22 difference; x y z
+ NEG $23,$24 in; x y z
+ NEG $25,26,$27 the; x y z
+ bn $28,target + 44 generated; x y z
+ SYNCD 29,$30,31 code; x y z
+ PUSHGO 32,$33,34 so; x y z
+ SET $35,$36 it; x y z
+ SETH $37,target2 + 48 is; x y z
+ JMP target3 + 56 as; x y z
+ POP 38,39 if; x y z
+ RESUME 40 it; x y z
+ PUSHJ $41,target3 had; x y z
+ SAVE $42,0 never; x y z
+ UNSAVE 0,$43 been; x y z
+ PUT rJ,$44 there; x y z
+ GET $45,rJ at all.; x y z
+
+ LOC @+4 likewise; x y z
+ PREFIX : with; x y z
+ BYTE 3,2,1,0+4 the; x y z
+ WYDE 7,4+8 different; x y z
+ TETRA 8+12 pseudo; x y z
+ OCTA 12+16 ops,; x y z
+ LOCAL 48 they; x y z
+ BSPEC 49 too; x y z
+# Specifying an operand field (although ignored) is necessary for a comment
+# with a ';' to be ignorable and not interpreted as eoln, both for GAS and
+# mmixal.
+ ESPEC 0 ignore; x y z
+ GREG 50 + 1 naked; x y z
+z IS 9 + 8 + 7 comments; x y z
+x SWYM 34,21,56
diff --git a/gas/testsuite/gas/mmix/comment-2.d b/gas/testsuite/gas/mmix/comment-2.d
new file mode 100644
index 0000000..5530552
--- /dev/null
+++ b/gas/testsuite/gas/mmix/comment-2.d
@@ -0,0 +1,15 @@
+#objdump: -drt
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ g F \.text 0+ Main
+
+
+Disassembly of section \.text:
+
+0+ <Main>:
+ 0: f801e240 pop 1,57920
diff --git a/gas/testsuite/gas/mmix/comment-2.s b/gas/testsuite/gas/mmix/comment-2.s
new file mode 100644
index 0000000..105de1e
--- /dev/null
+++ b/gas/testsuite/gas/mmix/comment-2.s
@@ -0,0 +1 @@
+Main POP 123456 ignore; x y z
diff --git a/gas/testsuite/gas/mmix/comment-3.d b/gas/testsuite/gas/mmix/comment-3.d
new file mode 100644
index 0000000..1e3f0ba
--- /dev/null
+++ b/gas/testsuite/gas/mmix/comment-3.d
@@ -0,0 +1,21 @@
+#objdump: -srt
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0000000000000000 l d \.text 0000000000000000
+0000000000000000 l d \.data 0000000000000000
+0000000000000000 l d \.bss 0000000000000000
+0000000000000000 l \.MMIX\.reg_contents 0000000000000000 im
+0000000000000000 l d \.MMIX\.reg_contents 0000000000000000
+
+
+RELOCATION RECORDS FOR \[\.MMIX\.reg_contents\]:
+OFFSET TYPE VALUE
+0000000000000000 R_MMIX_64 \.text
+
+
+Contents of section \.text:
+Contents of section \.data:
+Contents of section \.MMIX\.reg_contents:
+ 0000 00000000 00000000 .*
diff --git a/gas/testsuite/gas/mmix/comment-3.s b/gas/testsuite/gas/mmix/comment-3.s
new file mode 100644
index 0000000..6affde5
--- /dev/null
+++ b/gas/testsuite/gas/mmix/comment-3.s
@@ -0,0 +1,2 @@
+# If we aren't careful, '@' will be considered an operator.
+im GREG @ home
diff --git a/gas/testsuite/gas/mmix/cons-1.d b/gas/testsuite/gas/mmix/cons-1.d
new file mode 100644
index 0000000..ab263b0
--- /dev/null
+++ b/gas/testsuite/gas/mmix/cons-1.d
@@ -0,0 +1,7 @@
+#objdump: -sr
+
+.*: file format elf64-mmix
+
+Contents of section \.text:
+ 0000 00000000 00000000 .*
+Contents of section \.data:
diff --git a/gas/testsuite/gas/mmix/cons-1.s b/gas/testsuite/gas/mmix/cons-1.s
new file mode 100644
index 0000000..c12a38b
--- /dev/null
+++ b/gas/testsuite/gas/mmix/cons-1.s
@@ -0,0 +1,2 @@
+# Empty expressions are a single zero.
+d OCTA
diff --git a/gas/testsuite/gas/mmix/cons-2.d b/gas/testsuite/gas/mmix/cons-2.d
new file mode 100644
index 0000000..dbb8a07
--- /dev/null
+++ b/gas/testsuite/gas/mmix/cons-2.d
@@ -0,0 +1,14 @@
+#objdump: -str
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ g F \.text 0+ Main
+
+Contents of section \.text:
+ 0000 61623b00 00000000 00000000 00000064 .*
+ 0010 00000000 00000065 .*
+Contents of section \.data:
diff --git a/gas/testsuite/gas/mmix/cons-2.s b/gas/testsuite/gas/mmix/cons-2.s
new file mode 100644
index 0000000..7597e82
--- /dev/null
+++ b/gas/testsuite/gas/mmix/cons-2.s
@@ -0,0 +1,4 @@
+# Character constants. We actually see e.g. 'b' as 98, so ww just check
+# that we get the right output with this test.
+Main BYTE 'a','b',';'
+ OCTA 'd','e'
diff --git a/gas/testsuite/gas/mmix/err-bpo1.s b/gas/testsuite/gas/mmix/err-bpo1.s
new file mode 100644
index 0000000..c658abf
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-bpo1.s
@@ -0,0 +1,12 @@
+% { dg-do assemble { target mmix-*-* } }
+
+% SAVE, UNSAVE are not valid with base-plus-offset
+
+ .data
+buffer OCTA 0,0,0
+
+ .text
+ GREG buffer
+Main SWYM 0
+ SAVE buffer,0 % { dg-error "operands" "" }
+ UNSAVE 0,buffer % { dg-error "operands" "" }
diff --git a/gas/testsuite/gas/mmix/err-bspec-1.s b/gas/testsuite/gas/mmix/err-bspec-1.s
new file mode 100644
index 0000000..5216179
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-bspec-1.s
@@ -0,0 +1,4 @@
+% { dg-do assemble { target mmix-*-* } }
+Main SET $45,23
+ BSPEC 5 % { dg-error "BSPEC without ESPEC" "" }
+ TETRA 4
diff --git a/gas/testsuite/gas/mmix/err-bspec-2.s b/gas/testsuite/gas/mmix/err-bspec-2.s
new file mode 100644
index 0000000..90a12bb
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-bspec-2.s
@@ -0,0 +1,7 @@
+% { dg-do assemble { target mmix-*-* } }
+Main SET $45,23
+ BSPEC 5
+ TETRA 4
+ BSPEC 6 % { dg-error "BSPEC already active" "" }
+ TETRA 5
+ ESPEC
diff --git a/gas/testsuite/gas/mmix/err-bspec-3.s b/gas/testsuite/gas/mmix/err-bspec-3.s
new file mode 100644
index 0000000..d127680
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-bspec-3.s
@@ -0,0 +1,4 @@
+% { dg-do assemble { target mmix-*-* } }
+Main SET $45,23
+ TETRA 4
+ ESPEC % { dg-error "ESPEC without preceding BSPEC" "" }
diff --git a/gas/testsuite/gas/mmix/err-bspec-4.s b/gas/testsuite/gas/mmix/err-bspec-4.s
new file mode 100644
index 0000000..a4ce11b
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-bspec-4.s
@@ -0,0 +1,7 @@
+% { dg-do assemble { target mmix-*-* } }
+Main SET $45,23
+ BSPEC 2
+ TETRA 4
+ ESPEC
+ TETRA 5
+ ESPEC % { dg-error "ESPEC without preceding BSPEC" "" }
diff --git a/gas/testsuite/gas/mmix/err-bspec-5.s b/gas/testsuite/gas/mmix/err-bspec-5.s
new file mode 100644
index 0000000..8f1cdf0
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-bspec-5.s
@@ -0,0 +1,23 @@
+% { dg-do assemble { target mmix-*-* } }
+Main SET $45,23
+here SWYM 0,0,0
+ BSPEC 0
+ TETRA 4
+ ESPEC
+ BSPEC 65535
+ TETRA 4
+ ESPEC
+ BSPEC 65536 % { dg-error "invalid BSPEC expression" "" }
+ TETRA 4
+ ESPEC
+ BSPEC forw % { dg-error "invalid BSPEC expression" "" }
+ TETRA 4
+ ESPEC
+ BSPEC here % { dg-error "invalid BSPEC expression" "" }
+ TETRA 4
+ ESPEC
+ BSPEC -1 % { dg-error "invalid BSPEC expression" "" }
+ TETRA 4
+ ESPEC
+
+
diff --git a/gas/testsuite/gas/mmix/err-builtin.s b/gas/testsuite/gas/mmix/err-builtin.s
new file mode 100644
index 0000000..68f97c4
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-builtin.s
@@ -0,0 +1,14 @@
+% { dg-do assemble { target mmix-*-* } }
+% { dg-options "-no-predefined-syms" }
+% When disallowing built-in names, we have to treat GET and PUT
+% specially, so when parsing the special register operand we do
+% not use the symbol table. Make sure an error is emitted for
+% invalid registers despite there being a valid user label and
+% the construct being valid without the -no-builtin-syms option.
+% FIXME: Another option? Or is this just the consequence?
+RJ IS 4
+other IS 20
+Main GET $5,RJ % { dg-error "invalid operands" "" }
+ PUT other,$7 % { dg-error "invalid operands" "" }
+ GET garbage % { dg-error "invalid operands" "" }
+ PUT garbage % { dg-error "invalid operands" "" }
diff --git a/gas/testsuite/gas/mmix/err-byte1.s b/gas/testsuite/gas/mmix/err-byte1.s
new file mode 100644
index 0000000..28ad78e
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-byte1.s
@@ -0,0 +1,11 @@
+% { dg-do assemble { target mmix-*-* } }
+% { dg-error "unterminated string" "" { target mmix-*-* } 10 }
+% { dg-bogus "end of file" "" { xfail mmix-*-* } 0 }
+
+# Note that the error is detected in the preformatter, before the text
+# gets to the assembler. It also gets confused about the unterminated
+# string. Well, at least we get error messages for it, so no worries.
+
+Main SWYM 0,0,0
+ BYTE 2,"no end
+ BYTE 0
diff --git a/gas/testsuite/gas/mmix/err-byte2.s b/gas/testsuite/gas/mmix/err-byte2.s
new file mode 100644
index 0000000..0db84ce
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-byte2.s
@@ -0,0 +1,17 @@
+% { dg-do assemble { target mmix-*-* } }
+
+m1 IS -1
+zero IS 0
+zero2 IS 0
+1H IS 42
+2H IS 5
+Main SWYM 0,0,0
+ BYTE 0
+ BYTE -1 % { dg-error "BYTE expression not in the range 0..255" "" }
+ BYTE m1 % { dg-error "BYTE expression not in the range 0..255" "" }
+ BYTE zero2
+ BYTE 1B+2B+55
+ BYTE zero+m1 % { dg-error "BYTE expression not in the range 0..255" "" }
+ BYTE 255
+ BYTE 256 % { dg-error "BYTE expression not in the range 0..255" "" }
+ BYTE unk+1 % { dg-error "BYTE expression not a pure number" "" }
diff --git a/gas/testsuite/gas/mmix/err-case.s b/gas/testsuite/gas/mmix/err-case.s
new file mode 100644
index 0000000..ef0ab68
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-case.s
@@ -0,0 +1,8 @@
+% Check that lowercase pseudos with mmixal syntax (no dot prefix) aren't
+% recognized. Since local is handled as an insn, it's actually
+% misrecognized in lower case.
+% { dg-do assemble { target mmix-*-* } }
+Main SWYM 0,0,0
+X is 42 % { dg-error "unknown opcode: \`is\'" "" }
+ local 56 % { dg-error "unknown opcode: \`fatal\'" "" { xfail *-*-* } }
+a greg 94 % { dg-error "unknown opcode: \`greg\'" "" }
diff --git a/gas/testsuite/gas/mmix/err-fb-1.s b/gas/testsuite/gas/mmix/err-fb-1.s
new file mode 100644
index 0000000..d2f0caf
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-fb-1.s
@@ -0,0 +1,7 @@
+% { dg-do assemble { target mmix-*-* } }
+% { dg-error "may not appear alone on a line" "" { target mmix-*-* } 5 }
+% { dg-error "may not appear alone on a line" "" { target mmix-*-* } 6 }
+0H .local 32 % { dg-error "do not mix with dot-pseudos" "" }
+1H
+2H
+3H .set s,32 % { dg-error "do not mix with dot-pseudos" "" }
diff --git a/gas/testsuite/gas/mmix/err-greg1.s b/gas/testsuite/gas/mmix/err-greg1.s
new file mode 100644
index 0000000..8c6af66
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-greg1.s
@@ -0,0 +1,10 @@
+% { dg-do assemble { target mmix-*-* } }
+
+% One more than greg9.s is one too many.
+% The error is reported on the wrong line. Methinks that error is
+% attributable to the .rept machinery. No xfail+bogus for this one.
+
+Main SWYM 0
+ .rept 223
+ GREG
+ .endr % { dg-error "too many GREG registers allocated" "" }
diff --git a/gas/testsuite/gas/mmix/err-insn.s b/gas/testsuite/gas/mmix/err-insn.s
new file mode 100644
index 0000000..5d95de2
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-insn.s
@@ -0,0 +1,5 @@
+% { dg-do assemble { target mmix-*-* } }
+Main SWYM 0,0,0
+ FLOT $112,$223,$41 % { dg-error "invalid operands" "Y field of FLOT 1" }
+ FLOT $112,$223,141 % { dg-error "invalid operands" "Y field of FLOT 2" }
+ LDA $122,$203,256 % { dg-error "invalid operands" "Z field too large" }
diff --git a/gas/testsuite/gas/mmix/err-is-1.s b/gas/testsuite/gas/mmix/err-is-1.s
new file mode 100644
index 0000000..f82fb1a
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-is-1.s
@@ -0,0 +1,4 @@
+% { dg-do assemble { target mmix-*-* } }
+ IS 42 % { dg-error "empty label field for IS" "" }
+2H IS 1
+ IS 2B % { dg-error "empty label field for IS" "" }
diff --git a/gas/testsuite/gas/mmix/err-loc-1.s b/gas/testsuite/gas/mmix/err-loc-1.s
new file mode 100644
index 0000000..9b51f84
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-loc-1.s
@@ -0,0 +1,5 @@
+% { dg-do assemble { target mmix-*-* } }
+ LOC #200
+Main SET $45,23
+ LOC #100 % { dg-error "LOC expression stepping backwards" "" }
+ SET $57,$67
diff --git a/gas/testsuite/gas/mmix/err-loc-2.s b/gas/testsuite/gas/mmix/err-loc-2.s
new file mode 100644
index 0000000..599f0d2
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-loc-2.s
@@ -0,0 +1,5 @@
+% { dg-do assemble { target mmix-*-* } }
+ LOC (#20 << 56) + #200
+ TETRA 1
+ LOC (#20 << 56) + #100 % { dg-error "LOC expression stepping backwards" "" }
+ TETRA 2
diff --git a/gas/testsuite/gas/mmix/err-loc-3.s b/gas/testsuite/gas/mmix/err-loc-3.s
new file mode 100644
index 0000000..f2f6852
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-loc-3.s
@@ -0,0 +1,4 @@
+% { dg-do assemble { target mmix-*-* } }
+ LOC (#20 << 56) + #202
+ TETRA 1
+ OCTA 1 % { dg-error "data item with alignment larger than location" "" }
diff --git a/gas/testsuite/gas/mmix/err-loc-4.s b/gas/testsuite/gas/mmix/err-loc-4.s
new file mode 100644
index 0000000..c5cabe1
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-loc-4.s
@@ -0,0 +1,4 @@
+% { dg-do assemble { target mmix-*-* } }
+ LOC #201
+ WYDE 1
+ SWYM 1 % { dg-error "specified location wasn't TETRA-aligned" "" }
diff --git a/gas/testsuite/gas/mmix/err-loc-5.s b/gas/testsuite/gas/mmix/err-loc-5.s
new file mode 100644
index 0000000..f009417
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-loc-5.s
@@ -0,0 +1,4 @@
+% { dg-do assemble { target mmix-*-* } }
+ LOC (#20<<56)|1
+ .p2align 0
+ SWYM 1 % { dg-error "unaligned data at an absolute location" "" }
diff --git a/gas/testsuite/gas/mmix/err-loc-6.s b/gas/testsuite/gas/mmix/err-loc-6.s
new file mode 100644
index 0000000..c11b2c3
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-loc-6.s
@@ -0,0 +1,4 @@
+% { dg-do assemble { target mmix-*-* } }
+ LOC #201
+ .p2align 0
+ SWYM 1 % { dg-error "unaligned data at an absolute location" "" }
diff --git a/gas/testsuite/gas/mmix/err-loc-7.s b/gas/testsuite/gas/mmix/err-loc-7.s
new file mode 100644
index 0000000..47712e8
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-loc-7.s
@@ -0,0 +1,4 @@
+% { dg-do assemble { target mmix-*-* } }
+ LOC (#20<<56)|1
+ .p2align 0
+ TETRA 1 % { dg-error "unaligned data at an absolute location" "" }
diff --git a/gas/testsuite/gas/mmix/err-loc-8.s b/gas/testsuite/gas/mmix/err-loc-8.s
new file mode 100644
index 0000000..8fc0d87
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-loc-8.s
@@ -0,0 +1,4 @@
+% { dg-do assemble { target mmix-*-* } }
+ LOC #201
+ .p2align 0
+ TETRA 1 % { dg-error "unaligned data at an absolute location" "" }
diff --git a/gas/testsuite/gas/mmix/err-local1.s b/gas/testsuite/gas/mmix/err-local1.s
new file mode 100644
index 0000000..10c8575
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-local1.s
@@ -0,0 +1,6 @@
+% { dg-do assemble { target mmix-*-* } }
+% Check that error handling for the restrictions on LOCAL works.
+ LOCAL 128 % { dg-error "LOCAL must be placed in code or data" "" }
+
+ LOC Data_Segment
+ OCTA 0
diff --git a/gas/testsuite/gas/mmix/err-local2.s b/gas/testsuite/gas/mmix/err-local2.s
new file mode 100644
index 0000000..76ee849
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-local2.s
@@ -0,0 +1,3 @@
+% { dg-do assemble { target mmix-*-* } }
+% Check that error handling for the restrictions on LOCAL works.
+ LOCAL 128 % { dg-error "LOCAL must be placed in code or data" "" }
diff --git a/gas/testsuite/gas/mmix/err-ser-1.s b/gas/testsuite/gas/mmix/err-ser-1.s
new file mode 100644
index 0000000..fb9bdc1
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-ser-1.s
@@ -0,0 +1,10 @@
+% { dg-do assemble { target mmix-*-* } }
+% { dg-bogus "bad expression" "" { xfail mmix-*-* } 9 }
+% { dg-bogus "bad expression" "" { xfail mmix-*-* } 10 }
+
+% Make sure we correctly diagnose the serial-number operator.
+% We can't stop the "bad expression" error, though; hence the "bogus" errors.
+
+a IS 42
+Main TETRA &a<<8 { dg-error "serial number operator is not supported" "" }
+ TETRA 3+&a<<8 { dg-error "serial number operator is not supported" "" }
diff --git a/gas/testsuite/gas/mmix/err-set.s b/gas/testsuite/gas/mmix/err-set.s
new file mode 100644
index 0000000..23ac3c3
--- /dev/null
+++ b/gas/testsuite/gas/mmix/err-set.s
@@ -0,0 +1,7 @@
+% { dg-do assemble { target mmix-*-* } }
+Main SET $45,23
+ SET $57,$67 % Valid, Z is 0.
+ SET $78,X % Valid, Z is 0.
+ SET $7,Y % { dg-error "invalid operands.*value of 967 too large" "" }
+X IS $31
+Y IS 967
diff --git a/gas/testsuite/gas/mmix/expr-1.d b/gas/testsuite/gas/mmix/expr-1.d
new file mode 100644
index 0000000..5f0fea9
--- /dev/null
+++ b/gas/testsuite/gas/mmix/expr-1.d
@@ -0,0 +1,7 @@
+# objdump: -s
+
+.*: file format elf64-mmix
+
+Contents of section \.text:
+ 0000 000000ab 00000100 .*
+Contents of section \.data:
diff --git a/gas/testsuite/gas/mmix/expr-1.s b/gas/testsuite/gas/mmix/expr-1.s
new file mode 100644
index 0000000..bbd8a58
--- /dev/null
+++ b/gas/testsuite/gas/mmix/expr-1.s
@@ -0,0 +1,6 @@
+% Test expression example from TAOCP. Nothing problematic; does not have
+% the known expression evaluation order mismatch problem.
+
+k IS #cdef00
+Main OCTA #ab<<32+k&~(k-1)
+
diff --git a/gas/testsuite/gas/mmix/fb-1.d b/gas/testsuite/gas/mmix/fb-1.d
new file mode 100644
index 0000000..255cafc
--- /dev/null
+++ b/gas/testsuite/gas/mmix/fb-1.d
@@ -0,0 +1,21 @@
+#objdump: -str
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l d \.MMIX\.reg_contents 0+
+
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+2 R_MMIX_REG \.MMIX\.reg_contents
+
+
+Contents of section \.text:
+ 0+ dd2d0038 .*
+Contents of section \.data:
+Contents of section \.MMIX\.reg_contents:
+ 0+ 00000000 aabbccdd 00000000 00112233 .*
diff --git a/gas/testsuite/gas/mmix/fb-1.s b/gas/testsuite/gas/mmix/fb-1.s
new file mode 100644
index 0000000..e4c4987
--- /dev/null
+++ b/gas/testsuite/gas/mmix/fb-1.s
@@ -0,0 +1,4 @@
+# FB-labels are valid in GREG definitions.
+9H GREG #112233
+9H GREG #aabbccdd
+1H MOR $45,9B,56
diff --git a/gas/testsuite/gas/mmix/fb-2.d b/gas/testsuite/gas/mmix/fb-2.d
new file mode 100644
index 0000000..4e1519a
--- /dev/null
+++ b/gas/testsuite/gas/mmix/fb-2.d
@@ -0,0 +1,33 @@
+#objdump: -str
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l d \.MMIX\.reg_contents 0+
+0+10 g \*ABS\* 0+ __\.MMIX\.start\.\.text
+
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+2a R_MMIX_REG \.MMIX\.reg_contents
+0+30 R_MMIX_64 \.text\+0x0+28
+0+38 R_MMIX_64 \.text\+0x0+40
+
+
+RELOCATION RECORDS FOR \[\.MMIX\.reg_contents\]:
+OFFSET TYPE VALUE
+0+ R_MMIX_64 \.text\+0x0+5a
+
+
+Contents of section \.text:
+ 0000 05000000 00000000 00000000 00000000 .*
+ 0010 00000000 00000000 00000000 00000000 .*
+ 0020 00000000 fd000000 231e0000 00000000 .*
+ 0030 00000000 00000000 00000000 00000000 .*
+ 0040 fd000000 002a002b 002b002c 00000000 .*
+Contents of section \.data:
+Contents of section \.MMIX\.reg_contents:
+ 0000 00000000 00000000 .*
diff --git a/gas/testsuite/gas/mmix/fb-2.s b/gas/testsuite/gas/mmix/fb-2.s
new file mode 100644
index 0000000..40a57d5
--- /dev/null
+++ b/gas/testsuite/gas/mmix/fb-2.s
@@ -0,0 +1,20 @@
+# Test fb-label where the insn or pseudo on line with definition uses an
+# argment with a same-number label.
+1H IS 5
+0H LOC #10
+1H BYTE 1B
+0H LOC 0B+#20+0F
+0H IS 4
+1H IS 50
+1H GREG 1B+1F
+ SWYM
+1H LDA $30,1B
+1H OCTA 1B,1F
+1H SWYM
+
+9H IS 42
+ WYDE 9B,9F
+9H IS 9B+1
+ WYDE 9B,9F
+9H IS 9B+1
+
diff --git a/gas/testsuite/gas/mmix/get-op-r.d b/gas/testsuite/gas/mmix/get-op-r.d
new file mode 100644
index 0000000..34fe207
--- /dev/null
+++ b/gas/testsuite/gas/mmix/get-op-r.d
@@ -0,0 +1,11 @@
+# objdump: -dr
+# as: -linkrelax
+# source: get-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fe7b0004 get \$123,rJ
+ 4: fe2d0013 get \$45,rG
+ 8: fef5001f get \$245,rZZ
diff --git a/gas/testsuite/gas/mmix/get-op.d b/gas/testsuite/gas/mmix/get-op.d
new file mode 100644
index 0000000..335f67d
--- /dev/null
+++ b/gas/testsuite/gas/mmix/get-op.d
@@ -0,0 +1,9 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fe7b0004 get \$123,rJ
+ 4: fe2d0013 get \$45,rG
+ 8: fef5001f get \$245,rZZ
diff --git a/gas/testsuite/gas/mmix/get-op.l b/gas/testsuite/gas/mmix/get-op.l
new file mode 100644
index 0000000..104282a
--- /dev/null
+++ b/gas/testsuite/gas/mmix/get-op.l
@@ -0,0 +1,17 @@
+GAS for MMIX .*/get-op\.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 0000 FE7B0004 Main GET X,rJ
+ 4 0004 FE2D0013 GET \$45,rG
+ 5 0008 FEF5001F GET \$245,rZZ
+ 6 X IS \$123
+ GAS for MMIX .*/get-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/get-op\.s:3 \.text:0000000000000000 Main
+ \*REG\*:000000000000007b X
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/get-op.s b/gas/testsuite/gas/mmix/get-op.s
new file mode 100644
index 0000000..1d49ae9
--- /dev/null
+++ b/gas/testsuite/gas/mmix/get-op.s
@@ -0,0 +1,6 @@
+# For 'g'-type operands: GET.
+#
+Main GET X,rJ
+ GET $45,rG
+ GET $245,rZZ
+X IS $123
diff --git a/gas/testsuite/gas/mmix/geta-c.d b/gas/testsuite/gas/mmix/geta-c.d
new file mode 100644
index 0000000..851018c
--- /dev/null
+++ b/gas/testsuite/gas/mmix/geta-c.d
@@ -0,0 +1,26 @@
+#as: -x
+#objdump: -tdr
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d .text 0+
+0+ l d .data 0+
+0+ l d .bss 0+
+ffff0000ffff0000 l \*ABS\* 0+ i1
+ffff0000ffff0000 l \*ABS\* 0+ i2
+0+ g F .text 0+ Main
+
+Disassembly of section .text:
+
+0+ <Main>:
+ 0: f4ff0000 geta \$255,0 <Main>
+ 0: R_MMIX_GETA \*ABS\*\+0xffff0000ffff0000
+ 4: fd000000 swym 0,0,0
+ 8: fd000000 swym 0,0,0
+ c: fd000000 swym 0,0,0
+ 10: f4ff0000 geta \$255,10 <Main\+0x10>
+ 10: R_MMIX_GETA i2
+ 14: fd000000 swym 0,0,0
+ 18: fd000000 swym 0,0,0
+ 1c: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/geta-c.s b/gas/testsuite/gas/mmix/geta-c.s
new file mode 100644
index 0000000..4fa12f3
--- /dev/null
+++ b/gas/testsuite/gas/mmix/geta-c.s
@@ -0,0 +1,5 @@
+% GETA with a large constant must not fail
+i1 IS #ffff0000ffff0000
+Main GETA $255,i1
+ GETA $255,i2
+i2 IS #ffff0000ffff0000
diff --git a/gas/testsuite/gas/mmix/geta-op-r.d b/gas/testsuite/gas/mmix/geta-op-r.d
new file mode 100644
index 0000000..5620e1f
--- /dev/null
+++ b/gas/testsuite/gas/mmix/geta-op-r.d
@@ -0,0 +1,37 @@
+# objdump: -dr
+# as: -linkrelax
+# source: geta-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd000000 swym 0,0,0
+
+0000000000000004 <here>:
+ 4: fd000000 swym 0,0,0
+ 8: f519ffff geta \$25,4 <here>
+ 8: R_MMIX_ADDR19 \.text\+0x4
+
+000000000000000c <at>:
+ c: f4200000 geta \$32,c <at>
+ c: R_MMIX_ADDR19 \.text\+0xc
+ 10: 424e0008 bz \$78,30 <there>
+ 10: R_MMIX_ADDR19 \.text\+0x30
+ 14: f35bfffc pushj \$91,4 <here>
+ 14: R_MMIX_ADDR19 \.text\+0x4
+ 18: f387fffb pushj \$135,4 <here>
+ 18: R_MMIX_ADDR19 \.text\+0x4
+ 1c: f4870005 geta \$135,30 <there>
+ 1c: R_MMIX_ADDR19 \.text\+0x30
+ 20: f2870004 pushj \$135,30 <there>
+ 20: R_MMIX_ADDR19 \.text\+0x30
+ 24: f2490003 pushj \$73,30 <there>
+ 24: R_MMIX_ADDR19 \.text\+0x30
+ 28: f2380002 pushj \$56,30 <there>
+ 28: R_MMIX_ADDR19 \.text\+0x30
+ 2c: 5f87fff6 pbev \$135,4 <here>
+ 2c: R_MMIX_ADDR19 \.text\+0x4
+
+0000000000000030 <there>:
+ 30: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/geta-op.d b/gas/testsuite/gas/mmix/geta-op.d
new file mode 100644
index 0000000..a169fe5
--- /dev/null
+++ b/gas/testsuite/gas/mmix/geta-op.d
@@ -0,0 +1,25 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd000000 swym 0,0,0
+
+0000000000000004 <here>:
+ 4: fd000000 swym 0,0,0
+ 8: f519ffff geta \$25,4 <here>
+
+000000000000000c <at>:
+ c: f4200000 geta \$32,c <at>
+ 10: 424e0008 bz \$78,30 <there>
+ 14: f35bfffc pushj \$91,4 <here>
+ 18: f387fffb pushj \$135,4 <here>
+ 1c: f4870005 geta \$135,30 <there>
+ 20: f2870004 pushj \$135,30 <there>
+ 24: f2490003 pushj \$73,30 <there>
+ 28: f2380002 pushj \$56,30 <there>
+ 2c: 5f87fff6 pbev \$135,4 <here>
+
+0000000000000030 <there>:
+ 30: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/geta-op.l b/gas/testsuite/gas/mmix/geta-op.l
new file mode 100644
index 0000000..1d36dc4
--- /dev/null
+++ b/gas/testsuite/gas/mmix/geta-op.l
@@ -0,0 +1,31 @@
+GAS for MMIX .*/geta-op\.s page 1
+
+
+ 1 #.*
+ 2 0000 FD000000 Main SWYM 0,0,0
+ 3 0004 FD000000 here SWYM 0,0,0
+ 4 0008 F519FFFF GETA \$25,here
+ 5 000c F4200000 at GETA \$32,at
+ 6 0010 424E0008 BZ \$78,there
+ 7 0014 F35BFFFC PUSHJ X0,here
+ 8 0018 F387FFFB PUSHJ X,here
+ 9 001c F4870005 GETA X,there
+ 10 0020 F2870004 PUSHJ X,there
+ 11 0024 F2490003 PUSHJ \$73,there
+ 12 0028 F2380002 PUSHJ 56,there
+ 13 002c 5F87FFF6 PBEV X,here
+ 14 0030 FD000000 there SWYM 0,0,0
+ 15 X IS \$135
+ 16 X0 IS 91
+ GAS for MMIX .*/geta-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/geta-op\.s:2 \.text:0000000000000000 Main
+.*/geta-op\.s:3 \.text:0000000000000004 here
+.*/geta-op\.s:5 \.text:000000000000000c at
+.*/geta-op\.s:14 \.text:0000000000000030 there
+ \*ABS\*:000000000000005b X0
+ \*REG\*:0000000000000087 X
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/geta-op.s b/gas/testsuite/gas/mmix/geta-op.s
new file mode 100644
index 0000000..0715f78
--- /dev/null
+++ b/gas/testsuite/gas/mmix/geta-op.s
@@ -0,0 +1,16 @@
+# Simple GETA/BRANCH/PUSHJ operands.
+Main SWYM 0,0,0
+here SWYM 0,0,0
+ GETA $25,here
+at GETA $32,at
+ BZ $78,there
+ PUSHJ X0,here
+ PUSHJ X,here
+ GETA X,there
+ PUSHJ X,there
+ PUSHJ $73,there
+ PUSHJ 56,there
+ PBEV X,here
+there SWYM 0,0,0
+X IS $135
+X0 IS 91
diff --git a/gas/testsuite/gas/mmix/geta-opn.d b/gas/testsuite/gas/mmix/geta-opn.d
new file mode 100644
index 0000000..82fa593
--- /dev/null
+++ b/gas/testsuite/gas/mmix/geta-opn.d
@@ -0,0 +1,27 @@
+# objdump: -dr
+# source: geta-op.s
+# as: -no-expand
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd000000 swym 0,0,0
+
+0000000000000004 <here>:
+ 4: fd000000 swym 0,0,0
+ 8: f519ffff geta \$25,4 <here>
+
+000000000000000c <at>:
+ c: f4200000 geta \$32,c <at>
+ 10: 424e0008 bz \$78,30 <there>
+ 14: f35bfffc pushj \$91,4 <here>
+ 18: f387fffb pushj \$135,4 <here>
+ 1c: f4870005 geta \$135,30 <there>
+ 20: f2870004 pushj \$135,30 <there>
+ 24: f2490003 pushj \$73,30 <there>
+ 28: f2380002 pushj \$56,30 <there>
+ 2c: 5f87fff6 pbev \$135,4 <here>
+
+0000000000000030 <there>:
+ 30: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/geta-oprn.d b/gas/testsuite/gas/mmix/geta-oprn.d
new file mode 100644
index 0000000..346eaf1
--- /dev/null
+++ b/gas/testsuite/gas/mmix/geta-oprn.d
@@ -0,0 +1,37 @@
+# objdump: -dr
+# as: -linkrelax -no-expand
+# source: geta-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd000000 swym 0,0,0
+
+0000000000000004 <here>:
+ 4: fd000000 swym 0,0,0
+ 8: f4190000 geta \$25,8 <here\+0x4>
+ 8: R_MMIX_ADDR19 \.text\+0x4
+
+000000000000000c <at>:
+ c: f4200000 geta \$32,c <at>
+ c: R_MMIX_ADDR19 \.text\+0xc
+ 10: 424e0000 bz \$78,10 <at\+0x4>
+ 10: R_MMIX_ADDR19 \.text\+0x30
+ 14: f25b0000 pushj \$91,14 <at\+0x8>
+ 14: R_MMIX_ADDR19 \.text\+0x4
+ 18: f2870000 pushj \$135,18 <at\+0xc>
+ 18: R_MMIX_ADDR19 \.text\+0x4
+ 1c: f4870000 geta \$135,1c <at\+0x10>
+ 1c: R_MMIX_ADDR19 \.text\+0x30
+ 20: f2870000 pushj \$135,20 <at\+0x14>
+ 20: R_MMIX_ADDR19 \.text\+0x30
+ 24: f2490000 pushj \$73,24 <at\+0x18>
+ 24: R_MMIX_ADDR19 \.text\+0x30
+ 28: f2380000 pushj \$56,28 <at\+0x1c>
+ 28: R_MMIX_ADDR19 \.text\+0x30
+ 2c: 5e870000 pbev \$135,2c <at\+0x20>
+ 2c: R_MMIX_ADDR19 \.text\+0x4
+
+0000000000000030 <there>:
+ 30: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/greg1.d b/gas/testsuite/gas/mmix/greg1.d
new file mode 100644
index 0000000..9040498
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg1.d
@@ -0,0 +1,36 @@
+# objdump: -rst
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l \.text 0+ D4
+0+4 l \.text 0+ E6
+0+ l \.MMIX\.reg_contents 0+ H9
+0+8 l \.MMIX\.reg_contents 0+ G8
+0+ l \.MMIX\.reg_contents 0+ F7
+0+18 l \.MMIX\.reg_contents 0+ D5
+0+20 l \.MMIX\.reg_contents 0+ C3
+0+28 l \.MMIX\.reg_contents 0+ B1
+0+30 l \.MMIX\.reg_contents 0+ A0
+0+0 l d \.MMIX\.reg_contents 0+
+0+c g F \.text 0+ Main
+
+
+RELOCATION RECORDS FOR \[\.MMIX\.reg_contents\]:
+OFFSET TYPE VALUE
+0+ R_MMIX_64 \.text\+0x0+8
+0+10 R_MMIX_64 \.text\+0x0+1c
+0+20 R_MMIX_64 \.text
+
+
+Contents of section \.text:
+ 0000 e37b01c8 e3ea1edb fd020304 fd010203 .*
+Contents of section \.data:
+Contents of section \.MMIX\.reg_contents:
+ 0000 00000000 00000000 00000000 000000f7 .*
+ 0010 00000000 00000000 00000000 00000000 .*
+ 0020 00000000 00000000 00000000 00000001 .*
+ 0030 00000000 00000000 .*
diff --git a/gas/testsuite/gas/mmix/greg1.s b/gas/testsuite/gas/mmix/greg1.s
new file mode 100644
index 0000000..0dc25d7
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg1.s
@@ -0,0 +1,17 @@
+# Use of GREG with mmixal syntax.
+D4 SET $123,456
+E6 SET $234,7899
+
+A0 GREG 0
+B1 GREG 1
+C3 GREG D4
+D5 GREG
+ GREG E6+24
+F7 GREG @
+ GREG @ % Equivalent to F7, unless -no-merge-gregs.
+G8 GREG #F7
+H9 GREG @ % Equivalent to F7, unless -no-merge-gregs.
+
+ SWYM 2,3,4
+Main SWYM 1,2,3
+
diff --git a/gas/testsuite/gas/mmix/greg1a.d b/gas/testsuite/gas/mmix/greg1a.d
new file mode 100644
index 0000000..557d4b8
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg1a.d
@@ -0,0 +1,40 @@
+# source: greg1.s
+# as: -no-merge-gregs
+# objdump: -rst
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l \.text 0+ D4
+0+4 l \.text 0+ E6
+0+ l \.MMIX\.reg_contents 0+ H9
+0+8 l \.MMIX\.reg_contents 0+ G8
+0+18 l \.MMIX\.reg_contents 0+ F7
+0+28 l \.MMIX\.reg_contents 0+ D5
+0+30 l \.MMIX\.reg_contents 0+ C3
+0+38 l \.MMIX\.reg_contents 0+ B1
+0+40 l \.MMIX\.reg_contents 0+ A0
+0+0 l d \.MMIX\.reg_contents 0+
+0+c g F \.text 0+ Main
+
+
+RELOCATION RECORDS FOR \[\.MMIX\.reg_contents\]:
+OFFSET TYPE VALUE
+0+ R_MMIX_64 \.text\+0x0+8
+0+10 R_MMIX_64 \.text\+0x0+8
+0+18 R_MMIX_64 \.text\+0x0+8
+0+20 R_MMIX_64 \.text\+0x0+1c
+0+30 R_MMIX_64 .text
+
+Contents of section \.text:
+ 0000 e37b01c8 e3ea1edb fd020304 fd010203 .*
+Contents of section \.data:
+Contents of section \.MMIX\.reg_contents:
+ 0000 00000000 00000000 00000000 000000f7 .*
+ 0010 00000000 00000000 00000000 00000000 .*
+ 0020 00000000 00000000 00000000 00000000 .*
+ 0030 00000000 00000000 00000000 00000001 .*
+ 0040 00000000 00000000 .*
diff --git a/gas/testsuite/gas/mmix/greg2.d b/gas/testsuite/gas/mmix/greg2.d
new file mode 100644
index 0000000..9040498
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg2.d
@@ -0,0 +1,36 @@
+# objdump: -rst
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l \.text 0+ D4
+0+4 l \.text 0+ E6
+0+ l \.MMIX\.reg_contents 0+ H9
+0+8 l \.MMIX\.reg_contents 0+ G8
+0+ l \.MMIX\.reg_contents 0+ F7
+0+18 l \.MMIX\.reg_contents 0+ D5
+0+20 l \.MMIX\.reg_contents 0+ C3
+0+28 l \.MMIX\.reg_contents 0+ B1
+0+30 l \.MMIX\.reg_contents 0+ A0
+0+0 l d \.MMIX\.reg_contents 0+
+0+c g F \.text 0+ Main
+
+
+RELOCATION RECORDS FOR \[\.MMIX\.reg_contents\]:
+OFFSET TYPE VALUE
+0+ R_MMIX_64 \.text\+0x0+8
+0+10 R_MMIX_64 \.text\+0x0+1c
+0+20 R_MMIX_64 \.text
+
+
+Contents of section \.text:
+ 0000 e37b01c8 e3ea1edb fd020304 fd010203 .*
+Contents of section \.data:
+Contents of section \.MMIX\.reg_contents:
+ 0000 00000000 00000000 00000000 000000f7 .*
+ 0010 00000000 00000000 00000000 00000000 .*
+ 0020 00000000 00000000 00000000 00000001 .*
+ 0030 00000000 00000000 .*
diff --git a/gas/testsuite/gas/mmix/greg2.s b/gas/testsuite/gas/mmix/greg2.s
new file mode 100644
index 0000000..15c91ba
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg2.s
@@ -0,0 +1,21 @@
+# Use of .greg; non-mmixal syntax though somewhat corresponding to greg1.
+# Note that use-before-definition is allowed.
+ .text
+
+ .greg A0,0
+ .greg B1,1
+ .greg C3,D4
+ .greg D5,
+ .greg ,E6+24 % Somewhat unusable, but hey...
+ .greg F7,.+8
+ .greg ,.+8
+ .greg G8,0xf7
+ .greg H9,.+8
+
+D4:
+ set $123,456
+E6:
+ set $234,7899
+ swym 2,3,4
+Main:
+ swym 1,2,3
diff --git a/gas/testsuite/gas/mmix/greg2a.d b/gas/testsuite/gas/mmix/greg2a.d
new file mode 100644
index 0000000..a2ebfe3
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg2a.d
@@ -0,0 +1,40 @@
+# source: greg2.s
+# as: -no-merge-gregs
+# objdump: -rst
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l \.text 0+ D4
+0+4 l \.text 0+ E6
+0+ l \.MMIX\.reg_contents 0+ H9
+0+8 l \.MMIX\.reg_contents 0+ G8
+0+18 l \.MMIX\.reg_contents 0+ F7
+0+28 l \.MMIX\.reg_contents 0+ D5
+0+30 l \.MMIX\.reg_contents 0+ C3
+0+38 l \.MMIX\.reg_contents 0+ B1
+0+40 l \.MMIX\.reg_contents 0+ A0
+0+0 l d \.MMIX\.reg_contents 0+
+0+c g F \.text 0+ Main
+
+
+RELOCATION RECORDS FOR \[\.MMIX\.reg_contents\]:
+OFFSET TYPE VALUE
+0+ R_MMIX_64 \.text\+0x0+8
+0+10 R_MMIX_64 \.text\+0x0+8
+0+18 R_MMIX_64 \.text\+0x0+8
+0+20 R_MMIX_64 \.text\+0x0+1c
+0+30 R_MMIX_64 .text
+
+Contents of section \.text:
+ 0000 e37b01c8 e3ea1edb fd020304 fd010203 .*
+Contents of section \.data:
+Contents of section \.MMIX\.reg_contents:
+ 0000 00000000 00000000 00000000 000000f7 .*
+ 0010 00000000 00000000 00000000 00000000 .*
+ 0020 00000000 00000000 00000000 00000000 .*
+ 0030 00000000 00000000 00000000 00000001 .*
+ 0040 00000000 00000000 .*
diff --git a/gas/testsuite/gas/mmix/greg3.d b/gas/testsuite/gas/mmix/greg3.d
new file mode 100644
index 0000000..4e73f0e
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg3.d
@@ -0,0 +1,31 @@
+# objdump: -rst
+
+# Check that we emit the right relocations for greg operands.
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l d \.MMIX\.reg_contents 0+
+0+ g \.MMIX\.reg_contents 0+ areg
+0+c g F \.text 0+ Main
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+2 R_MMIX_REG \.MMIX\.reg_contents
+0+7 R_MMIX_REG_OR_BYTE \.MMIX\.reg_contents
+0+a R_MMIX_REG \.MMIX\.reg_contents
+
+RELOCATION RECORDS FOR \[\.MMIX\.reg_contents\]:
+OFFSET TYPE VALUE
+0+ R_MMIX_64 \.text\+0x0+10
+
+Contents of section \.text:
+ 0000 8f030010 8e030700 8f050004 fd000001 .*
+ 0010 fd000002 fd000003 fd000004 fd000005 .*
+ 0020 fd000006 .*
+Contents of section \.data:
+Contents of section \.MMIX\.reg_contents:
+ 0000 00000000 00000000 .*
diff --git a/gas/testsuite/gas/mmix/greg3.s b/gas/testsuite/gas/mmix/greg3.s
new file mode 100644
index 0000000..dbbbd29
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg3.s
@@ -0,0 +1,11 @@
+ .global areg
+areg GREG Main+4
+ LDOU $3,areg,16
+ LDOU $3,$7,areg
+ LDOU $5,Main+8
+Main SWYM 1
+ SWYM 2
+ SWYM 3
+ SWYM 4
+ SWYM 5
+ SWYM 6
diff --git a/gas/testsuite/gas/mmix/greg4.d b/gas/testsuite/gas/mmix/greg4.d
new file mode 100644
index 0000000..77dd86a
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg4.d
@@ -0,0 +1,29 @@
+#objdump: -str
+
+# Branches can have base-plus-offset operands too.
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+4 l \.text 0+ x
+0+ l d \.MMIX\.reg_contents 0+
+
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+a R_MMIX_REG \.MMIX\.reg_contents
+
+
+RELOCATION RECORDS FOR \[\.MMIX\.reg_contents\]:
+OFFSET TYPE VALUE
+0+ R_MMIX_64 \.text
+
+
+Contents of section \.text:
+ 0000 fd000000 fd000001 9f000004 .*
+Contents of section \.data:
+Contents of section \.MMIX\.reg_contents:
+ 0000 00000000 00000000 .*
diff --git a/gas/testsuite/gas/mmix/greg4.s b/gas/testsuite/gas/mmix/greg4.s
new file mode 100644
index 0000000..dbf7478
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg4.s
@@ -0,0 +1,4 @@
+ GREG @
+ SWYM 0
+x SWYM 1
+ GO $0,x
diff --git a/gas/testsuite/gas/mmix/greg5.d b/gas/testsuite/gas/mmix/greg5.d
new file mode 100644
index 0000000..71b007e
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg5.d
@@ -0,0 +1,29 @@
+#objdump: -str
+
+# GAS must know that .data and expressions around #20 << 56 can be
+# equivalent for GREGs.
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l \.text 0+ t
+2000000000000004 l \*ABS\* 0+ x
+2000000000000000 l \*ABS\* 0+ Data_Segment
+0+ l \.data 0+ y
+0+ l d \.MMIX\.reg_contents 0+
+0+ g F \.text 0+ Main
+2000000000000008 g \*ABS\* 0+ __\.MMIX\.start\.\.data
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+2 R_MMIX_REG \.MMIX\.reg_contents
+
+Contents of section \.text:
+ 0000 232c0004 .*
+Contents of section \.data:
+ 0000 00000000 00000021 .*
+Contents of section \.MMIX\.reg_contents:
+ 0000 20000000 00000004 .*
diff --git a/gas/testsuite/gas/mmix/greg5.s b/gas/testsuite/gas/mmix/greg5.s
new file mode 100644
index 0000000..745323e
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg5.s
@@ -0,0 +1,9 @@
+t IS @
+x IS Data_Segment+4
+
+ LOC x+4
+y OCTA 33
+ GREG x
+
+ LOC t
+Main LDA $44,y
diff --git a/gas/testsuite/gas/mmix/greg6.d b/gas/testsuite/gas/mmix/greg6.d
new file mode 100644
index 0000000..40ec5ce
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg6.d
@@ -0,0 +1,36 @@
+#objdump: -str
+
+# GAS must know that .data and expressions around #20 << 56 can be
+# equivalent for GREGs; like greg5 but the other way round.
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l \.text 0+ t
+2000000000000004 l \*ABS\* 0+ x
+2000000000000000 l \*ABS\* 0+ Data_Segment
+0+ l \.data 0+ y
+0+ l d \.MMIX\.reg_contents 0+
+0+ g F \.text 0+ Main
+2000000000000008 g \*ABS\* 0+ __\.MMIX\.start\.\.data
+
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+2 R_MMIX_REG \.MMIX\.reg_contents
+
+
+RELOCATION RECORDS FOR \[\.MMIX\.reg_contents\]:
+OFFSET TYPE VALUE
+0+ R_MMIX_64 \.data
+
+
+Contents of section \.text:
+ 0000 232c0054 .*
+Contents of section \.data:
+ 0000 00000000 00000021 .*
+Contents of section \.MMIX\.reg_contents:
+ 0000 00000000 00000000 .*
diff --git a/gas/testsuite/gas/mmix/greg6.s b/gas/testsuite/gas/mmix/greg6.s
new file mode 100644
index 0000000..68ebaaa
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg6.s
@@ -0,0 +1,11 @@
+t IS @
+x IS Data_Segment+4
+
+ LOC x+4
+y OCTA 33
+ GREG y
+
+ LOC t
+Main LDA $44,x+88
+
+
diff --git a/gas/testsuite/gas/mmix/greg7.d b/gas/testsuite/gas/mmix/greg7.d
new file mode 100644
index 0000000..c2b3897
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg7.d
@@ -0,0 +1,28 @@
+#objdump: -str
+
+# GAS must know that .text and expressions around 0 can be equivalent for
+# GREGs.
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l \.text 0+ t
+0+4 l \*ABS\* 0+ x
+0+ l \.text 0+ y
+0+ l d \.MMIX\.reg_contents 0+
+0+8 g F \.text 0+ Main
+0+8 g \*ABS\* 0+ __\.MMIX\.start\.\.text
+
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+a R_MMIX_REG \.MMIX\.reg_contents
+
+Contents of section \.text:
+ 0000 00000000 00000021 232c0004 00000000 .*
+Contents of section \.data:
+Contents of section \.MMIX\.reg_contents:
+ 0000 00000000 00000004 .*
diff --git a/gas/testsuite/gas/mmix/greg7.s b/gas/testsuite/gas/mmix/greg7.s
new file mode 100644
index 0000000..27dba87
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg7.s
@@ -0,0 +1,8 @@
+t IS @
+x IS 4
+
+ LOC x+4
+y OCTA 33
+ GREG x
+
+Main LDA $44,y
diff --git a/gas/testsuite/gas/mmix/greg8.d b/gas/testsuite/gas/mmix/greg8.d
new file mode 100644
index 0000000..fead116
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg8.d
@@ -0,0 +1,33 @@
+#objdump: -str
+
+# GAS must know that .text and expressions around 0 can be
+# equivalent for GREGs; like greg7 but the other way round.
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l \.text 0+ t
+0+4 l \*ABS\* 0+ x
+0+ l \.text 0+ y
+0+ l d \.MMIX\.reg_contents 0+
+0+8 g F \.text 0+ Main
+0+8 g \*ABS\* 0+ __\.MMIX\.start\.\.text
+
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+a R_MMIX_REG \.MMIX\.reg_contents
+
+
+RELOCATION RECORDS FOR \[\.MMIX\.reg_contents\]:
+OFFSET TYPE VALUE
+0+ R_MMIX_64 \.text
+
+Contents of section \.text:
+ 0000 00000000 00000021 232c0054 00000000 .*
+Contents of section \.data:
+Contents of section \.MMIX\.reg_contents:
+ 0000 00000000 00000000 .*
diff --git a/gas/testsuite/gas/mmix/greg8.s b/gas/testsuite/gas/mmix/greg8.s
new file mode 100644
index 0000000..3778b97
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg8.s
@@ -0,0 +1,10 @@
+t IS @
+x IS 4
+
+ LOC x+4
+y OCTA 33
+ GREG y
+
+Main LDA $44,x+88
+
+
diff --git a/gas/testsuite/gas/mmix/greg9.d b/gas/testsuite/gas/mmix/greg9.d
new file mode 100644
index 0000000..0f8584e
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg9.d
@@ -0,0 +1,14 @@
+# objdump: -h
+
+.*: file format elf64-mmix
+
+Sections:
+Idx Name Size VMA LMA File off Algn
+ 0 \.text 0+4 0+ 0+ 0+40 2\*\*2
+ CONTENTS, ALLOC, LOAD, READONLY, CODE
+ 1 \.data 0+ 0+ 0+ 0+44 2\*\*0
+ CONTENTS, ALLOC, LOAD, DATA
+ 2 \.bss 0+ 0+ 0+ 0+44 2\*\*0
+ ALLOC
+ 3 \.MMIX\.reg_contents 0+6f0 0+ 0+ 0+44 2\*\*0
+ CONTENTS
diff --git a/gas/testsuite/gas/mmix/greg9.s b/gas/testsuite/gas/mmix/greg9.s
new file mode 100644
index 0000000..dfbb185
--- /dev/null
+++ b/gas/testsuite/gas/mmix/greg9.s
@@ -0,0 +1,8 @@
+% Check that we can allocate max number of GREGs.
+% A bit cheesy: we allocate anonymous GREGs with no handle. This isn't
+% generally useful, but it helps keeping the number of lines down, and we
+% check that the right thing happened in the object file.
+Main SWYM 0
+ .rept 222
+ GREG
+ .endr
diff --git a/gas/testsuite/gas/mmix/hex-r.d b/gas/testsuite/gas/mmix/hex-r.d
new file mode 100644
index 0000000..6be6e1c
--- /dev/null
+++ b/gas/testsuite/gas/mmix/hex-r.d
@@ -0,0 +1,11 @@
+# objdump: -dr
+# as: -linkrelax
+# source: hex.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: e3362009 setl \$54,0x2009
+ 4: e320125e setl \$32,0x125e
+ 8: e31f00b1 setl \$31,0xb1
diff --git a/gas/testsuite/gas/mmix/hex.d b/gas/testsuite/gas/mmix/hex.d
new file mode 100644
index 0000000..fab267c
--- /dev/null
+++ b/gas/testsuite/gas/mmix/hex.d
@@ -0,0 +1,9 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: e3362009 setl \$54,0x2009
+ 4: e320125e setl \$32,0x125e
+ 8: e31f00b1 setl \$31,0xb1
diff --git a/gas/testsuite/gas/mmix/hex.l b/gas/testsuite/gas/mmix/hex.l
new file mode 100644
index 0000000..cabd7ad
--- /dev/null
+++ b/gas/testsuite/gas/mmix/hex.l
@@ -0,0 +1,13 @@
+GAS for MMIX .*/hex\.s page 1
+
+
+ 1 0000 E3362009 Main SETL \$54,#2009
+ 2 0004 E320125E SETL \$32,42\+#1234
+ 3 0008 E31F00B1 SETL \$31,#72\+63
+ GAS for MMIX .*/hex\.s page 2
+
+
+DEFINED SYMBOLS
+.*/hex\.s:1 \.text:0000000000000000 Main
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/hex.s b/gas/testsuite/gas/mmix/hex.s
new file mode 100644
index 0000000..f7bff18
--- /dev/null
+++ b/gas/testsuite/gas/mmix/hex.s
@@ -0,0 +1,3 @@
+Main SETL $54,#2009
+ SETL $32,42+#1234
+ SETL $31,#72+63
diff --git a/gas/testsuite/gas/mmix/is-1.d b/gas/testsuite/gas/mmix/is-1.d
new file mode 100644
index 0000000..1b6f32e
--- /dev/null
+++ b/gas/testsuite/gas/mmix/is-1.d
@@ -0,0 +1,12 @@
+#objdump: -str
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+
+Contents of section \.text:
+ 0+ 00000026 0000001f 0000000d 0000001e .*
+Contents of section \.data:
diff --git a/gas/testsuite/gas/mmix/is-1.s b/gas/testsuite/gas/mmix/is-1.s
new file mode 100644
index 0000000..2d331fe
--- /dev/null
+++ b/gas/testsuite/gas/mmix/is-1.s
@@ -0,0 +1,7 @@
+# IS must handle a here-label.
+9H IS 30
+7H IS 8F+7
+6H IS 2F
+ TETRA 7B,8F,6B,9B
+8H IS 9B+1
+2H IS 13
diff --git a/gas/testsuite/gas/mmix/jmp-op-n.d b/gas/testsuite/gas/mmix/jmp-op-n.d
new file mode 100644
index 0000000..4f2bca1
--- /dev/null
+++ b/gas/testsuite/gas/mmix/jmp-op-n.d
@@ -0,0 +1,23 @@
+# objdump: -dr
+# source: jmp-op.s
+# as: -no-expand
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd000000 swym 0,0,0
+
+0000000000000004 <here>:
+ 4: fd000000 swym 0,0,0
+ 8: f1ffffff jmp 4 <here>
+
+000000000000000c <at>:
+ c: f0000000 jmp c <at>
+ 10: f0000004 jmp 20 <there>
+ 14: f1fffffc jmp 4 <here>
+ 18: f0000002 jmp 20 <there>
+ 1c: f1fffffa jmp 4 <here>
+
+0000000000000020 <there>:
+ 20: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/jmp-op-r.d b/gas/testsuite/gas/mmix/jmp-op-r.d
new file mode 100644
index 0000000..aa870dc
--- /dev/null
+++ b/gas/testsuite/gas/mmix/jmp-op-r.d
@@ -0,0 +1,29 @@
+# objdump: -dr
+# as: -linkrelax
+# source: jmp-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd000000 swym 0,0,0
+
+0000000000000004 <here>:
+ 4: fd000000 swym 0,0,0
+ 8: f1ffffff jmp 4 <here>
+ 8: R_MMIX_ADDR27 \.text\+0x4
+
+000000000000000c <at>:
+ c: f0000000 jmp c <at>
+ c: R_MMIX_ADDR27 \.text\+0xc
+ 10: f0000004 jmp 20 <there>
+ 10: R_MMIX_ADDR27 \.text\+0x20
+ 14: f1fffffc jmp 4 <here>
+ 14: R_MMIX_ADDR27 \.text\+0x4
+ 18: f0000002 jmp 20 <there>
+ 18: R_MMIX_ADDR27 \.text\+0x20
+ 1c: f1fffffa jmp 4 <here>
+ 1c: R_MMIX_ADDR27 \.text\+0x4
+
+0000000000000020 <there>:
+ 20: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/jmp-op.d b/gas/testsuite/gas/mmix/jmp-op.d
new file mode 100644
index 0000000..01aa794
--- /dev/null
+++ b/gas/testsuite/gas/mmix/jmp-op.d
@@ -0,0 +1,21 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd000000 swym 0,0,0
+
+0000000000000004 <here>:
+ 4: fd000000 swym 0,0,0
+ 8: f1ffffff jmp 4 <here>
+
+000000000000000c <at>:
+ c: f0000000 jmp c <at>
+ 10: f0000004 jmp 20 <there>
+ 14: f1fffffc jmp 4 <here>
+ 18: f0000002 jmp 20 <there>
+ 1c: f1fffffa jmp 4 <here>
+
+0000000000000020 <there>:
+ 20: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/jmp-op.l b/gas/testsuite/gas/mmix/jmp-op.l
new file mode 100644
index 0000000..92e119c
--- /dev/null
+++ b/gas/testsuite/gas/mmix/jmp-op.l
@@ -0,0 +1,23 @@
+GAS for MMIX .*/jmp-op\.s page 1
+
+
+ 1 #.*
+ 2 0000 FD000000 Main SWYM 0,0,0
+ 3 0004 FD000000 here SWYM 0,0,0
+ 4 0008 F1FFFFFF JMP here
+ 5 000c F0000000 at JMP at
+ 6 0010 F0000004 JMP there
+ 7 0014 F1FFFFFC JMP here
+ 8 0018 F0000002 JMP there
+ 9 001c F1FFFFFA JMP here
+ 10 0020 FD000000 there SWYM 0,0,0
+ GAS for MMIX .*/jmp-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/jmp-op\.s:2 \.text:0000000000000000 Main
+.*/jmp-op\.s:3 \.text:0000000000000004 here
+.*/jmp-op\.s:5 \.text:000000000000000c at
+.*/jmp-op\.s:10 \.text:0000000000000020 there
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/jmp-op.s b/gas/testsuite/gas/mmix/jmp-op.s
new file mode 100644
index 0000000..c27a70f
--- /dev/null
+++ b/gas/testsuite/gas/mmix/jmp-op.s
@@ -0,0 +1,10 @@
+# A small jumble of JMP:s.
+Main SWYM 0,0,0
+here SWYM 0,0,0
+ JMP here
+at JMP at
+ JMP there
+ JMP here
+ JMP there
+ JMP here
+there SWYM 0,0,0
diff --git a/gas/testsuite/gas/mmix/jmp-oprn.d b/gas/testsuite/gas/mmix/jmp-oprn.d
new file mode 100644
index 0000000..5d04103
--- /dev/null
+++ b/gas/testsuite/gas/mmix/jmp-oprn.d
@@ -0,0 +1,29 @@
+# objdump: -dr
+# as: -linkrelax -no-expand
+# source: jmp-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd000000 swym 0,0,0
+
+0000000000000004 <here>:
+ 4: fd000000 swym 0,0,0
+ 8: f0000000 jmp 8 <here\+0x4>
+ 8: R_MMIX_ADDR27 \.text\+0x4
+
+000000000000000c <at>:
+ c: f0000000 jmp c <at>
+ c: R_MMIX_ADDR27 \.text\+0xc
+ 10: f0000000 jmp 10 <at\+0x4>
+ 10: R_MMIX_ADDR27 \.text\+0x20
+ 14: f0000000 jmp 14 <at\+0x8>
+ 14: R_MMIX_ADDR27 \.text\+0x4
+ 18: f0000000 jmp 18 <at\+0xc>
+ 18: R_MMIX_ADDR27 \.text\+0x20
+ 1c: f0000000 jmp 1c <at\+0x10>
+ 1c: R_MMIX_ADDR27 \.text\+0x4
+
+0000000000000020 <there>:
+ 20: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/jump-c.d b/gas/testsuite/gas/mmix/jump-c.d
new file mode 100644
index 0000000..a256687
--- /dev/null
+++ b/gas/testsuite/gas/mmix/jump-c.d
@@ -0,0 +1,28 @@
+#as: -x
+#objdump: -tdr
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d .text 0+
+0+ l d .data 0+
+0+ l d .bss 0+
+ffff0000ffff0000 l \*ABS\* 0+ i1
+ffff0000ffff0000 l \*ABS\* 0+ i2
+0+ g F .text 0+ Main
+
+Disassembly of section .text:
+
+0+ <Main>:
+ 0: f0000000 jmp 0 <Main>
+ 0: R_MMIX_JMP \*ABS\*\+0xffff0000ffff0000
+ 4: fd000000 swym 0,0,0
+ 8: fd000000 swym 0,0,0
+ c: fd000000 swym 0,0,0
+ 10: fd000000 swym 0,0,0
+ 14: f0000000 jmp 14 <Main\+0x14>
+ 14: R_MMIX_JMP i2
+ 18: fd000000 swym 0,0,0
+ 1c: fd000000 swym 0,0,0
+ 20: fd000000 swym 0,0,0
+ 24: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/jump-c.s b/gas/testsuite/gas/mmix/jump-c.s
new file mode 100644
index 0000000..917e686
--- /dev/null
+++ b/gas/testsuite/gas/mmix/jump-c.s
@@ -0,0 +1,5 @@
+% JMP with a large constant must not fail
+i1 IS #ffff0000ffff0000
+Main JMP i1
+ JMP i2
+i2 IS #ffff0000ffff0000
diff --git a/gas/testsuite/gas/mmix/list-in-n.d b/gas/testsuite/gas/mmix/list-in-n.d
new file mode 100644
index 0000000..1124b77
--- /dev/null
+++ b/gas/testsuite/gas/mmix/list-in-n.d
@@ -0,0 +1,281 @@
+# objdump: -dr
+# source: list-insns.s
+# as: -no-expand
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 00000003 trap 0,0,3
+ 4: 00030405 trap 3,4,5
+ 8: 010c17f1 fcmp \$12,\$23,\$241
+ c: 08700129 flot \$112,ROUND_OFF,\$41
+ 10: 0970048d flot \$112,ROUND_NEAR,141
+ 14: 08bf00f2 flot \$191,\$242
+ 18: 09c3002a flot \$195,42
+ 1c: 027acb04 fun \$122,\$203,\$4
+ 20: 03661e28 feql \$102,\$30,\$40
+ 24: 0a66000e flotu \$102,\$14
+ 28: 0a84020e flotu \$132,ROUND_UP,\$14
+ 2c: 0a660368 flotu \$102,ROUND_DOWN,\$104
+ 30: 0aac048c flotu \$172,ROUND_NEAR,\$140
+ 34: 0a010186 flotu \$1,ROUND_OFF,\$134
+ 38: 0470df29 fadd \$112,\$223,\$41
+ 3c: 05700129 fix \$112,ROUND_OFF,\$41
+ 40: 050b008d fix \$11,\$141
+ 44: 0c700129 sflot \$112,ROUND_OFF,\$41
+ 48: 0d70048d sflot \$112,ROUND_NEAR,141
+ 4c: 0670df29 fsub \$112,\$223,\$41
+ 50: 0766000e fixu \$102,\$14
+ 54: 0784020e fixu \$132,ROUND_UP,\$14
+ 58: 0e0b008d sflotu \$11,\$141
+ 5c: 0f70008d sflotu \$112,141
+ 60: 0f70048d sflotu \$112,ROUND_NEAR,141
+ 64: 0e700129 sflotu \$112,ROUND_OFF,\$41
+ 68: 10661e28 fmul \$102,\$30,\$40
+ 6c: 110cdf01 fcmpe \$12,\$223,\$1
+ 70: 197acb2c mul \$122,\$203,44
+ 74: 18661e28 mul \$102,\$30,\$40
+ 78: 130cdf01 feqle \$12,\$223,\$1
+ 7c: 120cdf0b fune \$12,\$223,\$11
+ 80: 1b7ad52c mulu \$122,\$213,44
+ 84: 1a841e28 mulu \$132,\$30,\$40
+ 88: 140cdf0b fdiv \$12,\$223,\$11
+ 8c: 1584020e fsqrt \$132,ROUND_UP,\$14
+ 90: 150b008d fsqrt \$11,\$141
+ 94: 1d7ad52c div \$122,\$213,44
+ 98: 1c841e28 div \$132,\$30,\$40
+ 9c: 160cdf0b frem \$12,\$223,\$11
+ a0: 1784020e fint \$132,ROUND_UP,\$14
+ a4: 170b008d fint \$11,\$141
+ a8: 1e0cdf01 divu \$12,\$223,\$1
+ ac: 1f7acbff divu \$122,\$203,255
+ b0: 200cdf01 add \$12,\$223,\$1
+ b4: 217acbff add \$122,\$203,255
+ b8: 280cdf0b 2addu \$12,\$223,\$11
+ bc: 297acb00 2addu \$122,\$203,0
+ c0: 237acbff addu \$122,\$203,255
+ c4: 220cdf0b addu \$12,\$223,\$11
+ c8: 237acbff addu \$122,\$203,255
+ cc: 220cdf0b addu \$12,\$223,\$11
+ d0: 2b7acbcd 4addu \$122,\$203,205
+ d4: 2a0cdf6f 4addu \$12,\$223,\$111
+ d8: 240cdf0b sub \$12,\$223,\$11
+ dc: 257acbcd sub \$122,\$203,205
+ e0: 2c0cdf0b 8addu \$12,\$223,\$11
+ e4: 2d7acbcd 8addu \$122,\$203,205
+ e8: 2602df0b subu \$2,\$223,\$11
+ ec: 270c14cd subu \$12,\$20,205
+ f0: 2e02df0b 16addu \$2,\$223,\$11
+ f4: 2f0c14cd 16addu \$12,\$20,205
+ f8: 3002df0b cmp \$2,\$223,\$11
+ fc: 310c14cd cmp \$12,\$20,205
+ 100: 3802df0b sl \$2,\$223,\$11
+ 104: 390c14cd sl \$12,\$20,205
+ 108: 3202df0b cmpu \$2,\$223,\$11
+ 10c: 330c14cd cmpu \$12,\$20,205
+ 110: 3a02df0b slu \$2,\$223,\$11
+ 114: 3b0c14cd slu \$12,\$20,205
+ 118: 3402170b neg \$2,23,\$11
+ 11c: 350c00cd neg \$12,0,205
+ 120: 35c00acd neg \$192,10,205
+ 124: 3d0c14cd sr \$12,\$20,205
+ 128: 3c02df0b sr \$2,\$223,\$11
+ 12c: 3602170b negu \$2,23,\$11
+ 130: 370c00cd negu \$12,0,205
+ 134: 3f0c14cd sru \$12,\$20,205
+ 138: 3e02df0b sru \$2,\$223,\$11
+ 13c: 40020001 bn \$2,140 <Main\+0x140>
+ 140: 4102ffff bn \$2,13c <Main\+0x13c>
+ 144: 4902ffff bnn \$2,140 <Main\+0x140>
+ 148: 4902ffff bnn \$2,144 <Main\+0x144>
+ 14c: 42ff0001 bz \$255,150 <Main\+0x150>
+ 150: 43ffffff bz \$255,14c <Main\+0x14c>
+ 154: 4aff0001 bnz \$255,158 <Main\+0x158>
+ 158: 4bffffff bnz \$255,154 <Main\+0x154>
+ 15c: 44190001 bp \$25,160 <Main\+0x160>
+ 160: 4519ffff bp \$25,15c <Main\+0x15c>
+ 164: 4c190001 bnp \$25,168 <Main\+0x168>
+ 168: 4d19ffff bnp \$25,164 <Main\+0x164>
+ 16c: 46190001 bod \$25,170 <Main\+0x170>
+ 170: 4719ffff bod \$25,16c <Main\+0x16c>
+ 174: 4e190001 bev \$25,178 <Main\+0x178>
+ 178: 4f19ffff bev \$25,174 <Main\+0x174>
+ 17c: 50020001 pbn \$2,180 <Main\+0x180>
+ 180: 5102ffff pbn \$2,17c <Main\+0x17c>
+ 184: 58020001 pbnn \$2,188 <Main\+0x188>
+ 188: 5902ffff pbnn \$2,184 <Main\+0x184>
+ 18c: 520c0001 pbz \$12,190 <Main\+0x190>
+ 190: 5316ffff pbz \$22,18c <Main\+0x18c>
+ 194: 5a200001 pbnz \$32,198 <Main\+0x198>
+ 198: 5b34ffff pbnz \$52,194 <Main\+0x194>
+ 19c: 56190001 pbod \$25,1a0 <Main\+0x1a0>
+ 1a0: 5719ffff pbod \$25,19c <Main\+0x19c>
+ 1a4: 5e190001 pbev \$25,1a8 <Main\+0x1a8>
+ 1a8: 5f19ffff pbev \$25,1a4 <Main\+0x1a4>
+ 1ac: 6002df0b csn \$2,\$223,\$11
+ 1b0: 610c14cd csn \$12,\$20,205
+ 1b4: 6802df0b csnn \$2,\$223,\$11
+ 1b8: 690c14cd csnn \$12,\$20,205
+ 1bc: 6202cb0b csz \$2,\$203,\$11
+ 1c0: 630cc8cd csz \$12,\$200,205
+ 1c4: 6a02cb0b csnz \$2,\$203,\$11
+ 1c8: 6b0cc8cd csnz \$12,\$200,205
+ 1cc: 6402cb0b csp \$2,\$203,\$11
+ 1d0: 650cc8cd csp \$12,\$200,205
+ 1d4: 6c02cb0b csnp \$2,\$203,\$11
+ 1d8: 6d0cc8cd csnp \$12,\$200,205
+ 1dc: 6602cb0b csod \$2,\$203,\$11
+ 1e0: 670cc8cd csod \$12,\$200,205
+ 1e4: 6e02cb0b csev \$2,\$203,\$11
+ 1e8: 6f0cc8cd csev \$12,\$200,205
+ 1ec: 7002df0b zsn \$2,\$223,\$11
+ 1f0: 710c14cd zsn \$12,\$20,205
+ 1f4: 7802df0b zsnn \$2,\$223,\$11
+ 1f8: 790c14cd zsnn \$12,\$20,205
+ 1fc: 7202cb0b zsz \$2,\$203,\$11
+ 200: 730cc8cd zsz \$12,\$200,205
+ 204: 7a02cb0b zsnz \$2,\$203,\$11
+ 208: 7b0cc8cd zsnz \$12,\$200,205
+ 20c: 7402cb0b zsp \$2,\$203,\$11
+ 210: 750cc8cd zsp \$12,\$200,205
+ 214: 7c02cb0b zsnp \$2,\$203,\$11
+ 218: 7d0cc8cd zsnp \$12,\$200,205
+ 21c: 7602cb0b zsod \$2,\$203,\$11
+ 220: 770cc8cd zsod \$12,\$200,205
+ 224: 7e02cb0b zsev \$2,\$203,\$11
+ 228: 7f0cc8cd zsev \$12,\$200,205
+ 22c: 8002000b ldb \$2,\$0,\$11
+ 230: 810c14cd ldb \$12,\$20,205
+ 234: 8802000b ldt \$2,\$0,\$11
+ 238: 890c14cd ldt \$12,\$20,205
+ 23c: 8202000b ldbu \$2,\$0,\$11
+ 240: 830c14cd ldbu \$12,\$20,205
+ 244: 8a02000b ldtu \$2,\$0,\$11
+ 248: 8b0c14cd ldtu \$12,\$20,205
+ 24c: 8402000b ldw \$2,\$0,\$11
+ 250: 850c14cd ldw \$12,\$20,205
+ 254: 8c02000b ldo \$2,\$0,\$11
+ 258: 8d0c14cd ldo \$12,\$20,205
+ 25c: 8602000b ldwu \$2,\$0,\$11
+ 260: 870c14cd ldwu \$12,\$20,205
+ 264: 8e02000b ldou \$2,\$0,\$11
+ 268: 8f0c14cd ldou \$12,\$20,205
+ 26c: 9802000b ldvts \$2,\$0,\$11
+ 270: 990c14cd ldvts \$12,\$20,205
+ 274: 9202000b ldht \$2,\$0,\$11
+ 278: 930c14cd ldht \$12,\$20,205
+ 27c: 9b7014cd preld 112,\$20,205
+ 280: 9a7014e1 preld 112,\$20,\$225
+ 284: 9402000b cswap \$2,\$0,\$11
+ 288: 950c14cd cswap \$12,\$20,205
+ 28c: 9d7014cd prego 112,\$20,205
+ 290: 9c7014e1 prego 112,\$20,\$225
+ 294: 9602000b ldunc \$2,\$0,\$11
+ 298: 970c14cd ldunc \$12,\$20,205
+ 29c: 9e02000b go \$2,\$0,\$11
+ 2a0: 9f0c14cd go \$12,\$20,205
+ 2a4: a0020a97 stb \$2,\$10,\$151
+ 2a8: a10c14cd stb \$12,\$20,205
+ 2ac: a8200a97 stt \$32,\$10,\$151
+ 2b0: a90c14cd stt \$12,\$20,205
+ 2b4: a2020a97 stbu \$2,\$10,\$151
+ 2b8: a30c14cd stbu \$12,\$20,205
+ 2bc: aa200a97 sttu \$32,\$10,\$151
+ 2c0: ab0c14cd sttu \$12,\$20,205
+ 2c4: a4020a97 stw \$2,\$10,\$151
+ 2c8: a50cdccd stw \$12,\$220,205
+ 2cc: ac20aa97 sto \$32,\$170,\$151
+ 2d0: adb614f5 sto \$182,\$20,245
+ 2d4: a6020a97 stwu \$2,\$10,\$151
+ 2d8: a70cdccd stwu \$12,\$220,205
+ 2dc: ae20aa97 stou \$32,\$170,\$151
+ 2e0: afb614f5 stou \$182,\$20,245
+ 2e4: b020aa97 stsf \$32,\$170,\$151
+ 2e8: b1b614f5 stsf \$182,\$20,245
+ 2ec: b97014cd syncd 112,\$20,205
+ 2f0: b87014e1 syncd 112,\$20,\$225
+ 2f4: b220aa97 stht \$32,\$170,\$151
+ 2f8: b3b614f5 stht \$182,\$20,245
+ 2fc: bb7014cd prest 112,\$20,205
+ 300: ba7014e1 prest 112,\$20,\$225
+ 304: b420aa97 stco 32,\$170,\$151
+ 308: b5b614f5 stco 182,\$20,245
+ 30c: bd7014cd syncid 112,\$20,205
+ 310: bc0014e1 syncid 0,\$20,\$225
+ 314: b620aa97 stunc \$32,\$170,\$151
+ 318: b7b614f5 stunc \$182,\$20,245
+ 31c: be20aa97 pushgo \$32,\$170,\$151
+ 320: bfb614f5 pushgo \$182,\$20,245
+ 324: c18ec800 set \$142,\$200
+ 328: c020aa97 or \$32,\$170,\$151
+ 32c: c1b614f5 or \$182,\$20,245
+ 330: c820aa97 and \$32,\$170,\$151
+ 334: c9b614f5 and \$182,\$20,245
+ 338: c220aa97 orn \$32,\$170,\$151
+ 33c: c3b614f5 orn \$182,\$20,245
+ 340: ca20aa97 andn \$32,\$170,\$151
+ 344: cbb614f5 andn \$182,\$20,245
+ 348: c420aa97 nor \$32,\$170,\$151
+ 34c: c5b614f5 nor \$182,\$20,245
+ 350: cc20aa97 nand \$32,\$170,\$151
+ 354: cdb614f5 nand \$182,\$20,245
+ 358: c620aa97 xor \$32,\$170,\$151
+ 35c: c7b614f5 xor \$182,\$20,245
+ 360: ce20aa97 nxor \$32,\$170,\$151
+ 364: cfb614f5 nxor \$182,\$20,245
+ 368: d020aa97 bdif \$32,\$170,\$151
+ 36c: d1b614f5 bdif \$182,\$20,245
+ 370: d820aa97 mux \$32,\$170,\$151
+ 374: d9b614f5 mux \$182,\$20,245
+ 378: d220aa97 wdif \$32,\$170,\$151
+ 37c: d3b614f5 wdif \$182,\$20,245
+ 380: da20aa97 sadd \$32,\$170,\$151
+ 384: dbb600f5 sadd \$182,\$0,245
+ 388: d420aa97 tdif \$32,\$170,\$151
+ 38c: d5b614f5 tdif \$182,\$20,245
+ 390: dc20aa97 mor \$32,\$170,\$151
+ 394: ddb614f5 mor \$182,\$20,245
+ 398: d620aa97 odif \$32,\$170,\$151
+ 39c: d7b614f5 odif \$182,\$20,245
+ 3a0: de201197 mxor \$32,\$17,\$151
+ 3a4: df52b418 mxor \$82,\$180,24
+ 3a8: e004ffff seth \$4,0xffff
+ 3ac: e05e0000 seth \$94,0x0
+ 3b0: e00400ff seth \$4,0xff
+ 3b4: e05e04d2 seth \$94,0x4d2
+ 3b8: e15e04d2 setmh \$94,0x4d2
+ 3bc: e85e04d2 orh \$94,0x4d2
+ 3c0: e95e04d2 ormh \$94,0x4d2
+ 3c4: e25e04d2 setml \$94,0x4d2
+ 3c8: e35e04d2 setl \$94,0x4d2
+ 3cc: ea5e04d2 orml \$94,0x4d2
+ 3d0: eb5e04d2 orl \$94,0x4d2
+ 3d4: e45e04d2 inch \$94,0x4d2
+ 3d8: e55e04d2 incmh \$94,0x4d2
+ 3dc: ec5e04d2 andnh \$94,0x4d2
+ 3e0: ed5e04d2 andnmh \$94,0x4d2
+ 3e4: e65e04d2 incml \$94,0x4d2
+ 3e8: e75e04d2 incl \$94,0x4d2
+ 3ec: ee5e04d2 andnml \$94,0x4d2
+ 3f0: ef5e04d2 andnl \$94,0x4d2
+ 3f4: f1ffffff jmp 3f0 <Main\+0x3f0>
+ 3f8: f0000001 jmp 3fc <Main\+0x3fc>
+ 3fc: f82afffe pop 42,65534
+ 400: f90000ff resume 255
+ 404: f9000000 resume 0
+ 408: f9000001 resume 1
+ 40c: f2190001 pushj \$25,410 <Main\+0x410>
+ 410: f319ffff pushj \$25,40c <Main\+0x40c>
+ 414: fa040000 save \$4,0
+ 418: fb0000ea unsave 0,\$234
+ 41c: f4190001 geta \$25,420 <Main\+0x420>
+ 420: f519ffff geta \$25,41c <Main\+0x41c>
+ 424: fc7a1201 sync 8000001
+ 428: fd010203 swym 1,2,3
+ 42c: fd000000 swym 0,0,0
+ 430: f7040022 put rJ,34
+ 434: f6040086 put rJ,\$134
+ 438: feea0004 get \$234,rJ
+ 43c: ff000000 trip 0,0,0
+ 440: ff050607 trip 5,6,7
diff --git a/gas/testsuite/gas/mmix/list-in-r.d b/gas/testsuite/gas/mmix/list-in-r.d
new file mode 100644
index 0000000..7044b15
--- /dev/null
+++ b/gas/testsuite/gas/mmix/list-in-r.d
@@ -0,0 +1,315 @@
+# objdump: -dr
+# as: -linkrelax
+# source: list-insns.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 00000003 trap 0,0,3
+ 4: 00030405 trap 3,4,5
+ 8: 010c17f1 fcmp \$12,\$23,\$241
+ c: 08700129 flot \$112,ROUND_OFF,\$41
+ 10: 0970048d flot \$112,ROUND_NEAR,141
+ 14: 08bf00f2 flot \$191,\$242
+ 18: 09c3002a flot \$195,42
+ 1c: 027acb04 fun \$122,\$203,\$4
+ 20: 03661e28 feql \$102,\$30,\$40
+ 24: 0a66000e flotu \$102,\$14
+ 28: 0a84020e flotu \$132,ROUND_UP,\$14
+ 2c: 0a660368 flotu \$102,ROUND_DOWN,\$104
+ 30: 0aac048c flotu \$172,ROUND_NEAR,\$140
+ 34: 0a010186 flotu \$1,ROUND_OFF,\$134
+ 38: 0470df29 fadd \$112,\$223,\$41
+ 3c: 05700129 fix \$112,ROUND_OFF,\$41
+ 40: 050b008d fix \$11,\$141
+ 44: 0c700129 sflot \$112,ROUND_OFF,\$41
+ 48: 0d70048d sflot \$112,ROUND_NEAR,141
+ 4c: 0670df29 fsub \$112,\$223,\$41
+ 50: 0766000e fixu \$102,\$14
+ 54: 0784020e fixu \$132,ROUND_UP,\$14
+ 58: 0e0b008d sflotu \$11,\$141
+ 5c: 0f70008d sflotu \$112,141
+ 60: 0f70048d sflotu \$112,ROUND_NEAR,141
+ 64: 0e700129 sflotu \$112,ROUND_OFF,\$41
+ 68: 10661e28 fmul \$102,\$30,\$40
+ 6c: 110cdf01 fcmpe \$12,\$223,\$1
+ 70: 197acb2c mul \$122,\$203,44
+ 74: 18661e28 mul \$102,\$30,\$40
+ 78: 130cdf01 feqle \$12,\$223,\$1
+ 7c: 120cdf0b fune \$12,\$223,\$11
+ 80: 1b7ad52c mulu \$122,\$213,44
+ 84: 1a841e28 mulu \$132,\$30,\$40
+ 88: 140cdf0b fdiv \$12,\$223,\$11
+ 8c: 1584020e fsqrt \$132,ROUND_UP,\$14
+ 90: 150b008d fsqrt \$11,\$141
+ 94: 1d7ad52c div \$122,\$213,44
+ 98: 1c841e28 div \$132,\$30,\$40
+ 9c: 160cdf0b frem \$12,\$223,\$11
+ a0: 1784020e fint \$132,ROUND_UP,\$14
+ a4: 170b008d fint \$11,\$141
+ a8: 1e0cdf01 divu \$12,\$223,\$1
+ ac: 1f7acbff divu \$122,\$203,255
+ b0: 200cdf01 add \$12,\$223,\$1
+ b4: 217acbff add \$122,\$203,255
+ b8: 280cdf0b 2addu \$12,\$223,\$11
+ bc: 297acb00 2addu \$122,\$203,0
+ c0: 237acbff addu \$122,\$203,255
+ c4: 220cdf0b addu \$12,\$223,\$11
+ c8: 237acbff addu \$122,\$203,255
+ cc: 220cdf0b addu \$12,\$223,\$11
+ d0: 2b7acbcd 4addu \$122,\$203,205
+ d4: 2a0cdf6f 4addu \$12,\$223,\$111
+ d8: 240cdf0b sub \$12,\$223,\$11
+ dc: 257acbcd sub \$122,\$203,205
+ e0: 2c0cdf0b 8addu \$12,\$223,\$11
+ e4: 2d7acbcd 8addu \$122,\$203,205
+ e8: 2602df0b subu \$2,\$223,\$11
+ ec: 270c14cd subu \$12,\$20,205
+ f0: 2e02df0b 16addu \$2,\$223,\$11
+ f4: 2f0c14cd 16addu \$12,\$20,205
+ f8: 3002df0b cmp \$2,\$223,\$11
+ fc: 310c14cd cmp \$12,\$20,205
+ 100: 3802df0b sl \$2,\$223,\$11
+ 104: 390c14cd sl \$12,\$20,205
+ 108: 3202df0b cmpu \$2,\$223,\$11
+ 10c: 330c14cd cmpu \$12,\$20,205
+ 110: 3a02df0b slu \$2,\$223,\$11
+ 114: 3b0c14cd slu \$12,\$20,205
+ 118: 3402170b neg \$2,23,\$11
+ 11c: 350c00cd neg \$12,0,205
+ 120: 35c00acd neg \$192,10,205
+ 124: 3d0c14cd sr \$12,\$20,205
+ 128: 3c02df0b sr \$2,\$223,\$11
+ 12c: 3602170b negu \$2,23,\$11
+ 130: 370c00cd negu \$12,0,205
+ 134: 3f0c14cd sru \$12,\$20,205
+ 138: 3e02df0b sru \$2,\$223,\$11
+ 13c: 40020001 bn \$2,140 <Main\+0x140>
+ 13c: R_MMIX_ADDR19 \.text\+0x140
+ 140: 4102ffff bn \$2,13c <Main\+0x13c>
+ 140: R_MMIX_ADDR19 \.text\+0x13c
+ 144: 4902ffff bnn \$2,140 <Main\+0x140>
+ 144: R_MMIX_ADDR19 \.text\+0x140
+ 148: 4902ffff bnn \$2,144 <Main\+0x144>
+ 148: R_MMIX_ADDR19 \.text\+0x144
+ 14c: 42ff0001 bz \$255,150 <Main\+0x150>
+ 14c: R_MMIX_ADDR19 \.text\+0x150
+ 150: 43ffffff bz \$255,14c <Main\+0x14c>
+ 150: R_MMIX_ADDR19 \.text\+0x14c
+ 154: 4aff0001 bnz \$255,158 <Main\+0x158>
+ 154: R_MMIX_ADDR19 \.text\+0x158
+ 158: 4bffffff bnz \$255,154 <Main\+0x154>
+ 158: R_MMIX_ADDR19 \.text\+0x154
+ 15c: 44190001 bp \$25,160 <Main\+0x160>
+ 15c: R_MMIX_ADDR19 \.text\+0x160
+ 160: 4519ffff bp \$25,15c <Main\+0x15c>
+ 160: R_MMIX_ADDR19 \.text\+0x15c
+ 164: 4c190001 bnp \$25,168 <Main\+0x168>
+ 164: R_MMIX_ADDR19 \.text\+0x168
+ 168: 4d19ffff bnp \$25,164 <Main\+0x164>
+ 168: R_MMIX_ADDR19 \.text\+0x164
+ 16c: 46190001 bod \$25,170 <Main\+0x170>
+ 16c: R_MMIX_ADDR19 \.text\+0x170
+ 170: 4719ffff bod \$25,16c <Main\+0x16c>
+ 170: R_MMIX_ADDR19 \.text\+0x16c
+ 174: 4e190001 bev \$25,178 <Main\+0x178>
+ 174: R_MMIX_ADDR19 \.text\+0x178
+ 178: 4f19ffff bev \$25,174 <Main\+0x174>
+ 178: R_MMIX_ADDR19 \.text\+0x174
+ 17c: 50020001 pbn \$2,180 <Main\+0x180>
+ 17c: R_MMIX_ADDR19 \.text\+0x180
+ 180: 5102ffff pbn \$2,17c <Main\+0x17c>
+ 180: R_MMIX_ADDR19 \.text\+0x17c
+ 184: 58020001 pbnn \$2,188 <Main\+0x188>
+ 184: R_MMIX_ADDR19 \.text\+0x188
+ 188: 5902ffff pbnn \$2,184 <Main\+0x184>
+ 188: R_MMIX_ADDR19 \.text\+0x184
+ 18c: 520c0001 pbz \$12,190 <Main\+0x190>
+ 18c: R_MMIX_ADDR19 \.text\+0x190
+ 190: 5316ffff pbz \$22,18c <Main\+0x18c>
+ 190: R_MMIX_ADDR19 \.text\+0x18c
+ 194: 5a200001 pbnz \$32,198 <Main\+0x198>
+ 194: R_MMIX_ADDR19 \.text\+0x198
+ 198: 5b34ffff pbnz \$52,194 <Main\+0x194>
+ 198: R_MMIX_ADDR19 \.text\+0x194
+ 19c: 56190001 pbod \$25,1a0 <Main\+0x1a0>
+ 19c: R_MMIX_ADDR19 \.text\+0x1a0
+ 1a0: 5719ffff pbod \$25,19c <Main\+0x19c>
+ 1a0: R_MMIX_ADDR19 \.text\+0x19c
+ 1a4: 5e190001 pbev \$25,1a8 <Main\+0x1a8>
+ 1a4: R_MMIX_ADDR19 \.text\+0x1a8
+ 1a8: 5f19ffff pbev \$25,1a4 <Main\+0x1a4>
+ 1a8: R_MMIX_ADDR19 \.text\+0x1a4
+ 1ac: 6002df0b csn \$2,\$223,\$11
+ 1b0: 610c14cd csn \$12,\$20,205
+ 1b4: 6802df0b csnn \$2,\$223,\$11
+ 1b8: 690c14cd csnn \$12,\$20,205
+ 1bc: 6202cb0b csz \$2,\$203,\$11
+ 1c0: 630cc8cd csz \$12,\$200,205
+ 1c4: 6a02cb0b csnz \$2,\$203,\$11
+ 1c8: 6b0cc8cd csnz \$12,\$200,205
+ 1cc: 6402cb0b csp \$2,\$203,\$11
+ 1d0: 650cc8cd csp \$12,\$200,205
+ 1d4: 6c02cb0b csnp \$2,\$203,\$11
+ 1d8: 6d0cc8cd csnp \$12,\$200,205
+ 1dc: 6602cb0b csod \$2,\$203,\$11
+ 1e0: 670cc8cd csod \$12,\$200,205
+ 1e4: 6e02cb0b csev \$2,\$203,\$11
+ 1e8: 6f0cc8cd csev \$12,\$200,205
+ 1ec: 7002df0b zsn \$2,\$223,\$11
+ 1f0: 710c14cd zsn \$12,\$20,205
+ 1f4: 7802df0b zsnn \$2,\$223,\$11
+ 1f8: 790c14cd zsnn \$12,\$20,205
+ 1fc: 7202cb0b zsz \$2,\$203,\$11
+ 200: 730cc8cd zsz \$12,\$200,205
+ 204: 7a02cb0b zsnz \$2,\$203,\$11
+ 208: 7b0cc8cd zsnz \$12,\$200,205
+ 20c: 7402cb0b zsp \$2,\$203,\$11
+ 210: 750cc8cd zsp \$12,\$200,205
+ 214: 7c02cb0b zsnp \$2,\$203,\$11
+ 218: 7d0cc8cd zsnp \$12,\$200,205
+ 21c: 7602cb0b zsod \$2,\$203,\$11
+ 220: 770cc8cd zsod \$12,\$200,205
+ 224: 7e02cb0b zsev \$2,\$203,\$11
+ 228: 7f0cc8cd zsev \$12,\$200,205
+ 22c: 8002000b ldb \$2,\$0,\$11
+ 230: 810c14cd ldb \$12,\$20,205
+ 234: 8802000b ldt \$2,\$0,\$11
+ 238: 890c14cd ldt \$12,\$20,205
+ 23c: 8202000b ldbu \$2,\$0,\$11
+ 240: 830c14cd ldbu \$12,\$20,205
+ 244: 8a02000b ldtu \$2,\$0,\$11
+ 248: 8b0c14cd ldtu \$12,\$20,205
+ 24c: 8402000b ldw \$2,\$0,\$11
+ 250: 850c14cd ldw \$12,\$20,205
+ 254: 8c02000b ldo \$2,\$0,\$11
+ 258: 8d0c14cd ldo \$12,\$20,205
+ 25c: 8602000b ldwu \$2,\$0,\$11
+ 260: 870c14cd ldwu \$12,\$20,205
+ 264: 8e02000b ldou \$2,\$0,\$11
+ 268: 8f0c14cd ldou \$12,\$20,205
+ 26c: 9802000b ldvts \$2,\$0,\$11
+ 270: 990c14cd ldvts \$12,\$20,205
+ 274: 9202000b ldht \$2,\$0,\$11
+ 278: 930c14cd ldht \$12,\$20,205
+ 27c: 9b7014cd preld 112,\$20,205
+ 280: 9a7014e1 preld 112,\$20,\$225
+ 284: 9402000b cswap \$2,\$0,\$11
+ 288: 950c14cd cswap \$12,\$20,205
+ 28c: 9d7014cd prego 112,\$20,205
+ 290: 9c7014e1 prego 112,\$20,\$225
+ 294: 9602000b ldunc \$2,\$0,\$11
+ 298: 970c14cd ldunc \$12,\$20,205
+ 29c: 9e02000b go \$2,\$0,\$11
+ 2a0: 9f0c14cd go \$12,\$20,205
+ 2a4: a0020a97 stb \$2,\$10,\$151
+ 2a8: a10c14cd stb \$12,\$20,205
+ 2ac: a8200a97 stt \$32,\$10,\$151
+ 2b0: a90c14cd stt \$12,\$20,205
+ 2b4: a2020a97 stbu \$2,\$10,\$151
+ 2b8: a30c14cd stbu \$12,\$20,205
+ 2bc: aa200a97 sttu \$32,\$10,\$151
+ 2c0: ab0c14cd sttu \$12,\$20,205
+ 2c4: a4020a97 stw \$2,\$10,\$151
+ 2c8: a50cdccd stw \$12,\$220,205
+ 2cc: ac20aa97 sto \$32,\$170,\$151
+ 2d0: adb614f5 sto \$182,\$20,245
+ 2d4: a6020a97 stwu \$2,\$10,\$151
+ 2d8: a70cdccd stwu \$12,\$220,205
+ 2dc: ae20aa97 stou \$32,\$170,\$151
+ 2e0: afb614f5 stou \$182,\$20,245
+ 2e4: b020aa97 stsf \$32,\$170,\$151
+ 2e8: b1b614f5 stsf \$182,\$20,245
+ 2ec: b97014cd syncd 112,\$20,205
+ 2f0: b87014e1 syncd 112,\$20,\$225
+ 2f4: b220aa97 stht \$32,\$170,\$151
+ 2f8: b3b614f5 stht \$182,\$20,245
+ 2fc: bb7014cd prest 112,\$20,205
+ 300: ba7014e1 prest 112,\$20,\$225
+ 304: b420aa97 stco 32,\$170,\$151
+ 308: b5b614f5 stco 182,\$20,245
+ 30c: bd7014cd syncid 112,\$20,205
+ 310: bc0014e1 syncid 0,\$20,\$225
+ 314: b620aa97 stunc \$32,\$170,\$151
+ 318: b7b614f5 stunc \$182,\$20,245
+ 31c: be20aa97 pushgo \$32,\$170,\$151
+ 320: bfb614f5 pushgo \$182,\$20,245
+ 324: c18ec800 set \$142,\$200
+ 328: c020aa97 or \$32,\$170,\$151
+ 32c: c1b614f5 or \$182,\$20,245
+ 330: c820aa97 and \$32,\$170,\$151
+ 334: c9b614f5 and \$182,\$20,245
+ 338: c220aa97 orn \$32,\$170,\$151
+ 33c: c3b614f5 orn \$182,\$20,245
+ 340: ca20aa97 andn \$32,\$170,\$151
+ 344: cbb614f5 andn \$182,\$20,245
+ 348: c420aa97 nor \$32,\$170,\$151
+ 34c: c5b614f5 nor \$182,\$20,245
+ 350: cc20aa97 nand \$32,\$170,\$151
+ 354: cdb614f5 nand \$182,\$20,245
+ 358: c620aa97 xor \$32,\$170,\$151
+ 35c: c7b614f5 xor \$182,\$20,245
+ 360: ce20aa97 nxor \$32,\$170,\$151
+ 364: cfb614f5 nxor \$182,\$20,245
+ 368: d020aa97 bdif \$32,\$170,\$151
+ 36c: d1b614f5 bdif \$182,\$20,245
+ 370: d820aa97 mux \$32,\$170,\$151
+ 374: d9b614f5 mux \$182,\$20,245
+ 378: d220aa97 wdif \$32,\$170,\$151
+ 37c: d3b614f5 wdif \$182,\$20,245
+ 380: da20aa97 sadd \$32,\$170,\$151
+ 384: dbb600f5 sadd \$182,\$0,245
+ 388: d420aa97 tdif \$32,\$170,\$151
+ 38c: d5b614f5 tdif \$182,\$20,245
+ 390: dc20aa97 mor \$32,\$170,\$151
+ 394: ddb614f5 mor \$182,\$20,245
+ 398: d620aa97 odif \$32,\$170,\$151
+ 39c: d7b614f5 odif \$182,\$20,245
+ 3a0: de201197 mxor \$32,\$17,\$151
+ 3a4: df52b418 mxor \$82,\$180,24
+ 3a8: e004ffff seth \$4,0xffff
+ 3ac: e05e0000 seth \$94,0x0
+ 3b0: e00400ff seth \$4,0xff
+ 3b4: e05e04d2 seth \$94,0x4d2
+ 3b8: e15e04d2 setmh \$94,0x4d2
+ 3bc: e85e04d2 orh \$94,0x4d2
+ 3c0: e95e04d2 ormh \$94,0x4d2
+ 3c4: e25e04d2 setml \$94,0x4d2
+ 3c8: e35e04d2 setl \$94,0x4d2
+ 3cc: ea5e04d2 orml \$94,0x4d2
+ 3d0: eb5e04d2 orl \$94,0x4d2
+ 3d4: e45e04d2 inch \$94,0x4d2
+ 3d8: e55e04d2 incmh \$94,0x4d2
+ 3dc: ec5e04d2 andnh \$94,0x4d2
+ 3e0: ed5e04d2 andnmh \$94,0x4d2
+ 3e4: e65e04d2 incml \$94,0x4d2
+ 3e8: e75e04d2 incl \$94,0x4d2
+ 3ec: ee5e04d2 andnml \$94,0x4d2
+ 3f0: ef5e04d2 andnl \$94,0x4d2
+ 3f4: f1ffffff jmp 3f0 <Main\+0x3f0>
+ 3f4: R_MMIX_ADDR27 \.text\+0x3f0
+ 3f8: f0000001 jmp 3fc <Main\+0x3fc>
+ 3f8: R_MMIX_ADDR27 \.text\+0x3fc
+ 3fc: f82afffe pop 42,65534
+ 400: f90000ff resume 255
+ 404: f9000000 resume 0
+ 408: f9000001 resume 1
+ 40c: f2190001 pushj \$25,410 <Main\+0x410>
+ 40c: R_MMIX_ADDR19 \.text\+0x410
+ 410: f319ffff pushj \$25,40c <Main\+0x40c>
+ 410: R_MMIX_ADDR19 \.text\+0x40c
+ 414: fa040000 save \$4,0
+ 418: fb0000ea unsave 0,\$234
+ 41c: f4190001 geta \$25,420 <Main\+0x420>
+ 41c: R_MMIX_ADDR19 \.text\+0x420
+ 420: f519ffff geta \$25,41c <Main\+0x41c>
+ 420: R_MMIX_ADDR19 \.text\+0x41c
+ 424: fc7a1201 sync 8000001
+ 428: fd010203 swym 1,2,3
+ 42c: fd000000 swym 0,0,0
+ 430: f7040022 put rJ,34
+ 434: f6040086 put rJ,\$134
+ 438: feea0004 get \$234,rJ
+ 43c: ff000000 trip 0,0,0
+ 440: ff050607 trip 5,6,7
diff --git a/gas/testsuite/gas/mmix/list-in-rn.d b/gas/testsuite/gas/mmix/list-in-rn.d
new file mode 100644
index 0000000..a19d370
--- /dev/null
+++ b/gas/testsuite/gas/mmix/list-in-rn.d
@@ -0,0 +1,315 @@
+# objdump: -dr
+# as: -no-expand -linkrelax
+# source: list-insns.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 00000003 trap 0,0,3
+ 4: 00030405 trap 3,4,5
+ 8: 010c17f1 fcmp \$12,\$23,\$241
+ c: 08700129 flot \$112,ROUND_OFF,\$41
+ 10: 0970048d flot \$112,ROUND_NEAR,141
+ 14: 08bf00f2 flot \$191,\$242
+ 18: 09c3002a flot \$195,42
+ 1c: 027acb04 fun \$122,\$203,\$4
+ 20: 03661e28 feql \$102,\$30,\$40
+ 24: 0a66000e flotu \$102,\$14
+ 28: 0a84020e flotu \$132,ROUND_UP,\$14
+ 2c: 0a660368 flotu \$102,ROUND_DOWN,\$104
+ 30: 0aac048c flotu \$172,ROUND_NEAR,\$140
+ 34: 0a010186 flotu \$1,ROUND_OFF,\$134
+ 38: 0470df29 fadd \$112,\$223,\$41
+ 3c: 05700129 fix \$112,ROUND_OFF,\$41
+ 40: 050b008d fix \$11,\$141
+ 44: 0c700129 sflot \$112,ROUND_OFF,\$41
+ 48: 0d70048d sflot \$112,ROUND_NEAR,141
+ 4c: 0670df29 fsub \$112,\$223,\$41
+ 50: 0766000e fixu \$102,\$14
+ 54: 0784020e fixu \$132,ROUND_UP,\$14
+ 58: 0e0b008d sflotu \$11,\$141
+ 5c: 0f70008d sflotu \$112,141
+ 60: 0f70048d sflotu \$112,ROUND_NEAR,141
+ 64: 0e700129 sflotu \$112,ROUND_OFF,\$41
+ 68: 10661e28 fmul \$102,\$30,\$40
+ 6c: 110cdf01 fcmpe \$12,\$223,\$1
+ 70: 197acb2c mul \$122,\$203,44
+ 74: 18661e28 mul \$102,\$30,\$40
+ 78: 130cdf01 feqle \$12,\$223,\$1
+ 7c: 120cdf0b fune \$12,\$223,\$11
+ 80: 1b7ad52c mulu \$122,\$213,44
+ 84: 1a841e28 mulu \$132,\$30,\$40
+ 88: 140cdf0b fdiv \$12,\$223,\$11
+ 8c: 1584020e fsqrt \$132,ROUND_UP,\$14
+ 90: 150b008d fsqrt \$11,\$141
+ 94: 1d7ad52c div \$122,\$213,44
+ 98: 1c841e28 div \$132,\$30,\$40
+ 9c: 160cdf0b frem \$12,\$223,\$11
+ a0: 1784020e fint \$132,ROUND_UP,\$14
+ a4: 170b008d fint \$11,\$141
+ a8: 1e0cdf01 divu \$12,\$223,\$1
+ ac: 1f7acbff divu \$122,\$203,255
+ b0: 200cdf01 add \$12,\$223,\$1
+ b4: 217acbff add \$122,\$203,255
+ b8: 280cdf0b 2addu \$12,\$223,\$11
+ bc: 297acb00 2addu \$122,\$203,0
+ c0: 237acbff addu \$122,\$203,255
+ c4: 220cdf0b addu \$12,\$223,\$11
+ c8: 237acbff addu \$122,\$203,255
+ cc: 220cdf0b addu \$12,\$223,\$11
+ d0: 2b7acbcd 4addu \$122,\$203,205
+ d4: 2a0cdf6f 4addu \$12,\$223,\$111
+ d8: 240cdf0b sub \$12,\$223,\$11
+ dc: 257acbcd sub \$122,\$203,205
+ e0: 2c0cdf0b 8addu \$12,\$223,\$11
+ e4: 2d7acbcd 8addu \$122,\$203,205
+ e8: 2602df0b subu \$2,\$223,\$11
+ ec: 270c14cd subu \$12,\$20,205
+ f0: 2e02df0b 16addu \$2,\$223,\$11
+ f4: 2f0c14cd 16addu \$12,\$20,205
+ f8: 3002df0b cmp \$2,\$223,\$11
+ fc: 310c14cd cmp \$12,\$20,205
+ 100: 3802df0b sl \$2,\$223,\$11
+ 104: 390c14cd sl \$12,\$20,205
+ 108: 3202df0b cmpu \$2,\$223,\$11
+ 10c: 330c14cd cmpu \$12,\$20,205
+ 110: 3a02df0b slu \$2,\$223,\$11
+ 114: 3b0c14cd slu \$12,\$20,205
+ 118: 3402170b neg \$2,23,\$11
+ 11c: 350c00cd neg \$12,0,205
+ 120: 35c00acd neg \$192,10,205
+ 124: 3d0c14cd sr \$12,\$20,205
+ 128: 3c02df0b sr \$2,\$223,\$11
+ 12c: 3602170b negu \$2,23,\$11
+ 130: 370c00cd negu \$12,0,205
+ 134: 3f0c14cd sru \$12,\$20,205
+ 138: 3e02df0b sru \$2,\$223,\$11
+ 13c: 40020000 bn \$2,.*
+ 13c: R_MMIX_ADDR19 \.text\+0x140
+ 140: 40020000 bn \$2,.*
+ 140: R_MMIX_ADDR19 \.text\+0x13c
+ 144: 48020000 bnn \$2,.*
+ 144: R_MMIX_ADDR19 \.text\+0x140
+ 148: 48020000 bnn \$2,.*
+ 148: R_MMIX_ADDR19 \.text\+0x144
+ 14c: 42ff0000 bz \$255,.*
+ 14c: R_MMIX_ADDR19 \.text\+0x150
+ 150: 42ff0000 bz \$255,.*
+ 150: R_MMIX_ADDR19 \.text\+0x14c
+ 154: 4aff0000 bnz \$255,.*
+ 154: R_MMIX_ADDR19 \.text\+0x158
+ 158: 4aff0000 bnz \$255,.*
+ 158: R_MMIX_ADDR19 \.text\+0x154
+ 15c: 44190000 bp \$25,.*
+ 15c: R_MMIX_ADDR19 \.text\+0x160
+ 160: 44190000 bp \$25,.*
+ 160: R_MMIX_ADDR19 \.text\+0x15c
+ 164: 4c190000 bnp \$25,.*
+ 164: R_MMIX_ADDR19 \.text\+0x168
+ 168: 4c190000 bnp \$25,.*
+ 168: R_MMIX_ADDR19 \.text\+0x164
+ 16c: 46190000 bod \$25,.*
+ 16c: R_MMIX_ADDR19 \.text\+0x170
+ 170: 46190000 bod \$25,.*
+ 170: R_MMIX_ADDR19 \.text\+0x16c
+ 174: 4e190000 bev \$25,.*
+ 174: R_MMIX_ADDR19 \.text\+0x178
+ 178: 4e190000 bev \$25,.*
+ 178: R_MMIX_ADDR19 \.text\+0x174
+ 17c: 50020000 pbn \$2,.*
+ 17c: R_MMIX_ADDR19 \.text\+0x180
+ 180: 50020000 pbn \$2,.*
+ 180: R_MMIX_ADDR19 \.text\+0x17c
+ 184: 58020000 pbnn \$2,.*
+ 184: R_MMIX_ADDR19 \.text\+0x188
+ 188: 58020000 pbnn \$2,.*
+ 188: R_MMIX_ADDR19 \.text\+0x184
+ 18c: 520c0000 pbz \$12,.*
+ 18c: R_MMIX_ADDR19 \.text\+0x190
+ 190: 52160000 pbz \$22,.*
+ 190: R_MMIX_ADDR19 \.text\+0x18c
+ 194: 5a200000 pbnz \$32,.*
+ 194: R_MMIX_ADDR19 \.text\+0x198
+ 198: 5a340000 pbnz \$52,.*
+ 198: R_MMIX_ADDR19 \.text\+0x194
+ 19c: 56190000 pbod \$25,.*
+ 19c: R_MMIX_ADDR19 \.text\+0x1a0
+ 1a0: 56190000 pbod \$25,.*
+ 1a0: R_MMIX_ADDR19 \.text\+0x19c
+ 1a4: 5e190000 pbev \$25,.*
+ 1a4: R_MMIX_ADDR19 \.text\+0x1a8
+ 1a8: 5e190000 pbev \$25,.*
+ 1a8: R_MMIX_ADDR19 \.text\+0x1a4
+ 1ac: 6002df0b csn \$2,\$223,\$11
+ 1b0: 610c14cd csn \$12,\$20,205
+ 1b4: 6802df0b csnn \$2,\$223,\$11
+ 1b8: 690c14cd csnn \$12,\$20,205
+ 1bc: 6202cb0b csz \$2,\$203,\$11
+ 1c0: 630cc8cd csz \$12,\$200,205
+ 1c4: 6a02cb0b csnz \$2,\$203,\$11
+ 1c8: 6b0cc8cd csnz \$12,\$200,205
+ 1cc: 6402cb0b csp \$2,\$203,\$11
+ 1d0: 650cc8cd csp \$12,\$200,205
+ 1d4: 6c02cb0b csnp \$2,\$203,\$11
+ 1d8: 6d0cc8cd csnp \$12,\$200,205
+ 1dc: 6602cb0b csod \$2,\$203,\$11
+ 1e0: 670cc8cd csod \$12,\$200,205
+ 1e4: 6e02cb0b csev \$2,\$203,\$11
+ 1e8: 6f0cc8cd csev \$12,\$200,205
+ 1ec: 7002df0b zsn \$2,\$223,\$11
+ 1f0: 710c14cd zsn \$12,\$20,205
+ 1f4: 7802df0b zsnn \$2,\$223,\$11
+ 1f8: 790c14cd zsnn \$12,\$20,205
+ 1fc: 7202cb0b zsz \$2,\$203,\$11
+ 200: 730cc8cd zsz \$12,\$200,205
+ 204: 7a02cb0b zsnz \$2,\$203,\$11
+ 208: 7b0cc8cd zsnz \$12,\$200,205
+ 20c: 7402cb0b zsp \$2,\$203,\$11
+ 210: 750cc8cd zsp \$12,\$200,205
+ 214: 7c02cb0b zsnp \$2,\$203,\$11
+ 218: 7d0cc8cd zsnp \$12,\$200,205
+ 21c: 7602cb0b zsod \$2,\$203,\$11
+ 220: 770cc8cd zsod \$12,\$200,205
+ 224: 7e02cb0b zsev \$2,\$203,\$11
+ 228: 7f0cc8cd zsev \$12,\$200,205
+ 22c: 8002000b ldb \$2,\$0,\$11
+ 230: 810c14cd ldb \$12,\$20,205
+ 234: 8802000b ldt \$2,\$0,\$11
+ 238: 890c14cd ldt \$12,\$20,205
+ 23c: 8202000b ldbu \$2,\$0,\$11
+ 240: 830c14cd ldbu \$12,\$20,205
+ 244: 8a02000b ldtu \$2,\$0,\$11
+ 248: 8b0c14cd ldtu \$12,\$20,205
+ 24c: 8402000b ldw \$2,\$0,\$11
+ 250: 850c14cd ldw \$12,\$20,205
+ 254: 8c02000b ldo \$2,\$0,\$11
+ 258: 8d0c14cd ldo \$12,\$20,205
+ 25c: 8602000b ldwu \$2,\$0,\$11
+ 260: 870c14cd ldwu \$12,\$20,205
+ 264: 8e02000b ldou \$2,\$0,\$11
+ 268: 8f0c14cd ldou \$12,\$20,205
+ 26c: 9802000b ldvts \$2,\$0,\$11
+ 270: 990c14cd ldvts \$12,\$20,205
+ 274: 9202000b ldht \$2,\$0,\$11
+ 278: 930c14cd ldht \$12,\$20,205
+ 27c: 9b7014cd preld 112,\$20,205
+ 280: 9a7014e1 preld 112,\$20,\$225
+ 284: 9402000b cswap \$2,\$0,\$11
+ 288: 950c14cd cswap \$12,\$20,205
+ 28c: 9d7014cd prego 112,\$20,205
+ 290: 9c7014e1 prego 112,\$20,\$225
+ 294: 9602000b ldunc \$2,\$0,\$11
+ 298: 970c14cd ldunc \$12,\$20,205
+ 29c: 9e02000b go \$2,\$0,\$11
+ 2a0: 9f0c14cd go \$12,\$20,205
+ 2a4: a0020a97 stb \$2,\$10,\$151
+ 2a8: a10c14cd stb \$12,\$20,205
+ 2ac: a8200a97 stt \$32,\$10,\$151
+ 2b0: a90c14cd stt \$12,\$20,205
+ 2b4: a2020a97 stbu \$2,\$10,\$151
+ 2b8: a30c14cd stbu \$12,\$20,205
+ 2bc: aa200a97 sttu \$32,\$10,\$151
+ 2c0: ab0c14cd sttu \$12,\$20,205
+ 2c4: a4020a97 stw \$2,\$10,\$151
+ 2c8: a50cdccd stw \$12,\$220,205
+ 2cc: ac20aa97 sto \$32,\$170,\$151
+ 2d0: adb614f5 sto \$182,\$20,245
+ 2d4: a6020a97 stwu \$2,\$10,\$151
+ 2d8: a70cdccd stwu \$12,\$220,205
+ 2dc: ae20aa97 stou \$32,\$170,\$151
+ 2e0: afb614f5 stou \$182,\$20,245
+ 2e4: b020aa97 stsf \$32,\$170,\$151
+ 2e8: b1b614f5 stsf \$182,\$20,245
+ 2ec: b97014cd syncd 112,\$20,205
+ 2f0: b87014e1 syncd 112,\$20,\$225
+ 2f4: b220aa97 stht \$32,\$170,\$151
+ 2f8: b3b614f5 stht \$182,\$20,245
+ 2fc: bb7014cd prest 112,\$20,205
+ 300: ba7014e1 prest 112,\$20,\$225
+ 304: b420aa97 stco 32,\$170,\$151
+ 308: b5b614f5 stco 182,\$20,245
+ 30c: bd7014cd syncid 112,\$20,205
+ 310: bc0014e1 syncid 0,\$20,\$225
+ 314: b620aa97 stunc \$32,\$170,\$151
+ 318: b7b614f5 stunc \$182,\$20,245
+ 31c: be20aa97 pushgo \$32,\$170,\$151
+ 320: bfb614f5 pushgo \$182,\$20,245
+ 324: c18ec800 set \$142,\$200
+ 328: c020aa97 or \$32,\$170,\$151
+ 32c: c1b614f5 or \$182,\$20,245
+ 330: c820aa97 and \$32,\$170,\$151
+ 334: c9b614f5 and \$182,\$20,245
+ 338: c220aa97 orn \$32,\$170,\$151
+ 33c: c3b614f5 orn \$182,\$20,245
+ 340: ca20aa97 andn \$32,\$170,\$151
+ 344: cbb614f5 andn \$182,\$20,245
+ 348: c420aa97 nor \$32,\$170,\$151
+ 34c: c5b614f5 nor \$182,\$20,245
+ 350: cc20aa97 nand \$32,\$170,\$151
+ 354: cdb614f5 nand \$182,\$20,245
+ 358: c620aa97 xor \$32,\$170,\$151
+ 35c: c7b614f5 xor \$182,\$20,245
+ 360: ce20aa97 nxor \$32,\$170,\$151
+ 364: cfb614f5 nxor \$182,\$20,245
+ 368: d020aa97 bdif \$32,\$170,\$151
+ 36c: d1b614f5 bdif \$182,\$20,245
+ 370: d820aa97 mux \$32,\$170,\$151
+ 374: d9b614f5 mux \$182,\$20,245
+ 378: d220aa97 wdif \$32,\$170,\$151
+ 37c: d3b614f5 wdif \$182,\$20,245
+ 380: da20aa97 sadd \$32,\$170,\$151
+ 384: dbb600f5 sadd \$182,\$0,245
+ 388: d420aa97 tdif \$32,\$170,\$151
+ 38c: d5b614f5 tdif \$182,\$20,245
+ 390: dc20aa97 mor \$32,\$170,\$151
+ 394: ddb614f5 mor \$182,\$20,245
+ 398: d620aa97 odif \$32,\$170,\$151
+ 39c: d7b614f5 odif \$182,\$20,245
+ 3a0: de201197 mxor \$32,\$17,\$151
+ 3a4: df52b418 mxor \$82,\$180,24
+ 3a8: e004ffff seth \$4,0xffff
+ 3ac: e05e0000 seth \$94,0x0
+ 3b0: e00400ff seth \$4,0xff
+ 3b4: e05e04d2 seth \$94,0x4d2
+ 3b8: e15e04d2 setmh \$94,0x4d2
+ 3bc: e85e04d2 orh \$94,0x4d2
+ 3c0: e95e04d2 ormh \$94,0x4d2
+ 3c4: e25e04d2 setml \$94,0x4d2
+ 3c8: e35e04d2 setl \$94,0x4d2
+ 3cc: ea5e04d2 orml \$94,0x4d2
+ 3d0: eb5e04d2 orl \$94,0x4d2
+ 3d4: e45e04d2 inch \$94,0x4d2
+ 3d8: e55e04d2 incmh \$94,0x4d2
+ 3dc: ec5e04d2 andnh \$94,0x4d2
+ 3e0: ed5e04d2 andnmh \$94,0x4d2
+ 3e4: e65e04d2 incml \$94,0x4d2
+ 3e8: e75e04d2 incl \$94,0x4d2
+ 3ec: ee5e04d2 andnml \$94,0x4d2
+ 3f0: ef5e04d2 andnl \$94,0x4d2
+ 3f4: f0000000 jmp .*
+ 3f4: R_MMIX_ADDR27 \.text\+0x3f0
+ 3f8: f0000000 jmp .*
+ 3f8: R_MMIX_ADDR27 \.text\+0x3fc
+ 3fc: f82afffe pop 42,65534
+ 400: f90000ff resume 255
+ 404: f9000000 resume 0
+ 408: f9000001 resume 1
+ 40c: f2190000 pushj \$25,.*
+ 40c: R_MMIX_ADDR19 \.text\+0x410
+ 410: f2190000 pushj \$25,.*
+ 410: R_MMIX_ADDR19 \.text\+0x40c
+ 414: fa040000 save \$4,0
+ 418: fb0000ea unsave 0,\$234
+ 41c: f4190000 geta \$25,.*
+ 41c: R_MMIX_ADDR19 \.text\+0x420
+ 420: f4190000 geta \$25,.*
+ 420: R_MMIX_ADDR19 \.text\+0x41c
+ 424: fc7a1201 sync 8000001
+ 428: fd010203 swym 1,2,3
+ 42c: fd000000 swym 0,0,0
+ 430: f7040022 put rJ,34
+ 434: f6040086 put rJ,\$134
+ 438: feea0004 get \$234,rJ
+ 43c: ff000000 trip 0,0,0
+ 440: ff050607 trip 5,6,7
diff --git a/gas/testsuite/gas/mmix/list-insns.d b/gas/testsuite/gas/mmix/list-insns.d
new file mode 100644
index 0000000..ea617925
--- /dev/null
+++ b/gas/testsuite/gas/mmix/list-insns.d
@@ -0,0 +1,279 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 00000003 trap 0,0,3
+ 4: 00030405 trap 3,4,5
+ 8: 010c17f1 fcmp \$12,\$23,\$241
+ c: 08700129 flot \$112,ROUND_OFF,\$41
+ 10: 0970048d flot \$112,ROUND_NEAR,141
+ 14: 08bf00f2 flot \$191,\$242
+ 18: 09c3002a flot \$195,42
+ 1c: 027acb04 fun \$122,\$203,\$4
+ 20: 03661e28 feql \$102,\$30,\$40
+ 24: 0a66000e flotu \$102,\$14
+ 28: 0a84020e flotu \$132,ROUND_UP,\$14
+ 2c: 0a660368 flotu \$102,ROUND_DOWN,\$104
+ 30: 0aac048c flotu \$172,ROUND_NEAR,\$140
+ 34: 0a010186 flotu \$1,ROUND_OFF,\$134
+ 38: 0470df29 fadd \$112,\$223,\$41
+ 3c: 05700129 fix \$112,ROUND_OFF,\$41
+ 40: 050b008d fix \$11,\$141
+ 44: 0c700129 sflot \$112,ROUND_OFF,\$41
+ 48: 0d70048d sflot \$112,ROUND_NEAR,141
+ 4c: 0670df29 fsub \$112,\$223,\$41
+ 50: 0766000e fixu \$102,\$14
+ 54: 0784020e fixu \$132,ROUND_UP,\$14
+ 58: 0e0b008d sflotu \$11,\$141
+ 5c: 0f70008d sflotu \$112,141
+ 60: 0f70048d sflotu \$112,ROUND_NEAR,141
+ 64: 0e700129 sflotu \$112,ROUND_OFF,\$41
+ 68: 10661e28 fmul \$102,\$30,\$40
+ 6c: 110cdf01 fcmpe \$12,\$223,\$1
+ 70: 197acb2c mul \$122,\$203,44
+ 74: 18661e28 mul \$102,\$30,\$40
+ 78: 130cdf01 feqle \$12,\$223,\$1
+ 7c: 120cdf0b fune \$12,\$223,\$11
+ 80: 1b7ad52c mulu \$122,\$213,44
+ 84: 1a841e28 mulu \$132,\$30,\$40
+ 88: 140cdf0b fdiv \$12,\$223,\$11
+ 8c: 1584020e fsqrt \$132,ROUND_UP,\$14
+ 90: 150b008d fsqrt \$11,\$141
+ 94: 1d7ad52c div \$122,\$213,44
+ 98: 1c841e28 div \$132,\$30,\$40
+ 9c: 160cdf0b frem \$12,\$223,\$11
+ a0: 1784020e fint \$132,ROUND_UP,\$14
+ a4: 170b008d fint \$11,\$141
+ a8: 1e0cdf01 divu \$12,\$223,\$1
+ ac: 1f7acbff divu \$122,\$203,255
+ b0: 200cdf01 add \$12,\$223,\$1
+ b4: 217acbff add \$122,\$203,255
+ b8: 280cdf0b 2addu \$12,\$223,\$11
+ bc: 297acb00 2addu \$122,\$203,0
+ c0: 237acbff addu \$122,\$203,255
+ c4: 220cdf0b addu \$12,\$223,\$11
+ c8: 237acbff addu \$122,\$203,255
+ cc: 220cdf0b addu \$12,\$223,\$11
+ d0: 2b7acbcd 4addu \$122,\$203,205
+ d4: 2a0cdf6f 4addu \$12,\$223,\$111
+ d8: 240cdf0b sub \$12,\$223,\$11
+ dc: 257acbcd sub \$122,\$203,205
+ e0: 2c0cdf0b 8addu \$12,\$223,\$11
+ e4: 2d7acbcd 8addu \$122,\$203,205
+ e8: 2602df0b subu \$2,\$223,\$11
+ ec: 270c14cd subu \$12,\$20,205
+ f0: 2e02df0b 16addu \$2,\$223,\$11
+ f4: 2f0c14cd 16addu \$12,\$20,205
+ f8: 3002df0b cmp \$2,\$223,\$11
+ fc: 310c14cd cmp \$12,\$20,205
+ 100: 3802df0b sl \$2,\$223,\$11
+ 104: 390c14cd sl \$12,\$20,205
+ 108: 3202df0b cmpu \$2,\$223,\$11
+ 10c: 330c14cd cmpu \$12,\$20,205
+ 110: 3a02df0b slu \$2,\$223,\$11
+ 114: 3b0c14cd slu \$12,\$20,205
+ 118: 3402170b neg \$2,23,\$11
+ 11c: 350c00cd neg \$12,0,205
+ 120: 35c00acd neg \$192,10,205
+ 124: 3d0c14cd sr \$12,\$20,205
+ 128: 3c02df0b sr \$2,\$223,\$11
+ 12c: 3602170b negu \$2,23,\$11
+ 130: 370c00cd negu \$12,0,205
+ 134: 3f0c14cd sru \$12,\$20,205
+ 138: 3e02df0b sru \$2,\$223,\$11
+ 13c: 40020001 bn \$2,140 <Main\+0x140>
+ 140: 4102ffff bn \$2,13c <Main\+0x13c>
+ 144: 4902ffff bnn \$2,140 <Main\+0x140>
+ 148: 4902ffff bnn \$2,144 <Main\+0x144>
+ 14c: 42ff0001 bz \$255,150 <Main\+0x150>
+ 150: 43ffffff bz \$255,14c <Main\+0x14c>
+ 154: 4aff0001 bnz \$255,158 <Main\+0x158>
+ 158: 4bffffff bnz \$255,154 <Main\+0x154>
+ 15c: 44190001 bp \$25,160 <Main\+0x160>
+ 160: 4519ffff bp \$25,15c <Main\+0x15c>
+ 164: 4c190001 bnp \$25,168 <Main\+0x168>
+ 168: 4d19ffff bnp \$25,164 <Main\+0x164>
+ 16c: 46190001 bod \$25,170 <Main\+0x170>
+ 170: 4719ffff bod \$25,16c <Main\+0x16c>
+ 174: 4e190001 bev \$25,178 <Main\+0x178>
+ 178: 4f19ffff bev \$25,174 <Main\+0x174>
+ 17c: 50020001 pbn \$2,180 <Main\+0x180>
+ 180: 5102ffff pbn \$2,17c <Main\+0x17c>
+ 184: 58020001 pbnn \$2,188 <Main\+0x188>
+ 188: 5902ffff pbnn \$2,184 <Main\+0x184>
+ 18c: 520c0001 pbz \$12,190 <Main\+0x190>
+ 190: 5316ffff pbz \$22,18c <Main\+0x18c>
+ 194: 5a200001 pbnz \$32,198 <Main\+0x198>
+ 198: 5b34ffff pbnz \$52,194 <Main\+0x194>
+ 19c: 56190001 pbod \$25,1a0 <Main\+0x1a0>
+ 1a0: 5719ffff pbod \$25,19c <Main\+0x19c>
+ 1a4: 5e190001 pbev \$25,1a8 <Main\+0x1a8>
+ 1a8: 5f19ffff pbev \$25,1a4 <Main\+0x1a4>
+ 1ac: 6002df0b csn \$2,\$223,\$11
+ 1b0: 610c14cd csn \$12,\$20,205
+ 1b4: 6802df0b csnn \$2,\$223,\$11
+ 1b8: 690c14cd csnn \$12,\$20,205
+ 1bc: 6202cb0b csz \$2,\$203,\$11
+ 1c0: 630cc8cd csz \$12,\$200,205
+ 1c4: 6a02cb0b csnz \$2,\$203,\$11
+ 1c8: 6b0cc8cd csnz \$12,\$200,205
+ 1cc: 6402cb0b csp \$2,\$203,\$11
+ 1d0: 650cc8cd csp \$12,\$200,205
+ 1d4: 6c02cb0b csnp \$2,\$203,\$11
+ 1d8: 6d0cc8cd csnp \$12,\$200,205
+ 1dc: 6602cb0b csod \$2,\$203,\$11
+ 1e0: 670cc8cd csod \$12,\$200,205
+ 1e4: 6e02cb0b csev \$2,\$203,\$11
+ 1e8: 6f0cc8cd csev \$12,\$200,205
+ 1ec: 7002df0b zsn \$2,\$223,\$11
+ 1f0: 710c14cd zsn \$12,\$20,205
+ 1f4: 7802df0b zsnn \$2,\$223,\$11
+ 1f8: 790c14cd zsnn \$12,\$20,205
+ 1fc: 7202cb0b zsz \$2,\$203,\$11
+ 200: 730cc8cd zsz \$12,\$200,205
+ 204: 7a02cb0b zsnz \$2,\$203,\$11
+ 208: 7b0cc8cd zsnz \$12,\$200,205
+ 20c: 7402cb0b zsp \$2,\$203,\$11
+ 210: 750cc8cd zsp \$12,\$200,205
+ 214: 7c02cb0b zsnp \$2,\$203,\$11
+ 218: 7d0cc8cd zsnp \$12,\$200,205
+ 21c: 7602cb0b zsod \$2,\$203,\$11
+ 220: 770cc8cd zsod \$12,\$200,205
+ 224: 7e02cb0b zsev \$2,\$203,\$11
+ 228: 7f0cc8cd zsev \$12,\$200,205
+ 22c: 8002000b ldb \$2,\$0,\$11
+ 230: 810c14cd ldb \$12,\$20,205
+ 234: 8802000b ldt \$2,\$0,\$11
+ 238: 890c14cd ldt \$12,\$20,205
+ 23c: 8202000b ldbu \$2,\$0,\$11
+ 240: 830c14cd ldbu \$12,\$20,205
+ 244: 8a02000b ldtu \$2,\$0,\$11
+ 248: 8b0c14cd ldtu \$12,\$20,205
+ 24c: 8402000b ldw \$2,\$0,\$11
+ 250: 850c14cd ldw \$12,\$20,205
+ 254: 8c02000b ldo \$2,\$0,\$11
+ 258: 8d0c14cd ldo \$12,\$20,205
+ 25c: 8602000b ldwu \$2,\$0,\$11
+ 260: 870c14cd ldwu \$12,\$20,205
+ 264: 8e02000b ldou \$2,\$0,\$11
+ 268: 8f0c14cd ldou \$12,\$20,205
+ 26c: 9802000b ldvts \$2,\$0,\$11
+ 270: 990c14cd ldvts \$12,\$20,205
+ 274: 9202000b ldht \$2,\$0,\$11
+ 278: 930c14cd ldht \$12,\$20,205
+ 27c: 9b7014cd preld 112,\$20,205
+ 280: 9a7014e1 preld 112,\$20,\$225
+ 284: 9402000b cswap \$2,\$0,\$11
+ 288: 950c14cd cswap \$12,\$20,205
+ 28c: 9d7014cd prego 112,\$20,205
+ 290: 9c7014e1 prego 112,\$20,\$225
+ 294: 9602000b ldunc \$2,\$0,\$11
+ 298: 970c14cd ldunc \$12,\$20,205
+ 29c: 9e02000b go \$2,\$0,\$11
+ 2a0: 9f0c14cd go \$12,\$20,205
+ 2a4: a0020a97 stb \$2,\$10,\$151
+ 2a8: a10c14cd stb \$12,\$20,205
+ 2ac: a8200a97 stt \$32,\$10,\$151
+ 2b0: a90c14cd stt \$12,\$20,205
+ 2b4: a2020a97 stbu \$2,\$10,\$151
+ 2b8: a30c14cd stbu \$12,\$20,205
+ 2bc: aa200a97 sttu \$32,\$10,\$151
+ 2c0: ab0c14cd sttu \$12,\$20,205
+ 2c4: a4020a97 stw \$2,\$10,\$151
+ 2c8: a50cdccd stw \$12,\$220,205
+ 2cc: ac20aa97 sto \$32,\$170,\$151
+ 2d0: adb614f5 sto \$182,\$20,245
+ 2d4: a6020a97 stwu \$2,\$10,\$151
+ 2d8: a70cdccd stwu \$12,\$220,205
+ 2dc: ae20aa97 stou \$32,\$170,\$151
+ 2e0: afb614f5 stou \$182,\$20,245
+ 2e4: b020aa97 stsf \$32,\$170,\$151
+ 2e8: b1b614f5 stsf \$182,\$20,245
+ 2ec: b97014cd syncd 112,\$20,205
+ 2f0: b87014e1 syncd 112,\$20,\$225
+ 2f4: b220aa97 stht \$32,\$170,\$151
+ 2f8: b3b614f5 stht \$182,\$20,245
+ 2fc: bb7014cd prest 112,\$20,205
+ 300: ba7014e1 prest 112,\$20,\$225
+ 304: b420aa97 stco 32,\$170,\$151
+ 308: b5b614f5 stco 182,\$20,245
+ 30c: bd7014cd syncid 112,\$20,205
+ 310: bc0014e1 syncid 0,\$20,\$225
+ 314: b620aa97 stunc \$32,\$170,\$151
+ 318: b7b614f5 stunc \$182,\$20,245
+ 31c: be20aa97 pushgo \$32,\$170,\$151
+ 320: bfb614f5 pushgo \$182,\$20,245
+ 324: c18ec800 set \$142,\$200
+ 328: c020aa97 or \$32,\$170,\$151
+ 32c: c1b614f5 or \$182,\$20,245
+ 330: c820aa97 and \$32,\$170,\$151
+ 334: c9b614f5 and \$182,\$20,245
+ 338: c220aa97 orn \$32,\$170,\$151
+ 33c: c3b614f5 orn \$182,\$20,245
+ 340: ca20aa97 andn \$32,\$170,\$151
+ 344: cbb614f5 andn \$182,\$20,245
+ 348: c420aa97 nor \$32,\$170,\$151
+ 34c: c5b614f5 nor \$182,\$20,245
+ 350: cc20aa97 nand \$32,\$170,\$151
+ 354: cdb614f5 nand \$182,\$20,245
+ 358: c620aa97 xor \$32,\$170,\$151
+ 35c: c7b614f5 xor \$182,\$20,245
+ 360: ce20aa97 nxor \$32,\$170,\$151
+ 364: cfb614f5 nxor \$182,\$20,245
+ 368: d020aa97 bdif \$32,\$170,\$151
+ 36c: d1b614f5 bdif \$182,\$20,245
+ 370: d820aa97 mux \$32,\$170,\$151
+ 374: d9b614f5 mux \$182,\$20,245
+ 378: d220aa97 wdif \$32,\$170,\$151
+ 37c: d3b614f5 wdif \$182,\$20,245
+ 380: da20aa97 sadd \$32,\$170,\$151
+ 384: dbb600f5 sadd \$182,\$0,245
+ 388: d420aa97 tdif \$32,\$170,\$151
+ 38c: d5b614f5 tdif \$182,\$20,245
+ 390: dc20aa97 mor \$32,\$170,\$151
+ 394: ddb614f5 mor \$182,\$20,245
+ 398: d620aa97 odif \$32,\$170,\$151
+ 39c: d7b614f5 odif \$182,\$20,245
+ 3a0: de201197 mxor \$32,\$17,\$151
+ 3a4: df52b418 mxor \$82,\$180,24
+ 3a8: e004ffff seth \$4,0xffff
+ 3ac: e05e0000 seth \$94,0x0
+ 3b0: e00400ff seth \$4,0xff
+ 3b4: e05e04d2 seth \$94,0x4d2
+ 3b8: e15e04d2 setmh \$94,0x4d2
+ 3bc: e85e04d2 orh \$94,0x4d2
+ 3c0: e95e04d2 ormh \$94,0x4d2
+ 3c4: e25e04d2 setml \$94,0x4d2
+ 3c8: e35e04d2 setl \$94,0x4d2
+ 3cc: ea5e04d2 orml \$94,0x4d2
+ 3d0: eb5e04d2 orl \$94,0x4d2
+ 3d4: e45e04d2 inch \$94,0x4d2
+ 3d8: e55e04d2 incmh \$94,0x4d2
+ 3dc: ec5e04d2 andnh \$94,0x4d2
+ 3e0: ed5e04d2 andnmh \$94,0x4d2
+ 3e4: e65e04d2 incml \$94,0x4d2
+ 3e8: e75e04d2 incl \$94,0x4d2
+ 3ec: ee5e04d2 andnml \$94,0x4d2
+ 3f0: ef5e04d2 andnl \$94,0x4d2
+ 3f4: f1ffffff jmp 3f0 <Main\+0x3f0>
+ 3f8: f0000001 jmp 3fc <Main\+0x3fc>
+ 3fc: f82afffe pop 42,65534
+ 400: f90000ff resume 255
+ 404: f9000000 resume 0
+ 408: f9000001 resume 1
+ 40c: f2190001 pushj \$25,410 <Main\+0x410>
+ 410: f319ffff pushj \$25,40c <Main\+0x40c>
+ 414: fa040000 save \$4,0
+ 418: fb0000ea unsave 0,\$234
+ 41c: f4190001 geta \$25,420 <Main\+0x420>
+ 420: f519ffff geta \$25,41c <Main\+0x41c>
+ 424: fc7a1201 sync 8000001
+ 428: fd010203 swym 1,2,3
+ 42c: fd000000 swym 0,0,0
+ 430: f7040022 put rJ,34
+ 434: f6040086 put rJ,\$134
+ 438: feea0004 get \$234,rJ
+ 43c: ff000000 trip 0,0,0
+ 440: ff050607 trip 5,6,7
diff --git a/gas/testsuite/gas/mmix/list-insns.l b/gas/testsuite/gas/mmix/list-insns.l
new file mode 100644
index 0000000..858b2c7
--- /dev/null
+++ b/gas/testsuite/gas/mmix/list-insns.l
@@ -0,0 +1,301 @@
+GAS for MMIX .*/list-insns.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 #.*
+ 4 #.*
+ 5 #.*
+ 6 #.*
+ 7 0000 00000003 Main TETRA 3
+ 8 0004 00030405 TRAP 3,4,5
+ 9 0008 010C17F1 FCMP \$12,\$23,\$241
+ 10 000c 08700129 FLOT \$112,ROUND_OFF,\$41
+ 11 0010 0970048D FLOT \$112,ROUND_NEAR,141
+ 12 0014 08BF00F2 FLOT \$191,\$242
+ 13 0018 09C3002A FLOT \$195,42
+ 14 001c 027ACB04 FUN \$122,\$203,\$4
+ 15 0020 03661E28 FEQL \$102,\$30,\$40
+ 16 0024 0A66000E FLOTU \$102,\$14
+ 17 0028 0A84020E FLOTU \$132,ROUND_UP,\$14
+ 18 002c 0A660368 FLOTU \$102,ROUND_DOWN,\$104
+ 19 0030 0AAC048C FLOTU \$172,ROUND_NEAR,\$140
+ 20 0034 0A010186 FLOTU \$1,ROUND_OFF,\$134
+ 21 0038 0470DF29 FADD \$112,\$223,\$41
+ 22 003c 05700129 FIX \$112,ROUND_OFF,\$41
+ 23 0040 050B008D FIX \$11,\$141
+ 24 0044 0C700129 SFLOT \$112,ROUND_OFF,\$41
+ 25 0048 0D70048D SFLOT \$112,ROUND_NEAR,141
+ 26 004c 0670DF29 FSUB \$112,\$223,\$41
+ 27 0050 0766000E FIXU \$102,\$14
+ 28 0054 0784020E FIXU \$132,ROUND_UP,\$14
+ 29 0058 0E0B008D SFLOTU \$11,\$141
+ 30 005c 0F70008D SFLOTU \$112,141
+ 31 0060 0F70048D SFLOTU \$112,ROUND_NEAR,141
+ 32 0064 0E700129 SFLOTU \$112,ROUND_OFF,\$41
+ 33 0068 10661E28 FMUL \$102,\$30,\$40
+ 34 006c 110CDF01 FCMPE \$12,\$223,\$1
+ 35 0070 197ACB2C MUL \$122,\$203,44
+ 36 0074 18661E28 MUL \$102,\$30,\$40
+ 37 0078 130CDF01 FEQLE \$12,\$223,\$1
+ 38 007c 120CDF0B FUNE \$12,\$223,\$11
+ 39 0080 1B7AD52C MULU \$122,\$213,44
+ 40 0084 1A841E28 MULU \$132,\$30,\$40
+ 41 0088 140CDF0B FDIV \$12,\$223,\$11
+ 42 008c 1584020E FSQRT \$132,ROUND_UP,\$14
+ 43 0090 150B008D FSQRT \$11,\$141
+ 44 0094 1D7AD52C DIV \$122,\$213,44
+ 45 0098 1C841E28 DIV \$132,\$30,\$40
+ 46 009c 160CDF0B FREM \$12,\$223,\$11
+ 47 00a0 1784020E FINT \$132,ROUND_UP,\$14
+ 48 00a4 170B008D FINT \$11,\$141
+ 49 00a8 1E0CDF01 DIVU \$12,\$223,\$1
+ 50 00ac 1F7ACBFF DIVU \$122,\$203,255
+ 51 00b0 200CDF01 ADD \$12,\$223,\$1
+ 52 00b4 217ACBFF ADD \$122,\$203,255
+ 53 00b8 280CDF0B 2ADDU \$12,\$223,\$11
+ 54 00bc 297ACB00 2ADDU \$122,\$203,0
+ 55 00c0 237ACBFF ADDU \$122,\$203,255
+ 56 00c4 220CDF0B ADDU \$12,\$223,\$11
+ 57 00c8 237ACBFF LDA \$122,\$203,255
+ GAS for MMIX .*/list-insns.s page 2
+
+
+ 58 00cc 220CDF0B LDA \$12,\$223,\$11
+ 59 00d0 2B7ACBCD 4ADDU \$122,\$203,205
+ 60 00d4 2A0CDF6F 4ADDU \$12,\$223,\$111
+ 61 00d8 240CDF0B SUB \$12,\$223,\$11
+ 62 00dc 257ACBCD SUB \$122,\$203,205
+ 63 00e0 2C0CDF0B 8ADDU \$12,\$223,\$11
+ 64 00e4 2D7ACBCD 8ADDU \$122,\$203,205
+ 65 00e8 2602DF0B SUBU \$2,\$223,\$11
+ 66 00ec 270C14CD SUBU \$12,\$20,205
+ 67 00f0 2E02DF0B 16ADDU \$2,\$223,\$11
+ 68 00f4 2F0C14CD 16ADDU \$12,\$20,205
+ 69 00f8 3002DF0B CMP \$2,\$223,\$11
+ 70 00fc 310C14CD CMP \$12,\$20,205
+ 71 0100 3802DF0B SL \$2,\$223,\$11
+ 72 0104 390C14CD SL \$12,\$20,205
+ 73 0108 3202DF0B CMPU \$2,\$223,\$11
+ 74 010c 330C14CD CMPU \$12,\$20,205
+ 75 0110 3A02DF0B SLU \$2,\$223,\$11
+ 76 0114 3B0C14CD SLU \$12,\$20,205
+ 77 0118 3402170B NEG \$2,23,\$11
+ 78 011c 350C00CD NEG \$12,0,205
+ 79 0120 35C00ACD NEG \$192,10,205
+ 80 0124 3D0C14CD SR \$12,\$20,205
+ 81 0128 3C02DF0B SR \$2,\$223,\$11
+ 82 012c 3602170B NEGU \$2,23,\$11
+ 83 0130 370C00CD NEGU \$12,0,205
+ 84 0134 3F0C14CD SRU \$12,\$20,205
+ 85 0138 3E02DF0B SRU \$2,\$223,\$11
+ 86 013c 40020001 1H BN \$2,2F
+ 87 0140 4102FFFF 2H BN \$2,1B
+ 88 0144 4902FFFF 1H BNN \$2,2B
+ 89 0148 4902FFFF 2H BNN \$2,1B
+ 90 014c 42FF0001 1H BZ \$255,2F
+ 91 0150 43FFFFFF 2H BZ \$255,1B
+ 92 0154 4AFF0001 1H BNZ \$255,2F
+ 93 0158 4BFFFFFF 2H BNZ \$255,1B
+ 94 015c 44190001 1H BP \$25,2F
+ 95 0160 4519FFFF 2H BP \$25,1B
+ 96 0164 4C190001 1H BNP \$25,2F
+ 97 0168 4D19FFFF 2H BNP \$25,1B
+ 98 016c 46190001 1H BOD \$25,2F
+ 99 0170 4719FFFF 2H BOD \$25,1B
+ 100 0174 4E190001 1H BEV \$25,2F
+ 101 0178 4F19FFFF 2H BEV \$25,1B
+ 102 017c 50020001 1H PBN \$2,2F
+ 103 0180 5102FFFF 2H PBN \$2,1B
+ 104 0184 58020001 1H PBNN \$2,2F
+ 105 0188 5902FFFF 2H PBNN \$2,1B
+ 106 018c 520C0001 1H PBZ \$12,2F
+ 107 0190 5316FFFF 2H PBZ \$22,1B
+ 108 0194 5A200001 1H PBNZ \$32,2F
+ 109 0198 5B34FFFF 2H PBNZ \$52,1B
+ 110 019c 56190001 1H PBOD \$25,2F
+ 111 01a0 5719FFFF 2H PBOD \$25,1B
+ 112 01a4 5E190001 1H PBEV \$25,2F
+ 113 01a8 5F19FFFF 2H PBEV \$25,1B
+ 114 01ac 6002DF0B CSN \$2,\$223,\$11
+ GAS for MMIX .*/list-insns.s page 3
+
+
+ 115 01b0 610C14CD CSN \$12,\$20,205
+ 116 01b4 6802DF0B CSNN \$2,\$223,\$11
+ 117 01b8 690C14CD CSNN \$12,\$20,205
+ 118 01bc 6202CB0B CSZ \$2,\$203,\$11
+ 119 01c0 630CC8CD CSZ \$12,\$200,205
+ 120 01c4 6A02CB0B CSNZ \$2,\$203,\$11
+ 121 01c8 6B0CC8CD CSNZ \$12,\$200,205
+ 122 01cc 6402CB0B CSP \$2,\$203,\$11
+ 123 01d0 650CC8CD CSP \$12,\$200,205
+ 124 01d4 6C02CB0B CSNP \$2,\$203,\$11
+ 125 01d8 6D0CC8CD CSNP \$12,\$200,205
+ 126 01dc 6602CB0B CSOD \$2,\$203,\$11
+ 127 01e0 670CC8CD CSOD \$12,\$200,205
+ 128 01e4 6E02CB0B CSEV \$2,\$203,\$11
+ 129 01e8 6F0CC8CD CSEV \$12,\$200,205
+ 130 01ec 7002DF0B ZSN \$2,\$223,\$11
+ 131 01f0 710C14CD ZSN \$12,\$20,205
+ 132 01f4 7802DF0B ZSNN \$2,\$223,\$11
+ 133 01f8 790C14CD ZSNN \$12,\$20,205
+ 134 01fc 7202CB0B ZSZ \$2,\$203,\$11
+ 135 0200 730CC8CD ZSZ \$12,\$200,205
+ 136 0204 7A02CB0B ZSNZ \$2,\$203,\$11
+ 137 0208 7B0CC8CD ZSNZ \$12,\$200,205
+ 138 020c 7402CB0B ZSP \$2,\$203,\$11
+ 139 0210 750CC8CD ZSP \$12,\$200,205
+ 140 0214 7C02CB0B ZSNP \$2,\$203,\$11
+ 141 0218 7D0CC8CD ZSNP \$12,\$200,205
+ 142 021c 7602CB0B ZSOD \$2,\$203,\$11
+ 143 0220 770CC8CD ZSOD \$12,\$200,205
+ 144 0224 7E02CB0B ZSEV \$2,\$203,\$11
+ 145 0228 7F0CC8CD ZSEV \$12,\$200,205
+ 146 022c 8002000B LDB \$2,\$0,\$11
+ 147 0230 810C14CD LDB \$12,\$20,205
+ 148 0234 8802000B LDT \$2,\$0,\$11
+ 149 0238 890C14CD LDT \$12,\$20,205
+ 150 023c 8202000B LDBU \$2,\$0,\$11
+ 151 0240 830C14CD LDBU \$12,\$20,205
+ 152 0244 8A02000B LDTU \$2,\$0,\$11
+ 153 0248 8B0C14CD LDTU \$12,\$20,205
+ 154 024c 8402000B LDW \$2,\$0,\$11
+ 155 0250 850C14CD LDW \$12,\$20,205
+ 156 0254 8C02000B LDO \$2,\$0,\$11
+ 157 0258 8D0C14CD LDO \$12,\$20,205
+ 158 025c 8602000B LDWU \$2,\$0,\$11
+ 159 0260 870C14CD LDWU \$12,\$20,205
+ 160 0264 8E02000B LDOU \$2,\$0,\$11
+ 161 0268 8F0C14CD LDOU \$12,\$20,205
+ 162 026c 9802000B LDVTS \$2,\$0,\$11
+ 163 0270 990C14CD LDVTS \$12,\$20,205
+ 164 0274 9202000B LDHT \$2,\$0,\$11
+ 165 0278 930C14CD LDHT \$12,\$20,205
+ 166 027c 9B7014CD PRELD 112,\$20,205
+ 167 0280 9A7014E1 PRELD 112,\$20,\$225
+ 168 0284 9402000B CSWAP \$2,\$0,\$11
+ 169 0288 950C14CD CSWAP \$12,\$20,205
+ 170 028c 9D7014CD PREGO 112,\$20,205
+ 171 0290 9C7014E1 PREGO 112,\$20,\$225
+ GAS for MMIX .*/list-insns.s page 4
+
+
+ 172 0294 9602000B LDUNC \$2,\$0,\$11
+ 173 0298 970C14CD LDUNC \$12,\$20,205
+ 174 029c 9E02000B GO \$2,\$0,\$11
+ 175 02a0 9F0C14CD GO \$12,\$20,205
+ 176 02a4 A0020A97 STB \$2,\$10,\$151
+ 177 02a8 A10C14CD STB \$12,\$20,205
+ 178 02ac A8200A97 STT \$32,\$10,\$151
+ 179 02b0 A90C14CD STT \$12,\$20,205
+ 180 02b4 A2020A97 STBU \$2,\$10,\$151
+ 181 02b8 A30C14CD STBU \$12,\$20,205
+ 182 02bc AA200A97 STTU \$32,\$10,\$151
+ 183 02c0 AB0C14CD STTU \$12,\$20,205
+ 184 02c4 A4020A97 STW \$2,\$10,\$151
+ 185 02c8 A50CDCCD STW \$12,\$220,205
+ 186 02cc AC20AA97 STO \$32,\$170,\$151
+ 187 02d0 ADB614F5 STO \$182,\$20,245
+ 188 02d4 A6020A97 STWU \$2,\$10,\$151
+ 189 02d8 A70CDCCD STWU \$12,\$220,205
+ 190 02dc AE20AA97 STOU \$32,\$170,\$151
+ 191 02e0 AFB614F5 STOU \$182,\$20,245
+ 192 02e4 B020AA97 STSF \$32,\$170,\$151
+ 193 02e8 B1B614F5 STSF \$182,\$20,245
+ 194 02ec B97014CD SYNCD 112,\$20,205
+ 195 02f0 B87014E1 SYNCD 112,\$20,\$225
+ 196 02f4 B220AA97 STHT \$32,\$170,\$151
+ 197 02f8 B3B614F5 STHT \$182,\$20,245
+ 198 02fc BB7014CD PREST 112,\$20,205
+ 199 0300 BA7014E1 PREST 112,\$20,\$225
+ 200 0304 B420AA97 STCO 32,\$170,\$151
+ 201 0308 B5B614F5 STCO 182,\$20,245
+ 202 030c BD7014CD SYNCID 112,\$20,205
+ 203 0310 BC0014E1 SYNCID 0,\$20,\$225
+ 204 0314 B620AA97 STUNC \$32,\$170,\$151
+ 205 0318 B7B614F5 STUNC \$182,\$20,245
+ 206 031c BE20AA97 PUSHGO \$32,\$170,\$151
+ 207 0320 BFB614F5 PUSHGO \$182,\$20,245
+ 208 0324 C18EC800 SET \$142,\$200
+ 209 0328 C020AA97 OR \$32,\$170,\$151
+ 210 032c C1B614F5 OR \$182,\$20,245
+ 211 0330 C820AA97 AND \$32,\$170,\$151
+ 212 0334 C9B614F5 AND \$182,\$20,245
+ 213 0338 C220AA97 ORN \$32,\$170,\$151
+ 214 033c C3B614F5 ORN \$182,\$20,245
+ 215 0340 CA20AA97 ANDN \$32,\$170,\$151
+ 216 0344 CBB614F5 ANDN \$182,\$20,245
+ 217 0348 C420AA97 NOR \$32,\$170,\$151
+ 218 034c C5B614F5 NOR \$182,\$20,245
+ 219 0350 CC20AA97 NAND \$32,\$170,\$151
+ 220 0354 CDB614F5 NAND \$182,\$20,245
+ 221 0358 C620AA97 XOR \$32,\$170,\$151
+ 222 035c C7B614F5 XOR \$182,\$20,245
+ 223 0360 CE20AA97 NXOR \$32,\$170,\$151
+ 224 0364 CFB614F5 NXOR \$182,\$20,245
+ 225 0368 D020AA97 BDIF \$32,\$170,\$151
+ 226 036c D1B614F5 BDIF \$182,\$20,245
+ 227 0370 D820AA97 MUX \$32,\$170,\$151
+ 228 0374 D9B614F5 MUX \$182,\$20,245
+ GAS for MMIX .*/list-insns.s page 5
+
+
+ 229 0378 D220AA97 WDIF \$32,\$170,\$151
+ 230 037c D3B614F5 WDIF \$182,\$20,245
+ 231 0380 DA20AA97 SADD \$32,\$170,\$151
+ 232 0384 DBB600F5 SADD \$182,\$0,245
+ 233 0388 D420AA97 TDIF \$32,\$170,\$151
+ 234 038c D5B614F5 TDIF \$182,\$20,245
+ 235 0390 DC20AA97 MOR \$32,\$170,\$151
+ 236 0394 DDB614F5 MOR \$182,\$20,245
+ 237 0398 D620AA97 ODIF \$32,\$170,\$151
+ 238 039c D7B614F5 ODIF \$182,\$20,245
+ 239 03a0 DE201197 MXOR \$32,\$17,\$151
+ 240 03a4 DF52B418 MXOR \$82,\$180,24
+ 241 03a8 E004FFFF SETH \$4,65535
+ 242 03ac E05E0000 SETH \$94,0
+ 243 03b0 E00400FF SETH \$4,255
+ 244 03b4 E05E04D2 SETH \$94,1234
+ 245 03b8 E15E04D2 SETMH \$94,1234
+ 246 03bc E85E04D2 ORH \$94,1234
+ 247 03c0 E95E04D2 ORMH \$94,1234
+ 248 03c4 E25E04D2 SETML \$94,1234
+ 249 03c8 E35E04D2 SETL \$94,1234
+ 250 03cc EA5E04D2 ORML \$94,1234
+ 251 03d0 EB5E04D2 ORL \$94,1234
+ 252 03d4 E45E04D2 INCH \$94,1234
+ 253 03d8 E55E04D2 INCMH \$94,1234
+ 254 03dc EC5E04D2 ANDNH \$94,1234
+ 255 03e0 ED5E04D2 ANDNMH \$94,1234
+ 256 03e4 E65E04D2 INCML \$94,1234
+ 257 03e8 E75E04D2 INCL \$94,1234
+ 258 03ec EE5E04D2 ANDNML \$94,1234
+ 259 03f0 EF5E04D2 0H ANDNL \$94,1234
+ 260 03f4 F1FFFFFF JMP 0B
+ 261 03f8 F0000001 JMP 0F
+ 262 03fc F82AFFFE 0H POP 42,65534
+ 263 0400 F90000FF RESUME 255
+ 264 0404 F9000000 RESUME 0
+ 265 0408 F9000001 RESUME 1
+ 266 040c F2190001 1H PUSHJ \$25,2F
+ 267 0410 F319FFFF 2H PUSHJ \$25,1B
+ 268 0414 FA040000 SAVE \$4,0
+ 269 0418 FB0000EA UNSAVE 0,\$234
+ 270 041c F4190001 1H GETA \$25,2F
+ 271 0420 F519FFFF 2H GETA \$25,1B
+ 272 0424 FC7A1201 SYNC 8000001
+ 273 0428 FD010203 SWYM 1,2,3
+ 274 042c FD000000 SWYM 0,0,0
+ 275 0430 F7040022 PUT rJ,34
+ 276 0434 F6040086 PUT rJ,\$134
+ 277 0438 FEEA0004 GET \$234,rJ
+ 278 043c FF000000 TRIP 0,0,0
+ 279 0440 FF050607 TRIP 5,6,7
+ GAS for MMIX .*/list-insns.s page 6
+
+
+DEFINED SYMBOLS
+.*/list-insns.s:7 .text:0000000000000000 Main
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/list-insns.s b/gas/testsuite/gas/mmix/list-insns.s
new file mode 100644
index 0000000..aed7696
--- /dev/null
+++ b/gas/testsuite/gas/mmix/list-insns.s
@@ -0,0 +1,279 @@
+#
+# Somewhat complete instruction set and operand type check. No
+# relocations or deferred register definitions here.
+#
+#
+#
+Main TETRA 3
+ TRAP 3,4,5
+ FCMP $12,$23,$241
+ FLOT $112,ROUND_OFF,$41
+ FLOT $112,ROUND_NEAR,141
+ FLOT $191,$242
+ FLOT $195,42
+ FUN $122,$203,$4
+ FEQL $102,$30,$40
+ FLOTU $102,$14
+ FLOTU $132,ROUND_UP,$14
+ FLOTU $102,ROUND_DOWN,$104
+ FLOTU $172,ROUND_NEAR,$140
+ FLOTU $1,ROUND_OFF,$134
+ FADD $112,$223,$41
+ FIX $112,ROUND_OFF,$41
+ FIX $11,$141
+ SFLOT $112,ROUND_OFF,$41
+ SFLOT $112,ROUND_NEAR,141
+ FSUB $112,$223,$41
+ FIXU $102,$14
+ FIXU $132,ROUND_UP,$14
+ SFLOTU $11,$141
+ SFLOTU $112,141
+ SFLOTU $112,ROUND_NEAR,141
+ SFLOTU $112,ROUND_OFF,$41
+ FMUL $102,$30,$40
+ FCMPE $12,$223,$1
+ MUL $122,$203,44
+ MUL $102,$30,$40
+ FEQLE $12,$223,$1
+ FUNE $12,$223,$11
+ MULU $122,$213,44
+ MULU $132,$30,$40
+ FDIV $12,$223,$11
+ FSQRT $132,ROUND_UP,$14
+ FSQRT $11,$141
+ DIV $122,$213,44
+ DIV $132,$30,$40
+ FREM $12,$223,$11
+ FINT $132,ROUND_UP,$14
+ FINT $11,$141
+ DIVU $12,$223,$1
+ DIVU $122,$203,255
+ ADD $12,$223,$1
+ ADD $122,$203,255
+ 2ADDU $12,$223,$11
+ 2ADDU $122,$203,0
+ ADDU $122,$203,255
+ ADDU $12,$223,$11
+ LDA $122,$203,255
+ LDA $12,$223,$11
+ 4ADDU $122,$203,205
+ 4ADDU $12,$223,$111
+ SUB $12,$223,$11
+ SUB $122,$203,205
+ 8ADDU $12,$223,$11
+ 8ADDU $122,$203,205
+ SUBU $2,$223,$11
+ SUBU $12,$20,205
+ 16ADDU $2,$223,$11
+ 16ADDU $12,$20,205
+ CMP $2,$223,$11
+ CMP $12,$20,205
+ SL $2,$223,$11
+ SL $12,$20,205
+ CMPU $2,$223,$11
+ CMPU $12,$20,205
+ SLU $2,$223,$11
+ SLU $12,$20,205
+ NEG $2,23,$11
+ NEG $12,0,205
+ NEG $192,10,205
+ SR $12,$20,205
+ SR $2,$223,$11
+ NEGU $2,23,$11
+ NEGU $12,0,205
+ SRU $12,$20,205
+ SRU $2,$223,$11
+1H BN $2,2F
+2H BN $2,1B
+1H BNN $2,2B
+2H BNN $2,1B
+1H BZ $255,2F
+2H BZ $255,1B
+1H BNZ $255,2F
+2H BNZ $255,1B
+1H BP $25,2F
+2H BP $25,1B
+1H BNP $25,2F
+2H BNP $25,1B
+1H BOD $25,2F
+2H BOD $25,1B
+1H BEV $25,2F
+2H BEV $25,1B
+1H PBN $2,2F
+2H PBN $2,1B
+1H PBNN $2,2F
+2H PBNN $2,1B
+1H PBZ $12,2F
+2H PBZ $22,1B
+1H PBNZ $32,2F
+2H PBNZ $52,1B
+1H PBOD $25,2F
+2H PBOD $25,1B
+1H PBEV $25,2F
+2H PBEV $25,1B
+ CSN $2,$223,$11
+ CSN $12,$20,205
+ CSNN $2,$223,$11
+ CSNN $12,$20,205
+ CSZ $2,$203,$11
+ CSZ $12,$200,205
+ CSNZ $2,$203,$11
+ CSNZ $12,$200,205
+ CSP $2,$203,$11
+ CSP $12,$200,205
+ CSNP $2,$203,$11
+ CSNP $12,$200,205
+ CSOD $2,$203,$11
+ CSOD $12,$200,205
+ CSEV $2,$203,$11
+ CSEV $12,$200,205
+ ZSN $2,$223,$11
+ ZSN $12,$20,205
+ ZSNN $2,$223,$11
+ ZSNN $12,$20,205
+ ZSZ $2,$203,$11
+ ZSZ $12,$200,205
+ ZSNZ $2,$203,$11
+ ZSNZ $12,$200,205
+ ZSP $2,$203,$11
+ ZSP $12,$200,205
+ ZSNP $2,$203,$11
+ ZSNP $12,$200,205
+ ZSOD $2,$203,$11
+ ZSOD $12,$200,205
+ ZSEV $2,$203,$11
+ ZSEV $12,$200,205
+ LDB $2,$0,$11
+ LDB $12,$20,205
+ LDT $2,$0,$11
+ LDT $12,$20,205
+ LDBU $2,$0,$11
+ LDBU $12,$20,205
+ LDTU $2,$0,$11
+ LDTU $12,$20,205
+ LDW $2,$0,$11
+ LDW $12,$20,205
+ LDO $2,$0,$11
+ LDO $12,$20,205
+ LDWU $2,$0,$11
+ LDWU $12,$20,205
+ LDOU $2,$0,$11
+ LDOU $12,$20,205
+ LDVTS $2,$0,$11
+ LDVTS $12,$20,205
+ LDHT $2,$0,$11
+ LDHT $12,$20,205
+ PRELD 112,$20,205
+ PRELD 112,$20,$225
+ CSWAP $2,$0,$11
+ CSWAP $12,$20,205
+ PREGO 112,$20,205
+ PREGO 112,$20,$225
+ LDUNC $2,$0,$11
+ LDUNC $12,$20,205
+ GO $2,$0,$11
+ GO $12,$20,205
+ STB $2,$10,$151
+ STB $12,$20,205
+ STT $32,$10,$151
+ STT $12,$20,205
+ STBU $2,$10,$151
+ STBU $12,$20,205
+ STTU $32,$10,$151
+ STTU $12,$20,205
+ STW $2,$10,$151
+ STW $12,$220,205
+ STO $32,$170,$151
+ STO $182,$20,245
+ STWU $2,$10,$151
+ STWU $12,$220,205
+ STOU $32,$170,$151
+ STOU $182,$20,245
+ STSF $32,$170,$151
+ STSF $182,$20,245
+ SYNCD 112,$20,205
+ SYNCD 112,$20,$225
+ STHT $32,$170,$151
+ STHT $182,$20,245
+ PREST 112,$20,205
+ PREST 112,$20,$225
+ STCO 32,$170,$151
+ STCO 182,$20,245
+ SYNCID 112,$20,205
+ SYNCID 0,$20,$225
+ STUNC $32,$170,$151
+ STUNC $182,$20,245
+ PUSHGO $32,$170,$151
+ PUSHGO $182,$20,245
+ SET $142,$200
+ OR $32,$170,$151
+ OR $182,$20,245
+ AND $32,$170,$151
+ AND $182,$20,245
+ ORN $32,$170,$151
+ ORN $182,$20,245
+ ANDN $32,$170,$151
+ ANDN $182,$20,245
+ NOR $32,$170,$151
+ NOR $182,$20,245
+ NAND $32,$170,$151
+ NAND $182,$20,245
+ XOR $32,$170,$151
+ XOR $182,$20,245
+ NXOR $32,$170,$151
+ NXOR $182,$20,245
+ BDIF $32,$170,$151
+ BDIF $182,$20,245
+ MUX $32,$170,$151
+ MUX $182,$20,245
+ WDIF $32,$170,$151
+ WDIF $182,$20,245
+ SADD $32,$170,$151
+ SADD $182,$0,245
+ TDIF $32,$170,$151
+ TDIF $182,$20,245
+ MOR $32,$170,$151
+ MOR $182,$20,245
+ ODIF $32,$170,$151
+ ODIF $182,$20,245
+ MXOR $32,$17,$151
+ MXOR $82,$180,24
+ SETH $4,65535
+ SETH $94,0
+ SETH $4,255
+ SETH $94,1234
+ SETMH $94,1234
+ ORH $94,1234
+ ORMH $94,1234
+ SETML $94,1234
+ SETL $94,1234
+ ORML $94,1234
+ ORL $94,1234
+ INCH $94,1234
+ INCMH $94,1234
+ ANDNH $94,1234
+ ANDNMH $94,1234
+ INCML $94,1234
+ INCL $94,1234
+ ANDNML $94,1234
+0H ANDNL $94,1234
+ JMP 0B
+ JMP 0F
+0H POP 42,65534
+ RESUME 255
+ RESUME 0
+ RESUME 1
+1H PUSHJ $25,2F
+2H PUSHJ $25,1B
+ SAVE $4,0
+ UNSAVE 0,$234
+1H GETA $25,2F
+2H GETA $25,1B
+ SYNC 8000001
+ SWYM 1,2,3
+ SWYM 0,0,0
+ PUT rJ,34
+ PUT rJ,$134
+ GET $234,rJ
+ TRIP 0,0,0
+ TRIP 5,6,7
diff --git a/gas/testsuite/gas/mmix/list-pseudoints.l b/gas/testsuite/gas/mmix/list-pseudoints.l
new file mode 100644
index 0000000..07124cb
--- /dev/null
+++ b/gas/testsuite/gas/mmix/list-pseudoints.l
@@ -0,0 +1,20 @@
+GAS for MMIX .*/list-pseudoints.s page 1
+
+
+ 1 start
+ 2 0000 424344EE tetra 0x424344ee
+ 3 start2
+ 4 0004 00000000 octa 0xde0045007821329e
+ 4 DE004500
+ 4 7821329E
+ 5 0010 07D9 wyde 2009
+ 6 0012 99000000 byte 0x99
+ 6 0000
+ GAS for MMIX .*/list-pseudoints.s page 2
+
+
+DEFINED SYMBOLS
+.*/list-pseudoints.s:1 .text:0000000000000000 start
+.*/list-pseudoints.s:3 .text:0000000000000004 start2
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/list-pseudoints.s b/gas/testsuite/gas/mmix/list-pseudoints.s
new file mode 100644
index 0000000..b2b72b1
--- /dev/null
+++ b/gas/testsuite/gas/mmix/list-pseudoints.s
@@ -0,0 +1,6 @@
+start
+ tetra 0x424344ee
+start2
+ octa 0xde0045007821329e
+ wyde 2009
+ byte 0x99
diff --git a/gas/testsuite/gas/mmix/list-textfirst b/gas/testsuite/gas/mmix/list-textfirst
new file mode 100644
index 0000000..1168e93
--- /dev/null
+++ b/gas/testsuite/gas/mmix/list-textfirst
@@ -0,0 +1,5 @@
+ data
+here:
+ tetra 42
+.text
+ set $1,$2
diff --git a/gas/testsuite/gas/mmix/list-textfirst.l b/gas/testsuite/gas/mmix/list-textfirst.l
new file mode 100644
index 0000000..328aadc
--- /dev/null
+++ b/gas/testsuite/gas/mmix/list-textfirst.l
@@ -0,0 +1,17 @@
+GAS for MMIX .*/list-textfirst\.s page 1
+
+
+ 1 \.data
+ 2 here:
+ 3 0000 0000002A tetra 42
+ 4 \.text
+ 5 there:
+ 6 0000 EA \.byte 0xea
+ GAS for MMIX .*/list-textfirst\.s page 2
+
+
+DEFINED SYMBOLS
+.*/list-textfirst\.s:2 \.data:0000000000000000 here
+.*/list-textfirst\.s:5 \.text:0000000000000000 there
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/list-textfirst.s b/gas/testsuite/gas/mmix/list-textfirst.s
new file mode 100644
index 0000000..c1a3784
--- /dev/null
+++ b/gas/testsuite/gas/mmix/list-textfirst.s
@@ -0,0 +1,6 @@
+ .data
+here:
+ tetra 42
+.text
+there:
+ .byte 0xea
diff --git a/gas/testsuite/gas/mmix/loc-1.d b/gas/testsuite/gas/mmix/loc-1.d
new file mode 100644
index 0000000..2dd8670
--- /dev/null
+++ b/gas/testsuite/gas/mmix/loc-1.d
@@ -0,0 +1,45 @@
+#readelf: -Ssrx1 -x2
+
+There are 7 section headers, starting at offset 0x90:
+
+Section Headers:
+ \[Nr\] Name Type Address Offset
+ Size EntSize Flags Link Info Align
+ \[ 0\] NULL 0000000000000000 00000000
+ 0000000000000000 0000000000000000 0 0 0
+ \[ 1\] \.text PROGBITS 0000000000000000 00000040
+ 0000000000000020 0000000000000000 AX 0 0 4
+ \[ 2\] \.data PROGBITS 0000000000000000 00000060
+ 0000000000000004 0000000000000000 WA 0 0 4
+ \[ 3\] \.bss NOBITS 0000000000000000 00000064
+ 0000000000000000 0000000000000000 WA 0 0 1
+ \[ 4\] \.shstrtab STRTAB 0000000000000000 00000064
+ 000000000000002c 0000000000000000 0 0 1
+ \[ 5\] \.symtab SYMTAB 0000000000000000 00000250
+ 00000000000000c0 0000000000000018 6 6 8
+ \[ 6\] \.strtab STRTAB 0000000000000000 00000310
+ 000000000000002a 0000000000000000 0 0 1
+Key to Flags:
+ W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
+ I \(info\), L \(link order\), G \(group\), x \(unknown\)
+ O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
+
+There are no relocations in this file\.
+
+Symbol table '\.symtab' contains 8 entries:
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0+ 0 NOTYPE LOCAL DEFAULT UND
+ 1: 0+ 0 SECTION LOCAL DEFAULT 1
+ 2: 0+ 0 SECTION LOCAL DEFAULT 2
+ 3: 0+ 0 SECTION LOCAL DEFAULT 3
+ 4: 0+4 0 NOTYPE LOCAL DEFAULT 1 m2
+ 5: 2000000000000000 0 NOTYPE LOCAL DEFAULT ABS Data_Segment
+ 6: 0+ 0 FUNC GLOBAL DEFAULT 1 Main
+ 7: 2000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __\.MMIX\.start\.\.data
+
+Hex dump of section '\.text':
+ 0x00000000 fd000000 00000000 00000000 00000000 .*
+ 0x00000010 00000000 00000000 00000000 fd010203 .*
+
+Hex dump of section '\.data':
+ 0x00000000 00000004 .*
diff --git a/gas/testsuite/gas/mmix/loc-1.s b/gas/testsuite/gas/mmix/loc-1.s
new file mode 100644
index 0000000..09dc220
--- /dev/null
+++ b/gas/testsuite/gas/mmix/loc-1.s
@@ -0,0 +1,7 @@
+# Check that we don't get anything strange from a single LOC to data and a
+# LOC back (with an offset).
+Main SWYM 0,0,0
+m2 LOC Data_Segment
+ TETRA 4
+ LOC m2+24
+ SWYM 1,2,3
diff --git a/gas/testsuite/gas/mmix/loc-2.d b/gas/testsuite/gas/mmix/loc-2.d
new file mode 100644
index 0000000..0f90c05
--- /dev/null
+++ b/gas/testsuite/gas/mmix/loc-2.d
@@ -0,0 +1,39 @@
+#readelf: -Ssrx1
+
+There are 7 section headers, starting at offset 0x78:
+
+Section Headers:
+ \[Nr\] Name Type Address Offset
+ Size EntSize Flags Link Info Align
+ \[ 0\] NULL 0000000000000000 00000000
+ 0000000000000000 0000000000000000 0 0 0
+ \[ 1\] \.text PROGBITS 0000000000000000 00000040
+ 0000000000000008 0000000000000000 AX 0 0 4
+ \[ 2\] \.data PROGBITS 0000000000000000 00000048
+ 0000000000000000 0000000000000000 WA 0 0 1
+ \[ 3\] \.bss NOBITS 0000000000000000 00000048
+ 0000000000000000 0000000000000000 WA 0 0 1
+ \[ 4\] \.shstrtab STRTAB 0000000000000000 00000048
+ 000000000000002c 0000000000000000 0 0 1
+ \[ 5\] \.symtab SYMTAB 0000000000000000 00000238
+ 0000000000000090 0000000000000018 6 4 8
+ \[ 6\] \.strtab STRTAB 0000000000000000 000002c8
+ 000000000000001a 0000000000000000 0 0 1
+Key to Flags:
+ W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
+ I \(info\), L \(link order\), G \(group\), x \(unknown\)
+ O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
+
+There are no relocations in this file\.
+
+Symbol table '\.symtab' contains 6 entries:
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0+ 0 NOTYPE LOCAL DEFAULT UND
+ 1: 0+ 0 SECTION LOCAL DEFAULT 1
+ 2: 0+ 0 SECTION LOCAL DEFAULT 2
+ 3: 0+ 0 SECTION LOCAL DEFAULT 3
+ 4: 0+4 0 FUNC GLOBAL DEFAULT 1 Main
+ 5: 0+100 0 NOTYPE GLOBAL DEFAULT ABS __\.MMIX\.start\.\.text
+
+Hex dump of section '\.text':
+ 0x00000000 fd010102 fd000070 .*
diff --git a/gas/testsuite/gas/mmix/loc-2.s b/gas/testsuite/gas/mmix/loc-2.s
new file mode 100644
index 0000000..243eeab
--- /dev/null
+++ b/gas/testsuite/gas/mmix/loc-2.s
@@ -0,0 +1,5 @@
+# Check that a LOC before any code gets translated into the right
+# symbol being set.
+ LOC 256
+ SWYM 1,1,2
+Main SWYM 112
diff --git a/gas/testsuite/gas/mmix/loc-3.d b/gas/testsuite/gas/mmix/loc-3.d
new file mode 100644
index 0000000..fa62639
--- /dev/null
+++ b/gas/testsuite/gas/mmix/loc-3.d
@@ -0,0 +1,43 @@
+#readelf: -Ssrx1 -x2
+There are 7 section headers, starting at offset 0x80:
+
+Section Headers:
+ \[Nr\] Name Type Address Offset
+ Size EntSize Flags Link Info Align
+ \[ 0\] NULL 0000000000000000 00000000
+ 0000000000000000 0000000000000000 0 0 0
+ \[ 1\] \.text PROGBITS 0000000000000000 00000040
+ 000000000000000c 0000000000000000 AX 0 0 4
+ \[ 2\] \.data PROGBITS 0000000000000000 0000004c
+ 0000000000000008 0000000000000000 WA 0 0 4
+ \[ 3\] \.bss NOBITS 0000000000000000 00000054
+ 0000000000000000 0000000000000000 WA 0 0 1
+ \[ 4\] \.shstrtab STRTAB 0000000000000000 00000054
+ 000000000000002c 0000000000000000 0 0 1
+ \[ 5\] \.symtab SYMTAB 0000000000000000 00000240
+ 00000000000000c0 0000000000000018 6 5 8
+ \[ 6\] \.strtab STRTAB 0000000000000000 00000300
+ 0000000000000030 0000000000000000 0 0 1
+Key to Flags:
+ W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
+ I \(info\), L \(link order\), G \(group\), x \(unknown\)
+ O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
+
+There are no relocations in this file\.
+
+Symbol table '\.symtab' contains 8 entries:
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0+ 0 NOTYPE LOCAL DEFAULT UND
+ 1: 0+ 0 SECTION LOCAL DEFAULT 1
+ 2: 0+ 0 SECTION LOCAL DEFAULT 2
+ 3: 0+ 0 SECTION LOCAL DEFAULT 3
+ 4: 0+ 0 NOTYPE LOCAL DEFAULT 2 a
+ 5: 0+4 0 FUNC GLOBAL DEFAULT 1 Main
+ 6: 0+200 0 NOTYPE GLOBAL DEFAULT ABS __\.MMIX\.start\.\.text
+ 7: 2000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __\.MMIX\.start\.\.data
+
+Hex dump of section '\.text':
+ 0x00000000 fd00038f fd090101 fd000065 .*
+
+Hex dump of section '\.data':
+ 0x00000000 00000010 00000040 .*
diff --git a/gas/testsuite/gas/mmix/loc-3.s b/gas/testsuite/gas/mmix/loc-3.s
new file mode 100644
index 0000000..92943b9
--- /dev/null
+++ b/gas/testsuite/gas/mmix/loc-3.s
@@ -0,0 +1,14 @@
+# Check that a little bit of LOC:ing back and forward between code and
+# data section doesn't hurt.
+ LOC #20 << 56
+a TETRA 4*4
+
+ LOC #200
+ SWYM 911
+Main SWYM 9,1,1
+
+ LOC a+4
+ TETRA 8*8
+
+ LOC Main+4
+ SWYM 101
diff --git a/gas/testsuite/gas/mmix/loc-4.d b/gas/testsuite/gas/mmix/loc-4.d
new file mode 100644
index 0000000..6259f91
--- /dev/null
+++ b/gas/testsuite/gas/mmix/loc-4.d
@@ -0,0 +1,44 @@
+#readelf: -Ssrx1 -x2
+There are 7 section headers, starting at offset 0x88:
+
+Section Headers:
+ \[Nr\] Name Type Address Offset
+ Size EntSize Flags Link Info Align
+ \[ 0\] NULL 0000000000000000 00000000
+ 0000000000000000 0000000000000000 0 0 0
+ \[ 1\] \.text PROGBITS 0000000000000000 00000040
+ 0000000000000018 0000000000000000 AX 0 0 4
+ \[ 2\] \.data PROGBITS 0000000000000000 00000058
+ 0000000000000004 0000000000000000 WA 0 0 4
+ \[ 3\] \.bss NOBITS 0000000000000000 0000005c
+ 0000000000000000 0000000000000000 WA 0 0 1
+ \[ 4\] \.shstrtab STRTAB 0000000000000000 0000005c
+ 000000000000002c 0000000000000000 0 0 1
+ \[ 5\] \.symtab SYMTAB 0000000000000000 00000248
+ 00000000000000c0 0000000000000018 6 5 8
+ \[ 6\] \.strtab STRTAB 0000000000000000 00000308
+ 000000000000003b 0000000000000000 0 0 1
+Key to Flags:
+ W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
+ I \(info\), L \(link order\), G \(group\), x \(unknown\)
+ O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
+
+There are no relocations in this file\.
+
+Symbol table '\.symtab' contains 8 entries:
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0+ 0 NOTYPE LOCAL DEFAULT UND
+ 1: 0+ 0 SECTION LOCAL DEFAULT 1
+ 2: 0+ 0 SECTION LOCAL DEFAULT 2
+ 3: 0+ 0 SECTION LOCAL DEFAULT 3
+ 4: 2000000000000000 0 NOTYPE LOCAL DEFAULT ABS Data_Segment
+ 5: 0+14 0 FUNC GLOBAL DEFAULT 1 Main
+ 6: 0+ 0 NOTYPE GLOBAL DEFAULT ABS __\.MMIX\.start\.\.text
+ 7: 2000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __\.MMIX\.start\.\.data
+
+Hex dump of section '\.text':
+ 0x00000000 fd001807 00000000 00000000 00000000 .*
+ 0x00000010 fd00038f fd090101 .*
+
+Hex dump of section '\.data':
+ 0x00000000 00000100 .*
diff --git a/gas/testsuite/gas/mmix/loc-4.s b/gas/testsuite/gas/mmix/loc-4.s
new file mode 100644
index 0000000..7dbd332
--- /dev/null
+++ b/gas/testsuite/gas/mmix/loc-4.s
@@ -0,0 +1,8 @@
+# Hit a few remaining code-paths.
+ SWYM 0,24,7
+ LOC Data_Segment
+ TETRA 4*4*4*4
+
+ LOC #10
+ SWYM 911
+Main SWYM 9,1,1
diff --git a/gas/testsuite/gas/mmix/loc-5.d b/gas/testsuite/gas/mmix/loc-5.d
new file mode 100644
index 0000000..7f632f3
--- /dev/null
+++ b/gas/testsuite/gas/mmix/loc-5.d
@@ -0,0 +1,45 @@
+#readelf: -Ssrx1 -x2
+There are 7 section headers, starting at offset 0x98:
+
+Section Headers:
+ \[Nr\] Name Type Address Offset
+ Size EntSize Flags Link Info Align
+ \[ 0\] NULL 0+ 0+
+ 0+ 0+ 0 0 0
+ \[ 1\] \.text PROGBITS 0+ 0+40
+ 0+8 0+ AX 0 0 4
+ \[ 2\] \.data PROGBITS 0+ 0+48
+ 0+24 0+ WA 0 0 4
+ \[ 3\] \.bss NOBITS 0+ 0+6c
+ 0+ 0+ WA 0 0 1
+ \[ 4\] \.shstrtab STRTAB 0+ 0+6c
+ 0+2c 0+ 0 0 1
+ \[ 5\] \.symtab SYMTAB 0+ 0+258
+ 0+c0 0+18 6 6 8
+ \[ 6\] \.strtab STRTAB 0+ 0+318
+ 0+29 0+ 0 0 1
+Key to Flags:
+ W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
+ I \(info\), L \(link order\), G \(group\), x \(unknown\)
+ O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
+
+There are no relocations in this file\.
+
+Symbol table '\.symtab' contains 8 entries:
+ Num: Value Size Type Bind Vis Ndx Name
+ 0: 0+ 0 NOTYPE LOCAL DEFAULT UND
+ 1: 0+ 0 SECTION LOCAL DEFAULT 1
+ 2: 0+ 0 SECTION LOCAL DEFAULT 2
+ 3: 0+ 0 SECTION LOCAL DEFAULT 3
+ 4: 0+ 0 NOTYPE LOCAL DEFAULT 1 t
+ 5: 2000000000000000 0 NOTYPE LOCAL DEFAULT ABS Data_Segment
+ 6: 0+4 0 FUNC GLOBAL DEFAULT 1 Main
+ 7: 2000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __\.MMIX\.start\.\.data
+
+Hex dump of section '\.text':
+ 0x0+ fd001807 fd090101 .*
+
+Hex dump of section '\.data':
+ 0x0+ 00000100 00000000 00000000 00000000 .*
+ 0x00000010 00000000 00000000 00000000 00000000 .*
+ 0x00000020 00000038 .*
diff --git a/gas/testsuite/gas/mmix/loc-5.s b/gas/testsuite/gas/mmix/loc-5.s
new file mode 100644
index 0000000..a8ef214
--- /dev/null
+++ b/gas/testsuite/gas/mmix/loc-5.s
@@ -0,0 +1,11 @@
+# Hit a few remaining code-paths.
+t SWYM 0,24,7
+
+ LOC Data_Segment
+ TETRA 4*4*4*4
+
+ LOC (#20 << 56) + #20
+ TETRA 56
+
+ LOC t+4
+Main SWYM 9,1,1
diff --git a/gas/testsuite/gas/mmix/local-1.d b/gas/testsuite/gas/mmix/local-1.d
new file mode 100644
index 0000000..51418f6
--- /dev/null
+++ b/gas/testsuite/gas/mmix/local-1.d
@@ -0,0 +1,38 @@
+# objdump: -xsr
+
+.*: file format elf64-mmix
+.*
+architecture: mmix, flags 0x00000011:
+HAS_RELOC, HAS_SYMS
+start address 0x0000000000000000
+
+Sections:
+Idx Name Size VMA LMA File off Algn
+ 0 \.text 00000004 0000000000000000 0000000000000000 00000040 2\*\*2
+ CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
+ 1 \.data 00000000 0000000000000000 0000000000000000 00000044 2\*\*0
+ CONTENTS, ALLOC, LOAD, DATA
+ 2 \.bss 00000000 0000000000000000 0000000000000000 00000044 2\*\*0
+ ALLOC
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+90 l \*REG\* 0+ reghere
+0+2d l \*ABS\* 0+ consthere
+0+ \*UND\* 0+ extreg
+
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+ R_MMIX_LOCAL extreg
+0+ R_MMIX_LOCAL reghere
+0+ R_MMIX_LOCAL consthere
+0+ R_MMIX_LOCAL \*ABS\*\+0x0000000000000064
+0+ R_MMIX_LOCAL \*ABS\*\+0x00000000000000c8
+
+
+Contents of section \.text:
+ 0000 fd000000 .*
+
+Contents of section \.data:
diff --git a/gas/testsuite/gas/mmix/local-1.s b/gas/testsuite/gas/mmix/local-1.s
new file mode 100644
index 0000000..f65bbc1
--- /dev/null
+++ b/gas/testsuite/gas/mmix/local-1.s
@@ -0,0 +1,12 @@
+ LOCAL extreg
+ LOCAL reghere
+ LOCAL consthere
+ LOCAL 100
+ LOCAL $200
+
+reghere IS $144
+consthere IS 45
+
+ # Restrictions on the implementation means we have to have the LOCAL in
+ # code or data.
+ SWYM 0,0,0
diff --git a/gas/testsuite/gas/mmix/locall1.d b/gas/testsuite/gas/mmix/locall1.d
new file mode 100644
index 0000000..0921e63
--- /dev/null
+++ b/gas/testsuite/gas/mmix/locall1.d
@@ -0,0 +1,15 @@
+# objdump: -t
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+14 l \.text 0+ L9
+0+18 l \.text 0+ L12
+0+1c l \.text 0+ L21
+0+20 l \.text 0+ LC32
+0+24 l \.text 0+ LC23
+0+8 g \.text 0+ L:21
+0+10 g \.text 0+ LC:23
diff --git a/gas/testsuite/gas/mmix/locall1.s b/gas/testsuite/gas/mmix/locall1.s
new file mode 100644
index 0000000..9550bd1
--- /dev/null
+++ b/gas/testsuite/gas/mmix/locall1.s
@@ -0,0 +1,14 @@
+% Get rid of labels that look compiler-generated, matching: "L.*:[0-9]+".
+% Only if they're local, of course.
+ .global L:21
+ .global LC:23
+L:9 SWYM 0
+L:12 SWYM 1
+L:21 SWYM 2
+LC:32 SWYM 3
+LC:23 SWYM 4
+L9 SWYM 10
+L12 SWYM 11
+L21 SWYM 12
+LC32 SWYM 13
+LC23 SWYM 14
diff --git a/gas/testsuite/gas/mmix/mmix-err.exp b/gas/testsuite/gas/mmix/mmix-err.exp
new file mode 100644
index 0000000..b9c8371
--- /dev/null
+++ b/gas/testsuite/gas/mmix/mmix-err.exp
@@ -0,0 +1,30 @@
+# Copyright (C) 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+if { ! [istarget "mmix-*"] } {
+ return
+}
+
+proc run_mmix_err_tests { } {
+ global srcdir subdir runtests
+
+ load_lib gas-dg.exp
+ dg-init
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/err-*.s]] "" ""
+ dg-finish
+}
+
+run_mmix_err_tests
diff --git a/gas/testsuite/gas/mmix/mmix-list.exp b/gas/testsuite/gas/mmix/mmix-list.exp
new file mode 100644
index 0000000..6f62ceb
--- /dev/null
+++ b/gas/testsuite/gas/mmix/mmix-list.exp
@@ -0,0 +1,48 @@
+# Copyright (C) 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+if { ! [istarget "mmix-*"] } {
+ return
+}
+
+proc run_list_test { name opts } {
+ global srcdir subdir runtests
+
+ if ![runtest_file_p $runtests $name] then {
+ return
+ }
+
+ set testname "mmix list $name"
+ set file $srcdir/$subdir/$name
+ gas_run ${name}.s $opts ">&dump.out"
+ if { [regexp_diff "dump.out" "${file}.l"] } then {
+ fail $testname
+ verbose "output is [file_contents "dump.out"]" 2
+ return
+ }
+ pass $testname
+}
+
+proc run_mmix_list_tests { } {
+ global srcdir subdir runtests
+ foreach test_name [lsort [find ${srcdir}/${subdir} *.l]] {
+ # Keep basename.
+ regsub -all ".*/\(\[^\.\]*\)\.l$" $test_name "\\1" test_name
+ run_list_test $test_name "-a -x"
+ }
+}
+
+run_mmix_list_tests
diff --git a/gas/testsuite/gas/mmix/mmix.exp b/gas/testsuite/gas/mmix/mmix.exp
new file mode 100644
index 0000000..139b895
--- /dev/null
+++ b/gas/testsuite/gas/mmix/mmix.exp
@@ -0,0 +1,38 @@
+# Copyright (C) 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+if { ! [istarget "mmix-*"] } {
+ return
+}
+
+proc run_mmix_tests { } {
+ global srcdir subdir runtests
+ foreach test_name [lsort [find ${srcdir}/${subdir} *.d]] {
+ # Keep basename.
+ regsub -all ".*/\(\[^\.\]*\)\.d$" $test_name "\\1" test_name
+
+ run_dump_test $test_name
+ }
+
+ # FIXME: more tests needed.
+ # BFD_RELOC_MMIX_REG_OR_BYTE with symbol-difference with
+ # relaxable thing in between.
+ #
+ # Other normal reloc with symbol-difference with
+ # relaxable thing in between.
+}
+
+run_mmix_tests
diff --git a/gas/testsuite/gas/mmix/odd-1.d b/gas/testsuite/gas/mmix/odd-1.d
new file mode 100644
index 0000000..0162e1d
--- /dev/null
+++ b/gas/testsuite/gas/mmix/odd-1.d
@@ -0,0 +1,28 @@
+#objdump: -str
+
+# A few odd mmixal compatibility cases.
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l \.MMIX\.reg_contents 0+ small
+0+ l d \.MMIX\.reg_contents 0+
+0+ g F \.text 0+ Main
+
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+7 R_MMIX_REG_OR_BYTE \.MMIX\.reg_contents
+0+f R_MMIX_REG \.MMIX\.reg_contents
+0+15 R_MMIX_REG \.MMIX\.reg_contents
+0+19 R_MMIX_REG \.MMIX\.reg_contents
+
+Contents of section \.text:
+ 0000 f9000000 ff016400 fb0000ff fb000000 .*
+ 0010 00000001 33000408 c1000200 0004022a .*
+Contents of section \.data:
+Contents of section \.MMIX\.reg_contents:
+ 0000 00000000 00000abc .*
diff --git a/gas/testsuite/gas/mmix/odd-1.s b/gas/testsuite/gas/mmix/odd-1.s
new file mode 100644
index 0000000..9a0a81f
--- /dev/null
+++ b/gas/testsuite/gas/mmix/odd-1.s
@@ -0,0 +1,9 @@
+small GREG #abc
+Main RESUME
+ TRIP 1,$100,small
+ UNSAVE $255
+ UNSAVE small
+ TRAP 0,$1
+ CMPU small,$4,rC
+ SET small,$2
+ BYTE 0,4,rE,#2a
diff --git a/gas/testsuite/gas/mmix/op-0-1.d b/gas/testsuite/gas/mmix/op-0-1.d
new file mode 100644
index 0000000..56c51e8
--- /dev/null
+++ b/gas/testsuite/gas/mmix/op-0-1.d
@@ -0,0 +1,28 @@
+#objdump: -srt
+#as: -x
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l \*ABS\* 0+ zero0
+0+ l \*ABS\* 0+ zero1
+0+ l \*ABS\* 0+ zero2
+0+ g F \.text 0+ Main
+
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+ R_MMIX_JMP \*ABS\*
+0+14 R_MMIX_GETA \*ABS\*
+0+24 R_MMIX_PUSHJ \*ABS\*
+
+
+Contents of section \.text:
+ 0000 f0000000 fd000000 fd000000 fd000000 .*
+ 0010 fd000000 f4070000 fd000000 fd000000 .*
+ 0020 fd000000 f2080000 fd000000 fd000000 .*
+ 0030 fd000000 fd000000 .*
+Contents of section \.data:
diff --git a/gas/testsuite/gas/mmix/op-0-1.s b/gas/testsuite/gas/mmix/op-0-1.s
new file mode 100644
index 0000000..84f42a1
--- /dev/null
+++ b/gas/testsuite/gas/mmix/op-0-1.s
@@ -0,0 +1,8 @@
+zero0 IS 0
+zero1 IS 0
+zero2 IS 0
+Main JMP zero0
+ GETA $7,zero1
+ PUSHJ $8,zero2
+
+
diff --git a/gas/testsuite/gas/mmix/op-0-2.d b/gas/testsuite/gas/mmix/op-0-2.d
new file mode 100644
index 0000000..4a3c668
--- /dev/null
+++ b/gas/testsuite/gas/mmix/op-0-2.d
@@ -0,0 +1,26 @@
+#source: op-0-1.s
+#as: -no-expand
+#objdump: -srt
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l \*ABS\* 0+ zero0
+0+ l \*ABS\* 0+ zero1
+0+ l \*ABS\* 0+ zero2
+0+ g F \.text 0+ Main
+
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+ R_MMIX_ADDR27 \*ABS\*
+0+4 R_MMIX_ADDR19 \*ABS\*
+0+8 R_MMIX_ADDR19 \*ABS\*
+
+
+Contents of section \.text:
+ 0000 f0000000 f4070000 f2080000 .*
+Contents of section \.data:
diff --git a/gas/testsuite/gas/mmix/pop-op-r.d b/gas/testsuite/gas/mmix/pop-op-r.d
new file mode 100644
index 0000000..390f29d
--- /dev/null
+++ b/gas/testsuite/gas/mmix/pop-op-r.d
@@ -0,0 +1,12 @@
+# objdump: -dr
+# as: -linkrelax
+# source: pop-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f8840def pop 132,3567
+ 4: f8845678 pop 132,22136
+ 8: f8170def pop 23,3567
+ c: f8175678 pop 23,22136
diff --git a/gas/testsuite/gas/mmix/pop-op.d b/gas/testsuite/gas/mmix/pop-op.d
new file mode 100644
index 0000000..3018fdf
--- /dev/null
+++ b/gas/testsuite/gas/mmix/pop-op.d
@@ -0,0 +1,10 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f8840def pop 132,3567
+ 4: f8845678 pop 132,22136
+ 8: f8170def pop 23,3567
+ c: f8175678 pop 23,22136
diff --git a/gas/testsuite/gas/mmix/pop-op.l b/gas/testsuite/gas/mmix/pop-op.l
new file mode 100644
index 0000000..a600df1
--- /dev/null
+++ b/gas/testsuite/gas/mmix/pop-op.l
@@ -0,0 +1,21 @@
+GAS for MMIX .*/pop-op\.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 0000 F8840DEF Main POP 132,3567
+ 4 0004 F8845678 POP 132,YZ
+ 5 0008 F8170DEF POP X,3567
+ 6 000c F8175678 POP X,YZ
+ 7 X IS 23
+ 8 YZ IS #5678
+ 9
+ GAS for MMIX .*/pop-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/pop-op\.s:3 \.text:0000000000000000 Main
+ \*ABS\*:0000000000005678 YZ
+ \*ABS\*:0000000000000017 X
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/pop-op.s b/gas/testsuite/gas/mmix/pop-op.s
new file mode 100644
index 0000000..e781aed
--- /dev/null
+++ b/gas/testsuite/gas/mmix/pop-op.s
@@ -0,0 +1,9 @@
+# Check different type of operands to SWYM etc.
+# No need to check the canonical three constants.
+Main POP 132,3567
+ POP 132,YZ
+ POP X,3567
+ POP X,YZ
+X IS 23
+YZ IS #5678
+
diff --git a/gas/testsuite/gas/mmix/prefix1.d b/gas/testsuite/gas/mmix/prefix1.d
new file mode 100644
index 0000000..e82d60f
--- /dev/null
+++ b/gas/testsuite/gas/mmix/prefix1.d
@@ -0,0 +1,38 @@
+# objdump: -rt
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ l \.text 0+ a
+0+4 l \.text 0+ c
+0+24 l \.text 0+ d
+0+8 l \.text 0+ prea
+0+c l \.text 0+ pre:c
+0+10 l \.text 0+ prefixa
+0+14 l \.text 0+ pre:fix:c
+0+18 l \.text 0+ aprefixa
+0+1c l \.text 0+ aprefix:c
+0+20 l \.text 0+ a0
+0+ \*UND\* 0+ b
+0+ \*UND\* 0+ preb
+0+ \*UND\* 0+ pre:d
+0+ \*UND\* 0+ prefixb
+0+ \*UND\* 0+ pre:fix:d
+0+ \*UND\* 0+ aprefixb
+0+ \*UND\* 0+ aprefix:d
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+ R_MMIX_32 b
+0+4 R_MMIX_32 \.text\+0x0+24
+0+8 R_MMIX_32 preb
+0+c R_MMIX_32 pre:d
+0+10 R_MMIX_32 prefixb
+0+14 R_MMIX_32 pre:fix:d
+0+18 R_MMIX_32 aprefixb
+0+1c R_MMIX_32 aprefix:d
+0+20 R_MMIX_32 \.text
+0+24 R_MMIX_32 \.text\+0x0+4
diff --git a/gas/testsuite/gas/mmix/prefix1.s b/gas/testsuite/gas/mmix/prefix1.s
new file mode 100644
index 0000000..b975e86
--- /dev/null
+++ b/gas/testsuite/gas/mmix/prefix1.s
@@ -0,0 +1,21 @@
+# Use of PREFIX; sanity check only.
+ .text
+a TETRA b
+:c TETRA :d
+
+ PREFIX pre
+a TETRA b
+:pre:c TETRA :pre:d
+
+ PREFIX fix
+a TETRA b
+:pre:fix:c TETRA :pre:fix:d
+
+ PREFIX :aprefix
+a TETRA b
+:aprefix:c TETRA :aprefix:d
+
+ PREFIX :
+a0 TETRA a
+d TETRA c
+
diff --git a/gas/testsuite/gas/mmix/prefix2.d b/gas/testsuite/gas/mmix/prefix2.d
new file mode 100644
index 0000000..818761b
--- /dev/null
+++ b/gas/testsuite/gas/mmix/prefix2.d
@@ -0,0 +1,15 @@
+# objdump: -dtr
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ g F \.text 0+ Main
+
+
+Disassembly of section \.text:
+
+0+ <Main>:
+ 0: 220116e9 addu \$1,\$22,\$233
diff --git a/gas/testsuite/gas/mmix/prefix2.s b/gas/testsuite/gas/mmix/prefix2.s
new file mode 100644
index 0000000..1c914d7
--- /dev/null
+++ b/gas/testsuite/gas/mmix/prefix2.s
@@ -0,0 +1,3 @@
+# Prefix must not interfere with register names.
+ PREFIX pre
+:Main ADDU $1,$22,$233
diff --git a/gas/testsuite/gas/mmix/prefix3.d b/gas/testsuite/gas/mmix/prefix3.d
new file mode 100644
index 0000000..ecd7538
--- /dev/null
+++ b/gas/testsuite/gas/mmix/prefix3.d
@@ -0,0 +1,32 @@
+#objdump: -str
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+8 l \.text 0+ someplace
+0+ l \.text 0+ bc:h
+0+8 l \.MMIX\.reg_contents 0+ a1
+0+ l \.MMIX\.reg_contents 0+ ba2
+0+ l d \.MMIX\.reg_contents 0+
+0+4 g F \.text 0+ Main
+
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET TYPE VALUE
+0+2 R_MMIX_REG \.MMIX\.reg_contents\+0x0+8
+0+6 R_MMIX_REG \.MMIX\.reg_contents
+
+
+RELOCATION RECORDS FOR \[\.MMIX\.reg_contents\]:
+OFFSET TYPE VALUE
+0+8 R_MMIX_64 \.text\+0x0+8
+
+
+Contents of section \.text:
+ 0000 81ff0000 81fe0000 .*
+Contents of section \.data:
+Contents of section \.MMIX\.reg_contents:
+ 0000 00000000 0008aa52 00000000 00000000 .*
diff --git a/gas/testsuite/gas/mmix/prefix3.s b/gas/testsuite/gas/mmix/prefix3.s
new file mode 100644
index 0000000..b597dad
--- /dev/null
+++ b/gas/testsuite/gas/mmix/prefix3.s
@@ -0,0 +1,9 @@
+% Check that changing prefixes between the GREG definition, its use and
+% the end of the assembly file does not change the GREG definition.
+a1 GREG someplace
+ PREFIX b
+a2 GREG 567890
+ PREFIX c:
+h LDB $255,:a1
+:Main LDB $254,:ba2
+:someplace IS @
diff --git a/gas/testsuite/gas/mmix/pseudo-1.d b/gas/testsuite/gas/mmix/pseudo-1.d
new file mode 100644
index 0000000..293e2d9
--- /dev/null
+++ b/gas/testsuite/gas/mmix/pseudo-1.d
@@ -0,0 +1,16 @@
+#objdump: -str
+
+# Check that some pseudos get output right.
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ g F \.text 0+ Main
+
+Contents of section \.text:
+ 0000 00000020 00000020 00000020 00000020 .*
+ 0010 0000000a 00000000 .*
+Contents of section \.data:
diff --git a/gas/testsuite/gas/mmix/pseudo-1.s b/gas/testsuite/gas/mmix/pseudo-1.s
new file mode 100644
index 0000000..dd74f36
--- /dev/null
+++ b/gas/testsuite/gas/mmix/pseudo-1.s
@@ -0,0 +1 @@
+Main TETRA " ",#a,0
diff --git a/gas/testsuite/gas/mmix/pushgo-op-r.d b/gas/testsuite/gas/mmix/pushgo-op-r.d
new file mode 100644
index 0000000..d326ba4
--- /dev/null
+++ b/gas/testsuite/gas/mmix/pushgo-op-r.d
@@ -0,0 +1,64 @@
+# objdump: -dr
+# as: -linkrelax
+# source: pushgo-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: be170c43 pushgo \$23,\$12,\$67
+ 4: becb0c43 pushgo \$203,\$12,\$67
+ 8: be200c43 pushgo \$32,\$12,\$67
+ c: be200c43 pushgo \$32,\$12,\$67
+ 10: be172043 pushgo \$23,\$32,\$67
+ 14: becb2043 pushgo \$203,\$32,\$67
+ 18: bee88543 pushgo \$232,\$133,\$67
+ 1c: bee88543 pushgo \$232,\$133,\$67
+ 20: be170c49 pushgo \$23,\$12,\$73
+ 24: becb0c49 pushgo \$203,\$12,\$73
+ 28: be1f0ce9 pushgo \$31,\$12,\$233
+ 2c: be1f0ce9 pushgo \$31,\$12,\$233
+ 30: be1726d4 pushgo \$23,\$38,\$212
+ 34: becb26d4 pushgo \$203,\$38,\$212
+ 38: be04afb5 pushgo \$4,\$175,\$181
+ 3c: be04afb5 pushgo \$4,\$175,\$181
+ 40: bf170cb0 pushgo \$23,\$12,176
+ 44: bfcb0cb0 pushgo \$203,\$12,176
+ 48: bf200cb0 pushgo \$32,\$12,176
+ 4c: bf200cb0 pushgo \$32,\$12,176
+ 50: bf1720b0 pushgo \$23,\$32,176
+ 54: bfcb20b0 pushgo \$203,\$32,176
+ 58: bfe885b0 pushgo \$232,\$133,176
+ 5c: bfe885b0 pushgo \$232,\$133,176
+ 60: bf170ccb pushgo \$23,\$12,203
+ 64: bfcb0ccb pushgo \$203,\$12,203
+ 68: bf1f0cd5 pushgo \$31,\$12,213
+ 6c: bf1f0cd5 pushgo \$31,\$12,213
+ 70: bf1726d3 pushgo \$23,\$38,211
+ 74: bfcb26d3 pushgo \$203,\$38,211
+ 78: bf04afa1 pushgo \$4,\$175,161
+ 7c: bf04afa1 pushgo \$4,\$175,161
+ 80: bf170c00 pushgo \$23,\$12,0
+ 84: bfcb0c00 pushgo \$203,\$12,0
+ 88: bf290c00 pushgo \$41,\$12,0
+ 8c: bff10c00 pushgo \$241,\$12,0
+ 90: bf171b00 pushgo \$23,\$27,0
+ 94: bfcb3000 pushgo \$203,\$48,0
+ 98: bfdfdb00 pushgo \$223,\$219,0
+ 9c: bfdfe500 pushgo \$223,\$229,0
+ a0: bf170c00 pushgo \$23,\$12,0
+ a4: bfcb0c00 pushgo \$203,\$12,0
+ a8: bf200c00 pushgo \$32,\$12,0
+ ac: bf200c00 pushgo \$32,\$12,0
+ b0: bf172000 pushgo \$23,\$32,0
+ b4: bfcb2000 pushgo \$203,\$32,0
+ b8: bfe88500 pushgo \$232,\$133,0
+ bc: bfe88500 pushgo \$232,\$133,0
+ c0: bf170c00 pushgo \$23,\$12,0
+ c4: bfcb0c00 pushgo \$203,\$12,0
+ c8: bf1f0c00 pushgo \$31,\$12,0
+ cc: bf1f0c00 pushgo \$31,\$12,0
+ d0: bf172600 pushgo \$23,\$38,0
+ d4: bfcb2600 pushgo \$203,\$38,0
+ d8: bf04af00 pushgo \$4,\$175,0
+ dc: bf04af00 pushgo \$4,\$175,0
diff --git a/gas/testsuite/gas/mmix/pushgo-op.d b/gas/testsuite/gas/mmix/pushgo-op.d
new file mode 100644
index 0000000..ae3266d
--- /dev/null
+++ b/gas/testsuite/gas/mmix/pushgo-op.d
@@ -0,0 +1,62 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: be170c43 pushgo \$23,\$12,\$67
+ 4: becb0c43 pushgo \$203,\$12,\$67
+ 8: be200c43 pushgo \$32,\$12,\$67
+ c: be200c43 pushgo \$32,\$12,\$67
+ 10: be172043 pushgo \$23,\$32,\$67
+ 14: becb2043 pushgo \$203,\$32,\$67
+ 18: bee88543 pushgo \$232,\$133,\$67
+ 1c: bee88543 pushgo \$232,\$133,\$67
+ 20: be170c49 pushgo \$23,\$12,\$73
+ 24: becb0c49 pushgo \$203,\$12,\$73
+ 28: be1f0ce9 pushgo \$31,\$12,\$233
+ 2c: be1f0ce9 pushgo \$31,\$12,\$233
+ 30: be1726d4 pushgo \$23,\$38,\$212
+ 34: becb26d4 pushgo \$203,\$38,\$212
+ 38: be04afb5 pushgo \$4,\$175,\$181
+ 3c: be04afb5 pushgo \$4,\$175,\$181
+ 40: bf170cb0 pushgo \$23,\$12,176
+ 44: bfcb0cb0 pushgo \$203,\$12,176
+ 48: bf200cb0 pushgo \$32,\$12,176
+ 4c: bf200cb0 pushgo \$32,\$12,176
+ 50: bf1720b0 pushgo \$23,\$32,176
+ 54: bfcb20b0 pushgo \$203,\$32,176
+ 58: bfe885b0 pushgo \$232,\$133,176
+ 5c: bfe885b0 pushgo \$232,\$133,176
+ 60: bf170ccb pushgo \$23,\$12,203
+ 64: bfcb0ccb pushgo \$203,\$12,203
+ 68: bf1f0cd5 pushgo \$31,\$12,213
+ 6c: bf1f0cd5 pushgo \$31,\$12,213
+ 70: bf1726d3 pushgo \$23,\$38,211
+ 74: bfcb26d3 pushgo \$203,\$38,211
+ 78: bf04afa1 pushgo \$4,\$175,161
+ 7c: bf04afa1 pushgo \$4,\$175,161
+ 80: bf170c00 pushgo \$23,\$12,0
+ 84: bfcb0c00 pushgo \$203,\$12,0
+ 88: bf290c00 pushgo \$41,\$12,0
+ 8c: bff10c00 pushgo \$241,\$12,0
+ 90: bf171b00 pushgo \$23,\$27,0
+ 94: bfcb3000 pushgo \$203,\$48,0
+ 98: bfdfdb00 pushgo \$223,\$219,0
+ 9c: bfdfe500 pushgo \$223,\$229,0
+ a0: bf170c00 pushgo \$23,\$12,0
+ a4: bfcb0c00 pushgo \$203,\$12,0
+ a8: bf200c00 pushgo \$32,\$12,0
+ ac: bf200c00 pushgo \$32,\$12,0
+ b0: bf172000 pushgo \$23,\$32,0
+ b4: bfcb2000 pushgo \$203,\$32,0
+ b8: bfe88500 pushgo \$232,\$133,0
+ bc: bfe88500 pushgo \$232,\$133,0
+ c0: bf170c00 pushgo \$23,\$12,0
+ c4: bfcb0c00 pushgo \$203,\$12,0
+ c8: bf1f0c00 pushgo \$31,\$12,0
+ cc: bf1f0c00 pushgo \$31,\$12,0
+ d0: bf172600 pushgo \$23,\$38,0
+ d4: bfcb2600 pushgo \$203,\$38,0
+ d8: bf04af00 pushgo \$4,\$175,0
+ dc: bf04af00 pushgo \$4,\$175,0
diff --git a/gas/testsuite/gas/mmix/pushgo-op.l b/gas/testsuite/gas/mmix/pushgo-op.l
new file mode 100644
index 0000000..511a807
--- /dev/null
+++ b/gas/testsuite/gas/mmix/pushgo-op.l
@@ -0,0 +1,87 @@
+GAS for MMIX .*/pushgo-op\.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 0000 BE170C43 Main PUSHGO X,Y,Z
+ 4 0004 BECB0C43 PUSHGO XC,Y,Z
+ 5 0008 BE200C43 PUSHGO \$32,Y,Z
+ 6 000c BE200C43 PUSHGO 32,Y,Z
+ 7 0010 BE172043 PUSHGO X,\$32,Z
+ 8 0014 BECB2043 PUSHGO XC,\$32,Z
+ 9 0018 BEE88543 PUSHGO \$232,\$133,Z
+ 10 001c BEE88543 PUSHGO 232,\$133,Z
+ 11 0020 BE170C49 PUSHGO X,Y,\$73
+ 12 0024 BECB0C49 PUSHGO XC,Y,\$73
+ 13 0028 BE1F0CE9 PUSHGO \$31,Y,\$233
+ 14 002c BE1F0CE9 PUSHGO 31,Y,\$233
+ 15 0030 BE1726D4 PUSHGO X,\$38,\$212
+ 16 0034 BECB26D4 PUSHGO XC,\$38,\$212
+ 17 0038 BE04AFB5 PUSHGO \$4,\$175,\$181
+ 18 003c BE04AFB5 PUSHGO 4,\$175,\$181
+ 19
+ 20 0040 BF170CB0 PUSHGO X,Y,Z0
+ 21 0044 BFCB0CB0 PUSHGO XC,Y,Z0
+ 22 0048 BF200CB0 PUSHGO \$32,Y,Z0
+ 23 004c BF200CB0 PUSHGO 32,Y,Z0
+ 24 0050 BF1720B0 PUSHGO X,\$32,Z0
+ 25 0054 BFCB20B0 PUSHGO XC,\$32,Z0
+ 26 0058 BFE885B0 PUSHGO \$232,\$133,Z0
+ 27 005c BFE885B0 PUSHGO 232,\$133,Z0
+ 28 0060 BF170CCB PUSHGO X,Y,203
+ 29 0064 BFCB0CCB PUSHGO XC,Y,203
+ 30 0068 BF1F0CD5 PUSHGO \$31,Y,213
+ 31 006c BF1F0CD5 PUSHGO 31,Y,213
+ 32 0070 BF1726D3 PUSHGO X,\$38,211
+ 33 0074 BFCB26D3 PUSHGO XC,\$38,211
+ 34 0078 BF04AFA1 PUSHGO \$4,\$175,161
+ 35 007c BF04AFA1 PUSHGO 4,\$175,161
+ 36
+ 37 0080 BF170C00 PUSHGO X,Y
+ 38 0084 BFCB0C00 PUSHGO XC,Y
+ 39
+ 40 0088 BF290C00 PUSHGO \$41,Y
+ 41 008c BFF10C00 PUSHGO 241,Y
+ 42
+ 43 0090 BF171B00 PUSHGO X,\$27
+ 44 0094 BFCB3000 PUSHGO XC,\$48
+ 45
+ 46 0098 BFDFDB00 PUSHGO \$223,\$219
+ 47 009c BFDFE500 PUSHGO 223,\$229
+ 48
+ 49 00a0 BF170C00 PUSHGO X,Y,0
+ 50 00a4 BFCB0C00 PUSHGO XC,Y,0
+ 51 00a8 BF200C00 PUSHGO \$32,Y,0
+ 52 00ac BF200C00 PUSHGO 32,Y,0
+ 53 00b0 BF172000 PUSHGO X,\$32,0
+ 54 00b4 BFCB2000 PUSHGO XC,\$32,0
+ 55 00b8 BFE88500 PUSHGO \$232,\$133,0
+ 56 00bc BFE88500 PUSHGO 232,\$133,0
+ 57 00c0 BF170C00 PUSHGO X,Y,0
+ GAS for MMIX .*/pushgo-op\.s page 2
+
+
+ 58 00c4 BFCB0C00 PUSHGO XC,Y,0
+ 59 00c8 BF1F0C00 PUSHGO \$31,Y,0
+ 60 00cc BF1F0C00 PUSHGO 31,Y,0
+ 61 00d0 BF172600 PUSHGO X,\$38,0
+ 62 00d4 BFCB2600 PUSHGO XC,\$38,0
+ 63 00d8 BF04AF00 PUSHGO \$4,\$175,0
+ 64 00dc BF04AF00 PUSHGO 4,\$175,0
+ 65 X IS \$23
+ 66 XC IS 203
+ 67 Y IS \$12
+ 68 Z IS \$67
+ 69 Z0 IS 176
+ GAS for MMIX .*/pushgo-op\.s page 3
+
+
+DEFINED SYMBOLS
+.*/pushgo-op\.s:3 \.text:0000000000000000 Main
+ \*REG\*:0000000000000017 X
+ \*REG\*:000000000000000c Y
+ \*REG\*:0000000000000043 Z
+ \*ABS\*:00000000000000cb XC
+ \*ABS\*:00000000000000b0 Z0
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/pushgo-op.s b/gas/testsuite/gas/mmix/pushgo-op.s
new file mode 100644
index 0000000..54ff0a8
--- /dev/null
+++ b/gas/testsuite/gas/mmix/pushgo-op.s
@@ -0,0 +1,69 @@
+# PUSHGO. Like T, but $X can be expressed as a constant.
+# Using regt-op as a template caused this to go out of control.
+Main PUSHGO X,Y,Z
+ PUSHGO XC,Y,Z
+ PUSHGO $32,Y,Z
+ PUSHGO 32,Y,Z
+ PUSHGO X,$32,Z
+ PUSHGO XC,$32,Z
+ PUSHGO $232,$133,Z
+ PUSHGO 232,$133,Z
+ PUSHGO X,Y,$73
+ PUSHGO XC,Y,$73
+ PUSHGO $31,Y,$233
+ PUSHGO 31,Y,$233
+ PUSHGO X,$38,$212
+ PUSHGO XC,$38,$212
+ PUSHGO $4,$175,$181
+ PUSHGO 4,$175,$181
+
+ PUSHGO X,Y,Z0
+ PUSHGO XC,Y,Z0
+ PUSHGO $32,Y,Z0
+ PUSHGO 32,Y,Z0
+ PUSHGO X,$32,Z0
+ PUSHGO XC,$32,Z0
+ PUSHGO $232,$133,Z0
+ PUSHGO 232,$133,Z0
+ PUSHGO X,Y,203
+ PUSHGO XC,Y,203
+ PUSHGO $31,Y,213
+ PUSHGO 31,Y,213
+ PUSHGO X,$38,211
+ PUSHGO XC,$38,211
+ PUSHGO $4,$175,161
+ PUSHGO 4,$175,161
+
+ PUSHGO X,Y
+ PUSHGO XC,Y
+
+ PUSHGO $41,Y
+ PUSHGO 241,Y
+
+ PUSHGO X,$27
+ PUSHGO XC,$48
+
+ PUSHGO $223,$219
+ PUSHGO 223,$229
+
+ PUSHGO X,Y,0
+ PUSHGO XC,Y,0
+ PUSHGO $32,Y,0
+ PUSHGO 32,Y,0
+ PUSHGO X,$32,0
+ PUSHGO XC,$32,0
+ PUSHGO $232,$133,0
+ PUSHGO 232,$133,0
+ PUSHGO X,Y,0
+ PUSHGO XC,Y,0
+ PUSHGO $31,Y,0
+ PUSHGO 31,Y,0
+ PUSHGO X,$38,0
+ PUSHGO XC,$38,0
+ PUSHGO $4,$175,0
+ PUSHGO 4,$175,0
+X IS $23
+XC IS 203
+Y IS $12
+Z IS $67
+Z0 IS 176
diff --git a/gas/testsuite/gas/mmix/pushj-c.d b/gas/testsuite/gas/mmix/pushj-c.d
new file mode 100644
index 0000000..c4c2746
--- /dev/null
+++ b/gas/testsuite/gas/mmix/pushj-c.d
@@ -0,0 +1,28 @@
+#as: -x
+#objdump: -tdr
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d .text 0+
+0+ l d .data 0+
+0+ l d .bss 0+
+ffff0000ffff0000 l \*ABS\* 0+ i1
+ffff0000ffff0000 l \*ABS\* 0+ i2
+0+ g F .text 0+ Main
+
+Disassembly of section .text:
+
+0+ <Main>:
+ 0: f2010000 pushj \$1,0 <Main>
+ 0: R_MMIX_PUSHJ \*ABS\*\+0xffff0000ffff0000
+ 4: fd000000 swym 0,0,0
+ 8: fd000000 swym 0,0,0
+ c: fd000000 swym 0,0,0
+ 10: fd000000 swym 0,0,0
+ 14: f2020000 pushj \$2,14 <Main\+0x14>
+ 14: R_MMIX_PUSHJ i2
+ 18: fd000000 swym 0,0,0
+ 1c: fd000000 swym 0,0,0
+ 20: fd000000 swym 0,0,0
+ 24: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/pushj-c.s b/gas/testsuite/gas/mmix/pushj-c.s
new file mode 100644
index 0000000..a439401
--- /dev/null
+++ b/gas/testsuite/gas/mmix/pushj-c.s
@@ -0,0 +1,5 @@
+% PUSHJ far away must not fail
+i1 IS #ffff0000ffff0000
+Main PUSHJ $1,i1
+ PUSHJ $2,i2
+i2 IS #ffff0000ffff0000
diff --git a/gas/testsuite/gas/mmix/put-op-r.d b/gas/testsuite/gas/mmix/put-op-r.d
new file mode 100644
index 0000000..e536c55
--- /dev/null
+++ b/gas/testsuite/gas/mmix/put-op-r.d
@@ -0,0 +1,17 @@
+# objdump: -dr
+# as: -linkrelax
+# source: put-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f604007b put rJ,\$123
+ 4: f613002d put rG,\$45
+ 8: f61f00f5 put rZZ,\$245
+ c: f604006f put rJ,\$111
+ 10: f713002d put rG,45
+ 14: f71f00f5 put rZZ,245
+ 18: f7040000 put rJ,0
+ 1c: f7130000 put rG,0
+ 20: f71f0000 put rZZ,0
diff --git a/gas/testsuite/gas/mmix/put-op.d b/gas/testsuite/gas/mmix/put-op.d
new file mode 100644
index 0000000..1ec59a7
--- /dev/null
+++ b/gas/testsuite/gas/mmix/put-op.d
@@ -0,0 +1,15 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f604007b put rJ,\$123
+ 4: f613002d put rG,\$45
+ 8: f61f00f5 put rZZ,\$245
+ c: f604006f put rJ,\$111
+ 10: f713002d put rG,45
+ 14: f71f00f5 put rZZ,245
+ 18: f7040000 put rJ,0
+ 1c: f7130000 put rG,0
+ 20: f71f0000 put rZZ,0
diff --git a/gas/testsuite/gas/mmix/put-op.l b/gas/testsuite/gas/mmix/put-op.l
new file mode 100644
index 0000000..5fa44f3
--- /dev/null
+++ b/gas/testsuite/gas/mmix/put-op.l
@@ -0,0 +1,27 @@
+GAS for MMIX .*/put-op\.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 0000 F604007B Main PUT rJ,X
+ 4 0004 F613002D PUT rG,\$45
+ 5 0008 F61F00F5 PUT rZZ,\$245
+ 6 000c F604006F PUT rJ,X0
+ 7 0010 F713002D PUT rG,45
+ 8 0014 F71F00F5 PUT rZZ,245
+ 9 0018 F7040000 PUT rJ,X00
+ 10 001c F7130000 PUT rG,0
+ 11 0020 F71F0000 PUT rZZ,0
+ 12 X IS \$123
+ 13 X0 IS \$111
+ 14 X00 IS 0
+ GAS for MMIX .*/put-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/put-op\.s:3 \.text:0000000000000000 Main
+ \*REG\*:000000000000007b X
+ \*REG\*:000000000000006f X0
+ \*ABS\*:0000000000000000 X00
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/put-op.s b/gas/testsuite/gas/mmix/put-op.s
new file mode 100644
index 0000000..193fff1
--- /dev/null
+++ b/gas/testsuite/gas/mmix/put-op.s
@@ -0,0 +1,14 @@
+# For 'p'-type operands: PUT.
+#
+Main PUT rJ,X
+ PUT rG,$45
+ PUT rZZ,$245
+ PUT rJ,X0
+ PUT rG,45
+ PUT rZZ,245
+ PUT rJ,X00
+ PUT rG,0
+ PUT rZZ,0
+X IS $123
+X0 IS $111
+X00 IS 0
diff --git a/gas/testsuite/gas/mmix/reg-op-r.d b/gas/testsuite/gas/mmix/reg-op-r.d
new file mode 100644
index 0000000..d26478b
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reg-op-r.d
@@ -0,0 +1,16 @@
+# objdump: -dr
+# as: -linkrelax
+# source: reg-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 10170c43 fmul \$23,\$12,\$67
+ 4: 01200c43 fcmp \$32,\$12,\$67
+ 8: 040c2043 fadd \$12,\$32,\$67
+ c: 02e88543 fun \$232,\$133,\$67
+ 10: 03170c49 feql \$23,\$12,\$73
+ 14: 161f0ce9 frem \$31,\$12,\$233
+ 18: 061726d4 fsub \$23,\$38,\$212
+ 1c: 1304afb5 feqle \$4,\$175,\$181
diff --git a/gas/testsuite/gas/mmix/reg-op.d b/gas/testsuite/gas/mmix/reg-op.d
new file mode 100644
index 0000000..816a108
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reg-op.d
@@ -0,0 +1,14 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 10170c43 fmul \$23,\$12,\$67
+ 4: 01200c43 fcmp \$32,\$12,\$67
+ 8: 040c2043 fadd \$12,\$32,\$67
+ c: 02e88543 fun \$232,\$133,\$67
+ 10: 03170c49 feql \$23,\$12,\$73
+ 14: 161f0ce9 frem \$31,\$12,\$233
+ 18: 061726d4 fsub \$23,\$38,\$212
+ 1c: 1304afb5 feqle \$4,\$175,\$181
diff --git a/gas/testsuite/gas/mmix/reg-op.l b/gas/testsuite/gas/mmix/reg-op.l
new file mode 100644
index 0000000..e11a6fe
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reg-op.l
@@ -0,0 +1,26 @@
+GAS for MMIX .*/reg-op\.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 0000 10170C43 Main FMUL X,Y,Z
+ 4 0004 01200C43 FCMP \$32,Y,Z
+ 5 0008 040C2043 FADD Y,\$32,Z
+ 6 000c 02E88543 FUN \$232,\$133,Z
+ 7 0010 03170C49 FEQL X,Y,\$73
+ 8 0014 161F0CE9 FREM \$31,Y,\$233
+ 9 0018 061726D4 FSUB X,\$38,\$212
+ 10 001c 1304AFB5 FEQLE \$4,\$175,\$181
+ 11 X IS \$23
+ 12 Y IS \$12
+ 13 Z IS \$67
+ GAS for MMIX .*/reg-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/reg-op\.s:3 \.text:0000000000000000 Main
+ \*REG\*:0000000000000017 X
+ \*REG\*:000000000000000c Y
+ \*REG\*:0000000000000043 Z
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/reg-op.s b/gas/testsuite/gas/mmix/reg-op.s
new file mode 100644
index 0000000..0090cd9
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reg-op.s
@@ -0,0 +1,13 @@
+# All-registers, '$'-type operands.
+#
+Main FMUL X,Y,Z
+ FCMP $32,Y,Z
+ FADD Y,$32,Z
+ FUN $232,$133,Z
+ FEQL X,Y,$73
+ FREM $31,Y,$233
+ FSUB X,$38,$212
+ FEQLE $4,$175,$181
+X IS $23
+Y IS $12
+Z IS $67
diff --git a/gas/testsuite/gas/mmix/reg3-op-r.d b/gas/testsuite/gas/mmix/reg3-op-r.d
new file mode 100644
index 0000000..98944ca
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reg3-op-r.d
@@ -0,0 +1,32 @@
+# objdump: -dr
+# as: -linkrelax
+# source: reg3-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 18170c43 mul \$23,\$12,\$67
+ 4: 20200c43 add \$32,\$12,\$67
+ 8: 2a0c2043 4addu \$12,\$32,\$67
+ c: 2ce88543 8addu \$232,\$133,\$67
+ 10: 2e170c49 16addu \$23,\$12,\$73
+ 14: 3e1f0ce9 sru \$31,\$12,\$233
+ 18: 601726d4 csn \$23,\$38,\$212
+ 1c: 7c04afb5 zsnp \$4,\$175,\$181
+ 20: 1b170cb0 mulu \$23,\$12,176
+ 24: 39200cb0 sl \$32,\$12,176
+ 28: 330c20b0 cmpu \$12,\$32,176
+ 2c: 29e885b0 2addu \$232,\$133,176
+ 30: df170ccb mxor \$23,\$12,203
+ 34: c11f0cd5 or \$31,\$12,213
+ 38: cd1726d3 nand \$23,\$38,211
+ 3c: d304afa1 wdif \$4,\$175,161
+ 40: db170c00 sadd \$23,\$12,0
+ 44: df200c00 mxor \$32,\$12,0
+ 48: c30c2000 orn \$12,\$32,0
+ 4c: cbe88500 andn \$232,\$133,0
+ 50: 2f170c00 16addu \$23,\$12,0
+ 54: 391f0c00 sl \$31,\$12,0
+ 58: 23172600 addu \$23,\$38,0
+ 5c: 3104af00 cmp \$4,\$175,0
diff --git a/gas/testsuite/gas/mmix/reg3-op.d b/gas/testsuite/gas/mmix/reg3-op.d
new file mode 100644
index 0000000..d11a6cb
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reg3-op.d
@@ -0,0 +1,30 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 18170c43 mul \$23,\$12,\$67
+ 4: 20200c43 add \$32,\$12,\$67
+ 8: 2a0c2043 4addu \$12,\$32,\$67
+ c: 2ce88543 8addu \$232,\$133,\$67
+ 10: 2e170c49 16addu \$23,\$12,\$73
+ 14: 3e1f0ce9 sru \$31,\$12,\$233
+ 18: 601726d4 csn \$23,\$38,\$212
+ 1c: 7c04afb5 zsnp \$4,\$175,\$181
+ 20: 1b170cb0 mulu \$23,\$12,176
+ 24: 39200cb0 sl \$32,\$12,176
+ 28: 330c20b0 cmpu \$12,\$32,176
+ 2c: 29e885b0 2addu \$232,\$133,176
+ 30: df170ccb mxor \$23,\$12,203
+ 34: c11f0cd5 or \$31,\$12,213
+ 38: cd1726d3 nand \$23,\$38,211
+ 3c: d304afa1 wdif \$4,\$175,161
+ 40: db170c00 sadd \$23,\$12,0
+ 44: df200c00 mxor \$32,\$12,0
+ 48: c30c2000 orn \$12,\$32,0
+ 4c: cbe88500 andn \$232,\$133,0
+ 50: 2f170c00 16addu \$23,\$12,0
+ 54: 391f0c00 sl \$31,\$12,0
+ 58: 23172600 addu \$23,\$38,0
+ 5c: 3104af00 cmp \$4,\$175,0
diff --git a/gas/testsuite/gas/mmix/reg3-op.l b/gas/testsuite/gas/mmix/reg3-op.l
new file mode 100644
index 0000000..e826d73
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reg3-op.l
@@ -0,0 +1,46 @@
+GAS for MMIX .*/reg3-op\.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 0000 18170C43 Main MUL X,Y,Z
+ 4 0004 20200C43 ADD \$32,Y,Z
+ 5 0008 2A0C2043 4ADDU Y,\$32,Z
+ 6 000c 2CE88543 8ADDU \$232,\$133,Z
+ 7 0010 2E170C49 16ADDU X,Y,\$73
+ 8 0014 3E1F0CE9 SRU \$31,Y,\$233
+ 9 0018 601726D4 CSN X,\$38,\$212
+ 10 001c 7C04AFB5 ZSNP \$4,\$175,\$181
+ 11
+ 12 0020 1B170CB0 MULU X,Y,Z0
+ 13 0024 39200CB0 SL \$32,Y,Z0
+ 14 0028 330C20B0 CMPU Y,\$32,Z0
+ 15 002c 29E885B0 2ADDU \$232,\$133,Z0
+ 16 0030 DF170CCB MXOR X,Y,203
+ 17 0034 C11F0CD5 OR \$31,Y,213
+ 18 0038 CD1726D3 NAND X,\$38,211
+ 19 003c D304AFA1 WDIF \$4,\$175,161
+ 20
+ 21 0040 DB170C00 SADD X,Y,0
+ 22 0044 DF200C00 MXOR \$32,Y,0
+ 23 0048 C30C2000 ORN Y,\$32,0
+ 24 004c CBE88500 ANDN \$232,\$133,0
+ 25 0050 2F170C00 16ADDU X,Y,0
+ 26 0054 391F0C00 SL \$31,Y,0
+ 27 0058 23172600 ADDU X,\$38,0
+ 28 005c 3104AF00 CMP \$4,\$175,0
+ 29 X IS \$23
+ 30 Y IS \$12
+ 31 Z IS \$67
+ 32 Z0 IS 176
+ GAS for MMIX .*/reg3-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/reg3-op\.s:3 \.text:0000000000000000 Main
+ \*REG\*:0000000000000017 X
+ \*REG\*:000000000000000c Y
+ \*REG\*:0000000000000043 Z
+ \*ABS\*:00000000000000b0 Z0
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/reg3-op.s b/gas/testsuite/gas/mmix/reg3-op.s
new file mode 100644
index 0000000..9803e30
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reg3-op.s
@@ -0,0 +1,32 @@
+# All-registers, '3'-type operands; third operand is
+# register or constant.
+Main MUL X,Y,Z
+ ADD $32,Y,Z
+ 4ADDU Y,$32,Z
+ 8ADDU $232,$133,Z
+ 16ADDU X,Y,$73
+ SRU $31,Y,$233
+ CSN X,$38,$212
+ ZSNP $4,$175,$181
+
+ MULU X,Y,Z0
+ SL $32,Y,Z0
+ CMPU Y,$32,Z0
+ 2ADDU $232,$133,Z0
+ MXOR X,Y,203
+ OR $31,Y,213
+ NAND X,$38,211
+ WDIF $4,$175,161
+
+ SADD X,Y,0
+ MXOR $32,Y,0
+ ORN Y,$32,0
+ ANDN $232,$133,0
+ 16ADDU X,Y,0
+ SL $31,Y,0
+ ADDU X,$38,0
+ CMP $4,$175,0
+X IS $23
+Y IS $12
+Z IS $67
+Z0 IS 176
diff --git a/gas/testsuite/gas/mmix/regt-op-r.d b/gas/testsuite/gas/mmix/regt-op-r.d
new file mode 100644
index 0000000..4a41f59
--- /dev/null
+++ b/gas/testsuite/gas/mmix/regt-op-r.d
@@ -0,0 +1,136 @@
+# objdump: -dr
+# as: -linkrelax
+# source: regt-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 22170c43 addu \$23,\$12,\$67
+ 4: 88200c43 ldt \$32,\$12,\$67
+ 8: 820c2043 ldbu \$12,\$32,\$67
+ c: 8ae88543 ldtu \$232,\$133,\$67
+ 10: 8c170c49 ldo \$23,\$12,\$73
+ 14: 8e1f0ce9 ldou \$31,\$12,\$233
+ 18: 841726d4 ldw \$23,\$38,\$212
+ 1c: 8604afb5 ldwu \$4,\$175,\$181
+ 20: 81170cb0 ldb \$23,\$12,176
+ 24: 91200cb0 ldsf \$32,\$12,176
+ 28: 990c20b0 ldvts \$12,\$32,176
+ 2c: 97e885b0 ldunc \$232,\$133,176
+ 30: b3170ccb stht \$23,\$12,203
+ 34: 931f0cd5 ldht \$31,\$12,213
+ 38: 951726d3 cswap \$23,\$38,211
+ 3c: 9f04afa1 go \$4,\$175,161
+ 40: 23170c00 addu \$23,\$12,0
+ 44: 81170c00 ldb \$23,\$12,0
+ 48: 89170c00 ldt \$23,\$12,0
+ 4c: 83170c00 ldbu \$23,\$12,0
+ 50: 8b170c00 ldtu \$23,\$12,0
+ 54: 8d170c00 ldo \$23,\$12,0
+ 58: 8f170c00 ldou \$23,\$12,0
+ 5c: 85170c00 ldw \$23,\$12,0
+ 60: 87170c00 ldwu \$23,\$12,0
+ 64: 91170c00 ldsf \$23,\$12,0
+ 68: 93170c00 ldht \$23,\$12,0
+ 6c: 95170c00 cswap \$23,\$12,0
+ 70: 97170c00 ldunc \$23,\$12,0
+ 74: 99170c00 ldvts \$23,\$12,0
+ 78: 9f170c00 go \$23,\$12,0
+ 7c: a1170c00 stb \$23,\$12,0
+ 80: a9170c00 stt \$23,\$12,0
+ 84: a3170c00 stbu \$23,\$12,0
+ 88: ab170c00 sttu \$23,\$12,0
+ 8c: ad170c00 sto \$23,\$12,0
+ 90: af170c00 stou \$23,\$12,0
+ 94: a5170c00 stw \$23,\$12,0
+ 98: a7170c00 stwu \$23,\$12,0
+ 9c: b1170c00 stsf \$23,\$12,0
+ a0: b3170c00 stht \$23,\$12,0
+ a4: b7170c00 stunc \$23,\$12,0
+ a8: 23290c00 addu \$41,\$12,0
+ ac: 81790c00 ldb \$121,\$12,0
+ b0: 894e0c00 ldt \$78,\$12,0
+ b4: 837f0c00 ldbu \$127,\$12,0
+ b8: 8b310c00 ldtu \$49,\$12,0
+ bc: 8d340c00 ldo \$52,\$12,0
+ c0: 8f2a0c00 ldou \$42,\$12,0
+ c4: 857b0c00 ldw \$123,\$12,0
+ c8: 87ea0c00 ldwu \$234,\$12,0
+ cc: 91290c00 ldsf \$41,\$12,0
+ d0: 93590c00 ldht \$89,\$12,0
+ d4: 955d0c00 cswap \$93,\$12,0
+ d8: 972a0c00 ldunc \$42,\$12,0
+ dc: 99210c00 ldvts \$33,\$12,0
+ e0: 9f3b0c00 go \$59,\$12,0
+ e4: a13b0c00 stb \$59,\$12,0
+ e8: a93b0c00 stt \$59,\$12,0
+ ec: a33b0c00 stbu \$59,\$12,0
+ f0: ab3b0c00 sttu \$59,\$12,0
+ f4: ad3b0c00 sto \$59,\$12,0
+ f8: af3b0c00 stou \$59,\$12,0
+ fc: a53b0c00 stw \$59,\$12,0
+ 100: a73b0c00 stwu \$59,\$12,0
+ 104: b13b0c00 stsf \$59,\$12,0
+ 108: b33b0c00 stht \$59,\$12,0
+ 10c: b73b0c00 stunc \$59,\$12,0
+ 110: 23171b00 addu \$23,\$27,0
+ 114: 81173000 ldb \$23,\$48,0
+ 118: 8917a800 ldt \$23,\$168,0
+ 11c: 8317ea00 ldbu \$23,\$234,0
+ 120: 8b17b000 ldtu \$23,\$176,0
+ 124: 8d171d00 ldo \$23,\$29,0
+ 128: 8f17de00 ldou \$23,\$222,0
+ 12c: 8517de00 ldw \$23,\$222,0
+ 130: 8717de00 ldwu \$23,\$222,0
+ 134: 9117de00 ldsf \$23,\$222,0
+ 138: 9317de00 ldht \$23,\$222,0
+ 13c: 9517de00 cswap \$23,\$222,0
+ 140: 9717de00 ldunc \$23,\$222,0
+ 144: 9917de00 ldvts \$23,\$222,0
+ 148: 9f17de00 go \$23,\$222,0
+ 14c: a117de00 stb \$23,\$222,0
+ 150: a917de00 stt \$23,\$222,0
+ 154: a317de00 stbu \$23,\$222,0
+ 158: ab17de00 sttu \$23,\$222,0
+ 15c: ad17de00 sto \$23,\$222,0
+ 160: af17de00 stou \$23,\$222,0
+ 164: a517de00 stw \$23,\$222,0
+ 168: a717de00 stwu \$23,\$222,0
+ 16c: b117de00 stsf \$23,\$222,0
+ 170: b317de00 stht \$23,\$222,0
+ 174: b717de00 stunc \$23,\$222,0
+ 178: 23dfdb00 addu \$223,\$219,0
+ 17c: 81dfef00 ldb \$223,\$239,0
+ 180: 89dfef00 ldt \$223,\$239,0
+ 184: 83df1d00 ldbu \$223,\$29,0
+ 188: 8bdfef00 ldtu \$223,\$239,0
+ 18c: 8d17ef00 ldo \$23,\$239,0
+ 190: 8fdfef00 ldou \$223,\$239,0
+ 194: 85dfd100 ldw \$223,\$209,0
+ 198: 877bef00 ldwu \$123,\$239,0
+ 19c: 91dfef00 ldsf \$223,\$239,0
+ 1a0: 93df1d00 ldht \$223,\$29,0
+ 1a4: 95dfef00 cswap \$223,\$239,0
+ 1a8: 977bef00 ldunc \$123,\$239,0
+ 1ac: 99dfef00 ldvts \$223,\$239,0
+ 1b0: 9fdfef00 go \$223,\$239,0
+ 1b4: a1dfef00 stb \$223,\$239,0
+ 1b8: a9dff900 stt \$223,\$249,0
+ 1bc: a3cbef00 stbu \$203,\$239,0
+ 1c0: ab49ef00 sttu \$73,\$239,0
+ 1c4: addfef00 sto \$223,\$239,0
+ 1c8: afdf2700 stou \$223,\$39,0
+ 1cc: a5dfef00 stw \$223,\$239,0
+ 1d0: a7e9ef00 stwu \$233,\$239,0
+ 1d4: b1dfef00 stsf \$223,\$239,0
+ 1d8: b3df1700 stht \$223,\$23,0
+ 1dc: b7dfef00 stunc \$223,\$239,0
+ 1e0: 9f170c00 go \$23,\$12,0
+ 1e4: 99200c00 ldvts \$32,\$12,0
+ 1e8: a10c2000 stb \$12,\$32,0
+ 1ec: b7e88500 stunc \$232,\$133,0
+ 1f0: a7170c00 stwu \$23,\$12,0
+ 1f4: ad1f0c00 sto \$31,\$12,0
+ 1f8: 9f172600 go \$23,\$38,0
+ 1fc: 9504af00 cswap \$4,\$175,0
diff --git a/gas/testsuite/gas/mmix/regt-op.d b/gas/testsuite/gas/mmix/regt-op.d
new file mode 100644
index 0000000..95ea3db
--- /dev/null
+++ b/gas/testsuite/gas/mmix/regt-op.d
@@ -0,0 +1,134 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 22170c43 addu \$23,\$12,\$67
+ 4: 88200c43 ldt \$32,\$12,\$67
+ 8: 820c2043 ldbu \$12,\$32,\$67
+ c: 8ae88543 ldtu \$232,\$133,\$67
+ 10: 8c170c49 ldo \$23,\$12,\$73
+ 14: 8e1f0ce9 ldou \$31,\$12,\$233
+ 18: 841726d4 ldw \$23,\$38,\$212
+ 1c: 8604afb5 ldwu \$4,\$175,\$181
+ 20: 81170cb0 ldb \$23,\$12,176
+ 24: 91200cb0 ldsf \$32,\$12,176
+ 28: 990c20b0 ldvts \$12,\$32,176
+ 2c: 97e885b0 ldunc \$232,\$133,176
+ 30: b3170ccb stht \$23,\$12,203
+ 34: 931f0cd5 ldht \$31,\$12,213
+ 38: 951726d3 cswap \$23,\$38,211
+ 3c: 9f04afa1 go \$4,\$175,161
+ 40: 23170c00 addu \$23,\$12,0
+ 44: 81170c00 ldb \$23,\$12,0
+ 48: 89170c00 ldt \$23,\$12,0
+ 4c: 83170c00 ldbu \$23,\$12,0
+ 50: 8b170c00 ldtu \$23,\$12,0
+ 54: 8d170c00 ldo \$23,\$12,0
+ 58: 8f170c00 ldou \$23,\$12,0
+ 5c: 85170c00 ldw \$23,\$12,0
+ 60: 87170c00 ldwu \$23,\$12,0
+ 64: 91170c00 ldsf \$23,\$12,0
+ 68: 93170c00 ldht \$23,\$12,0
+ 6c: 95170c00 cswap \$23,\$12,0
+ 70: 97170c00 ldunc \$23,\$12,0
+ 74: 99170c00 ldvts \$23,\$12,0
+ 78: 9f170c00 go \$23,\$12,0
+ 7c: a1170c00 stb \$23,\$12,0
+ 80: a9170c00 stt \$23,\$12,0
+ 84: a3170c00 stbu \$23,\$12,0
+ 88: ab170c00 sttu \$23,\$12,0
+ 8c: ad170c00 sto \$23,\$12,0
+ 90: af170c00 stou \$23,\$12,0
+ 94: a5170c00 stw \$23,\$12,0
+ 98: a7170c00 stwu \$23,\$12,0
+ 9c: b1170c00 stsf \$23,\$12,0
+ a0: b3170c00 stht \$23,\$12,0
+ a4: b7170c00 stunc \$23,\$12,0
+ a8: 23290c00 addu \$41,\$12,0
+ ac: 81790c00 ldb \$121,\$12,0
+ b0: 894e0c00 ldt \$78,\$12,0
+ b4: 837f0c00 ldbu \$127,\$12,0
+ b8: 8b310c00 ldtu \$49,\$12,0
+ bc: 8d340c00 ldo \$52,\$12,0
+ c0: 8f2a0c00 ldou \$42,\$12,0
+ c4: 857b0c00 ldw \$123,\$12,0
+ c8: 87ea0c00 ldwu \$234,\$12,0
+ cc: 91290c00 ldsf \$41,\$12,0
+ d0: 93590c00 ldht \$89,\$12,0
+ d4: 955d0c00 cswap \$93,\$12,0
+ d8: 972a0c00 ldunc \$42,\$12,0
+ dc: 99210c00 ldvts \$33,\$12,0
+ e0: 9f3b0c00 go \$59,\$12,0
+ e4: a13b0c00 stb \$59,\$12,0
+ e8: a93b0c00 stt \$59,\$12,0
+ ec: a33b0c00 stbu \$59,\$12,0
+ f0: ab3b0c00 sttu \$59,\$12,0
+ f4: ad3b0c00 sto \$59,\$12,0
+ f8: af3b0c00 stou \$59,\$12,0
+ fc: a53b0c00 stw \$59,\$12,0
+ 100: a73b0c00 stwu \$59,\$12,0
+ 104: b13b0c00 stsf \$59,\$12,0
+ 108: b33b0c00 stht \$59,\$12,0
+ 10c: b73b0c00 stunc \$59,\$12,0
+ 110: 23171b00 addu \$23,\$27,0
+ 114: 81173000 ldb \$23,\$48,0
+ 118: 8917a800 ldt \$23,\$168,0
+ 11c: 8317ea00 ldbu \$23,\$234,0
+ 120: 8b17b000 ldtu \$23,\$176,0
+ 124: 8d171d00 ldo \$23,\$29,0
+ 128: 8f17de00 ldou \$23,\$222,0
+ 12c: 8517de00 ldw \$23,\$222,0
+ 130: 8717de00 ldwu \$23,\$222,0
+ 134: 9117de00 ldsf \$23,\$222,0
+ 138: 9317de00 ldht \$23,\$222,0
+ 13c: 9517de00 cswap \$23,\$222,0
+ 140: 9717de00 ldunc \$23,\$222,0
+ 144: 9917de00 ldvts \$23,\$222,0
+ 148: 9f17de00 go \$23,\$222,0
+ 14c: a117de00 stb \$23,\$222,0
+ 150: a917de00 stt \$23,\$222,0
+ 154: a317de00 stbu \$23,\$222,0
+ 158: ab17de00 sttu \$23,\$222,0
+ 15c: ad17de00 sto \$23,\$222,0
+ 160: af17de00 stou \$23,\$222,0
+ 164: a517de00 stw \$23,\$222,0
+ 168: a717de00 stwu \$23,\$222,0
+ 16c: b117de00 stsf \$23,\$222,0
+ 170: b317de00 stht \$23,\$222,0
+ 174: b717de00 stunc \$23,\$222,0
+ 178: 23dfdb00 addu \$223,\$219,0
+ 17c: 81dfef00 ldb \$223,\$239,0
+ 180: 89dfef00 ldt \$223,\$239,0
+ 184: 83df1d00 ldbu \$223,\$29,0
+ 188: 8bdfef00 ldtu \$223,\$239,0
+ 18c: 8d17ef00 ldo \$23,\$239,0
+ 190: 8fdfef00 ldou \$223,\$239,0
+ 194: 85dfd100 ldw \$223,\$209,0
+ 198: 877bef00 ldwu \$123,\$239,0
+ 19c: 91dfef00 ldsf \$223,\$239,0
+ 1a0: 93df1d00 ldht \$223,\$29,0
+ 1a4: 95dfef00 cswap \$223,\$239,0
+ 1a8: 977bef00 ldunc \$123,\$239,0
+ 1ac: 99dfef00 ldvts \$223,\$239,0
+ 1b0: 9fdfef00 go \$223,\$239,0
+ 1b4: a1dfef00 stb \$223,\$239,0
+ 1b8: a9dff900 stt \$223,\$249,0
+ 1bc: a3cbef00 stbu \$203,\$239,0
+ 1c0: ab49ef00 sttu \$73,\$239,0
+ 1c4: addfef00 sto \$223,\$239,0
+ 1c8: afdf2700 stou \$223,\$39,0
+ 1cc: a5dfef00 stw \$223,\$239,0
+ 1d0: a7e9ef00 stwu \$233,\$239,0
+ 1d4: b1dfef00 stsf \$223,\$239,0
+ 1d8: b3df1700 stht \$223,\$23,0
+ 1dc: b7dfef00 stunc \$223,\$239,0
+ 1e0: 9f170c00 go \$23,\$12,0
+ 1e4: 99200c00 ldvts \$32,\$12,0
+ 1e8: a10c2000 stb \$12,\$32,0
+ 1ec: b7e88500 stunc \$232,\$133,0
+ 1f0: a7170c00 stwu \$23,\$12,0
+ 1f4: ad1f0c00 sto \$31,\$12,0
+ 1f8: 9f172600 go \$23,\$38,0
+ 1fc: 9504af00 cswap \$4,\$175,0
diff --git a/gas/testsuite/gas/mmix/regt-op.l b/gas/testsuite/gas/mmix/regt-op.l
new file mode 100644
index 0000000..843d3fe
--- /dev/null
+++ b/gas/testsuite/gas/mmix/regt-op.l
@@ -0,0 +1,160 @@
+GAS for MMIX .*/regt-op\.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 0000 22170C43 Main LDA X,Y,Z
+ 4 0004 88200C43 LDT \$32,Y,Z
+ 5 0008 820C2043 LDBU Y,\$32,Z
+ 6 000c 8AE88543 LDTU \$232,\$133,Z
+ 7 0010 8C170C49 LDO X,Y,\$73
+ 8 0014 8E1F0CE9 LDOU \$31,Y,\$233
+ 9 0018 841726D4 LDW X,\$38,\$212
+ 10 001c 8604AFB5 LDWU \$4,\$175,\$181
+ 11
+ 12 0020 81170CB0 LDB X,Y,Z0
+ 13 0024 91200CB0 LDSF \$32,Y,Z0
+ 14 0028 990C20B0 LDVTS Y,\$32,Z0
+ 15 002c 97E885B0 LDUNC \$232,\$133,Z0
+ 16 0030 B3170CCB STHT X,Y,203
+ 17 0034 931F0CD5 LDHT \$31,Y,213
+ 18 0038 951726D3 CSWAP X,\$38,211
+ 19 003c 9F04AFA1 GO \$4,\$175,161
+ 20
+ 21 0040 23170C00 LDA X,Y
+ 22 0044 81170C00 LDB X,Y
+ 23 0048 89170C00 LDT X,Y
+ 24 004c 83170C00 LDBU X,Y
+ 25 0050 8B170C00 LDTU X,Y
+ 26 0054 8D170C00 LDO X,Y
+ 27 0058 8F170C00 LDOU X,Y
+ 28 005c 85170C00 LDW X,Y
+ 29 0060 87170C00 LDWU X,Y
+ 30 0064 91170C00 LDSF X,Y
+ 31 0068 93170C00 LDHT X,Y
+ 32 006c 95170C00 CSWAP X,Y
+ 33 0070 97170C00 LDUNC X,Y
+ 34 0074 99170C00 LDVTS X,Y
+ 35 0078 9F170C00 GO X,Y
+ 36 007c A1170C00 STB X,Y
+ 37 0080 A9170C00 STT X,Y
+ 38 0084 A3170C00 STBU X,Y
+ 39 0088 AB170C00 STTU X,Y
+ 40 008c AD170C00 STO X,Y
+ 41 0090 AF170C00 STOU X,Y
+ 42 0094 A5170C00 STW X,Y
+ 43 0098 A7170C00 STWU X,Y
+ 44 009c B1170C00 STSF X,Y
+ 45 00a0 B3170C00 STHT X,Y
+ 46 00a4 B7170C00 STUNC X,Y
+ 47
+ 48 00a8 23290C00 LDA \$41,Y
+ 49 00ac 81790C00 LDB \$121,Y
+ 50 00b0 894E0C00 LDT \$78,Y
+ 51 00b4 837F0C00 LDBU \$127,Y
+ 52 00b8 8B310C00 LDTU \$49,Y
+ 53 00bc 8D340C00 LDO \$52,Y
+ 54 00c0 8F2A0C00 LDOU \$42,Y
+ 55 00c4 857B0C00 LDW \$123,Y
+ 56 00c8 87EA0C00 LDWU \$234,Y
+ 57 00cc 91290C00 LDSF \$41,Y
+ GAS for MMIX .*/regt-op\.s page 2
+
+
+ 58 00d0 93590C00 LDHT \$89,Y
+ 59 00d4 955D0C00 CSWAP \$93,Y
+ 60 00d8 972A0C00 LDUNC \$42,Y
+ 61 00dc 99210C00 LDVTS \$33,Y
+ 62 00e0 9F3B0C00 GO \$59,Y
+ 63 00e4 A13B0C00 STB \$59,Y
+ 64 00e8 A93B0C00 STT \$59,Y
+ 65 00ec A33B0C00 STBU \$59,Y
+ 66 00f0 AB3B0C00 STTU \$59,Y
+ 67 00f4 AD3B0C00 STO \$59,Y
+ 68 00f8 AF3B0C00 STOU \$59,Y
+ 69 00fc A53B0C00 STW \$59,Y
+ 70 0100 A73B0C00 STWU \$59,Y
+ 71 0104 B13B0C00 STSF \$59,Y
+ 72 0108 B33B0C00 STHT \$59,Y
+ 73 010c B73B0C00 STUNC \$59,Y
+ 74
+ 75 0110 23171B00 LDA X,\$27
+ 76 0114 81173000 LDB X,\$48
+ 77 0118 8917A800 LDT X,\$168
+ 78 011c 8317EA00 LDBU X,\$234
+ 79 0120 8B17B000 LDTU X,\$176
+ 80 0124 8D171D00 LDO X,\$29
+ 81 0128 8F17DE00 LDOU X,\$222
+ 82 012c 8517DE00 LDW X,\$222
+ 83 0130 8717DE00 LDWU X,\$222
+ 84 0134 9117DE00 LDSF X,\$222
+ 85 0138 9317DE00 LDHT X,\$222
+ 86 013c 9517DE00 CSWAP X,\$222
+ 87 0140 9717DE00 LDUNC X,\$222
+ 88 0144 9917DE00 LDVTS X,\$222
+ 89 0148 9F17DE00 GO X,\$222
+ 90 014c A117DE00 STB X,\$222
+ 91 0150 A917DE00 STT X,\$222
+ 92 0154 A317DE00 STBU X,\$222
+ 93 0158 AB17DE00 STTU X,\$222
+ 94 015c AD17DE00 STO X,\$222
+ 95 0160 AF17DE00 STOU X,\$222
+ 96 0164 A517DE00 STW X,\$222
+ 97 0168 A717DE00 STWU X,\$222
+ 98 016c B117DE00 STSF X,\$222
+ 99 0170 B317DE00 STHT X,\$222
+ 100 0174 B717DE00 STUNC X,\$222
+ 101
+ 102 0178 23DFDB00 LDA \$223,\$219
+ 103 017c 81DFEF00 LDB \$223,\$239
+ 104 0180 89DFEF00 LDT \$223,\$239
+ 105 0184 83DF1D00 LDBU \$223,\$29
+ 106 0188 8BDFEF00 LDTU \$223,\$239
+ 107 018c 8D17EF00 LDO \$23,\$239
+ 108 0190 8FDFEF00 LDOU \$223,\$239
+ 109 0194 85DFD100 LDW \$223,\$209
+ 110 0198 877BEF00 LDWU \$123,\$239
+ 111 019c 91DFEF00 LDSF \$223,\$239
+ 112 01a0 93DF1D00 LDHT \$223,\$29
+ 113 01a4 95DFEF00 CSWAP \$223,\$239
+ 114 01a8 977BEF00 LDUNC \$123,\$239
+ GAS for MMIX .*/regt-op\.s page 3
+
+
+ 115 01ac 99DFEF00 LDVTS \$223,\$239
+ 116 01b0 9FDFEF00 GO \$223,\$239
+ 117 01b4 A1DFEF00 STB \$223,\$239
+ 118 01b8 A9DFF900 STT \$223,\$249
+ 119 01bc A3CBEF00 STBU \$203,\$239
+ 120 01c0 AB49EF00 STTU \$73,\$239
+ 121 01c4 ADDFEF00 STO \$223,\$239
+ 122 01c8 AFDF2700 STOU \$223,\$39
+ 123 01cc A5DFEF00 STW \$223,\$239
+ 124 01d0 A7E9EF00 STWU \$233,\$239
+ 125 01d4 B1DFEF00 STSF \$223,\$239
+ 126 01d8 B3DF1700 STHT \$223,\$23
+ 127 01dc B7DFEF00 STUNC \$223,\$239
+ 128
+ 129 01e0 9F170C00 GO X,Y,0
+ 130 01e4 99200C00 LDVTS \$32,Y,0
+ 131 01e8 A10C2000 STB Y,\$32,0
+ 132 01ec B7E88500 STUNC \$232,\$133,0
+ 133 01f0 A7170C00 STWU X,Y,0
+ 134 01f4 AD1F0C00 STO \$31,Y,0
+ 135 01f8 9F172600 GO X,\$38,0
+ 136 01fc 9504AF00 CSWAP \$4,\$175,0
+ 137 X IS \$23
+ 138 Y IS \$12
+ 139 Z IS \$67
+ 140 Z0 IS 176
+ GAS for MMIX .*/regt-op\.s page 4
+
+
+DEFINED SYMBOLS
+.*/regt-op\.s:3 \.text:0000000000000000 Main
+ \*REG\*:0000000000000017 X
+ \*REG\*:000000000000000c Y
+ \*REG\*:0000000000000043 Z
+ \*ABS\*:00000000000000b0 Z0
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/regt-op.s b/gas/testsuite/gas/mmix/regt-op.s
new file mode 100644
index 0000000..57ecc0f
--- /dev/null
+++ b/gas/testsuite/gas/mmix/regt-op.s
@@ -0,0 +1,140 @@
+# All-registers, 'T'-type operands; optional third operand is
+# register or constant.
+Main LDA X,Y,Z
+ LDT $32,Y,Z
+ LDBU Y,$32,Z
+ LDTU $232,$133,Z
+ LDO X,Y,$73
+ LDOU $31,Y,$233
+ LDW X,$38,$212
+ LDWU $4,$175,$181
+
+ LDB X,Y,Z0
+ LDSF $32,Y,Z0
+ LDVTS Y,$32,Z0
+ LDUNC $232,$133,Z0
+ STHT X,Y,203
+ LDHT $31,Y,213
+ CSWAP X,$38,211
+ GO $4,$175,161
+
+ LDA X,Y
+ LDB X,Y
+ LDT X,Y
+ LDBU X,Y
+ LDTU X,Y
+ LDO X,Y
+ LDOU X,Y
+ LDW X,Y
+ LDWU X,Y
+ LDSF X,Y
+ LDHT X,Y
+ CSWAP X,Y
+ LDUNC X,Y
+ LDVTS X,Y
+ GO X,Y
+ STB X,Y
+ STT X,Y
+ STBU X,Y
+ STTU X,Y
+ STO X,Y
+ STOU X,Y
+ STW X,Y
+ STWU X,Y
+ STSF X,Y
+ STHT X,Y
+ STUNC X,Y
+
+ LDA $41,Y
+ LDB $121,Y
+ LDT $78,Y
+ LDBU $127,Y
+ LDTU $49,Y
+ LDO $52,Y
+ LDOU $42,Y
+ LDW $123,Y
+ LDWU $234,Y
+ LDSF $41,Y
+ LDHT $89,Y
+ CSWAP $93,Y
+ LDUNC $42,Y
+ LDVTS $33,Y
+ GO $59,Y
+ STB $59,Y
+ STT $59,Y
+ STBU $59,Y
+ STTU $59,Y
+ STO $59,Y
+ STOU $59,Y
+ STW $59,Y
+ STWU $59,Y
+ STSF $59,Y
+ STHT $59,Y
+ STUNC $59,Y
+
+ LDA X,$27
+ LDB X,$48
+ LDT X,$168
+ LDBU X,$234
+ LDTU X,$176
+ LDO X,$29
+ LDOU X,$222
+ LDW X,$222
+ LDWU X,$222
+ LDSF X,$222
+ LDHT X,$222
+ CSWAP X,$222
+ LDUNC X,$222
+ LDVTS X,$222
+ GO X,$222
+ STB X,$222
+ STT X,$222
+ STBU X,$222
+ STTU X,$222
+ STO X,$222
+ STOU X,$222
+ STW X,$222
+ STWU X,$222
+ STSF X,$222
+ STHT X,$222
+ STUNC X,$222
+
+ LDA $223,$219
+ LDB $223,$239
+ LDT $223,$239
+ LDBU $223,$29
+ LDTU $223,$239
+ LDO $23,$239
+ LDOU $223,$239
+ LDW $223,$209
+ LDWU $123,$239
+ LDSF $223,$239
+ LDHT $223,$29
+ CSWAP $223,$239
+ LDUNC $123,$239
+ LDVTS $223,$239
+ GO $223,$239
+ STB $223,$239
+ STT $223,$249
+ STBU $203,$239
+ STTU $73,$239
+ STO $223,$239
+ STOU $223,$39
+ STW $223,$239
+ STWU $233,$239
+ STSF $223,$239
+ STHT $223,$23
+ STUNC $223,$239
+
+ GO X,Y,0
+ LDVTS $32,Y,0
+ STB Y,$32,0
+ STUNC $232,$133,0
+ STWU X,Y,0
+ STO $31,Y,0
+ GO X,$38,0
+ CSWAP $4,$175,0
+X IS $23
+Y IS $12
+Z IS $67
+Z0 IS 176
diff --git a/gas/testsuite/gas/mmix/regx-op-r.d b/gas/testsuite/gas/mmix/regx-op-r.d
new file mode 100644
index 0000000..5c174e1
--- /dev/null
+++ b/gas/testsuite/gas/mmix/regx-op-r.d
@@ -0,0 +1,36 @@
+# objdump: -dr
+# as: -linkrelax
+# source: regx-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 9a7b0c43 preld 123,\$12,\$67
+ 4: 9c200c43 prego 32,\$12,\$67
+ 8: b87b2043 syncd 123,\$32,\$67
+ c: ba008543 prest 0,\$133,\$67
+ 10: b47b0c49 stco 123,\$12,\$73
+ 14: bc820ce9 syncid 130,\$12,\$233
+ 18: 9a7b26d4 preld 123,\$38,\$212
+ 1c: 9c01afb5 prego 1,\$175,\$181
+ 20: b97b0cb0 syncd 123,\$12,176
+ 24: bb200cb0 prest 32,\$12,176
+ 28: b57b84b0 stco 123,\$132,176
+ 2c: bde885b0 syncid 232,\$133,176
+ 30: 9b7b0ccb preld 123,\$12,203
+ 34: 9de70cd5 prego 231,\$12,213
+ 38: b97b26d3 syncd 123,\$38,211
+ 3c: bb04afa1 prest 4,\$175,161
+ 40: b57b0c00 stco 123,\$12,0
+ 44: bd170c00 syncid 23,\$12,0
+ 48: 9b020c00 preld 2,\$12,0
+ 4c: 9de88500 prego 232,\$133,0
+ 50: b97b0c00 syncd 123,\$12,0
+ 54: bb0d0c00 prest 13,\$12,0
+ 58: b57b2600 stco 123,\$38,0
+ 5c: bd04af00 syncid 4,\$175,0
+ 60: 9b7b0c00 preld 123,\$12,0
+ 64: 9d200c00 prego 32,\$12,0
+ 68: b97b2000 syncd 123,\$32,0
+ 6c: bbe88500 prest 232,\$133,0
diff --git a/gas/testsuite/gas/mmix/regx-op.d b/gas/testsuite/gas/mmix/regx-op.d
new file mode 100644
index 0000000..c52eb04
--- /dev/null
+++ b/gas/testsuite/gas/mmix/regx-op.d
@@ -0,0 +1,34 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 9a7b0c43 preld 123,\$12,\$67
+ 4: 9c200c43 prego 32,\$12,\$67
+ 8: b87b2043 syncd 123,\$32,\$67
+ c: ba008543 prest 0,\$133,\$67
+ 10: b47b0c49 stco 123,\$12,\$73
+ 14: bc820ce9 syncid 130,\$12,\$233
+ 18: 9a7b26d4 preld 123,\$38,\$212
+ 1c: 9c01afb5 prego 1,\$175,\$181
+ 20: b97b0cb0 syncd 123,\$12,176
+ 24: bb200cb0 prest 32,\$12,176
+ 28: b57b84b0 stco 123,\$132,176
+ 2c: bde885b0 syncid 232,\$133,176
+ 30: 9b7b0ccb preld 123,\$12,203
+ 34: 9de70cd5 prego 231,\$12,213
+ 38: b97b26d3 syncd 123,\$38,211
+ 3c: bb04afa1 prest 4,\$175,161
+ 40: b57b0c00 stco 123,\$12,0
+ 44: bd170c00 syncid 23,\$12,0
+ 48: 9b020c00 preld 2,\$12,0
+ 4c: 9de88500 prego 232,\$133,0
+ 50: b97b0c00 syncd 123,\$12,0
+ 54: bb0d0c00 prest 13,\$12,0
+ 58: b57b2600 stco 123,\$38,0
+ 5c: bd04af00 syncid 4,\$175,0
+ 60: 9b7b0c00 preld 123,\$12,0
+ 64: 9d200c00 prego 32,\$12,0
+ 68: b97b2000 syncd 123,\$32,0
+ 6c: bbe88500 prest 232,\$133,0
diff --git a/gas/testsuite/gas/mmix/regx-op.l b/gas/testsuite/gas/mmix/regx-op.l
new file mode 100644
index 0000000..45a975d
--- /dev/null
+++ b/gas/testsuite/gas/mmix/regx-op.l
@@ -0,0 +1,51 @@
+GAS for MMIX .*/regx-op\.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 0000 9A7B0C43 Main PRELD X,Y,Z
+ 4 0004 9C200C43 PREGO 32,Y,Z
+ 5 0008 B87B2043 SYNCD X,\$32,Z
+ 6 000c BA008543 PREST 0,\$133,Z
+ 7 0010 B47B0C49 STCO X,Y,\$73
+ 8 0014 BC820CE9 SYNCID 130,Y,\$233
+ 9 0018 9A7B26D4 PRELD X,\$38,\$212
+ 10 001c 9C01AFB5 PREGO 1,\$175,\$181
+ 11
+ 12 0020 B97B0CB0 SYNCD X,Y,Z0
+ 13 0024 BB200CB0 PREST 32,Y,Z0
+ 14 0028 B57B84B0 STCO X,\$132,Z0
+ 15 002c BDE885B0 SYNCID 232,\$133,Z0
+ 16 0030 9B7B0CCB PRELD X,Y,203
+ 17 0034 9DE70CD5 PREGO 231,Y,213
+ 18 0038 B97B26D3 SYNCD X,\$38,211
+ 19 003c BB04AFA1 PREST 4,\$175,161
+ 20
+ 21 0040 B57B0C00 STCO X,Y,0
+ 22 0044 BD170C00 SYNCID 23,Y,0
+ 23 0048 9B020C00 PRELD 2,Y,0
+ 24 004c 9DE88500 PREGO 232,\$133,0
+ 25 0050 B97B0C00 SYNCD X,Y,0
+ 26 0054 BB0D0C00 PREST 13,Y,0
+ 27 0058 B57B2600 STCO X,\$38,0
+ 28 005c BD04AF00 SYNCID 4,\$175,0
+ 29
+ 30 0060 9B7B0C00 PRELD X,Y
+ 31 0064 9D200C00 PREGO 32,Y
+ 32 0068 B97B2000 SYNCD X,\$32
+ 33 006c BBE88500 PREST 232,\$133
+ 34 X IS 123
+ 35 Y IS \$12
+ 36 Z IS \$67
+ 37 Z0 IS 176
+ GAS for MMIX .*/regx-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/regx-op\.s:3 \.text:0000000000000000 Main
+ \*ABS\*:000000000000007b X
+ \*REG\*:000000000000000c Y
+ \*REG\*:0000000000000043 Z
+ \*ABS\*:00000000000000b0 Z0
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/regx-op.s b/gas/testsuite/gas/mmix/regx-op.s
new file mode 100644
index 0000000..1b8d776
--- /dev/null
+++ b/gas/testsuite/gas/mmix/regx-op.s
@@ -0,0 +1,37 @@
+# For insns where X is a constant: 'X'-type operands.
+#
+Main PRELD X,Y,Z
+ PREGO 32,Y,Z
+ SYNCD X,$32,Z
+ PREST 0,$133,Z
+ STCO X,Y,$73
+ SYNCID 130,Y,$233
+ PRELD X,$38,$212
+ PREGO 1,$175,$181
+
+ SYNCD X,Y,Z0
+ PREST 32,Y,Z0
+ STCO X,$132,Z0
+ SYNCID 232,$133,Z0
+ PRELD X,Y,203
+ PREGO 231,Y,213
+ SYNCD X,$38,211
+ PREST 4,$175,161
+
+ STCO X,Y,0
+ SYNCID 23,Y,0
+ PRELD 2,Y,0
+ PREGO 232,$133,0
+ SYNCD X,Y,0
+ PREST 13,Y,0
+ STCO X,$38,0
+ SYNCID 4,$175,0
+
+ PRELD X,Y
+ PREGO 32,Y
+ SYNCD X,$32
+ PREST 232,$133
+X IS 123
+Y IS $12
+Z IS $67
+Z0 IS 176
diff --git a/gas/testsuite/gas/mmix/regy-op-r.d b/gas/testsuite/gas/mmix/regy-op-r.d
new file mode 100644
index 0000000..5d73bc2
--- /dev/null
+++ b/gas/testsuite/gas/mmix/regy-op-r.d
@@ -0,0 +1,36 @@
+# objdump: -dr
+# as: -linkrelax
+# source: regy-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 347b0c43 neg \$123,12,\$67
+ 4: 36200c43 negu \$32,12,\$67
+ 8: 347b2043 neg \$123,32,\$67
+ c: 36008543 negu \$0,133,\$67
+ 10: 347b0c49 neg \$123,12,\$73
+ 14: 36820ce9 negu \$130,12,\$233
+ 18: 347b26d4 neg \$123,38,\$212
+ 1c: 3601afb5 negu \$1,175,\$181
+ 20: 357b0cb0 neg \$123,12,176
+ 24: 37200cb0 negu \$32,12,176
+ 28: 357b84b0 neg \$123,132,176
+ 2c: 37e885b0 negu \$232,133,176
+ 30: 357b0ccb neg \$123,12,203
+ 34: 37e70cd5 negu \$231,12,213
+ 38: 357b26d3 neg \$123,38,211
+ 3c: 3704afa1 negu \$4,175,161
+ 40: 357b0c00 neg \$123,12,0
+ 44: 37170c00 negu \$23,12,0
+ 48: 35020c00 neg \$2,12,0
+ 4c: 37e88500 negu \$232,133,0
+ 50: 347b0043 neg \$123,0,\$67
+ 54: 36200043 negu \$32,0,\$67
+ 58: 357b0020 neg \$123,0,32
+ 5c: 37e80085 negu \$232,0,133
+ 60: 357b00b0 neg \$123,0,176
+ 64: 372000b0 negu \$32,0,176
+ 68: 347b0020 neg \$123,0,\$32
+ 6c: 36e80085 negu \$232,0,\$133
diff --git a/gas/testsuite/gas/mmix/regy-op.d b/gas/testsuite/gas/mmix/regy-op.d
new file mode 100644
index 0000000..5091e22
--- /dev/null
+++ b/gas/testsuite/gas/mmix/regy-op.d
@@ -0,0 +1,34 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 347b0c43 neg \$123,12,\$67
+ 4: 36200c43 negu \$32,12,\$67
+ 8: 347b2043 neg \$123,32,\$67
+ c: 36008543 negu \$0,133,\$67
+ 10: 347b0c49 neg \$123,12,\$73
+ 14: 36820ce9 negu \$130,12,\$233
+ 18: 347b26d4 neg \$123,38,\$212
+ 1c: 3601afb5 negu \$1,175,\$181
+ 20: 357b0cb0 neg \$123,12,176
+ 24: 37200cb0 negu \$32,12,176
+ 28: 357b84b0 neg \$123,132,176
+ 2c: 37e885b0 negu \$232,133,176
+ 30: 357b0ccb neg \$123,12,203
+ 34: 37e70cd5 negu \$231,12,213
+ 38: 357b26d3 neg \$123,38,211
+ 3c: 3704afa1 negu \$4,175,161
+ 40: 357b0c00 neg \$123,12,0
+ 44: 37170c00 negu \$23,12,0
+ 48: 35020c00 neg \$2,12,0
+ 4c: 37e88500 negu \$232,133,0
+ 50: 347b0043 neg \$123,0,\$67
+ 54: 36200043 negu \$32,0,\$67
+ 58: 357b0020 neg \$123,0,32
+ 5c: 37e80085 negu \$232,0,133
+ 60: 357b00b0 neg \$123,0,176
+ 64: 372000b0 negu \$32,0,176
+ 68: 347b0020 neg \$123,0,\$32
+ 6c: 36e80085 negu \$232,0,\$133
diff --git a/gas/testsuite/gas/mmix/regy-op.l b/gas/testsuite/gas/mmix/regy-op.l
new file mode 100644
index 0000000..ee97929
--- /dev/null
+++ b/gas/testsuite/gas/mmix/regy-op.l
@@ -0,0 +1,51 @@
+GAS for MMIX .*/regy-op\.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 0000 347B0C43 Main NEG X,Y,Z
+ 4 0004 36200C43 NEGU \$32,Y,Z
+ 5 0008 347B2043 NEG X,32,Z
+ 6 000c 36008543 NEGU \$0,133,Z
+ 7 0010 347B0C49 NEG X,Y,\$73
+ 8 0014 36820CE9 NEGU \$130,Y,\$233
+ 9 0018 347B26D4 NEG X,38,\$212
+ 10 001c 3601AFB5 NEGU \$1,175,\$181
+ 11
+ 12 0020 357B0CB0 NEG X,Y,Z0
+ 13 0024 37200CB0 NEGU \$32,Y,Z0
+ 14 0028 357B84B0 NEG X,132,Z0
+ 15 002c 37E885B0 NEGU \$232,133,Z0
+ 16 0030 357B0CCB NEG X,Y,203
+ 17 0034 37E70CD5 NEGU \$231,Y,213
+ 18 0038 357B26D3 NEG X,38,211
+ 19 003c 3704AFA1 NEGU \$4,175,161
+ 20
+ 21 0040 357B0C00 NEG X,Y,0
+ 22 0044 37170C00 NEGU \$23,Y,0
+ 23 0048 35020C00 NEG \$2,Y,0
+ 24 004c 37E88500 NEGU \$232,133,0
+ 25
+ 26 0050 347B0043 NEG X,Z
+ 27 0054 36200043 NEGU \$32,Z
+ 28 0058 357B0020 NEG X,32
+ 29 005c 37E80085 NEGU \$232,133
+ 30 0060 357B00B0 NEG X,Z0
+ 31 0064 372000B0 NEGU \$32,Z0
+ 32 0068 347B0020 NEG X,\$32
+ 33 006c 36E80085 NEGU \$232,\$133
+ 34 X IS \$123
+ 35 Y IS 12
+ 36 Z IS \$67
+ 37 Z0 IS 176
+ GAS for MMIX .*/regy-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/regy-op\.s:3 \.text:0000000000000000 Main
+ \*REG\*:000000000000007b X
+ \*ABS\*:000000000000000c Y
+ \*REG\*:0000000000000043 Z
+ \*ABS\*:00000000000000b0 Z0
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/regy-op.s b/gas/testsuite/gas/mmix/regy-op.s
new file mode 100644
index 0000000..7cf75ce
--- /dev/null
+++ b/gas/testsuite/gas/mmix/regy-op.s
@@ -0,0 +1,37 @@
+# For insns where Y is a constant: 'Y'-type operands.
+# Only NEG and NEGU, actually.
+Main NEG X,Y,Z
+ NEGU $32,Y,Z
+ NEG X,32,Z
+ NEGU $0,133,Z
+ NEG X,Y,$73
+ NEGU $130,Y,$233
+ NEG X,38,$212
+ NEGU $1,175,$181
+
+ NEG X,Y,Z0
+ NEGU $32,Y,Z0
+ NEG X,132,Z0
+ NEGU $232,133,Z0
+ NEG X,Y,203
+ NEGU $231,Y,213
+ NEG X,38,211
+ NEGU $4,175,161
+
+ NEG X,Y,0
+ NEGU $23,Y,0
+ NEG $2,Y,0
+ NEGU $232,133,0
+
+ NEG X,Z
+ NEGU $32,Z
+ NEG X,32
+ NEGU $232,133
+ NEG X,Z0
+ NEGU $32,Z0
+ NEG X,$32
+ NEGU $232,$133
+X IS $123
+Y IS 12
+Z IS $67
+Z0 IS 176
diff --git a/gas/testsuite/gas/mmix/relax1-n.d b/gas/testsuite/gas/mmix/relax1-n.d
new file mode 100644
index 0000000..4df6a56
--- /dev/null
+++ b/gas/testsuite/gas/mmix/relax1-n.d
@@ -0,0 +1,90 @@
+#objdump: -dr
+#as: -no-expand -x
+#source: relax1.s
+#
+# FIXME: This test-case assumes that out-of-range errors cause relocs to
+# be emitted, rather than errors emitted.
+
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f0020009 jmp 80024 <l6>
+
+0000000000000004 <l0>:
+ 4: f0020008 jmp 80024 <l6>
+
+0000000000000008 <l1>:
+ 8: f0020007 jmp 80024 <l6>
+
+000000000000000c <l01>:
+ c: f0020006 jmp 80024 <l6>
+ 10: f407ffff geta \$7,4000c <nearfar1>
+ 14: f2bfffff pushj \$191,40010 <nearfar2>
+
+0000000000000018 <l2>:
+ 18: f000fffe jmp 40010 <nearfar2>
+ \.\.\.
+ 40004: 4d480000 bnp \$72,4 <l0>
+ 40008: f5040000 geta \$4,8 <l1>
+
+000000000004000c <nearfar1>:
+ 4000c: f3050000 pushj \$5,c <l01>
+
+0000000000040010 <nearfar2>:
+ 40010: f4090000 geta \$9,40010 <nearfar2>
+ 40010: R_MMIX_ADDR19 \.text\+0x8
+ 40014: f20b0000 pushj \$11,40014 <nearfar2\+0x4>
+ 40014: R_MMIX_ADDR19 \.text\+0x80014
+
+0000000000040018 <l4>:
+ 40018: 4437ffff bp \$55,80014 <l3>
+ ...
+ 80010: f1fdfffe jmp 8 <l1>
+
+0000000000080014 <l3>:
+ 80014: f1fdfffc jmp 4 <l0>
+ 80018: 47580000 bod \$88,40018 <l4>
+ 8001c: 46580000 bod \$88,8001c <l3\+0x8>
+ 8001c: R_MMIX_ADDR19 \.text\+0x40018
+ 80020: f0000000 jmp 80020 <l3\+0xc>
+ 80020: R_MMIX_ADDR27 \.text\+0x4080020
+
+0000000000080024 <l6>:
+ 80024: f0ffffff jmp 4080020 <l5>
+ 80028: 436ffffb bz \$111,80014 <l3>
+ \.\.\.
+
+0000000004080020 <l5>:
+ 4080020: f0000004 jmp 4080030 <l8>
+ 4080024: f1000000 jmp 80024 <l6>
+ 4080028: f0000000 jmp 4080028 <l5\+0x8>
+ 4080028: R_MMIX_ADDR27 \.text\+0x80024
+ 408002c: 482c0000 bnn \$44,408002c <l5\+0xc>
+ 408002c: R_MMIX_ADDR19 \.text\+0x40c002c
+
+0000000004080030 <l8>:
+ 4080030: 482cffff bnn \$44,40c002c <l9>
+ 4080034: f1fffffb jmp 4080020 <l5>
+ 4080038: f1fffffa jmp 4080020 <l5>
+ \.\.\.
+
+00000000040c0028 <l10>:
+ 40c0028: f1fefffe jmp 4080020 <l5>
+
+00000000040c002c <l9>:
+ 40c002c: f0000003 jmp 40c0038 <l11>
+
+00000000040c0030 <l7>:
+ 40c0030: f3210000 pushj \$33,4080030 <l8>
+ 40c0034: f2210000 pushj \$33,40c0034 <l7\+0x4>
+ 40c0034: R_MMIX_ADDR19 \.text\+0x4080030
+
+00000000040c0038 <l11>:
+ 40c0038: f1fefffa jmp 4080020 <l5>
+ 40c003c: f1fefffd jmp 4080030 <l8>
+ \.\.\.
+ 4100038: f53d0000 geta \$61,40c0038 <l11>
+ 410003c: f4480000 geta \$72,410003c <l11\+0x40004>
+ 410003c: R_MMIX_ADDR19 \.text\+0x40c0038
diff --git a/gas/testsuite/gas/mmix/relax1-r.d b/gas/testsuite/gas/mmix/relax1-r.d
new file mode 100644
index 0000000..2c22d6c
--- /dev/null
+++ b/gas/testsuite/gas/mmix/relax1-r.d
@@ -0,0 +1,145 @@
+#objdump: -dr
+#as: -linkrelax -x
+#source: relax1.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f0020019 jmp 80064 <l6>
+ 0: R_MMIX_ADDR27 \.text\+0x80064
+
+0000000000000004 <l0>:
+ 4: f0020018 jmp 80064 <l6>
+ 4: R_MMIX_ADDR27 \.text\+0x80064
+
+0000000000000008 <l1>:
+ 8: f0020017 jmp 80064 <l6>
+ 8: R_MMIX_ADDR27 \.text\+0x80064
+
+000000000000000c <l01>:
+ c: f0020016 jmp 80064 <l6>
+ c: R_MMIX_ADDR27 \.text\+0x80064
+ 10: f407ffff geta \$7,4000c <nearfar1>
+ 10: R_MMIX_ADDR19 \.text\+0x4000c
+ 14: f2bfffff pushj \$191,40010 <nearfar2>
+ 14: R_MMIX_ADDR19 \.text\+0x40010
+
+0000000000000018 <l2>:
+ 18: f000fffe jmp 40010 <nearfar2>
+ 18: R_MMIX_ADDR27 \.text\+0x40010
+ \.\.\.
+ 40004: 4d480000 bnp \$72,4 <l0>
+ 40004: R_MMIX_ADDR19 \.text\+0x4
+ 40008: f5040000 geta \$4,8 <l1>
+ 40008: R_MMIX_ADDR19 \.text\+0x8
+
+000000000004000c <nearfar1>:
+ 4000c: f3050000 pushj \$5,c <l01>
+ 4000c: R_MMIX_ADDR19 \.text\+0xc
+
+0000000000040010 <nearfar2>:
+ 40010: f4090000 geta \$9,40010 <nearfar2>
+ 40010: R_MMIX_GETA \.text\+0x8
+ 40014: fd000000 swym 0,0,0
+ 40018: fd000000 swym 0,0,0
+ 4001c: fd000000 swym 0,0,0
+ 40020: f20b0000 pushj \$11,40020 <nearfar2\+0x10>
+ 40020: R_MMIX_PUSHJ \.text\+0x80030
+ 40024: fd000000 swym 0,0,0
+ 40028: fd000000 swym 0,0,0
+ 4002c: fd000000 swym 0,0,0
+ 40030: fd000000 swym 0,0,0
+
+0000000000040034 <l4>:
+ 40034: 4437ffff bp \$55,80030 <l3>
+ 40034: R_MMIX_ADDR19 \.text\+0x80030
+ \.\.\.
+ 8002c: f1fdfff7 jmp 8 <l1>
+ 8002c: R_MMIX_ADDR27 \.text\+0x8
+
+0000000000080030 <l3>:
+ 80030: f1fdfff5 jmp 4 <l0>
+ 80030: R_MMIX_ADDR27 \.text\+0x4
+ 80034: 47580000 bod \$88,40034 <l4>
+ 80034: R_MMIX_ADDR19 \.text\+0x40034
+ 80038: 46580000 bod \$88,80038 <l3\+0x8>
+ 80038: R_MMIX_CBRANCH \.text\+0x40034
+ 8003c: fd000000 swym 0,0,0
+ 80040: fd000000 swym 0,0,0
+ 80044: fd000000 swym 0,0,0
+ 80048: fd000000 swym 0,0,0
+ 8004c: fd000000 swym 0,0,0
+ 80050: f0000000 jmp 80050 <l3\+0x20>
+ 80050: R_MMIX_JMP \.text\+0x4080060
+ 80054: fd000000 swym 0,0,0
+ 80058: fd000000 swym 0,0,0
+ 8005c: fd000000 swym 0,0,0
+ 80060: fd000000 swym 0,0,0
+
+0000000000080064 <l6>:
+ 80064: f0ffffff jmp 4080060 <l5>
+ 80064: R_MMIX_ADDR27 \.text\+0x4080060
+ 80068: 436ffff2 bz \$111,80030 <l3>
+ 80068: R_MMIX_ADDR19 \.text\+0x80030
+ \.\.\.
+
+0000000004080060 <l5>:
+ 4080060: f000000d jmp 4080094 <l8>
+ 4080060: R_MMIX_ADDR27 \.text\+0x4080094
+ 4080064: f1000000 jmp 80064 <l6>
+ 4080064: R_MMIX_ADDR27 \.text\+0x80064
+ 4080068: f0000000 jmp 4080068 <l5\+0x8>
+ 4080068: R_MMIX_JMP \.text\+0x80064
+ 408006c: fd000000 swym 0,0,0
+ 4080070: fd000000 swym 0,0,0
+ 4080074: fd000000 swym 0,0,0
+ 4080078: fd000000 swym 0,0,0
+ 408007c: 482c0000 bnn \$44,408007c <l5\+0x1c>
+ 408007c: R_MMIX_CBRANCH \.text\+0x40c0090
+ 4080080: fd000000 swym 0,0,0
+ 4080084: fd000000 swym 0,0,0
+ 4080088: fd000000 swym 0,0,0
+ 408008c: fd000000 swym 0,0,0
+ 4080090: fd000000 swym 0,0,0
+
+0000000004080094 <l8>:
+ 4080094: 482cffff bnn \$44,40c0090 <l9>
+ 4080094: R_MMIX_ADDR19 \.text\+0x40c0090
+ 4080098: f1fffff2 jmp 4080060 <l5>
+ 4080098: R_MMIX_ADDR27 \.text\+0x4080060
+ 408009c: f1fffff1 jmp 4080060 <l5>
+ 408009c: R_MMIX_ADDR27 \.text\+0x4080060
+ \.\.\.
+
+00000000040c008c <l10>:
+ 40c008c: f1fefff5 jmp 4080060 <l5>
+ 40c008c: R_MMIX_ADDR27 \.text\+0x4080060
+
+00000000040c0090 <l9>:
+ 40c0090: f0000007 jmp 40c00ac <l11>
+ 40c0090: R_MMIX_ADDR27 \.text\+0x40c00ac
+
+00000000040c0094 <l7>:
+ 40c0094: f3210000 pushj \$33,4080094 <l8>
+ 40c0094: R_MMIX_ADDR19 \.text\+0x4080094
+ 40c0098: f2210000 pushj \$33,40c0098 <l7\+0x4>
+ 40c0098: R_MMIX_PUSHJ \.text\+0x4080094
+ 40c009c: fd000000 swym 0,0,0
+ 40c00a0: fd000000 swym 0,0,0
+ 40c00a4: fd000000 swym 0,0,0
+ 40c00a8: fd000000 swym 0,0,0
+
+00000000040c00ac <l11>:
+ 40c00ac: f1feffed jmp 4080060 <l5>
+ 40c00ac: R_MMIX_ADDR27 \.text\+0x4080060
+ 40c00b0: f1fefff9 jmp 4080094 <l8>
+ 40c00b0: R_MMIX_ADDR27 \.text\+0x4080094
+ \.\.\.
+ 41000ac: f53d0000 geta \$61,40c00ac <l11>
+ 41000ac: R_MMIX_ADDR19 \.text\+0x40c00ac
+ 41000b0: f4480000 geta \$72,41000b0 <l11\+0x40004>
+ 41000b0: R_MMIX_GETA \.text\+0x40c00ac
+ 41000b4: fd000000 swym 0,0,0
+ 41000b8: fd000000 swym 0,0,0
+ 41000bc: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/relax1-rn.d b/gas/testsuite/gas/mmix/relax1-rn.d
new file mode 100644
index 0000000..20d0b1f
--- /dev/null
+++ b/gas/testsuite/gas/mmix/relax1-rn.d
@@ -0,0 +1,117 @@
+#objdump: -dr
+#as: -linkrelax -no-expand -x
+#source: relax1.s
+#
+# FIXME: This test-case assumes that out-of-range errors (still) cause
+# relocs to be emitted, rather than errors emitted.
+
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f0000000 jmp 0 <Main>
+ 0: R_MMIX_ADDR27 \.text\+0x80024
+
+0000000000000004 <l0>:
+ 4: f0000000 jmp 4 <l0>
+ 4: R_MMIX_ADDR27 \.text\+0x80024
+
+0000000000000008 <l1>:
+ 8: f0000000 jmp 8 <l1>
+ 8: R_MMIX_ADDR27 \.text\+0x80024
+
+000000000000000c <l01>:
+ c: f0000000 jmp c <l01>
+ c: R_MMIX_ADDR27 \.text\+0x80024
+ 10: f4070000 geta \$7,10 <l01\+0x4>
+ 10: R_MMIX_ADDR19 \.text\+0x4000c
+ 14: f2bf0000 pushj \$191,14 <l01\+0x8>
+ 14: R_MMIX_ADDR19 \.text\+0x40010
+
+0000000000000018 <l2>:
+ 18: f0000000 jmp 18 <l2>
+ 18: R_MMIX_ADDR27 \.text\+0x40010
+ \.\.\.
+ 40004: 4c480000 bnp \$72,40004 <l2\+0x3ffec>
+ 40004: R_MMIX_ADDR19 \.text\+0x4
+ 40008: f4040000 geta \$4,40008 <l2\+0x3fff0>
+ 40008: R_MMIX_ADDR19 \.text\+0x8
+
+000000000004000c <nearfar1>:
+ 4000c: f2050000 pushj \$5,4000c <nearfar1>
+ 4000c: R_MMIX_ADDR19 \.text\+0xc
+
+0000000000040010 <nearfar2>:
+ 40010: f4090000 geta \$9,40010 <nearfar2>
+ 40010: R_MMIX_ADDR19 \.text\+0x8
+ 40014: f20b0000 pushj \$11,40014 <nearfar2\+0x4>
+ 40014: R_MMIX_ADDR19 \.text\+0x80014
+
+0000000000040018 <l4>:
+ 40018: 44370000 bp \$55,40018 <l4>
+ 40018: R_MMIX_ADDR19 \.text\+0x80014
+ \.\.\.
+ 80010: f0000000 jmp 80010 <l4\+0x3fff8>
+ 80010: R_MMIX_ADDR27 \.text\+0x8
+
+0000000000080014 <l3>:
+ 80014: f0000000 jmp 80014 <l3>
+ 80014: R_MMIX_ADDR27 \.text\+0x4
+ 80018: 46580000 bod \$88,80018 <l3\+0x4>
+ 80018: R_MMIX_ADDR19 \.text\+0x40018
+ 8001c: 46580000 bod \$88,8001c <l3\+0x8>
+ 8001c: R_MMIX_ADDR19 \.text\+0x40018
+ 80020: f0000000 jmp 80020 <l3\+0xc>
+ 80020: R_MMIX_ADDR27 \.text\+0x4080020
+
+0000000000080024 <l6>:
+ 80024: f0000000 jmp 80024 <l6>
+ 80024: R_MMIX_ADDR27 \.text\+0x4080020
+ 80028: 426f0000 bz \$111,80028 <l6\+0x4>
+ 80028: R_MMIX_ADDR19 \.text\+0x80014
+ \.\.\.
+
+0000000004080020 <l5>:
+ 4080020: f0000000 jmp 4080020 <l5>
+ 4080020: R_MMIX_ADDR27 \.text\+0x4080030
+ 4080024: f0000000 jmp 4080024 <l5\+0x4>
+ 4080024: R_MMIX_ADDR27 \.text\+0x80024
+ 4080028: f0000000 jmp 4080028 <l5\+0x8>
+ 4080028: R_MMIX_ADDR27 \.text\+0x80024
+ 408002c: 482c0000 bnn \$44,408002c <l5\+0xc>
+ 408002c: R_MMIX_ADDR19 \.text\+0x40c002c
+
+0000000004080030 <l8>:
+ 4080030: 482c0000 bnn \$44,4080030 <l8>
+ 4080030: R_MMIX_ADDR19 \.text\+0x40c002c
+ 4080034: f0000000 jmp 4080034 <l8\+0x4>
+ 4080034: R_MMIX_ADDR27 \.text\+0x4080020
+ 4080038: f0000000 jmp 4080038 <l8\+0x8>
+ 4080038: R_MMIX_ADDR27 \.text\+0x4080020
+ \.\.\.
+
+00000000040c0028 <l10>:
+ 40c0028: f0000000 jmp 40c0028 <l10>
+ 40c0028: R_MMIX_ADDR27 \.text\+0x4080020
+
+00000000040c002c <l9>:
+ 40c002c: f0000000 jmp 40c002c <l9>
+ 40c002c: R_MMIX_ADDR27 \.text\+0x40c0038
+
+00000000040c0030 <l7>:
+ 40c0030: f2210000 pushj \$33,40c0030 <l7>
+ 40c0030: R_MMIX_ADDR19 \.text\+0x4080030
+ 40c0034: f2210000 pushj \$33,40c0034 <l7\+0x4>
+ 40c0034: R_MMIX_ADDR19 \.text\+0x4080030
+
+00000000040c0038 <l11>:
+ 40c0038: f0000000 jmp 40c0038 <l11>
+ 40c0038: R_MMIX_ADDR27 \.text\+0x4080020
+ 40c003c: f0000000 jmp 40c003c <l11\+0x4>
+ 40c003c: R_MMIX_ADDR27 \.text\+0x4080030
+ \.\.\.
+ 4100038: f43d0000 geta \$61,4100038 <l11\+0x40000>
+ 4100038: R_MMIX_ADDR19 \.text\+0x40c0038
+ 410003c: f4480000 geta \$72,410003c <l11\+0x40004>
+ 410003c: R_MMIX_ADDR19 \.text\+0x40c0038
diff --git a/gas/testsuite/gas/mmix/relax1.d b/gas/testsuite/gas/mmix/relax1.d
new file mode 100644
index 0000000..20776cd
--- /dev/null
+++ b/gas/testsuite/gas/mmix/relax1.d
@@ -0,0 +1,118 @@
+#objdump: -dr
+#as: -x
+
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f0020019 jmp 80064 <l6>
+
+0000000000000004 <l0>:
+ 4: f0020018 jmp 80064 <l6>
+
+0000000000000008 <l1>:
+ 8: f0020017 jmp 80064 <l6>
+
+000000000000000c <l01>:
+ c: f0020016 jmp 80064 <l6>
+ 10: f407ffff geta \$7,4000c <nearfar1>
+ 14: f2bfffff pushj \$191,40010 <nearfar2>
+
+0000000000000018 <l2>:
+ 18: f000fffe jmp 40010 <nearfar2>
+ \.\.\.
+ 40004: 4d480000 bnp \$72,4 <l0>
+ 40008: f5040000 geta \$4,8 <l1>
+
+000000000004000c <nearfar1>:
+ 4000c: f3050000 pushj \$5,c <l01>
+
+0000000000040010 <nearfar2>:
+ 40010: f4090000 geta \$9,40010 <nearfar2>
+ 40010: R_MMIX_GETA \.text\+0x8
+ 40014: fd000000 swym 0,0,0
+ 40018: fd000000 swym 0,0,0
+ 4001c: fd000000 swym 0,0,0
+ 40020: f20b0000 pushj \$11,40020 <nearfar2\+0x10>
+ 40020: R_MMIX_PUSHJ \.text\+0x80030
+ 40024: fd000000 swym 0,0,0
+ 40028: fd000000 swym 0,0,0
+ 4002c: fd000000 swym 0,0,0
+ 40030: fd000000 swym 0,0,0
+
+0000000000040034 <l4>:
+ 40034: 4437ffff bp \$55,80030 <l3>
+ \.\.\.
+ 8002c: f1fdfff7 jmp 8 <l1>
+
+0000000000080030 <l3>:
+ 80030: f1fdfff5 jmp 4 <l0>
+ 80034: 47580000 bod \$88,40034 <l4>
+ 80038: 46580000 bod \$88,80038 <l3\+0x8>
+ 80038: R_MMIX_CBRANCH \.text\+0x40034
+ 8003c: fd000000 swym 0,0,0
+ 80040: fd000000 swym 0,0,0
+ 80044: fd000000 swym 0,0,0
+ 80048: fd000000 swym 0,0,0
+ 8004c: fd000000 swym 0,0,0
+ 80050: f0000000 jmp 80050 <l3\+0x20>
+ 80050: R_MMIX_JMP \.text\+0x4080060
+ 80054: fd000000 swym 0,0,0
+ 80058: fd000000 swym 0,0,0
+ 8005c: fd000000 swym 0,0,0
+ 80060: fd000000 swym 0,0,0
+
+0000000000080064 <l6>:
+ 80064: f0ffffff jmp 4080060 <l5>
+ 80068: 436ffff2 bz \$111,80030 <l3>
+ \.\.\.
+
+0000000004080060 <l5>:
+ 4080060: f000000d jmp 4080094 <l8>
+ 4080064: f1000000 jmp 80064 <l6>
+ 4080068: f0000000 jmp 4080068 <l5\+0x8>
+ 4080068: R_MMIX_JMP \.text\+0x80064
+ 408006c: fd000000 swym 0,0,0
+ 4080070: fd000000 swym 0,0,0
+ 4080074: fd000000 swym 0,0,0
+ 4080078: fd000000 swym 0,0,0
+ 408007c: 482c0000 bnn \$44,408007c <l5\+0x1c>
+ 408007c: R_MMIX_CBRANCH \.text\+0x40c0090
+ 4080080: fd000000 swym 0,0,0
+ 4080084: fd000000 swym 0,0,0
+ 4080088: fd000000 swym 0,0,0
+ 408008c: fd000000 swym 0,0,0
+ 4080090: fd000000 swym 0,0,0
+
+0000000004080094 <l8>:
+ 4080094: 482cffff bnn \$44,40c0090 <l9>
+ 4080098: f1fffff2 jmp 4080060 <l5>
+ 408009c: f1fffff1 jmp 4080060 <l5>
+ \.\.\.
+
+00000000040c008c <l10>:
+ 40c008c: f1fefff5 jmp 4080060 <l5>
+
+00000000040c0090 <l9>:
+ 40c0090: f0000007 jmp 40c00ac <l11>
+
+00000000040c0094 <l7>:
+ 40c0094: f3210000 pushj \$33,4080094 <l8>
+ 40c0098: f2210000 pushj \$33,40c0098 <l7\+0x4>
+ 40c0098: R_MMIX_PUSHJ \.text\+0x4080094
+ 40c009c: fd000000 swym 0,0,0
+ 40c00a0: fd000000 swym 0,0,0
+ 40c00a4: fd000000 swym 0,0,0
+ 40c00a8: fd000000 swym 0,0,0
+
+00000000040c00ac <l11>:
+ 40c00ac: f1feffed jmp 4080060 <l5>
+ 40c00b0: f1fefff9 jmp 4080094 <l8>
+ \.\.\.
+ 41000ac: f53d0000 geta \$61,40c00ac <l11>
+ 41000b0: f4480000 geta \$72,41000b0 <l11\+0x40004>
+ 41000b0: R_MMIX_GETA \.text\+0x40c00ac
+ 41000b4: fd000000 swym 0,0,0
+ 41000b8: fd000000 swym 0,0,0
+ 41000bc: fd000000 swym 0,0,0
diff --git a/gas/testsuite/gas/mmix/relax1.l b/gas/testsuite/gas/mmix/relax1.l
new file mode 100644
index 0000000..77caae2
--- /dev/null
+++ b/gas/testsuite/gas/mmix/relax1.l
@@ -0,0 +1,128 @@
+GAS for MMIX .*/relax1\.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 #.*
+ 4 0000 F0020019 Main JMP l6
+ 5 0004 F0020018 l0 JMP l6
+ 6 0008 F0020017 l1 JMP l6
+ 7 000c F0020016 l01 JMP l6
+ 8 0010 F407FFFF GETA \$7,nearfar1 % Within reach\.
+ 9 0014 F2BFFFFF PUSHJ \$191,nearfar2 % Within reach\.
+ 10 0018 F000FFFE l2 JMP nearfar2 % Dummy\.
+ 11 001c 00000000 \.space 65530\*4,0
+ 11 00000000
+ 11 00000000
+ 11 00000000
+ 11 00000000
+ 11 00000000
+ 12 40004 4D480000 BNP \$72,l0 % Within reach
+ 13 40008 F5040000 GETA \$4,l1 % Within reach\.
+ 14 4000c F3050000 nearfar1 PUSHJ 5,l01 % Within reach\.
+ 15 40010 F4090000 nearfar2 GETA \$9,l1 % Out of reach\.
+ 15 FD000000
+ 15 FD000000
+ 15 FD000000
+ 16 40020 F20B0000 PUSHJ \$11,l3 % Out of reach\.
+ 16 FD000000
+ 16 FD000000
+ 16 FD000000
+ 16 FD000000
+ 17 40034 4437FFFF l4 BP \$55,l3 % Within reach\.
+ 18 40038 00000000 \.space 65533\*4,0
+ 18 00000000
+ 18 00000000
+ 18 00000000
+ 18 00000000
+ 18 00000000
+ 19 8002c F1FDFFF7 JMP l1 % Dummy\.
+ 20 80030 F1FDFFF5 l3 JMP l0 % Dummy\.
+ 21 80034 47580000 BOD \$88,l4 % Within reach\.
+ 22 80038 46580000 BOD \$88,l4 % Out of reach\.
+ 22 FD000000
+ 22 FD000000
+ 22 FD000000
+ 22 FD000000
+ 22 FD000000
+ 23 80050 F0000000 JMP l5 % Out of reach\.
+ 23 FD000000
+ 23 FD000000
+ 23 FD000000
+ 23 FD000000
+ 24 80064 F0FFFFFF l6 JMP l5 % Within reach\.
+ 25 80068 436FFFF2 BZ \$111,l3 % Dummy\.
+ 26 8006c 00000000 \.space \(256\*256\*256-3\)\*4,0
+ 26 00000000
+ 26 00000000
+ 26 00000000
+ 26 00000000
+ 26 00000000
+ GAS for MMIX .*/relax1\.s page 2
+
+
+ 27 4080060 F000000D l5 JMP l8 % Dummy\.
+ 28 4080064 F1000000 JMP l6 % Within reach
+ 29 4080068 F0000000 JMP l6 % Out of reach\.
+ 29 FD000000
+ 29 FD000000
+ 29 FD000000
+ 29 FD000000
+ 30 408007c 482C0000 BNN \$44,l9 % Out of reach\.
+ 30 FD000000
+ 30 FD000000
+ 30 FD000000
+ 30 FD000000
+ 30 FD000000
+ 31 4080094 482CFFFF l8 BNN \$44,l9 % Within reach\.
+ 32 4080098 F1FFFFF2 JMP l5 % Dummy\.
+ 33 408009c F1FFFFF1 JMP l5 % Dummy\.
+ 34 40800a0 00000000 \.space 65531\*4,0
+ 34 00000000
+ 34 00000000
+ 34 00000000
+ 34 00000000
+ 34 00000000
+ 35 40c008c F1FEFFF5 l10 JMP l5 % Dummy\.
+ 36 40c0090 F0000007 l9 JMP l11 % Dummy
+ 37 40c0094 F3210000 l7 PUSHJ \$33,l8 % Within reach\.
+ 38 40c0098 F2210000 PUSHJ \$33,l8 % Out of reach\.
+ 38 FD000000
+ 38 FD000000
+ 38 FD000000
+ 38 FD000000
+ 39 40c00ac F1FEFFED l11 JMP l5 % Dummy\.
+ 40 40c00b0 F1FEFFF9 JMP l8 % Dummy\.
+ 41 40c00b4 00000000 \.space 65534\*4,0
+ 41 00000000
+ 41 00000000
+ 41 00000000
+ 41 00000000
+ 41 00000000
+ 42 41000ac F53D0000 GETA \$61,l11 % Within reach\.
+ 43 41000b0 F4480000 GETA \$72,l11 % Out of reach\.
+ 43 FD000000
+ 43 FD000000
+ 43 FD000000
+ GAS for MMIX .*/relax1\.s page 3
+
+
+DEFINED SYMBOLS
+.*/relax1\.s:4 \.text:0000000000000000 Main
+.*/relax1\.s:24 \.text:0000000000080064 l6
+.*/relax1\.s:5 \.text:0000000000000004 l0
+.*/relax1\.s:6 \.text:0000000000000008 l1
+.*/relax1\.s:7 \.text:000000000000000c l01
+.*/relax1\.s:14 \.text:000000000004000c nearfar1
+.*/relax1\.s:15 \.text:0000000000040010 nearfar2
+.*/relax1\.s:10 \.text:0000000000000018 l2
+.*/relax1\.s:20 \.text:0000000000080030 l3
+.*/relax1\.s:17 \.text:0000000000040034 l4
+.*/relax1\.s:27 \.text:0000000004080060 l5
+.*/relax1\.s:31 \.text:0000000004080094 l8
+.*/relax1\.s:36 \.text:00000000040c0090 l9
+.*/relax1\.s:35 \.text:00000000040c008c l10
+.*/relax1\.s:39 \.text:00000000040c00ac l11
+.*/relax1\.s:37 \.text:00000000040c0094 l7
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/relax1.s b/gas/testsuite/gas/mmix/relax1.s
new file mode 100644
index 0000000..5135467
--- /dev/null
+++ b/gas/testsuite/gas/mmix/relax1.s
@@ -0,0 +1,43 @@
+# Relaxation border-cases: just-within reach, just-out-of-reach, forward
+# and backward. Have a few variable-length thingies in-between so it
+# doesn't get too easy.
+Main JMP l6
+l0 JMP l6
+l1 JMP l6
+l01 JMP l6
+ GETA $7,nearfar1 % Within reach.
+ PUSHJ $191,nearfar2 % Within reach.
+l2 JMP nearfar2 % Dummy.
+ .space 65530*4,0
+ BNP $72,l0 % Within reach
+ GETA $4,l1 % Within reach.
+nearfar1 PUSHJ 5,l01 % Within reach.
+nearfar2 GETA $9,l1 % Out of reach.
+ PUSHJ $11,l3 % Out of reach.
+l4 BP $55,l3 % Within reach.
+ .space 65533*4,0
+ JMP l1 % Dummy.
+l3 JMP l0 % Dummy.
+ BOD $88,l4 % Within reach.
+ BOD $88,l4 % Out of reach.
+ JMP l5 % Out of reach.
+l6 JMP l5 % Within reach.
+ BZ $111,l3 % Dummy.
+ .space (256*256*256-3)*4,0
+l5 JMP l8 % Dummy.
+ JMP l6 % Within reach
+ JMP l6 % Out of reach.
+ BNN $44,l9 % Out of reach.
+l8 BNN $44,l9 % Within reach.
+ JMP l5 % Dummy.
+ JMP l5 % Dummy.
+ .space 65531*4,0
+l10 JMP l5 % Dummy.
+l9 JMP l11 % Dummy
+l7 PUSHJ $33,l8 % Within reach.
+ PUSHJ $33,l8 % Out of reach.
+l11 JMP l5 % Dummy.
+ JMP l8 % Dummy.
+ .space 65534*4,0
+ GETA $61,l11 % Within reach.
+ GETA $72,l11 % Out of reach.
diff --git a/gas/testsuite/gas/mmix/reloc16-n.d b/gas/testsuite/gas/mmix/reloc16-n.d
new file mode 100644
index 0000000..f37c0b7
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloc16-n.d
@@ -0,0 +1,14 @@
+# objdump: -dr
+# as: -no-expand
+# source: reloc16.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: e3040000 setl \$4,0x0
+ 2: R_MMIX_16 foo
+ 4: f82d0000 pop 45,0
+ 6: R_MMIX_16 bar\+0x2a
+ 8: fd2a0000 swym 42,0,0
+ a: R_MMIX_16 baz\+0xfffffffffffff6d7
diff --git a/gas/testsuite/gas/mmix/reloc16-r.d b/gas/testsuite/gas/mmix/reloc16-r.d
new file mode 100644
index 0000000..c56552f
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloc16-r.d
@@ -0,0 +1,14 @@
+# objdump: -dr
+# as: -linkrelax
+# source: reloc16.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: e3040000 setl \$4,0x0
+ 2: R_MMIX_16 foo
+ 4: f82d0000 pop 45,0
+ 6: R_MMIX_16 bar\+0x2a
+ 8: fd2a0000 swym 42,0,0
+ a: R_MMIX_16 baz\+0xfffffffffffff6d7
diff --git a/gas/testsuite/gas/mmix/reloc16.d b/gas/testsuite/gas/mmix/reloc16.d
new file mode 100644
index 0000000..7b5cc84
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloc16.d
@@ -0,0 +1,12 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: e3040000 setl \$4,0x0
+ 2: R_MMIX_16 foo
+ 4: f82d0000 pop 45,0
+ 6: R_MMIX_16 bar\+0x2a
+ 8: fd2a0000 swym 42,0,0
+ a: R_MMIX_16 baz\+0xfffffffffffff6d7
diff --git a/gas/testsuite/gas/mmix/reloc16.l b/gas/testsuite/gas/mmix/reloc16.l
new file mode 100644
index 0000000..9432bac
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloc16.l
@@ -0,0 +1,17 @@
+GAS for MMIX .*/reloc16\.s page 1
+
+
+ 1 #.*
+ 2 0000 E3040000 Main SETL \$4,foo
+ 3 0004 F82D0000 POP 45,bar\+42
+ 4 0008 FD2A0000 SWYM 42,baz-2345
+ GAS for MMIX .*/reloc16\.s page 2
+
+
+DEFINED SYMBOLS
+.*/reloc16\.s:2 \.text:0000000000000000 Main
+
+UNDEFINED SYMBOLS
+foo
+bar
+baz
diff --git a/gas/testsuite/gas/mmix/reloc16.s b/gas/testsuite/gas/mmix/reloc16.s
new file mode 100644
index 0000000..7c798c6
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloc16.s
@@ -0,0 +1,4 @@
+# Simple relocations against 16-bit extern symbols.
+Main SETL $4,foo
+ POP 45,bar+42
+ SWYM 42,baz-2345
diff --git a/gas/testsuite/gas/mmix/reloc8-r.d b/gas/testsuite/gas/mmix/reloc8-r.d
new file mode 100644
index 0000000..e6394e5
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloc8-r.d
@@ -0,0 +1,20 @@
+# objdump: -dr
+# as: -linkrelax
+# source: reloc8.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: b9002dea syncd 0,\$45,234
+ 1: R_MMIX_8 foo
+ 4: 372f002a negu \$47,0,42
+ 6: R_MMIX_8 bar\+0x30
+ 8: fd00b26e swym 0,178,110
+ 9: R_MMIX_8 baz\+0xfffffffffffffffe
+ c: ff000000 trip 0,0,0
+ d: R_MMIX_8 fee\+0xffffffffffffffff
+ e: R_MMIX_8 fie\+0x1
+ f: R_MMIX_8 foe\+0x3
+ 10: f9000000 resume 0
+ 13: R_MMIX_8 foobar\+0x8
diff --git a/gas/testsuite/gas/mmix/reloc8.d b/gas/testsuite/gas/mmix/reloc8.d
new file mode 100644
index 0000000..b3f1ed6
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloc8.d
@@ -0,0 +1,18 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: b9002dea syncd 0,\$45,234
+ 1: R_MMIX_8 foo
+ 4: 372f002a negu \$47,0,42
+ 6: R_MMIX_8 bar\+0x30
+ 8: fd00b26e swym 0,178,110
+ 9: R_MMIX_8 baz\+0xfffffffffffffffe
+ c: ff000000 trip 0,0,0
+ d: R_MMIX_8 fee\+0xffffffffffffffff
+ e: R_MMIX_8 fie\+0x1
+ f: R_MMIX_8 foe\+0x3
+ 10: f9000000 resume 0
+ 13: R_MMIX_8 foobar\+0x8
diff --git a/gas/testsuite/gas/mmix/reloc8.l b/gas/testsuite/gas/mmix/reloc8.l
new file mode 100644
index 0000000..2e84dea
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloc8.l
@@ -0,0 +1,26 @@
+GAS for MMIX .*/reloc8\.s page 1
+
+
+ 1 #.*
+ 2 0000 B9002DEA Main SYNCD foo,\$45,234
+ 3 0004 372F002A NEGU \$47,bar\+48,localsym
+ 4 0008 FD00B26E SWYM baz-2,45678
+ 5 000c FF000000 TRIP fee-1,fie\+1,foe\+3
+ 6 0010 F9000000 RESUME foobar\+8
+ 7 localsym IS 42
+ 8
+ GAS for MMIX .*/reloc8\.s page 2
+
+
+DEFINED SYMBOLS
+.*/reloc8\.s:2 \.text:0000000000000000 Main
+ \*ABS\*:000000000000002a localsym
+
+UNDEFINED SYMBOLS
+foo
+bar
+baz
+fee
+fie
+foe
+foobar
diff --git a/gas/testsuite/gas/mmix/reloc8.s b/gas/testsuite/gas/mmix/reloc8.s
new file mode 100644
index 0000000..e734a08
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloc8.s
@@ -0,0 +1,8 @@
+# Simple relocations against 8-bit extern symbols.
+Main SYNCD foo,$45,234
+ NEGU $47,bar+48,localsym
+ SWYM baz-2,45678
+ TRIP fee-1,fie+1,foe+3
+ RESUME foobar+8
+localsym IS 42
+
diff --git a/gas/testsuite/gas/mmix/relocl-n.d b/gas/testsuite/gas/mmix/relocl-n.d
new file mode 100644
index 0000000..7c22f0d
--- /dev/null
+++ b/gas/testsuite/gas/mmix/relocl-n.d
@@ -0,0 +1,27 @@
+#objdump: -dr
+#source: reloclab.s
+#as: -no-expand
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f0000000 jmp 0 <Main>
+ 0: R_MMIX_ADDR27 foo\+0x8
+ 4: f0000004 jmp 14 <here>
+ 8: f4080003 geta \$8,14 <here>
+ c: 46630002 bod \$99,14 <here>
+ 10: fd000000 swym 0,0,0
+
+0000000000000014 <here>:
+ 14: 42de0000 bz \$222,14 <here>
+ 14: R_MMIX_ADDR19 bar\+0x10
+
+0000000000000018 <there>:
+ 18: f4040000 geta \$4,18 <there>
+ 18: R_MMIX_ADDR19 baz
+ 1c: f2070000 pushj \$7,1c <there\+0x4>
+ 1c: R_MMIX_ADDR19 foobar
+ 20: f1fffffe jmp 18 <there>
+ 24: f558fffd geta \$88,18 <there>
+ 28: 476ffffc bod \$111,18 <there>
diff --git a/gas/testsuite/gas/mmix/reloclab-r.d b/gas/testsuite/gas/mmix/reloclab-r.d
new file mode 100644
index 0000000..5779849
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloclab-r.d
@@ -0,0 +1,49 @@
+#objdump: -dr
+#as: -linkrelax -x
+#source: reloclab.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f0000000 jmp 0 <Main>
+ 0: R_MMIX_JMP foo\+0x8
+ 4: fd000000 swym 0,0,0
+ 8: fd000000 swym 0,0,0
+ c: fd000000 swym 0,0,0
+ 10: fd000000 swym 0,0,0
+ 14: f0000004 jmp 24 <here>
+ 14: R_MMIX_ADDR27 \.text\+0x24
+ 18: f4080003 geta \$8,24 <here>
+ 18: R_MMIX_ADDR19 \.text\+0x24
+ 1c: 46630002 bod \$99,24 <here>
+ 1c: R_MMIX_ADDR19 \.text\+0x24
+ 20: fd000000 swym 0,0,0
+
+0000000000000024 <here>:
+ 24: 42de0000 bz \$222,24 <here>
+ 24: R_MMIX_CBRANCH bar\+0x10
+ 28: fd000000 swym 0,0,0
+ 2c: fd000000 swym 0,0,0
+ 30: fd000000 swym 0,0,0
+ 34: fd000000 swym 0,0,0
+ 38: fd000000 swym 0,0,0
+
+000000000000003c <there>:
+ 3c: f4040000 geta \$4,3c <there>
+ 3c: R_MMIX_GETA baz
+ 40: fd000000 swym 0,0,0
+ 44: fd000000 swym 0,0,0
+ 48: fd000000 swym 0,0,0
+ 4c: f2070000 pushj \$7,4c <there\+0x10>
+ 4c: R_MMIX_PUSHJ foobar
+ 50: fd000000 swym 0,0,0
+ 54: fd000000 swym 0,0,0
+ 58: fd000000 swym 0,0,0
+ 5c: fd000000 swym 0,0,0
+ 60: f1fffff7 jmp 3c <there>
+ 60: R_MMIX_ADDR27 \.text\+0x3c
+ 64: f558fff6 geta \$88,3c <there>
+ 64: R_MMIX_ADDR19 \.text\+0x3c
+ 68: 476ffff5 bod \$111,3c <there>
+ 68: R_MMIX_ADDR19 \.text\+0x3c
diff --git a/gas/testsuite/gas/mmix/reloclab.d b/gas/testsuite/gas/mmix/reloclab.d
new file mode 100644
index 0000000..a9c72f0
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloclab.d
@@ -0,0 +1,43 @@
+#objdump: -dr
+#as: -x
+
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f0000000 jmp 0 <Main>
+ 0: R_MMIX_JMP foo\+0x8
+ 4: fd000000 swym 0,0,0
+ 8: fd000000 swym 0,0,0
+ c: fd000000 swym 0,0,0
+ 10: fd000000 swym 0,0,0
+ 14: f0000004 jmp 24 <here>
+ 18: f4080003 geta \$8,24 <here>
+ 1c: 46630002 bod \$99,24 <here>
+ 20: fd000000 swym 0,0,0
+
+0000000000000024 <here>:
+ 24: 42de0000 bz \$222,24 <here>
+ 24: R_MMIX_CBRANCH bar\+0x10
+ 28: fd000000 swym 0,0,0
+ 2c: fd000000 swym 0,0,0
+ 30: fd000000 swym 0,0,0
+ 34: fd000000 swym 0,0,0
+ 38: fd000000 swym 0,0,0
+
+000000000000003c <there>:
+ 3c: f4040000 geta \$4,3c <there>
+ 3c: R_MMIX_GETA baz
+ 40: fd000000 swym 0,0,0
+ 44: fd000000 swym 0,0,0
+ 48: fd000000 swym 0,0,0
+ 4c: f2070000 pushj \$7,4c <there\+0x10>
+ 4c: R_MMIX_PUSHJ foobar
+ 50: fd000000 swym 0,0,0
+ 54: fd000000 swym 0,0,0
+ 58: fd000000 swym 0,0,0
+ 5c: fd000000 swym 0,0,0
+ 60: f1fffff7 jmp 3c <there>
+ 64: f558fff6 geta \$88,3c <there>
+ 68: 476ffff5 bod \$111,3c <there>
diff --git a/gas/testsuite/gas/mmix/reloclab.l b/gas/testsuite/gas/mmix/reloclab.l
new file mode 100644
index 0000000..1045c5c
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloclab.l
@@ -0,0 +1,46 @@
+GAS for MMIX .*/reloclab\.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 #.*
+ 4 0000 F0000000 Main JMP foo\+8
+ 4 FD000000
+ 4 FD000000
+ 4 FD000000
+ 4 FD000000
+ 5 0014 F0000004 JMP here
+ 6 0018 F4080003 GETA \$8,here
+ 7 001c 46630002 BOD \$99,here
+ 8 0020 FD000000 SWYM 0
+ 9 0024 42DE0000 here BZ \$222,bar\+16
+ 9 FD000000
+ 9 FD000000
+ 9 FD000000
+ 9 FD000000
+ 9 FD000000
+ 10 003c F4040000 there GETA \$4,baz
+ 10 FD000000
+ 10 FD000000
+ 10 FD000000
+ 11 004c F2070000 PUSHJ \$7,foobar
+ 11 FD000000
+ 11 FD000000
+ 11 FD000000
+ 11 FD000000
+ 12 0060 F1FFFFF7 JMP there
+ 13 0064 F558FFF6 GETA \$88,there
+ 14 0068 476FFFF5 BOD \$111,there
+ GAS for MMIX .*/reloclab\.s page 2
+
+
+DEFINED SYMBOLS
+.*/reloclab\.s:4 \.text:0000000000000000 Main
+.*/reloclab\.s:9 \.text:0000000000000024 here
+.*/reloclab\.s:10 \.text:000000000000003c there
+
+UNDEFINED SYMBOLS
+foo
+bar
+baz
+foobar
diff --git a/gas/testsuite/gas/mmix/reloclab.s b/gas/testsuite/gas/mmix/reloclab.s
new file mode 100644
index 0000000..2066e04
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloclab.s
@@ -0,0 +1,14 @@
+# Different relocations for extern labels: GETA, PUSHJ, Bcc, JMP.
+# Mix in different accesses to local labels to see that relaxing works for
+# this case.
+Main JMP foo+8
+ JMP here
+ GETA $8,here
+ BOD $99,here
+ SWYM 0
+here BZ $222,bar+16
+there GETA $4,baz
+ PUSHJ $7,foobar
+ JMP there
+ GETA $88,there
+ BOD $111,there
diff --git a/gas/testsuite/gas/mmix/reloclrn.d b/gas/testsuite/gas/mmix/reloclrn.d
new file mode 100644
index 0000000..f065491
--- /dev/null
+++ b/gas/testsuite/gas/mmix/reloclrn.d
@@ -0,0 +1,33 @@
+# objdump: -dr
+# as: -linkrelax -no-expand
+# source: reloclab.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f0000000 jmp 0 <Main>
+ 0: R_MMIX_ADDR27 foo\+0x8
+ 4: f0000000 jmp 4 <Main\+0x4>
+ 4: R_MMIX_ADDR27 \.text\+0x14
+ 8: f4080000 geta \$8,8 <Main\+0x8>
+ 8: R_MMIX_ADDR19 \.text\+0x14
+ c: 46630000 bod \$99,c <Main\+0xc>
+ c: R_MMIX_ADDR19 \.text\+0x14
+ 10: fd000000 swym 0,0,0
+
+0000000000000014 <here>:
+ 14: 42de0000 bz \$222,14 <here>
+ 14: R_MMIX_ADDR19 bar\+0x10
+
+0000000000000018 <there>:
+ 18: f4040000 geta \$4,18 <there>
+ 18: R_MMIX_ADDR19 baz
+ 1c: f2070000 pushj \$7,1c <there\+0x4>
+ 1c: R_MMIX_ADDR19 foobar
+ 20: f0000000 jmp 20 <there\+0x8>
+ 20: R_MMIX_ADDR27 \.text\+0x18
+ 24: f4580000 geta \$88,24 <there\+0xc>
+ 24: R_MMIX_ADDR19 \.text\+0x18
+ 28: 466f0000 bod \$111,28 <there\+0x10>
+ 28: R_MMIX_ADDR19 \.text\+0x18
diff --git a/gas/testsuite/gas/mmix/relocxrn.d b/gas/testsuite/gas/mmix/relocxrn.d
new file mode 100644
index 0000000..ff7f1db
--- /dev/null
+++ b/gas/testsuite/gas/mmix/relocxrn.d
@@ -0,0 +1,14 @@
+# objdump: -dr
+# as: -no-expand -linkrelax
+# source: reloc16.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: e3040000 setl \$4,0x0
+ 2: R_MMIX_16 foo
+ 4: f82d0000 pop 45,0
+ 6: R_MMIX_16 bar\+0x2a
+ 8: fd2a0000 swym 42,0,0
+ a: R_MMIX_16 baz\+0xfffffffffffff6d7
diff --git a/gas/testsuite/gas/mmix/resume-op-r.d b/gas/testsuite/gas/mmix/resume-op-r.d
new file mode 100644
index 0000000..b435194
--- /dev/null
+++ b/gas/testsuite/gas/mmix/resume-op-r.d
@@ -0,0 +1,12 @@
+# objdump: -dr
+# as: -linkrelax
+# source: resume-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f9000001 resume 1
+ 4: f9000000 resume 0
+ 8: f9000001 resume 1
+ c: f9000000 resume 0
diff --git a/gas/testsuite/gas/mmix/resume-op.d b/gas/testsuite/gas/mmix/resume-op.d
new file mode 100644
index 0000000..f03fbaf
--- /dev/null
+++ b/gas/testsuite/gas/mmix/resume-op.d
@@ -0,0 +1,10 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: f9000001 resume 1
+ 4: f9000000 resume 0
+ 8: f9000001 resume 1
+ c: f9000000 resume 0
diff --git a/gas/testsuite/gas/mmix/resume-op.l b/gas/testsuite/gas/mmix/resume-op.l
new file mode 100644
index 0000000..eae3067
--- /dev/null
+++ b/gas/testsuite/gas/mmix/resume-op.l
@@ -0,0 +1,20 @@
+GAS for MMIX .*/resume-op\.s page 1
+
+
+ 1 # Test the 'z'-type operand, RESUME\.
+ 2 0000 F9000001 Main RESUME X
+ 3 0004 F9000000 RESUME 0
+ 4 0008 F9000001 RESUME 1
+ 5 000c F9000000 RESUME XX
+ 6 X IS 1
+ 7 XX IS 0
+ 8
+ GAS for MMIX .*/resume-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/resume-op\.s:2 \.text:0000000000000000 Main
+ \*ABS\*:0000000000000001 X
+ \*ABS\*:0000000000000000 XX
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/resume-op.s b/gas/testsuite/gas/mmix/resume-op.s
new file mode 100644
index 0000000..a4a0c49
--- /dev/null
+++ b/gas/testsuite/gas/mmix/resume-op.s
@@ -0,0 +1,8 @@
+# Test the 'z'-type operand, RESUME.
+Main RESUME X
+ RESUME 0
+ RESUME 1
+ RESUME XX
+X IS 1
+XX IS 0
+
diff --git a/gas/testsuite/gas/mmix/round2-op-r.d b/gas/testsuite/gas/mmix/round2-op-r.d
new file mode 100644
index 0000000..37c9a4b
--- /dev/null
+++ b/gas/testsuite/gas/mmix/round2-op-r.d
@@ -0,0 +1,19 @@
+# objdump: -dr
+# as: -linkrelax
+# source: round2-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 088700f4 flot \$135,\$244
+ 4: 0a8700e9 flotu \$135,\$233
+ 8: 0d85005b sflot \$133,91
+ c: 177b00f4 fint \$123,\$244
+ 10: 0c8500f4 sflot \$133,\$244
+ 14: 0987005b flot \$135,91
+ 18: 0f7b005b sflotu \$123,91
+ 1c: 05ad00e9 fix \$173,\$233
+ 20: 0bad00d5 flotu \$173,213
+ 24: 078700f4 fixu \$135,\$244
+ 28: 0b870077 flotu \$135,119
diff --git a/gas/testsuite/gas/mmix/round2-op.d b/gas/testsuite/gas/mmix/round2-op.d
new file mode 100644
index 0000000..236727b
--- /dev/null
+++ b/gas/testsuite/gas/mmix/round2-op.d
@@ -0,0 +1,17 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 088700f4 flot \$135,\$244
+ 4: 0a8700e9 flotu \$135,\$233
+ 8: 0d85005b sflot \$133,91
+ c: 177b00f4 fint \$123,\$244
+ 10: 0c8500f4 sflot \$133,\$244
+ 14: 0987005b flot \$135,91
+ 18: 0f7b005b sflotu \$123,91
+ 1c: 05ad00e9 fix \$173,\$233
+ 20: 0bad00d5 flotu \$173,213
+ 24: 078700f4 fixu \$135,\$244
+ 28: 0b870077 flotu \$135,119
diff --git a/gas/testsuite/gas/mmix/round2-op.l b/gas/testsuite/gas/mmix/round2-op.l
new file mode 100644
index 0000000..303389d
--- /dev/null
+++ b/gas/testsuite/gas/mmix/round2-op.l
@@ -0,0 +1,28 @@
+GAS for MMIX .*/round2-op\.s page 1
+
+
+ 1 #.*
+ 2 0000 088700F4 Main FLOT X,Z
+ 3 0004 0A8700E9 FLOTU X,\$233
+ 4 0008 0D85005B SFLOT \$133,Z0
+ 5 000c 177B00F4 FINT \$123,Z
+ 6 0010 0C8500F4 SFLOT \$133,Z
+ 7 0014 0987005B FLOT X,Z0
+ 8 0018 0F7B005B SFLOTU \$123,Z0
+ 9 001c 05AD00E9 FIX \$173,\$233
+ 10 0020 0BAD00D5 FLOTU \$173,213
+ 11 0024 078700F4 FIXU X,Z
+ 12 0028 0B870077 FLOTU X,119
+ 13 X IS \$135
+ 14 Z IS \$244
+ 15 Z0 IS 91
+ GAS for MMIX .*/round2-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/round2-op\.s:2 \.text:0000000000000000 Main
+ \*REG\*:0000000000000087 X
+ \*REG\*:00000000000000f4 Z
+ \*ABS\*:000000000000005b Z0
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/round2-op.s b/gas/testsuite/gas/mmix/round2-op.s
new file mode 100644
index 0000000..aafeb1a
--- /dev/null
+++ b/gas/testsuite/gas/mmix/round2-op.s
@@ -0,0 +1,15 @@
+# Two-operand variants of "R" and "I".
+Main FLOT X,Z
+ FLOTU X,$233
+ SFLOT $133,Z0
+ FINT $123,Z
+ SFLOT $133,Z
+ FLOT X,Z0
+ SFLOTU $123,Z0
+ FIX $173,$233
+ FLOTU $173,213
+ FIXU X,Z
+ FLOTU X,119
+X IS $135
+Z IS $244
+Z0 IS 91
diff --git a/gas/testsuite/gas/mmix/roundi-op-r.d b/gas/testsuite/gas/mmix/roundi-op-r.d
new file mode 100644
index 0000000..d29c404
--- /dev/null
+++ b/gas/testsuite/gas/mmix/roundi-op-r.d
@@ -0,0 +1,22 @@
+# objdump: -dr
+# as: -linkrelax
+# source: roundi-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 088701f4 flot \$135,ROUND_OFF,\$244
+ 4: 0a8702e9 flotu \$135,ROUND_UP,\$233
+ 8: 0d85005b sflot \$133,91
+ c: 0e7b04f4 sflotu \$123,ROUND_NEAR,\$244
+ 10: 0c8500f4 sflot \$133,\$244
+ 14: 0987005b flot \$135,91
+ 18: 0f7b045b sflotu \$123,ROUND_NEAR,91
+ 1c: 0987015b flot \$135,ROUND_OFF,91
+ 20: 0aad02e9 flotu \$173,ROUND_UP,\$233
+ 24: 0bad02d5 flotu \$173,ROUND_UP,213
+ 28: 0c8700f4 sflot \$135,\$244
+ 2c: 0b870277 flotu \$135,ROUND_UP,119
+ 30: 0d87005b sflot \$135,91
+ 34: 088700f4 flot \$135,\$244
diff --git a/gas/testsuite/gas/mmix/roundi-op.d b/gas/testsuite/gas/mmix/roundi-op.d
new file mode 100644
index 0000000..f39bb9e
--- /dev/null
+++ b/gas/testsuite/gas/mmix/roundi-op.d
@@ -0,0 +1,20 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: 088701f4 flot \$135,ROUND_OFF,\$244
+ 4: 0a8702e9 flotu \$135,ROUND_UP,\$233
+ 8: 0d85005b sflot \$133,91
+ c: 0e7b04f4 sflotu \$123,ROUND_NEAR,\$244
+ 10: 0c8500f4 sflot \$133,\$244
+ 14: 0987005b flot \$135,91
+ 18: 0f7b045b sflotu \$123,ROUND_NEAR,91
+ 1c: 0987015b flot \$135,ROUND_OFF,91
+ 20: 0aad02e9 flotu \$173,ROUND_UP,\$233
+ 24: 0bad02d5 flotu \$173,ROUND_UP,213
+ 28: 0c8700f4 sflot \$135,\$244
+ 2c: 0b870277 flotu \$135,ROUND_UP,119
+ 30: 0d87005b sflot \$135,91
+ 34: 088700f4 flot \$135,\$244
diff --git a/gas/testsuite/gas/mmix/roundi-op.l b/gas/testsuite/gas/mmix/roundi-op.l
new file mode 100644
index 0000000..5ac36fa
--- /dev/null
+++ b/gas/testsuite/gas/mmix/roundi-op.l
@@ -0,0 +1,31 @@
+GAS for MMIX .*/roundi-op\.s page 1
+
+
+ 1 #.*
+ 2 0000 088701F4 Main FLOT X,ROUND_OFF,Z
+ 3 0004 0A8702E9 FLOTU X,2,\$233
+ 4 0008 0D85005B SFLOT \$133,0,Z0
+ 5 000c 0E7B04F4 SFLOTU \$123,ROUND_NEAR,Z
+ 6 0010 0C8500F4 SFLOT \$133,0,Z
+ 7 0014 0987005B FLOT X,ROUND_CURRENT,Z0
+ 8 0018 0F7B045B SFLOTU \$123,ROUND_NEAR,Z0
+ 9 001c 0987015B FLOT X,ROUND_OFF,Z0
+ 10 0020 0AAD02E9 FLOTU \$173,2,\$233
+ 11 0024 0BAD02D5 FLOTU \$173,2,213
+ 12 0028 0C8700F4 SFLOT X,0,Z
+ 13 002c 0B870277 FLOTU X,2,119
+ 14 0030 0D87005B SFLOT X,0,Z0
+ 15 0034 088700F4 FLOT X,ROUND_CURRENT,Z
+ 16 X IS \$135
+ 17 Z IS \$244
+ 18 Z0 IS 91
+ GAS for MMIX .*/roundi-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/roundi-op\.s:2 \.text:0000000000000000 Main
+ \*REG\*:0000000000000087 X
+ \*REG\*:00000000000000f4 Z
+ \*ABS\*:000000000000005b Z0
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/roundi-op.s b/gas/testsuite/gas/mmix/roundi-op.s
new file mode 100644
index 0000000..ecc503e
--- /dev/null
+++ b/gas/testsuite/gas/mmix/roundi-op.s
@@ -0,0 +1,18 @@
+# Round-type "R".
+Main FLOT X,ROUND_OFF,Z
+ FLOTU X,2,$233
+ SFLOT $133,0,Z0
+ SFLOTU $123,ROUND_NEAR,Z
+ SFLOT $133,0,Z
+ FLOT X,ROUND_CURRENT,Z0
+ SFLOTU $123,ROUND_NEAR,Z0
+ FLOT X,ROUND_OFF,Z0
+ FLOTU $173,2,$233
+ FLOTU $173,2,213
+ SFLOT X,0,Z
+ FLOTU X,2,119
+ SFLOT X,0,Z0
+ FLOT X,ROUND_CURRENT,Z
+X IS $135
+Z IS $244
+Z0 IS 91
diff --git a/gas/testsuite/gas/mmix/roundr-op-r.d b/gas/testsuite/gas/mmix/roundr-op-r.d
new file mode 100644
index 0000000..ff2f0b0
--- /dev/null
+++ b/gas/testsuite/gas/mmix/roundr-op-r.d
@@ -0,0 +1,15 @@
+# objdump: -dr
+# as: -linkrelax
+# source: roundr-op.s
+.*: file format elf64-mmix
+
+Disassembly of section .text:
+
+0000000000000000 <Main>:
+ 0: 178701f4 fint \$135,ROUND_OFF,\$244
+ 4: 058702e9 fix \$135,ROUND_UP,\$233
+ 8: 178500f4 fint \$133,\$244
+ c: 157b04f4 fsqrt \$123,ROUND_NEAR,\$244
+ 10: 17ad02e9 fint \$173,ROUND_UP,\$233
+ 14: 058700f4 fix \$135,\$244
+ 18: 078700f4 fixu \$135,\$244
diff --git a/gas/testsuite/gas/mmix/roundr-op.d b/gas/testsuite/gas/mmix/roundr-op.d
new file mode 100644
index 0000000..fe595a3
--- /dev/null
+++ b/gas/testsuite/gas/mmix/roundr-op.d
@@ -0,0 +1,13 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section .text:
+
+0000000000000000 <Main>:
+ 0: 178701f4 fint \$135,ROUND_OFF,\$244
+ 4: 058702e9 fix \$135,ROUND_UP,\$233
+ 8: 178500f4 fint \$133,\$244
+ c: 157b04f4 fsqrt \$123,ROUND_NEAR,\$244
+ 10: 17ad02e9 fint \$173,ROUND_UP,\$233
+ 14: 058700f4 fix \$135,\$244
+ 18: 078700f4 fixu \$135,\$244
diff --git a/gas/testsuite/gas/mmix/roundr-op.l b/gas/testsuite/gas/mmix/roundr-op.l
new file mode 100644
index 0000000..8948278
--- /dev/null
+++ b/gas/testsuite/gas/mmix/roundr-op.l
@@ -0,0 +1,22 @@
+GAS for MMIX .*/roundr-op\.s page 1
+
+
+ 1 # Round-type "R"\.
+ 2 0000 178701F4 Main FINT X,ROUND_OFF,Z
+ 3 0004 058702E9 FIX X,2,\$233
+ 4 0008 178500F4 FINT \$133,0,Z
+ 5 000c 157B04F4 FSQRT \$123,ROUND_NEAR,Z
+ 6 0010 17AD02E9 FINT \$173,2,\$233
+ 7 0014 058700F4 FIX X,0,Z
+ 8 0018 078700F4 FIXU X,ROUND_CURRENT,Z
+ 9 X IS \$135
+ 10 Z IS \$244
+ GAS for MMIX .*/roundr-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/roundr-op\.s:2 \.text:0000000000000000 Main
+ \*REG\*:0000000000000087 X
+ \*REG\*:00000000000000f4 Z
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/roundr-op.s b/gas/testsuite/gas/mmix/roundr-op.s
new file mode 100644
index 0000000..9f2f661
--- /dev/null
+++ b/gas/testsuite/gas/mmix/roundr-op.s
@@ -0,0 +1,10 @@
+# Round-type "R".
+Main FINT X,ROUND_OFF,Z
+ FIX X,2,$233
+ FINT $133,0,Z
+ FSQRT $123,ROUND_NEAR,Z
+ FINT $173,2,$233
+ FIX X,0,Z
+ FIXU X,ROUND_CURRENT,Z
+X IS $135
+Z IS $244
diff --git a/gas/testsuite/gas/mmix/save-op-r.d b/gas/testsuite/gas/mmix/save-op-r.d
new file mode 100644
index 0000000..dcec79d
--- /dev/null
+++ b/gas/testsuite/gas/mmix/save-op-r.d
@@ -0,0 +1,11 @@
+# objdump: -dr
+# as: -linkrelax
+# source: save-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fa2d0000 save \$45,0
+ 4: fa1f0000 save \$31,0
+ 8: fa000000 save \$0,0
diff --git a/gas/testsuite/gas/mmix/save-op.d b/gas/testsuite/gas/mmix/save-op.d
new file mode 100644
index 0000000..82e2f1e
--- /dev/null
+++ b/gas/testsuite/gas/mmix/save-op.d
@@ -0,0 +1,9 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fa2d0000 save \$45,0
+ 4: fa1f0000 save \$31,0
+ 8: fa000000 save \$0,0
diff --git a/gas/testsuite/gas/mmix/save-op.l b/gas/testsuite/gas/mmix/save-op.l
new file mode 100644
index 0000000..9967045
--- /dev/null
+++ b/gas/testsuite/gas/mmix/save-op.l
@@ -0,0 +1,19 @@
+GAS for MMIX .*/save-op.s page 1
+
+
+ 1 #.*
+ 2 0000 FA2D0000 Main SAVE \$45,0
+ 3 0004 FA1F0000 SAVE X,0
+ 4 0008 FA000000 SAVE X0,0
+ 5 X IS \$31
+ 6 X0 IS \$0
+ 7
+ GAS for MMIX .*/save-op.s page 2
+
+
+DEFINED SYMBOLS
+.*/save-op.s:2 .text:0000000000000000 Main
+ \*REG\*:000000000000001f X
+ \*REG\*:0000000000000000 X0
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/save-op.s b/gas/testsuite/gas/mmix/save-op.s
new file mode 100644
index 0000000..a6581ce
--- /dev/null
+++ b/gas/testsuite/gas/mmix/save-op.s
@@ -0,0 +1,7 @@
+# Test the 's'-type operand, SAVE.
+Main SAVE $45,0
+ SAVE X,0
+ SAVE X0,0
+X IS $31
+X0 IS $0
+
diff --git a/gas/testsuite/gas/mmix/set-r.d b/gas/testsuite/gas/mmix/set-r.d
new file mode 100644
index 0000000..cfbde5a
--- /dev/null
+++ b/gas/testsuite/gas/mmix/set-r.d
@@ -0,0 +1,14 @@
+# objdump: -dr
+# as: -linkrelax
+# source: set.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: e32d0463 setl \$45,0x463
+ 4: c1394300 set \$57,\$67
+ 8: c14e1f00 set \$78,\$31
+ c: e3750463 setl \$117,0x463
+ 10: c1754300 set \$117,\$67
+ 14: c1751f00 set \$117,\$31
diff --git a/gas/testsuite/gas/mmix/set.d b/gas/testsuite/gas/mmix/set.d
new file mode 100644
index 0000000..d6c523c
--- /dev/null
+++ b/gas/testsuite/gas/mmix/set.d
@@ -0,0 +1,12 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: e32d0463 setl \$45,0x463
+ 4: c1394300 set \$57,\$67
+ 8: c14e1f00 set \$78,\$31
+ c: e3750463 setl \$117,0x463
+ 10: c1754300 set \$117,\$67
+ 14: c1751f00 set \$117,\$31
diff --git a/gas/testsuite/gas/mmix/set.l b/gas/testsuite/gas/mmix/set.l
new file mode 100644
index 0000000..3d6059b
--- /dev/null
+++ b/gas/testsuite/gas/mmix/set.l
@@ -0,0 +1,21 @@
+GAS for MMIX .*/set\.s page 1
+
+
+ 1 #.*
+ 2 0000 E32D0463 Main SET \$45,1123
+ 3 0004 C1394300 SET \$57,\$67
+ 4 0008 C14E1F00 SET \$78,X
+ 5 000c E3750463 SET Y,1123
+ 6 0010 C1754300 SET Y,\$67
+ 7 0014 C1751F00 SET Y,X
+ 8 X IS \$31
+ 9 Y IS \$117
+ GAS for MMIX .*/set\.s page 2
+
+
+DEFINED SYMBOLS
+.*/set\.s:2 \.text:0000000000000000 Main
+ \*REG\*:000000000000001f X
+ \*REG\*:0000000000000075 Y
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/set.s b/gas/testsuite/gas/mmix/set.s
new file mode 100644
index 0000000..7af06da
--- /dev/null
+++ b/gas/testsuite/gas/mmix/set.s
@@ -0,0 +1,9 @@
+# Test the 'r'-type operand and the mapping of SET to OR(I) and SETL.
+Main SET $45,1123
+ SET $57,$67
+ SET $78,X
+ SET Y,1123
+ SET Y,$67
+ SET Y,X
+X IS $31
+Y IS $117
diff --git a/gas/testsuite/gas/mmix/swym-op-r.d b/gas/testsuite/gas/mmix/swym-op-r.d
new file mode 100644
index 0000000..80391f6
--- /dev/null
+++ b/gas/testsuite/gas/mmix/swym-op-r.d
@@ -0,0 +1,16 @@
+# objdump: -dr
+# as: -linkrelax
+# source: swym-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd840def swym 132,13,239
+ 4: ff840def trip 132,13,239
+ 8: 00845678 trap 132,86,120
+ c: 00170def trap 23,13,239
+ 10: 0023cace trap 35,202,206
+ 14: ff170c43 trip 23,12,67
+ 18: ff175678 trip 23,86,120
+ 1c: fd12d687 swym 18,214,135
diff --git a/gas/testsuite/gas/mmix/swym-op.d b/gas/testsuite/gas/mmix/swym-op.d
new file mode 100644
index 0000000..da5e43f
--- /dev/null
+++ b/gas/testsuite/gas/mmix/swym-op.d
@@ -0,0 +1,14 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fd840def swym 132,13,239
+ 4: ff840def trip 132,13,239
+ 8: 00845678 trap 132,86,120
+ c: 00170def trap 23,13,239
+ 10: 0023cace trap 35,202,206
+ 14: ff170c43 trip 23,12,67
+ 18: ff175678 trip 23,86,120
+ 1c: fd12d687 swym 18,214,135
diff --git a/gas/testsuite/gas/mmix/swym-op.l b/gas/testsuite/gas/mmix/swym-op.l
new file mode 100644
index 0000000..c6de759
--- /dev/null
+++ b/gas/testsuite/gas/mmix/swym-op.l
@@ -0,0 +1,30 @@
+GAS for MMIX .*/swym-op\.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 0000 FD840DEF Main SWYM 132,3567
+ 4 0004 FF840DEF TRIP 132,3567
+ 5 0008 00845678 TRAP 132,YZ
+ 6 000c 00170DEF TRAP X,3567
+ 7 0010 0023CACE TRAP 2345678
+ 8 0014 FF170C43 TRIP X,Y,Z
+ 9 0018 FF175678 TRIP X,YZ
+ 10 001c FD12D687 SWYM XYZ
+ 11 X IS 23
+ 12 Y IS 12
+ 13 Z IS 67
+ 14 YZ IS #5678
+ 15 XYZ IS 1234567
+ GAS for MMIX .*/swym-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/swym-op\.s:3 \.text:0000000000000000 Main
+ \*ABS\*:0000000000005678 YZ
+ \*ABS\*:0000000000000017 X
+ \*ABS\*:000000000000000c Y
+ \*ABS\*:0000000000000043 Z
+ \*ABS\*:000000000012d687 XYZ
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/swym-op.s b/gas/testsuite/gas/mmix/swym-op.s
new file mode 100644
index 0000000..36eba57
--- /dev/null
+++ b/gas/testsuite/gas/mmix/swym-op.s
@@ -0,0 +1,15 @@
+# Check different type of operands to SWYM etc.
+# No need to check the canonical three constants.
+Main SWYM 132,3567
+ TRIP 132,3567
+ TRAP 132,YZ
+ TRAP X,3567
+ TRAP 2345678
+ TRIP X,Y,Z
+ TRIP X,YZ
+ SWYM XYZ
+X IS 23
+Y IS 12
+Z IS 67
+YZ IS #5678
+XYZ IS 1234567
diff --git a/gas/testsuite/gas/mmix/sym-1.d b/gas/testsuite/gas/mmix/sym-1.d
new file mode 100644
index 0000000..cd64ce4
--- /dev/null
+++ b/gas/testsuite/gas/mmix/sym-1.d
@@ -0,0 +1,51 @@
+#objdump: -dt
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d .text 0+
+0+ l d .data 0+
+0+ l d .bss 0+
+0+10 l .text 0+ scl1
+0+14 l .text 0+ :scl2
+0+20 l .text 0+ endcl1
+0+24 l .text 0+ endcl2:
+0+ g F .text 0+ Main
+0+4 g .text 0+ scg1
+0+8 g .text 0+ scg2
+0+c g .text 0+ :scg3
+0+18 g .text 0+ endcg1
+0+1c g .text 0+ endcg2:
+
+
+Disassembly of section .text:
+
+0+ <Main>:
+ 0: fd000410 swym 0,4,16
+
+0+4 <scg1>:
+ 4: fd100400 swym 16,4,0
+
+0+8 <scg2>:
+ 8: fda12a1e swym 161,42,30
+
+0+c <:scg3>:
+ c: fda32a14 swym 163,42,20
+
+0+10 <scl1>:
+ 10: fd010203 swym 1,2,3
+
+0+14 <:scl2>:
+ 14: fd010204 swym 1,2,4
+
+0+18 <endcg1>:
+ 18: fd030201 swym 3,2,1
+
+0+1c <endcg2:>:
+ 1c: fd030201 swym 3,2,1
+
+0+20 <endcl1>:
+ 20: fd040302 swym 4,3,2
+
+0+24 <endcl2:>:
+ 24: fd040302 swym 4,3,2
diff --git a/gas/testsuite/gas/mmix/sym-1.s b/gas/testsuite/gas/mmix/sym-1.s
new file mode 100644
index 0000000..2db16fb
--- /dev/null
+++ b/gas/testsuite/gas/mmix/sym-1.s
@@ -0,0 +1,19 @@
+# Test beginning and starting with ":"; it should be stripped off, but
+# only one. A trailing ":" is stripped off at a label only.
+
+Main SWYM 0,4,16
+ .global :scg1
+ .global scg2
+ .global ::scg3
+ .global scg2
+:scg1 SWYM 16,4,0
+:scg2 SWYM 161,42,30
+::scg3 SWYM 163,42,20
+:scl1 SWYM 1,2,3
+::scl2 SWYM 1,2,4
+ .global endcg1
+ .global endcg2:
+endcg1: SWYM 3,2,1
+endcg2:: SWYM 3,2,1
+endcl1: SWYM 4,3,2
+endcl2:: SWYM 4,3,2
diff --git a/gas/testsuite/gas/mmix/sync-op-r.d b/gas/testsuite/gas/mmix/sync-op-r.d
new file mode 100644
index 0000000..e2ceb0d
--- /dev/null
+++ b/gas/testsuite/gas/mmix/sync-op-r.d
@@ -0,0 +1,14 @@
+# objdump: -dr
+# as: -linkrelax
+# source: sync-op.s
+.*: file format elf64-mmix
+
+Disassembly of section .text:
+
+0000000000000000 <Main>:
+ 0: fc6e6406 sync 7234566
+ 4: fc000000 sync 0
+ 8: fc000001 sync 1
+ c: fc000000 sync 0
+ 10: fc000001 sync 1
+ 14: fc7c2242 sync 8135234
diff --git a/gas/testsuite/gas/mmix/sync-op.d b/gas/testsuite/gas/mmix/sync-op.d
new file mode 100644
index 0000000..06836fc
--- /dev/null
+++ b/gas/testsuite/gas/mmix/sync-op.d
@@ -0,0 +1,12 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section .text:
+
+0000000000000000 <Main>:
+ 0: fc6e6406 sync 7234566
+ 4: fc000000 sync 0
+ 8: fc000001 sync 1
+ c: fc000000 sync 0
+ 10: fc000001 sync 1
+ 14: fc7c2242 sync 8135234
diff --git a/gas/testsuite/gas/mmix/sync-op.l b/gas/testsuite/gas/mmix/sync-op.l
new file mode 100644
index 0000000..f97ab66
--- /dev/null
+++ b/gas/testsuite/gas/mmix/sync-op.l
@@ -0,0 +1,23 @@
+GAS for MMIX .*/sync-op\.s page 1
+
+
+ 1 #.*
+ 2 0000 FC6E6406 Main SYNC 7234566
+ 3 0004 FC000000 SYNC 0
+ 4 0008 FC000001 SYNC 1
+ 5 000c FC000000 SYNC Zz
+ 6 0010 FC000001 SYNC Zo
+ 7 0014 FC7C2242 SYNC Z
+ 8 Zz IS 0
+ 9 Zo IS 1
+ 10 Z IS 8135234
+ GAS for MMIX .*/sync-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/sync-op\.s:2 \.text:0000000000000000 Main
+ \*ABS\*:0000000000000000 Zz
+ \*ABS\*:0000000000000001 Zo
+ \*ABS\*:00000000007c2242 Z
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/sync-op.s b/gas/testsuite/gas/mmix/sync-op.s
new file mode 100644
index 0000000..e4d9a21
--- /dev/null
+++ b/gas/testsuite/gas/mmix/sync-op.s
@@ -0,0 +1,10 @@
+# Test operands for SYNC.
+Main SYNC 7234566
+ SYNC 0
+ SYNC 1
+ SYNC Zz
+ SYNC Zo
+ SYNC Z
+Zz IS 0
+Zo IS 1
+Z IS 8135234
diff --git a/gas/testsuite/gas/mmix/tst.s b/gas/testsuite/gas/mmix/tst.s
new file mode 100644
index 0000000..af266e4
--- /dev/null
+++ b/gas/testsuite/gas/mmix/tst.s
@@ -0,0 +1,6 @@
+Main SWYM 0
+l1 GETA $5,foo
+ LDA $252,$34,127
+ SWYM 0,bar,baz
+ GETA $56,Main
+
diff --git a/gas/testsuite/gas/mmix/two-op-r.d b/gas/testsuite/gas/mmix/two-op-r.d
new file mode 100644
index 0000000..fcddeb9
--- /dev/null
+++ b/gas/testsuite/gas/mmix/two-op-r.d
@@ -0,0 +1,24 @@
+# objdump: -dr
+# as: -linkrelax
+# source: two-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: e0175840 seth \$23,0x5840
+ 4: e12d5840 setmh \$45,0x5840
+ 8: e8171ed4 orh \$23,0x1ed4
+ c: e92d3039 ormh \$45,0x3039
+ 10: e2175840 setml \$23,0x5840
+ 14: e32d5840 setl \$45,0x5840
+ 18: ea171ed4 orml \$23,0x1ed4
+ 1c: eb2d3039 orl \$45,0x3039
+ 20: e42d3039 inch \$45,0x3039
+ 24: e5171ed4 incmh \$23,0x1ed4
+ 28: ec2d5840 andnh \$45,0x5840
+ 2c: ed175840 andnmh \$23,0x5840
+ 30: e6175840 incml \$23,0x5840
+ 34: e72d5840 incl \$45,0x5840
+ 38: ee171ed4 andnml \$23,0x1ed4
+ 3c: ef2d3039 andnl \$45,0x3039
diff --git a/gas/testsuite/gas/mmix/two-op.d b/gas/testsuite/gas/mmix/two-op.d
new file mode 100644
index 0000000..38a3c3a
--- /dev/null
+++ b/gas/testsuite/gas/mmix/two-op.d
@@ -0,0 +1,22 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: e0175840 seth \$23,0x5840
+ 4: e12d5840 setmh \$45,0x5840
+ 8: e8171ed4 orh \$23,0x1ed4
+ c: e92d3039 ormh \$45,0x3039
+ 10: e2175840 setml \$23,0x5840
+ 14: e32d5840 setl \$45,0x5840
+ 18: ea171ed4 orml \$23,0x1ed4
+ 1c: eb2d3039 orl \$45,0x3039
+ 20: e42d3039 inch \$45,0x3039
+ 24: e5171ed4 incmh \$23,0x1ed4
+ 28: ec2d5840 andnh \$45,0x5840
+ 2c: ed175840 andnmh \$23,0x5840
+ 30: e6175840 incml \$23,0x5840
+ 34: e72d5840 incl \$45,0x5840
+ 38: ee171ed4 andnml \$23,0x1ed4
+ 3c: ef2d3039 andnl \$45,0x3039
diff --git a/gas/testsuite/gas/mmix/two-op.l b/gas/testsuite/gas/mmix/two-op.l
new file mode 100644
index 0000000..fb05f30
--- /dev/null
+++ b/gas/testsuite/gas/mmix/two-op.l
@@ -0,0 +1,35 @@
+GAS for MMIX .*/two-op\.s page 1
+
+
+ 1 #.*
+ 2 #.*
+ 3 0000 E0175840 Main SETH X,YZ
+ 4 0004 E12D5840 SETMH \$45,YZ
+ 5 0008 E8171ED4 ORH X,7892
+ 6 000c E92D3039 ORMH \$45,12345
+ 7
+ 8 0010 E2175840 SETML X,YZ
+ 9 0014 E32D5840 SETL \$45,YZ
+ 10 0018 EA171ED4 ORML X,7892
+ 11 001c EB2D3039 ORL \$45,12345
+ 12
+ 13 0020 E42D3039 INCH \$45,12345
+ 14 0024 E5171ED4 INCMH X,7892
+ 15 0028 EC2D5840 ANDNH \$45,YZ
+ 16 002c ED175840 ANDNMH X,YZ
+ 17
+ 18 0030 E6175840 INCML X,YZ
+ 19 0034 E72D5840 INCL \$45,YZ
+ 20 0038 EE171ED4 ANDNML X,7892
+ 21 003c EF2D3039 ANDNL \$45,12345
+ 22 X IS \$23
+ 23 YZ IS #5678\+456
+ GAS for MMIX .*/two-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/two-op\.s:3 \.text:0000000000000000 Main
+ \*REG\*:0000000000000017 X
+ \*ABS\*:0000000000005840 YZ
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/two-op.s b/gas/testsuite/gas/mmix/two-op.s
new file mode 100644
index 0000000..25e2687
--- /dev/null
+++ b/gas/testsuite/gas/mmix/two-op.s
@@ -0,0 +1,23 @@
+# Two-operand insns; 16-bit operand.
+#
+Main SETH X,YZ
+ SETMH $45,YZ
+ ORH X,7892
+ ORMH $45,12345
+
+ SETML X,YZ
+ SETL $45,YZ
+ ORML X,7892
+ ORL $45,12345
+
+ INCH $45,12345
+ INCMH X,7892
+ ANDNH $45,YZ
+ ANDNMH X,YZ
+
+ INCML X,YZ
+ INCL $45,YZ
+ ANDNML X,7892
+ ANDNL $45,12345
+X IS $23
+YZ IS #5678+456
diff --git a/gas/testsuite/gas/mmix/unsave-op-r.d b/gas/testsuite/gas/mmix/unsave-op-r.d
new file mode 100644
index 0000000..2aac70a
--- /dev/null
+++ b/gas/testsuite/gas/mmix/unsave-op-r.d
@@ -0,0 +1,11 @@
+# objdump: -dr
+# as: -linkrelax
+# source: unsave-op.s
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fb00002d unsave 0,\$45
+ 4: fb00001f unsave 0,\$31
+ 8: fb000000 unsave 0,\$0
diff --git a/gas/testsuite/gas/mmix/unsave-op.d b/gas/testsuite/gas/mmix/unsave-op.d
new file mode 100644
index 0000000..a3ad1be
--- /dev/null
+++ b/gas/testsuite/gas/mmix/unsave-op.d
@@ -0,0 +1,9 @@
+# objdump: -dr
+.*: file format elf64-mmix
+
+Disassembly of section \.text:
+
+0000000000000000 <Main>:
+ 0: fb00002d unsave 0,\$45
+ 4: fb00001f unsave 0,\$31
+ 8: fb000000 unsave 0,\$0
diff --git a/gas/testsuite/gas/mmix/unsave-op.l b/gas/testsuite/gas/mmix/unsave-op.l
new file mode 100644
index 0000000..b89ea0d
--- /dev/null
+++ b/gas/testsuite/gas/mmix/unsave-op.l
@@ -0,0 +1,19 @@
+GAS for MMIX .*/unsave-op.s page 1
+
+
+ 1 #.*
+ 2 0000 FB00002D Main UNSAVE 0,\$45
+ 3 0004 FB00001F UNSAVE 0,X
+ 4 0008 FB000000 UNSAVE 0,X0
+ 5 X IS \$31
+ 6 X0 IS \$0
+ 7
+ GAS for MMIX .*/unsave-op\.s page 2
+
+
+DEFINED SYMBOLS
+.*/unsave-op.s:2 \.text:0000000000000000 Main
+ \*REG\*:000000000000001f X
+ \*REG\*:0000000000000000 X0
+
+NO UNDEFINED SYMBOLS
diff --git a/gas/testsuite/gas/mmix/unsave-op.s b/gas/testsuite/gas/mmix/unsave-op.s
new file mode 100644
index 0000000..0e1a018
--- /dev/null
+++ b/gas/testsuite/gas/mmix/unsave-op.s
@@ -0,0 +1,7 @@
+# Test the 'u'-type operand, UNSAVE.
+Main UNSAVE 0,$45
+ UNSAVE 0,X
+ UNSAVE 0,X0
+X IS $31
+X0 IS $0
+
diff --git a/gas/testsuite/gas/mmix/zerop-1.d b/gas/testsuite/gas/mmix/zerop-1.d
new file mode 100644
index 0000000..d39133a
--- /dev/null
+++ b/gas/testsuite/gas/mmix/zerop-1.d
@@ -0,0 +1,20 @@
+#objdump: -drt
+
+.*: file format elf64-mmix
+
+SYMBOL TABLE:
+0+ l d \.text 0+
+0+ l d \.data 0+
+0+ l d \.bss 0+
+0+ g F \.text 0+ Main
+
+
+Disassembly of section \.text:
+
+0+ <Main>:
+ 0: 00000000 trap 0,0,0
+ 4: fd000000 swym 0,0,0
+ 8: ff000000 trip 0,0,0
+ c: f0000000 jmp c <Main\+0xc>
+ 10: f801e240 pop 1,57920
+ 14: f8000000 pop 0,0
diff --git a/gas/testsuite/gas/mmix/zerop-1.s b/gas/testsuite/gas/mmix/zerop-1.s
new file mode 100644
index 0000000..725af75
--- /dev/null
+++ b/gas/testsuite/gas/mmix/zerop-1.s
@@ -0,0 +1,9 @@
+# Check that we allow zero operands for some insns.
+# Naked comments aren't supported when no operands are supplied; this
+# matches mmixal behavior.
+Main TRAP
+ SWYM
+ TRIP
+ JMP
+ POP 123456
+ POP