OSDN Git Service

Update to LLVM 3.5a.
[android-x86/external-llvm.git] / test / MC / SystemZ / insn-bad.s
index 11e02a1..8004168 100644 (file)
@@ -1,4 +1,5 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
+# For z10 only.
+# RUN: not llvm-mc -triple s390x-linux-gnu -mcpu=z10 < %s 2> %t
 # RUN: FileCheck < %t %s
 
 #CHECK: error: invalid operand
        aghi    %r0, 32768
        aghi    %r0, foo
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: aghik  %r1, %r2, 3
+
+       aghik   %r1, %r2, 3
+
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: agrk   %r2,%r3,%r4
+
+       agrk    %r2,%r3,%r4
+
 #CHECK: error: invalid operand
 #CHECK: agsi   -524289, 0
 #CHECK: error: invalid operand
        ahi     %r0, 32768
        ahi     %r0, foo
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: ahik   %r1, %r2, 3
+
+       ahik    %r1, %r2, 3
+
 #CHECK: error: invalid operand
 #CHECK: ahy    %r0, -524289
 #CHECK: error: invalid operand
        ahy     %r0, -524289
        ahy     %r0, 524288
 
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: aih    %r0, 0
+
+       aih     %r0, 0
+
 #CHECK: error: invalid operand
 #CHECK: al     %r0, -1
 #CHECK: error: invalid operand
        alfi    %r0, -1
        alfi    %r0, (1 << 32)
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: alghsik        %r1, %r2, 3
+
+       alghsik %r1, %r2, 3
+
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: alhsik %r1, %r2, 3
+
+       alhsik  %r1, %r2, 3
+
 #CHECK: error: invalid operand
 #CHECK: alg    %r0, -524289
 #CHECK: error: invalid operand
        algfi   %r0, -1
        algfi   %r0, (1 << 32)
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: algrk  %r2,%r3,%r4
+
+       algrk   %r2,%r3,%r4
+
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: alrk   %r2,%r3,%r4
+
+       alrk    %r2,%r3,%r4
+
 #CHECK: error: invalid operand
 #CHECK: aly    %r0, -524289
 #CHECK: error: invalid operand
        aly     %r0, -524289
        aly     %r0, 524288
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: ark    %r2,%r3,%r4
+
+       ark     %r2,%r3,%r4
+
 #CHECK: error: invalid operand
 #CHECK: asi    -524289, 0
 #CHECK: error: invalid operand
        asi     0, -129
        asi     0, 128
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: axbr   %f0, %f2
-#CHECK: error: invalid register
-#CHECK: axbr   %f0, %f14
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: axbr   %f2, %f0
-#CHECK: error: invalid register
-#CHECK: axbr   %f14, %f0
 
        axbr    %f0, %f2
-       axbr    %f0, %f14
        axbr    %f2, %f0
-       axbr    %f14, %f0
 
 
 #CHECK: error: invalid operand
        ay      %r0, -524289
        ay      %r0, 524288
 
+#CHECK: error: invalid operand
+#CHECK: bcr    -1, %r1
+#CHECK: error: invalid operand
+#CHECK: bcr    16, %r1
+
+       bcr     -1, %r1
+       bcr     16, %r1
+
 #CHECK: error: offset out of range
 #CHECK: bras   %r0, -0x100002
 #CHECK: error: offset out of range
        brcl    -1, bar
        brcl    16, bar
 
+#CHECK: error: offset out of range
+#CHECK: brct   %r0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: brct   %r0, -1
+#CHECK: error: offset out of range
+#CHECK: brct   %r0, 1
+#CHECK: error: offset out of range
+#CHECK: brct   %r0, 0x10000
+
+       brct    %r0, -0x100002
+       brct    %r0, -1
+       brct    %r0, 1
+       brct    %r0, 0x10000
+
+#CHECK: error: offset out of range
+#CHECK: brctg  %r0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: brctg  %r0, -1
+#CHECK: error: offset out of range
+#CHECK: brctg  %r0, 1
+#CHECK: error: offset out of range
+#CHECK: brctg  %r0, 0x10000
+
+       brctg   %r0, -0x100002
+       brctg   %r0, -1
+       brctg   %r0, 1
+       brctg   %r0, 0x10000
+
 #CHECK: error: invalid operand
 #CHECK: c      %r0, -1
 #CHECK: error: invalid operand
        cdb     %f0, -1
        cdb     %f0, 4096
 
-#CHECK: error: invalid register
-#CHECK: cdfbr  %r0, %r0
-#CHECK: error: invalid register
-#CHECK: cdfbr  %f0, %f0
-#CHECK: error: invalid register
-#CHECK: cdfbr  %f0, %a0
-#CHECK: error: invalid register
-#CHECK: cdfbr  %a0, %r0
-
-       cdfbr   %r0, %r0
-       cdfbr   %f0, %f0
-       cdfbr   %f0, %a0
-       cdfbr   %a0, %r0
-
-#CHECK: error: invalid register
-#CHECK: cdgbr  %r0, %r0
-#CHECK: error: invalid register
-#CHECK: cdgbr  %f0, %f0
-#CHECK: error: invalid register
-#CHECK: cdgbr  %f0, %a0
-#CHECK: error: invalid register
-#CHECK: cdgbr  %a0, %r0
-
-       cdgbr   %r0, %r0
-       cdgbr   %f0, %f0
-       cdgbr   %f0, %a0
-       cdgbr   %a0, %r0
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: cdlfbr %f0, 0, %r0, 0
+
+       cdlfbr  %f0, 0, %r0, 0
+
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: cdlgbr %f0, 0, %r0, 0
+
+       cdlgbr  %f0, 0, %r0, 0
 
 #CHECK: error: invalid operand
 #CHECK: ceb    %f0, -1
        ceb     %f0, -1
        ceb     %f0, 4096
 
-#CHECK: error: invalid register
-#CHECK: cefbr  %r0, %r0
-#CHECK: error: invalid register
-#CHECK: cefbr  %f0, %f0
-#CHECK: error: invalid register
-#CHECK: cefbr  %f0, %a0
-#CHECK: error: invalid register
-#CHECK: cefbr  %a0, %r0
-
-       cefbr   %r0, %r0
-       cefbr   %f0, %f0
-       cefbr   %f0, %a0
-       cefbr   %a0, %r0
-
-#CHECK: error: invalid register
-#CHECK: cegbr  %r0, %r0
-#CHECK: error: invalid register
-#CHECK: cegbr  %f0, %f0
-#CHECK: error: invalid register
-#CHECK: cegbr  %f0, %a0
-#CHECK: error: invalid register
-#CHECK: cegbr  %a0, %r0
-
-       cegbr   %r0, %r0
-       cegbr   %f0, %f0
-       cegbr   %f0, %a0
-       cegbr   %a0, %r0
-
-#CHECK: error: invalid register
-#CHECK: cfdbr  %r0, 0, %r0
-#CHECK: error: invalid register
-#CHECK: cfdbr  %f0, 0, %f0
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: celfbr %f0, 0, %r0, 0
+
+       celfbr  %f0, 0, %r0, 0
+
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: celgbr %f0, 0, %r0, 0
+
+       celgbr  %f0, 0, %r0, 0
+
 #CHECK: error: invalid operand
 #CHECK: cfdbr  %r0, -1, %f0
 #CHECK: error: invalid operand
 #CHECK: cfdbr  %r0, 16, %f0
 
-       cfdbr   %r0, 0, %r0
-       cfdbr   %f0, 0, %f0
        cfdbr   %r0, -1, %f0
        cfdbr   %r0, 16, %f0
 
-#CHECK: error: invalid register
-#CHECK: cfebr  %r0, 0, %r0
-#CHECK: error: invalid register
-#CHECK: cfebr  %f0, 0, %f0
 #CHECK: error: invalid operand
 #CHECK: cfebr  %r0, -1, %f0
 #CHECK: error: invalid operand
 #CHECK: cfebr  %r0, 16, %f0
 
-       cfebr   %r0, 0, %r0
-       cfebr   %f0, 0, %f0
        cfebr   %r0, -1, %f0
        cfebr   %r0, 16, %f0
 
        cfi     %r0, (-1 << 31) - 1
        cfi     %r0, (1 << 31)
 
-#CHECK: error: invalid register
-#CHECK: cfxbr  %r0, 0, %r0
-#CHECK: error: invalid register
-#CHECK: cfxbr  %f0, 0, %f0
 #CHECK: error: invalid operand
 #CHECK: cfxbr  %r0, -1, %f0
 #CHECK: error: invalid operand
 #CHECK: cfxbr  %r0, 16, %f0
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: cfxbr  %r0, 0, %f2
-#CHECK: error: invalid register
-#CHECK: cfxbr  %r0, 0, %f14
 
-       cfxbr   %r0, 0, %r0
-       cfxbr   %f0, 0, %f0
        cfxbr   %r0, -1, %f0
        cfxbr   %r0, 16, %f0
        cfxbr   %r0, 0, %f2
-       cfxbr   %r0, 0, %f14
 
 
 #CHECK: error: invalid operand
        cg      %r0, -524289
        cg      %r0, 524288
 
-#CHECK: error: invalid register
-#CHECK: cgdbr  %r0, 0, %r0
-#CHECK: error: invalid register
-#CHECK: cgdbr  %f0, 0, %f0
 #CHECK: error: invalid operand
 #CHECK: cgdbr  %r0, -1, %f0
 #CHECK: error: invalid operand
 #CHECK: cgdbr  %r0, 16, %f0
 
-       cgdbr   %r0, 0, %r0
-       cgdbr   %f0, 0, %f0
        cgdbr   %r0, -1, %f0
        cgdbr   %r0, 16, %f0
 
-#CHECK: error: invalid register
-#CHECK: cgebr  %r0, 0, %r0
-#CHECK: error: invalid register
-#CHECK: cgebr  %f0, 0, %f0
 #CHECK: error: invalid operand
 #CHECK: cgebr  %r0, -1, %f0
 #CHECK: error: invalid operand
 #CHECK: cgebr  %r0, 16, %f0
 
-       cgebr   %r0, 0, %r0
-       cgebr   %f0, 0, %f0
        cgebr   %r0, -1, %f0
        cgebr   %r0, 16, %f0
 
        cghsi   0, -32769
        cghsi   0, 32768
 
+#CHECK: error: invalid operand
+#CHECK: cgij   %r0, -129, 0, 0
+#CHECK: error: invalid operand
+#CHECK: cgij   %r0, 128, 0, 0
+
+       cgij    %r0, -129, 0, 0
+       cgij    %r0, 128, 0, 0
+
+#CHECK: error: offset out of range
+#CHECK: cgij   %r0, 0, 0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: cgij   %r0, 0, 0, -1
+#CHECK: error: offset out of range
+#CHECK: cgij   %r0, 0, 0, 1
+#CHECK: error: offset out of range
+#CHECK: cgij   %r0, 0, 0, 0x10000
+
+       cgij    %r0, 0, 0, -0x100002
+       cgij    %r0, 0, 0, -1
+       cgij    %r0, 0, 0, 1
+       cgij    %r0, 0, 0, 0x10000
+
+#CHECK: error: invalid instruction
+#CHECK:        cgijo   %r0, 0, 0, 0
+#CHECK: error: invalid instruction
+#CHECK:        cgijno  %r0, 0, 0, 0
+
+       cgijo   %r0, 0, 0, 0
+       cgijno  %r0, 0, 0, 0
+
+#CHECK: error: offset out of range
+#CHECK: cgrj   %r0, %r0, 0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: cgrj   %r0, %r0, 0, -1
+#CHECK: error: offset out of range
+#CHECK: cgrj   %r0, %r0, 0, 1
+#CHECK: error: offset out of range
+#CHECK: cgrj   %r0, %r0, 0, 0x10000
+
+       cgrj    %r0, %r0, 0, -0x100002
+       cgrj    %r0, %r0, 0, -1
+       cgrj    %r0, %r0, 0, 1
+       cgrj    %r0, %r0, 0, 0x10000
+
+#CHECK: error: invalid instruction
+#CHECK:        cgrjo   %r0, %r0, 0, 0
+#CHECK: error: invalid instruction
+#CHECK:        cgrjno  %r0, %r0, 0, 0
+
+       cgrjo   %r0, %r0, 0, 0
+       cgrjno  %r0, %r0, 0, 0
+
 #CHECK: error: offset out of range
 #CHECK: cgrl   %r0, -0x1000000002
 #CHECK: error: offset out of range
        cgrl    %r0, 1
        cgrl    %r0, 0x100000000
 
-#CHECK: error: invalid register
-#CHECK: cgxbr  %r0, 0, %r0
-#CHECK: error: invalid register
-#CHECK: cgxbr  %f0, 0, %f0
 #CHECK: error: invalid operand
 #CHECK: cgxbr  %r0, -1, %f0
 #CHECK: error: invalid operand
 #CHECK: cgxbr  %r0, 16, %f0
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: cgxbr  %r0, 0, %f2
-#CHECK: error: invalid register
-#CHECK: cgxbr  %r0, 0, %f14
 
-       cgxbr   %r0, 0, %r0
-       cgxbr   %f0, 0, %f0
        cgxbr   %r0, -1, %f0
        cgxbr   %r0, 16, %f0
        cgxbr   %r0, 0, %f2
-       cgxbr   %r0, 0, %f14
 
 
 #CHECK: error: invalid operand
        ch      %r0, -1
        ch      %r0, 4096
 
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: chf    %r0, 0
+
+       chf     %r0, 0
+
 #CHECK: error: invalid operand
 #CHECK: chhsi  -1, 0
 #CHECK: error: invalid operand
        chy     %r0, -524289
        chy     %r0, 524288
 
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: cih    %r0, 0
+
+       cih     %r0, 0
+
+#CHECK: error: invalid operand
+#CHECK: cij    %r0, -129, 0, 0
+#CHECK: error: invalid operand
+#CHECK: cij    %r0, 128, 0, 0
+
+       cij     %r0, -129, 0, 0
+       cij     %r0, 128, 0, 0
+
+#CHECK: error: offset out of range
+#CHECK: cij    %r0, 0, 0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: cij    %r0, 0, 0, -1
+#CHECK: error: offset out of range
+#CHECK: cij    %r0, 0, 0, 1
+#CHECK: error: offset out of range
+#CHECK: cij    %r0, 0, 0, 0x10000
+
+       cij     %r0, 0, 0, -0x100002
+       cij     %r0, 0, 0, -1
+       cij     %r0, 0, 0, 1
+       cij     %r0, 0, 0, 0x10000
+
+#CHECK: error: invalid instruction
+#CHECK:        cijo    %r0, 0, 0, 0
+#CHECK: error: invalid instruction
+#CHECK:        cijno   %r0, 0, 0, 0
+
+       cijo    %r0, 0, 0, 0
+       cijno   %r0, 0, 0, 0
+
 #CHECK: error: invalid operand
 #CHECK: cl     %r0, -1
 #CHECK: error: invalid operand
        cl      %r0, -1
        cl      %r0, 4096
 
+#CHECK: error: missing length in address
+#CHECK: clc    0, 0
+#CHECK: error: missing length in address
+#CHECK: clc    0(%r1), 0(%r1)
+#CHECK: error: invalid use of length addressing
+#CHECK: clc    0(1,%r1), 0(2,%r1)
+#CHECK: error: invalid operand
+#CHECK: clc    0(0,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: clc    0(257,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: clc    -1(1,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: clc    4096(1,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: clc    0(1,%r1), -1(%r1)
+#CHECK: error: invalid operand
+#CHECK: clc    0(1,%r1), 4096(%r1)
+#CHECK: error: %r0 used in an address
+#CHECK: clc    0(1,%r0), 0(%r1)
+#CHECK: error: %r0 used in an address
+#CHECK: clc    0(1,%r1), 0(%r0)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: clc    0(%r1,%r2), 0(%r1)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: clc    0(1,%r2), 0(%r1,%r2)
+#CHECK: error: unknown token in expression
+#CHECK: clc    0(-), 0
+
+       clc     0, 0
+       clc     0(%r1), 0(%r1)
+       clc     0(1,%r1), 0(2,%r1)
+       clc     0(0,%r1), 0(%r1)
+       clc     0(257,%r1), 0(%r1)
+       clc     -1(1,%r1), 0(%r1)
+       clc     4096(1,%r1), 0(%r1)
+       clc     0(1,%r1), -1(%r1)
+       clc     0(1,%r1), 4096(%r1)
+       clc     0(1,%r0), 0(%r1)
+       clc     0(1,%r1), 0(%r0)
+       clc     0(%r1,%r2), 0(%r1)
+       clc     0(1,%r2), 0(%r1,%r2)
+       clc     0(-), 0
+
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: clhf   %r0, 0
+
+       clhf    %r0, 0
+
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: clfdbr %r0, 0, %f0, 0
+
+       clfdbr  %r0, 0, %f0, 0
+
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: clfebr %r0, 0, %f0, 0
+
+       clfebr  %r0, 0, %f0, 0
+
 #CHECK: error: invalid operand
 #CHECK: clfhsi -1, 0
 #CHECK: error: invalid operand
        clfi    %r0, -1
        clfi    %r0, (1 << 32)
 
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: clfxbr %r0, 0, %f0, 0
+
+       clfxbr  %r0, 0, %f0, 0
+
 #CHECK: error: invalid operand
 #CHECK: clg    %r0, -524289
 #CHECK: error: invalid operand
        clg     %r0, -524289
        clg     %r0, 524288
 
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: clgdbr %r0, 0, %f0, 0
+
+       clgdbr  %r0, 0, %f0, 0
+
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: clgebr %r0, 0, %f0, 0
+
+       clgebr  %r0, 0, %f0, 0
+
 #CHECK: error: invalid operand
 #CHECK: clgf   %r0, -524289
 #CHECK: error: invalid operand
        clghsi  0, -1
        clghsi  0, 65536
 
+#CHECK: error: invalid operand
+#CHECK: clgij  %r0, -1, 0, 0
+#CHECK: error: invalid operand
+#CHECK: clgij  %r0, 256, 0, 0
+
+       clgij   %r0, -1, 0, 0
+       clgij   %r0, 256, 0, 0
+
+#CHECK: error: offset out of range
+#CHECK: clgij  %r0, 0, 0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: clgij  %r0, 0, 0, -1
+#CHECK: error: offset out of range
+#CHECK: clgij  %r0, 0, 0, 1
+#CHECK: error: offset out of range
+#CHECK: clgij  %r0, 0, 0, 0x10000
+
+       clgij   %r0, 0, 0, -0x100002
+       clgij   %r0, 0, 0, -1
+       clgij   %r0, 0, 0, 1
+       clgij   %r0, 0, 0, 0x10000
+
+#CHECK: error: invalid instruction
+#CHECK:        clgijo  %r0, 0, 0, 0
+#CHECK: error: invalid instruction
+#CHECK:        clgijno %r0, 0, 0, 0
+
+       clgijo  %r0, 0, 0, 0
+       clgijno %r0, 0, 0, 0
+
+#CHECK: error: offset out of range
+#CHECK: clgrj  %r0, %r0, 0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: clgrj  %r0, %r0, 0, -1
+#CHECK: error: offset out of range
+#CHECK: clgrj  %r0, %r0, 0, 1
+#CHECK: error: offset out of range
+#CHECK: clgrj  %r0, %r0, 0, 0x10000
+
+       clgrj   %r0, %r0, 0, -0x100002
+       clgrj   %r0, %r0, 0, -1
+       clgrj   %r0, %r0, 0, 1
+       clgrj   %r0, %r0, 0, 0x10000
+
 #CHECK: error: offset out of range
 #CHECK: clgrl  %r0, -0x1000000002
 #CHECK: error: offset out of range
        clgrl   %r0, 1
        clgrl   %r0, 0x100000000
 
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: clgxbr %r0, 0, %f0, 0
+
+       clgxbr  %r0, 0, %f0, 0
+
 #CHECK: error: invalid operand
 #CHECK: clhhsi -1, 0
 #CHECK: error: invalid operand
        cli     0, -1
        cli     0, 256
 
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: clih   %r0, 0
+
+       clih    %r0, 0
+
+#CHECK: error: invalid operand
+#CHECK: clij   %r0, -1, 0, 0
+#CHECK: error: invalid operand
+#CHECK: clij   %r0, 256, 0, 0
+
+       clij    %r0, -1, 0, 0
+       clij    %r0, 256, 0, 0
+
+#CHECK: error: offset out of range
+#CHECK: clij   %r0, 0, 0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: clij   %r0, 0, 0, -1
+#CHECK: error: offset out of range
+#CHECK: clij   %r0, 0, 0, 1
+#CHECK: error: offset out of range
+#CHECK: clij   %r0, 0, 0, 0x10000
+
+       clij    %r0, 0, 0, -0x100002
+       clij    %r0, 0, 0, -1
+       clij    %r0, 0, 0, 1
+       clij    %r0, 0, 0, 0x10000
+
+#CHECK: error: invalid instruction
+#CHECK:        clijo   %r0, 0, 0, 0
+#CHECK: error: invalid instruction
+#CHECK:        clijno  %r0, 0, 0, 0
+
+       clijo   %r0, 0, 0, 0
+       clijno  %r0, 0, 0, 0
+
 #CHECK: error: invalid operand
 #CHECK: cliy   -524289, 0
 #CHECK: error: invalid operand
        cliy    0, 256
 
 #CHECK: error: offset out of range
+#CHECK: clrj   %r0, %r0, 0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: clrj   %r0, %r0, 0, -1
+#CHECK: error: offset out of range
+#CHECK: clrj   %r0, %r0, 0, 1
+#CHECK: error: offset out of range
+#CHECK: clrj   %r0, %r0, 0, 0x10000
+
+       clrj    %r0, %r0, 0, -0x100002
+       clrj    %r0, %r0, 0, -1
+       clrj    %r0, %r0, 0, 1
+       clrj    %r0, %r0, 0, 0x10000
+
+#CHECK: error: invalid instruction
+#CHECK:        clrjo   %r0, %r0, 0, 0
+#CHECK: error: invalid instruction
+#CHECK:        clrjno  %r0, %r0, 0, 0
+
+       clrjo   %r0, %r0, 0, 0
+       clrjno  %r0, %r0, 0, 0
+
+#CHECK: error: offset out of range
 #CHECK: clrl   %r0, -0x1000000002
 #CHECK: error: offset out of range
 #CHECK: clrl   %r0, -1
        cly     %r0, 524288
 
 #CHECK: error: offset out of range
+#CHECK: crj    %r0, %r0, 0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: crj    %r0, %r0, 0, -1
+#CHECK: error: offset out of range
+#CHECK: crj    %r0, %r0, 0, 1
+#CHECK: error: offset out of range
+#CHECK: crj    %r0, %r0, 0, 0x10000
+
+       crj     %r0, %r0, 0, -0x100002
+       crj     %r0, %r0, 0, -1
+       crj     %r0, %r0, 0, 1
+       crj     %r0, %r0, 0, 0x10000
+
+#CHECK: error: invalid instruction
+#CHECK:        crjo    %r0, %r0, 0, 0
+#CHECK: error: invalid instruction
+#CHECK:        crjno   %r0, %r0, 0, 0
+
+       crjo    %r0, %r0, 0, 0
+       crjno   %r0, %r0, 0, 0
+
+#CHECK: error: offset out of range
 #CHECK: crl    %r0, -0x1000000002
 #CHECK: error: offset out of range
 #CHECK: crl    %r0, -1
        csy     %r0, %r0, 524288
        csy     %r0, %r0, 0(%r1,%r2)
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: cxbr   %f0, %f2
-#CHECK: error: invalid register
-#CHECK: cxbr   %f0, %f14
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: cxbr   %f2, %f0
-#CHECK: error: invalid register
-#CHECK: cxbr   %f14, %f0
 
        cxbr    %f0, %f2
-       cxbr    %f0, %f14
        cxbr    %f2, %f0
-       cxbr    %f14, %f0
-
-
-#CHECK: error: invalid register
-#CHECK: cxfbr  %r0, %r0
-#CHECK: error: invalid register
-#CHECK: cxfbr  %f0, %f0
-#CHECK: error: invalid register
-#CHECK: cxfbr  %f0, %a0
-#CHECK: error: invalid register
-#CHECK: cxfbr  %a0, %r0
-#CHECK: error: invalid register
+
+#CHECK: error: invalid register pair
 #CHECK: cxfbr  %f2, %r0
-#CHECK: error: invalid register
-#CHECK: cxfbr  %f14, %r0
 
-       cxfbr   %r0, %r0
-       cxfbr   %f0, %f0
-       cxfbr   %f0, %a0
-       cxfbr   %a0, %r0
        cxfbr   %f2, %r0
-       cxfbr   %f14, %r0
-
-#CHECK: error: invalid register
-#CHECK: cxgbr  %r0, %r0
-#CHECK: error: invalid register
-#CHECK: cxgbr  %f0, %f0
-#CHECK: error: invalid register
-#CHECK: cxgbr  %f0, %a0
-#CHECK: error: invalid register
-#CHECK: cxgbr  %a0, %r0
-#CHECK: error: invalid register
+
+#CHECK: error: invalid register pair
 #CHECK: cxgbr  %f2, %r0
-#CHECK: error: invalid register
-#CHECK: cxgbr  %f14, %r0
 
-       cxgbr   %r0, %r0
-       cxgbr   %f0, %f0
-       cxgbr   %f0, %a0
-       cxgbr   %a0, %r0
        cxgbr   %f2, %r0
-       cxgbr   %f14, %r0
+
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: cxlfbr %f0, 0, %r0, 0
+
+       cxlfbr  %f0, 0, %r0, 0
+
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: cxlgbr %f0, 0, %r0, 0
+
+       cxlgbr  %f0, 0, %r0, 0
 
 #CHECK: error: invalid operand
 #CHECK: cy     %r0, -524289
 #CHECK: dl     %r0, -524289
 #CHECK: error: invalid operand
 #CHECK: dl     %r0, 524288
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: dl     %r1, 0
-#CHECK: error: invalid register
-#CHECK: dl     %r15, 0
 
        dl      %r0, -524289
        dl      %r0, 524288
        dl      %r1, 0
-       dl      %r15, 0
 
 #CHECK: error: invalid operand
 #CHECK: dlg    %r0, -524289
 #CHECK: error: invalid operand
 #CHECK: dlg    %r0, 524288
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: dlg    %r1, 0
-#CHECK: error: invalid register
-#CHECK: dlg    %r15, 0
 
        dlg     %r0, -524289
        dlg     %r0, 524288
        dlg     %r1, 0
-       dlg     %r15, 0
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: dlgr   %r1, %r0
-#CHECK: error: invalid register
-#CHECK: dlgr   %r15, %r0
 
        dlgr    %r1, %r0
-       dlgr    %r15, %r0
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: dlr    %r1, %r0
-#CHECK: error: invalid register
-#CHECK: dlr    %r15, %r0
 
        dlr     %r1, %r0
-       dlr     %r15, %r0
 
 #CHECK: error: invalid operand
 #CHECK: dsg    %r0, -524289
 #CHECK: error: invalid operand
 #CHECK: dsg    %r0, 524288
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: dsg    %r1, 0
-#CHECK: error: invalid register
-#CHECK: dsg    %r15, 0
 
        dsg     %r0, -524289
        dsg     %r0, 524288
        dsg     %r1, 0
-       dsg     %r15, 0
 
 #CHECK: error: invalid operand
 #CHECK: dsgf   %r0, -524289
 #CHECK: error: invalid operand
 #CHECK: dsgf   %r0, 524288
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: dsgf   %r1, 0
-#CHECK: error: invalid register
-#CHECK: dsgf   %r15, 0
 
        dsgf    %r0, -524289
        dsgf    %r0, 524288
        dsgf    %r1, 0
-       dsgf    %r15, 0
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: dsgfr  %r1, %r0
-#CHECK: error: invalid register
-#CHECK: dsgfr  %r15, %r0
 
        dsgfr   %r1, %r0
-       dsgfr   %r15, %r0
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: dsgr   %r1, %r0
-#CHECK: error: invalid register
-#CHECK: dsgr   %r15, %r0
 
        dsgr    %r1, %r0
-       dsgr    %r15, %r0
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: dxbr   %f0, %f2
-#CHECK: error: invalid register
-#CHECK: dxbr   %f0, %f14
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: dxbr   %f2, %f0
-#CHECK: error: invalid register
-#CHECK: dxbr   %f14, %f0
 
        dxbr    %f0, %f2
-       dxbr    %f0, %f14
        dxbr    %f2, %f0
-       dxbr    %f14, %f0
-
 
 #CHECK: error: invalid operand
-#CHECK: ear    %r0, 0
-#CHECK: error: invalid register
-#CHECK: ear    %r0, %r0
-#CHECK: error: invalid register
-#CHECK: ear    %a0, %r0
-
-       ear     %r0, 0
-       ear     %r0, %r0
-       ear     %a0, %r0
-
-#CHECK: error: invalid register
-#CHECK: fidbr  %r0, 0, %f0
-#CHECK: error: invalid register
-#CHECK: fidbr  %f0, 0, %r0
-#CHECK: error: invalid operand
 #CHECK: fidbr  %f0, -1, %f0
 #CHECK: error: invalid operand
 #CHECK: fidbr  %f0, 16, %f0
 
-       fidbr   %r0, 0, %f0
-       fidbr   %f0, 0, %r0
        fidbr   %f0, -1, %f0
        fidbr   %f0, 16, %f0
 
-#CHECK: error: invalid register
-#CHECK: fiebr  %r0, 0, %f0
-#CHECK: error: invalid register
-#CHECK: fiebr  %f0, 0, %r0
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: fidbra %f0, 0, %f0, 0
+
+       fidbra  %f0, 0, %f0, 0
+
 #CHECK: error: invalid operand
 #CHECK: fiebr  %f0, -1, %f0
 #CHECK: error: invalid operand
 #CHECK: fiebr  %f0, 16, %f0
 
-       fiebr   %r0, 0, %f0
-       fiebr   %f0, 0, %r0
        fiebr   %f0, -1, %f0
        fiebr   %f0, 16, %f0
 
-#CHECK: error: invalid register
-#CHECK: fixbr  %r0, 0, %f0
-#CHECK: error: invalid register
-#CHECK: fixbr  %f0, 0, %r0
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: fiebra %f0, 0, %f0, 0
+
+       fiebra  %f0, 0, %f0, 0
+
 #CHECK: error: invalid operand
 #CHECK: fixbr  %f0, -1, %f0
 #CHECK: error: invalid operand
 #CHECK: fixbr  %f0, 16, %f0
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: fixbr  %f0, 0, %f2
-#CHECK: error: invalid register
-#CHECK: fixbr  %f0, 0, %f14
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: fixbr  %f2, 0, %f0
-#CHECK: error: invalid register
-#CHECK: fixbr  %f14, 0, %f0
 
-       fixbr   %r0, 0, %f0
-       fixbr   %f0, 0, %r0
        fixbr   %f0, -1, %f0
        fixbr   %f0, 16, %f0
        fixbr   %f0, 0, %f2
-       fixbr   %f0, 0, %f14
        fixbr   %f2, 0, %f0
-       fixbr   %f14, 0, %f0
 
-#CHECK: error: invalid register
+#CHECK: error: {{(instruction requires: fp-extension)?}}
+#CHECK: fixbra %f0, 0, %f0, 0
+
+       fixbra  %f0, 0, %f0, 0
+
+#CHECK: error: invalid register pair
 #CHECK: flogr  %r1, %r0
-#CHECK: error: invalid register
-#CHECK: flogr  %r15, %r0
 
        flogr   %r1, %r0
-       flogr   %r15, %r0
 
 #CHECK: error: invalid operand
 #CHECK: ic     %r0, -1
        la      %r0, -1
        la      %r0, 4096
 
+#CHECK: error: {{(instruction requires: interlocked-access1)?}}
+#CHECK: laa    %r1, %r2, 100(%r3)
+       laa     %r1, %r2, 100(%r3)
+
+#CHECK: error: {{(instruction requires: interlocked-access1)?}}
+#CHECK: laag   %r1, %r2, 100(%r3)
+       laag    %r1, %r2, 100(%r3)
+
+#CHECK: error: {{(instruction requires: interlocked-access1)?}}
+#CHECK: laal   %r1, %r2, 100(%r3)
+       laal    %r1, %r2, 100(%r3)
+
+#CHECK: error: {{(instruction requires: interlocked-access1)?}}
+#CHECK: laalg  %r1, %r2, 100(%r3)
+       laalg   %r1, %r2, 100(%r3)
+
+#CHECK: error: {{(instruction requires: interlocked-access1)?}}
+#CHECK: lan    %r1, %r2, 100(%r3)
+       lan     %r1, %r2, 100(%r3)
+
+#CHECK: error: {{(instruction requires: interlocked-access1)?}}
+#CHECK: lang   %r1, %r2, 100(%r3)
+       lang    %r1, %r2, 100(%r3)
+
+#CHECK: error: {{(instruction requires: interlocked-access1)?}}
+#CHECK: lao    %r1, %r2, 100(%r3)
+       lao     %r1, %r2, 100(%r3)
+
+#CHECK: error: {{(instruction requires: interlocked-access1)?}}
+#CHECK: laog   %r1, %r2, 100(%r3)
+       laog    %r1, %r2, 100(%r3)
+
+#CHECK: error: {{(instruction requires: interlocked-access1)?}}
+#CHECK: lax    %r1, %r2, 100(%r3)
+       lax     %r1, %r2, 100(%r3)
+
+#CHECK: error: {{(instruction requires: interlocked-access1)?}}
+#CHECK: laxg   %r1, %r2, 100(%r3)
+       laxg    %r1, %r2, 100(%r3)
+
 #CHECK: error: offset out of range
 #CHECK: larl   %r0, -0x1000000002
 #CHECK: error: offset out of range
        lb      %r0, -524289
        lb      %r0, 524288
 
-#CHECK: error: invalid register
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: lbh    %r0, 0
+
+       lbh     %r0, 0
+
+#CHECK: error: invalid register pair
 #CHECK: lcxbr  %f0, %f2
-#CHECK: error: invalid register
-#CHECK: lcxbr  %f0, %f14
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: lcxbr  %f2, %f0
-#CHECK: error: invalid register
-#CHECK: lcxbr  %f14, %f0
 
        lcxbr   %f0, %f2
-       lcxbr   %f0, %f14
        lcxbr   %f2, %f0
-       lcxbr   %f14, %f0
-
 
 #CHECK: error: invalid operand
 #CHECK: ld     %f0, -1
        ldeb    %f0, -1
        ldeb    %f0, 4096
 
-#CHECK: error: invalid register
-#CHECK: ldgr   %f0, %f0
-#CHECK: error: invalid register
-#CHECK: ldgr   %r0, %r0
-#CHECK: error: invalid register
-#CHECK: ldgr   %f0, %a0
-#CHECK: error: invalid register
-#CHECK: ldgr   %a0, %r0
-
-       ldgr    %f0, %f0
-       ldgr    %r0, %r0
-       ldgr    %f0, %a0
-       ldgr    %a0, %r0
-
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: ldxbr  %f0, %f2
-#CHECK: error: invalid register
-#CHECK: ldxbr  %f0, %f14
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: ldxbr  %f2, %f0
-#CHECK: error: invalid register
-#CHECK: ldxbr  %f14, %f0
 
        ldxbr   %f0, %f2
-       ldxbr   %f0, %f14
        ldxbr   %f2, %f0
-       ldxbr   %f14, %f0
 
 #CHECK: error: invalid operand
 #CHECK: ldy    %f0, -524289
        le      %f0, -1
        le      %f0, 4096
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: lexbr  %f0, %f2
-#CHECK: error: invalid register
-#CHECK: lexbr  %f0, %f14
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: lexbr  %f2, %f0
-#CHECK: error: invalid register
-#CHECK: lexbr  %f14, %f0
 
        lexbr   %f0, %f2
-       lexbr   %f0, %f14
        lexbr   %f2, %f0
-       lexbr   %f14, %f0
 
 #CHECK: error: invalid operand
 #CHECK: ley    %f0, -524289
        ley     %f0, -524289
        ley     %f0, 524288
 
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: lfh    %r0, 0
+
+       lfh     %r0, 0
+
 #CHECK: error: invalid operand
 #CHECK: lg     %r0, -524289
 #CHECK: error: invalid operand
        lgb     %r0, -524289
        lgb     %r0, 524288
 
-#CHECK: error: invalid register
-#CHECK: lgdr   %f0, %f0
-#CHECK: error: invalid register
-#CHECK: lgdr   %r0, %r0
-#CHECK: error: invalid register
-#CHECK: lgdr   %r0, %a0
-#CHECK: error: invalid register
-#CHECK: lgdr   %a0, %f0
-
-       lgdr    %f0, %f0
-       lgdr    %r0, %r0
-       lgdr    %r0, %a0
-       lgdr    %a0, %f0
-
 #CHECK: error: invalid operand
 #CHECK: lgf    %r0, -524289
 #CHECK: error: invalid operand
        lh      %r0, -1
        lh      %r0, 4096
 
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: lhh    %r0, 0
+
+       lhh     %r0, 0
+
 #CHECK: error: invalid operand
 #CHECK: lhi    %r0, -32769
 #CHECK: error: invalid operand
        llc     %r0, -524289
        llc     %r0, 524288
 
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: llch   %r0, 0
+
+       llch    %r0, 0
+
 #CHECK: error: invalid operand
 #CHECK: llgc   %r0, -524289
 #CHECK: error: invalid operand
        llh     %r0, -524289
        llh     %r0, 524288
 
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: llhh   %r0, 0
+
+       llhh    %r0, 0
+
 #CHECK: error: offset out of range
 #CHECK: llhrl  %r0, -0x1000000002
 #CHECK: error: offset out of range
        lmg     %r0, %r0, 524288
        lmg     %r0, %r0, 0(%r1,%r2)
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: lnxbr  %f0, %f2
-#CHECK: error: invalid register
-#CHECK: lnxbr  %f0, %f14
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: lnxbr  %f2, %f0
-#CHECK: error: invalid register
-#CHECK: lnxbr  %f14, %f0
 
        lnxbr   %f0, %f2
-       lnxbr   %f0, %f14
        lnxbr   %f2, %f0
-       lnxbr   %f14, %f0
-
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: lpxbr  %f0, %f2
-#CHECK: error: invalid register
-#CHECK: lpxbr  %f0, %f14
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: lpxbr  %f2, %f0
-#CHECK: error: invalid register
-#CHECK: lpxbr  %f14, %f0
 
        lpxbr   %f0, %f2
-       lpxbr   %f0, %f14
        lpxbr   %f2, %f0
-       lpxbr   %f14, %f0
-
 
 #CHECK: error: offset out of range
 #CHECK: lrl    %r0, -0x1000000002
        lrvg    %r0, -524289
        lrvg    %r0, 524288
 
-#CHECK: error: invalid register
-#CHECK: lxr    %f2, %f0
-#CHECK: error: invalid register
-#CHECK: lxr    %f15, %f0
-#CHECK: error: invalid register
+#CHECK: error: invalid operand
+#CHECK: lt     %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: lt     %r0, 524288
+
+       lt      %r0, -524289
+       lt      %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: ltg    %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: ltg    %r0, 524288
+
+       ltg     %r0, -524289
+       ltg     %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: ltgf   %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: ltgf   %r0, 524288
+
+       ltgf    %r0, -524289
+       ltgf    %r0, 524288
+
+#CHECK: error: invalid register pair
+#CHECK: ltxbr  %f0, %f14
+#CHECK: error: invalid register pair
+#CHECK: ltxbr  %f14, %f0
+
+       ltxbr   %f0, %f14
+       ltxbr   %f14, %f0
+
+#CHECK: error: invalid register pair
 #CHECK: lxr    %f0, %f2
-#CHECK: error: invalid register
-#CHECK: lxr    %f0, %f15
+#CHECK: error: invalid register pair
+#CHECK: lxr    %f2, %f0
 
-       lxr     %f2, %f0
-       lxr     %f15, %f0
        lxr     %f0, %f2
-       lxr     %f0, %f15
+       lxr     %f2, %f0
 
 #CHECK: error: invalid operand
 #CHECK: ly     %r0, -524289
        ly      %r0, -524289
        ly      %r0, 524288
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: lzxr   %f2
-#CHECK: error: invalid register
-#CHECK: lzxr   %f14
-#CHECK: error: invalid register
-#CHECK: lzxr   %f15
 
        lzxr    %f2
-       lzxr    %f14
-       lzxr    %f15
 
 #CHECK: error: invalid operand
 #CHECK: madb   %f0, %f0, -1
 #CHECK: mlg    %r0, -524289
 #CHECK: error: invalid operand
 #CHECK: mlg    %r0, 524288
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: mlg    %r1, 0
-#CHECK: error: invalid register
-#CHECK: mlg    %r15, 0
 
        mlg     %r0, -524289
        mlg     %r0, 524288
        mlg     %r1, 0
-       mlg     %r15, 0
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: mlgr   %r1, %r0
-#CHECK: error: invalid register
-#CHECK: mlgr   %r15, %r0
 
        mlgr    %r1, %r0
-       mlgr    %r15, %r0
 
 #CHECK: error: invalid operand
 #CHECK: ms     %r0, -1
        msy     %r0, -524289
        msy     %r0, 524288
 
+#CHECK: error: missing length in address
+#CHECK: mvc    0, 0
+#CHECK: error: missing length in address
+#CHECK: mvc    0(%r1), 0(%r1)
+#CHECK: error: invalid use of length addressing
+#CHECK: mvc    0(1,%r1), 0(2,%r1)
+#CHECK: error: invalid operand
+#CHECK: mvc    0(0,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: mvc    0(257,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: mvc    -1(1,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: mvc    4096(1,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: mvc    0(1,%r1), -1(%r1)
+#CHECK: error: invalid operand
+#CHECK: mvc    0(1,%r1), 4096(%r1)
+#CHECK: error: %r0 used in an address
+#CHECK: mvc    0(1,%r0), 0(%r1)
+#CHECK: error: %r0 used in an address
+#CHECK: mvc    0(1,%r1), 0(%r0)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: mvc    0(%r1,%r2), 0(%r1)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: mvc    0(1,%r2), 0(%r1,%r2)
+#CHECK: error: unknown token in expression
+#CHECK: mvc    0(-), 0
+
+       mvc     0, 0
+       mvc     0(%r1), 0(%r1)
+       mvc     0(1,%r1), 0(2,%r1)
+       mvc     0(0,%r1), 0(%r1)
+       mvc     0(257,%r1), 0(%r1)
+       mvc     -1(1,%r1), 0(%r1)
+       mvc     4096(1,%r1), 0(%r1)
+       mvc     0(1,%r1), -1(%r1)
+       mvc     0(1,%r1), 4096(%r1)
+       mvc     0(1,%r0), 0(%r1)
+       mvc     0(1,%r1), 0(%r0)
+       mvc     0(%r1,%r2), 0(%r1)
+       mvc     0(1,%r2), 0(%r1,%r2)
+       mvc     0(-), 0
+
 #CHECK: error: invalid operand
 #CHECK: mvghi  -1, 0
 #CHECK: error: invalid operand
        mviy    0, -1
        mviy    0, 256
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: mxbr   %f0, %f2
-#CHECK: error: invalid register
-#CHECK: mxbr   %f0, %f14
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: mxbr   %f2, %f0
-#CHECK: error: invalid register
-#CHECK: mxbr   %f14, %f0
 
        mxbr    %f0, %f2
-       mxbr    %f0, %f14
        mxbr    %f2, %f0
-       mxbr    %f14, %f0
-
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: mxdb   %f2, 0
-#CHECK: error: invalid register
-#CHECK: mxdb   %f15, 0
 #CHECK: error: invalid operand
 #CHECK: mxdb   %f0, -1
 #CHECK: error: invalid operand
 #CHECK: mxdb   %f0, 4096
 
        mxdb    %f2, 0
-       mxdb    %f15, 0
        mxdb    %f0, -1
        mxdb    %f0, 4096
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: mxdbr  %f2, %f0
-#CHECK: error: invalid register
-#CHECK: mxdbr  %f15, %f0
 
        mxdbr   %f2, %f0
-       mxdbr   %f15, %f0
 
 #CHECK: error: invalid operand
 #CHECK: n      %r0, -1
        n       %r0, -1
        n       %r0, 4096
 
+#CHECK: error: missing length in address
+#CHECK: nc     0, 0
+#CHECK: error: missing length in address
+#CHECK: nc     0(%r1), 0(%r1)
+#CHECK: error: invalid use of length addressing
+#CHECK: nc     0(1,%r1), 0(2,%r1)
+#CHECK: error: invalid operand
+#CHECK: nc     0(0,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: nc     0(257,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: nc     -1(1,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: nc     4096(1,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: nc     0(1,%r1), -1(%r1)
+#CHECK: error: invalid operand
+#CHECK: nc     0(1,%r1), 4096(%r1)
+#CHECK: error: %r0 used in an address
+#CHECK: nc     0(1,%r0), 0(%r1)
+#CHECK: error: %r0 used in an address
+#CHECK: nc     0(1,%r1), 0(%r0)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: nc     0(%r1,%r2), 0(%r1)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: nc     0(1,%r2), 0(%r1,%r2)
+#CHECK: error: unknown token in expression
+#CHECK: nc     0(-), 0
+
+       nc      0, 0
+       nc      0(%r1), 0(%r1)
+       nc      0(1,%r1), 0(2,%r1)
+       nc      0(0,%r1), 0(%r1)
+       nc      0(257,%r1), 0(%r1)
+       nc      -1(1,%r1), 0(%r1)
+       nc      4096(1,%r1), 0(%r1)
+       nc      0(1,%r1), -1(%r1)
+       nc      0(1,%r1), 4096(%r1)
+       nc      0(1,%r0), 0(%r1)
+       nc      0(1,%r1), 0(%r0)
+       nc      0(%r1,%r2), 0(%r1)
+       nc      0(1,%r2), 0(%r1,%r2)
+       nc      0(-), 0
+
 #CHECK: error: invalid operand
 #CHECK: ng     %r0, -524289
 #CHECK: error: invalid operand
        ng      %r0, -524289
        ng      %r0, 524288
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: ngrk   %r2,%r3,%r4
+
+       ngrk    %r2,%r3,%r4
+
 #CHECK: error: invalid operand
 #CHECK: ni     -1, 0
 #CHECK: error: invalid operand
        niy     0, -1
        niy     0, 256
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: nrk    %r2,%r3,%r4
+
+       nrk     %r2,%r3,%r4
+
 #CHECK: error: invalid operand
 #CHECK: ny     %r0, -524289
 #CHECK: error: invalid operand
        o       %r0, -1
        o       %r0, 4096
 
+#CHECK: error: missing length in address
+#CHECK: oc     0, 0
+#CHECK: error: missing length in address
+#CHECK: oc     0(%r1), 0(%r1)
+#CHECK: error: invalid use of length addressing
+#CHECK: oc     0(1,%r1), 0(2,%r1)
+#CHECK: error: invalid operand
+#CHECK: oc     0(0,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: oc     0(257,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: oc     -1(1,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: oc     4096(1,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: oc     0(1,%r1), -1(%r1)
+#CHECK: error: invalid operand
+#CHECK: oc     0(1,%r1), 4096(%r1)
+#CHECK: error: %r0 used in an address
+#CHECK: oc     0(1,%r0), 0(%r1)
+#CHECK: error: %r0 used in an address
+#CHECK: oc     0(1,%r1), 0(%r0)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: oc     0(%r1,%r2), 0(%r1)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: oc     0(1,%r2), 0(%r1,%r2)
+#CHECK: error: unknown token in expression
+#CHECK: oc     0(-), 0
+
+       oc      0, 0
+       oc      0(%r1), 0(%r1)
+       oc      0(1,%r1), 0(2,%r1)
+       oc      0(0,%r1), 0(%r1)
+       oc      0(257,%r1), 0(%r1)
+       oc      -1(1,%r1), 0(%r1)
+       oc      4096(1,%r1), 0(%r1)
+       oc      0(1,%r1), -1(%r1)
+       oc      0(1,%r1), 4096(%r1)
+       oc      0(1,%r0), 0(%r1)
+       oc      0(1,%r1), 0(%r0)
+       oc      0(%r1,%r2), 0(%r1)
+       oc      0(1,%r2), 0(%r1,%r2)
+       oc      0(-), 0
+
 #CHECK: error: invalid operand
 #CHECK: og     %r0, -524289
 #CHECK: error: invalid operand
        og      %r0, -524289
        og      %r0, 524288
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: ogrk   %r2,%r3,%r4
+
+       ogrk    %r2,%r3,%r4
+
 #CHECK: error: invalid operand
 #CHECK: oi     -1, 0
 #CHECK: error: invalid operand
        oiy     0, -1
        oiy     0, 256
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: ork    %r2,%r3,%r4
+
+       ork     %r2,%r3,%r4
+
 #CHECK: error: invalid operand
 #CHECK: oy     %r0, -524289
 #CHECK: error: invalid operand
        oy      %r0, 524288
 
 #CHECK: error: invalid operand
+#CHECK: pfd    -1, 0
+#CHECK: error: invalid operand
+#CHECK: pfd    16, 0
+#CHECK: error: invalid operand
+#CHECK: pfd    1, -524289
+#CHECK: error: invalid operand
+#CHECK: pfd    1, 524288
+
+       pfd     -1, 0
+       pfd     16, 0
+       pfd     1, -524289
+       pfd     1, 524288
+
+#CHECK: error: invalid operand
+#CHECK: pfdrl  -1, 0
+#CHECK: error: invalid operand
+#CHECK: pfdrl  16, 0
+#CHECK: error: offset out of range
+#CHECK: pfdrl  1, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: pfdrl  1, -1
+#CHECK: error: offset out of range
+#CHECK: pfdrl  1, 1
+#CHECK: error: offset out of range
+#CHECK: pfdrl  1, 0x100000000
+
+       pfdrl   -1, 0
+       pfdrl   16, 0
+       pfdrl   1, -0x1000000002
+       pfdrl   1, -1
+       pfdrl   1, 1
+       pfdrl   1, 0x100000000
+
+#CHECK: error: invalid operand
 #CHECK: risbg  %r0,%r0,0,0,-1
 #CHECK: error: invalid operand
 #CHECK: risbg  %r0,%r0,0,0,64
 #CHECK: error: invalid operand
 #CHECK: risbg  %r0,%r0,0,-1,0
 #CHECK: error: invalid operand
-#CHECK: risbg  %r0,%r0,0,64,0
+#CHECK: risbg  %r0,%r0,0,256,0
 #CHECK: error: invalid operand
 #CHECK: risbg  %r0,%r0,-1,0,0
 #CHECK: error: invalid operand
-#CHECK: risbg  %r0,%r0,64,0,0
+#CHECK: risbg  %r0,%r0,256,0,0
 
        risbg   %r0,%r0,0,0,-1
        risbg   %r0,%r0,0,0,64
        risbg   %r0,%r0,0,-1,0
-       risbg   %r0,%r0,0,64,0
+       risbg   %r0,%r0,0,256,0
        risbg   %r0,%r0,-1,0,0
-       risbg   %r0,%r0,64,0,0
+       risbg   %r0,%r0,256,0,0
+
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: risbhg %r1, %r2, 0, 0, 0
+
+       risbhg  %r1, %r2, 0, 0, 0
+
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: risblg %r1, %r2, 0, 0, 0
+
+       risblg  %r1, %r2, 0, 0, 0
+
+#CHECK: error: invalid operand
+#CHECK: rnsbg  %r0,%r0,0,0,-1
+#CHECK: error: invalid operand
+#CHECK: rnsbg  %r0,%r0,0,0,64
+#CHECK: error: invalid operand
+#CHECK: rnsbg  %r0,%r0,0,-1,0
+#CHECK: error: invalid operand
+#CHECK: rnsbg  %r0,%r0,0,256,0
+#CHECK: error: invalid operand
+#CHECK: rnsbg  %r0,%r0,-1,0,0
+#CHECK: error: invalid operand
+#CHECK: rnsbg  %r0,%r0,256,0,0
+
+       rnsbg   %r0,%r0,0,0,-1
+       rnsbg   %r0,%r0,0,0,64
+       rnsbg   %r0,%r0,0,-1,0
+       rnsbg   %r0,%r0,0,256,0
+       rnsbg   %r0,%r0,-1,0,0
+       rnsbg   %r0,%r0,256,0,0
+
+#CHECK: error: invalid operand
+#CHECK: rosbg  %r0,%r0,0,0,-1
+#CHECK: error: invalid operand
+#CHECK: rosbg  %r0,%r0,0,0,64
+#CHECK: error: invalid operand
+#CHECK: rosbg  %r0,%r0,0,-1,0
+#CHECK: error: invalid operand
+#CHECK: rosbg  %r0,%r0,0,256,0
+#CHECK: error: invalid operand
+#CHECK: rosbg  %r0,%r0,-1,0,0
+#CHECK: error: invalid operand
+#CHECK: rosbg  %r0,%r0,256,0,0
+
+       rosbg   %r0,%r0,0,0,-1
+       rosbg   %r0,%r0,0,0,64
+       rosbg   %r0,%r0,0,-1,0
+       rosbg   %r0,%r0,0,256,0
+       rosbg   %r0,%r0,-1,0,0
+       rosbg   %r0,%r0,256,0,0
+
+#CHECK: error: invalid operand
+#CHECK: rxsbg  %r0,%r0,0,0,-1
+#CHECK: error: invalid operand
+#CHECK: rxsbg  %r0,%r0,0,0,64
+#CHECK: error: invalid operand
+#CHECK: rxsbg  %r0,%r0,0,-1,0
+#CHECK: error: invalid operand
+#CHECK: rxsbg  %r0,%r0,0,256,0
+#CHECK: error: invalid operand
+#CHECK: rxsbg  %r0,%r0,-1,0,0
+#CHECK: error: invalid operand
+#CHECK: rxsbg  %r0,%r0,256,0,0
+
+       rxsbg   %r0,%r0,0,0,-1
+       rxsbg   %r0,%r0,0,0,64
+       rxsbg   %r0,%r0,0,-1,0
+       rxsbg   %r0,%r0,0,256,0
+       rxsbg   %r0,%r0,-1,0,0
+       rxsbg   %r0,%r0,256,0,0
 
 #CHECK: error: invalid operand
 #CHECK: rll    %r0,%r0,-524289
        sgf     %r0, -524289
        sgf     %r0, 524288
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: sgrk   %r2,%r3,%r4
+
+       sgrk    %r2,%r3,%r4
+
+#CHECK: error: invalid operand
+#CHECK: sh     %r0, -1
+#CHECK: error: invalid operand
+#CHECK: sh     %r0, 4096
+
+       sh      %r0, -1
+       sh      %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: shy    %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: shy    %r0, 524288
+
+       shy     %r0, -524289
+       shy     %r0, 524288
+
 #CHECK: error: invalid operand
 #CHECK: sl     %r0, -1
 #CHECK: error: invalid operand
        slgfi   %r0, -1
        slgfi   %r0, (1 << 32)
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: slgrk  %r2,%r3,%r4
+
+       slgrk   %r2,%r3,%r4
+
 #CHECK: error: invalid operand
 #CHECK: sll    %r0,-1
 #CHECK: error: invalid operand
        sllg    %r0,%r0,0(%r0)
        sllg    %r0,%r0,0(%r1,%r2)
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: sllk   %r2,%r3,4(%r5)
+
+       sllk    %r2,%r3,4(%r5)
+
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: slrk   %r2,%r3,%r4
+
+       slrk    %r2,%r3,%r4
+
 #CHECK: error: invalid operand
 #CHECK: sly    %r0, -524289
 #CHECK: error: invalid operand
        sqeb    %f0, -1
        sqeb    %f0, 4096
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: sqxbr  %f0, %f2
-#CHECK: error: invalid register
-#CHECK: sqxbr  %f0, %f14
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: sqxbr  %f2, %f0
-#CHECK: error: invalid register
-#CHECK: sqxbr  %f14, %f0
 
        sqxbr   %f0, %f2
-       sqxbr   %f0, %f14
        sqxbr   %f2, %f0
-       sqxbr   %f14, %f0
-
 
 #CHECK: error: invalid operand
 #CHECK: sra    %r0,-1
        srag    %r0,%r0,0(%r0)
        srag    %r0,%r0,0(%r1,%r2)
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: srak   %r2,%r3,4(%r5)
+
+       srak    %r2,%r3,4(%r5)
+
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: srk    %r2,%r3,%r4
+
+       srk     %r2,%r3,%r4
+
 #CHECK: error: invalid operand
 #CHECK: srl    %r0,-1
 #CHECK: error: invalid operand
        srlg    %r0,%r0,0(%r0)
        srlg    %r0,%r0,0(%r1,%r2)
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: srlk   %r2,%r3,4(%r5)
+
+       srlk    %r2,%r3,4(%r5)
+
 #CHECK: error: invalid operand
 #CHECK: st     %r0, -1
 #CHECK: error: invalid operand
        stc     %r0, -1
        stc     %r0, 4096
 
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: stch   %r0, 0
+
+       stch    %r0, 0
+
 #CHECK: error: invalid operand
 #CHECK: stcy   %r0, -524289
 #CHECK: error: invalid operand
        sth     %r0, -1
        sth     %r0, 4096
 
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: sthh   %r0, 0
+
+       sthh    %r0, 0
+
 #CHECK: error: offset out of range
 #CHECK: sthrl  %r0, -0x1000000002
 #CHECK: error: offset out of range
        sthy    %r0, -524289
        sthy    %r0, 524288
 
+#CHECK: error: {{(instruction requires: high-word)?}}
+#CHECK: stfh   %r0, 0
+
+       stfh    %r0, 0
+
 #CHECK: error: invalid operand
 #CHECK: stmg   %r0, %r0, -524289
 #CHECK: error: invalid operand
        sty     %r0, -524289
        sty     %r0, 524288
 
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: sxbr   %f0, %f2
-#CHECK: error: invalid register
-#CHECK: sxbr   %f0, %f14
-#CHECK: error: invalid register
+#CHECK: error: invalid register pair
 #CHECK: sxbr   %f2, %f0
-#CHECK: error: invalid register
-#CHECK: sxbr   %f14, %f0
 
        sxbr    %f0, %f2
-       sxbr    %f0, %f14
        sxbr    %f2, %f0
-       sxbr    %f14, %f0
-
 
 #CHECK: error: invalid operand
 #CHECK: sy     %r0, -524289
        sy      %r0, 524288
 
 #CHECK: error: invalid operand
+#CHECK: tm     -1, 0
+#CHECK: error: invalid operand
+#CHECK: tm     4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: tm     0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: tm     0, -1
+#CHECK: error: invalid operand
+#CHECK: tm     0, 256
+
+       tm      -1, 0
+       tm      4096, 0
+       tm      0(%r1,%r2), 0
+       tm      0, -1
+       tm      0, 256
+
+#CHECK: error: invalid operand
+#CHECK: tmhh   %r0, -1
+#CHECK: error: invalid operand
+#CHECK: tmhh   %r0, 0x10000
+
+       tmhh    %r0, -1
+       tmhh    %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: tmhl   %r0, -1
+#CHECK: error: invalid operand
+#CHECK: tmhl   %r0, 0x10000
+
+       tmhl    %r0, -1
+       tmhl    %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: tmlh   %r0, -1
+#CHECK: error: invalid operand
+#CHECK: tmlh   %r0, 0x10000
+
+       tmlh    %r0, -1
+       tmlh    %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: tmll   %r0, -1
+#CHECK: error: invalid operand
+#CHECK: tmll   %r0, 0x10000
+
+       tmll    %r0, -1
+       tmll    %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: tmy    -524289, 0
+#CHECK: error: invalid operand
+#CHECK: tmy    524288, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: tmy    0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: tmy    0, -1
+#CHECK: error: invalid operand
+#CHECK: tmy    0, 256
+
+       tmy     -524289, 0
+       tmy     524288, 0
+       tmy     0(%r1,%r2), 0
+       tmy     0, -1
+       tmy     0, 256
+
+#CHECK: error: invalid operand
 #CHECK: x      %r0, -1
 #CHECK: error: invalid operand
 #CHECK: x      %r0, 4096
        x       %r0, -1
        x       %r0, 4096
 
+#CHECK: error: missing length in address
+#CHECK: xc     0, 0
+#CHECK: error: missing length in address
+#CHECK: xc     0(%r1), 0(%r1)
+#CHECK: error: invalid use of length addressing
+#CHECK: xc     0(1,%r1), 0(2,%r1)
+#CHECK: error: invalid operand
+#CHECK: xc     0(0,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: xc     0(257,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: xc     -1(1,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: xc     4096(1,%r1), 0(%r1)
+#CHECK: error: invalid operand
+#CHECK: xc     0(1,%r1), -1(%r1)
+#CHECK: error: invalid operand
+#CHECK: xc     0(1,%r1), 4096(%r1)
+#CHECK: error: %r0 used in an address
+#CHECK: xc     0(1,%r0), 0(%r1)
+#CHECK: error: %r0 used in an address
+#CHECK: xc     0(1,%r1), 0(%r0)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: xc     0(%r1,%r2), 0(%r1)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: xc     0(1,%r2), 0(%r1,%r2)
+#CHECK: error: unknown token in expression
+#CHECK: xc     0(-), 0
+
+       xc      0, 0
+       xc      0(%r1), 0(%r1)
+       xc      0(1,%r1), 0(2,%r1)
+       xc      0(0,%r1), 0(%r1)
+       xc      0(257,%r1), 0(%r1)
+       xc      -1(1,%r1), 0(%r1)
+       xc      4096(1,%r1), 0(%r1)
+       xc      0(1,%r1), -1(%r1)
+       xc      0(1,%r1), 4096(%r1)
+       xc      0(1,%r0), 0(%r1)
+       xc      0(1,%r1), 0(%r0)
+       xc      0(%r1,%r2), 0(%r1)
+       xc      0(1,%r2), 0(%r1,%r2)
+       xc      0(-), 0
+
 #CHECK: error: invalid operand
 #CHECK: xg     %r0, -524289
 #CHECK: error: invalid operand
        xg      %r0, -524289
        xg      %r0, 524288
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: xgrk   %r2,%r3,%r4
+
+       xgrk    %r2,%r3,%r4
+
 #CHECK: error: invalid operand
 #CHECK: xi     -1, 0
 #CHECK: error: invalid operand
        xiy     0, -1
        xiy     0, 256
 
+#CHECK: error: {{(instruction requires: distinct-ops)?}}
+#CHECK: xrk    %r2,%r3,%r4
+
+       xrk     %r2,%r3,%r4
+
 #CHECK: error: invalid operand
 #CHECK: xy     %r0, -524289
 #CHECK: error: invalid operand