[SystemZ] Add TM and TMY
[oota-llvm.git] / test / MC / SystemZ / insn-good.s
index da2b77e4eb7d2861c279cc270a3f18016ec1f300..52f23eb3fd5e70ca34557a26a24dceb6cbe1a1b9 100644 (file)
        lnebr   %f15,%f0
        lnebr   %f15,%f9
 
+#CHECK: lngfr  %r0, %r0                # encoding: [0xb9,0x11,0x00,0x00]
+#CHECK: lngfr  %r0, %r15               # encoding: [0xb9,0x11,0x00,0x0f]
+#CHECK: lngfr  %r15, %r0               # encoding: [0xb9,0x11,0x00,0xf0]
+#CHECK: lngfr  %r7, %r8                # encoding: [0xb9,0x11,0x00,0x78]
+
+       lngfr   %r0,%r0
+       lngfr   %r0,%r15
+       lngfr   %r15,%r0
+       lngfr   %r7,%r8
+
+#CHECK: lngr   %r0, %r0                # encoding: [0xb9,0x01,0x00,0x00]
+#CHECK: lngr   %r0, %r15               # encoding: [0xb9,0x01,0x00,0x0f]
+#CHECK: lngr   %r15, %r0               # encoding: [0xb9,0x01,0x00,0xf0]
+#CHECK: lngr   %r7, %r8                # encoding: [0xb9,0x01,0x00,0x78]
+
+       lngr    %r0,%r0
+       lngr    %r0,%r15
+       lngr    %r15,%r0
+       lngr    %r7,%r8
+
+#CHECK: lnr    %r0, %r0                # encoding: [0x11,0x00]
+#CHECK: lnr    %r0, %r15               # encoding: [0x11,0x0f]
+#CHECK: lnr    %r15, %r0               # encoding: [0x11,0xf0]
+#CHECK: lnr    %r7, %r8                # encoding: [0x11,0x78]
+
+       lnr     %r0,%r0
+       lnr     %r0,%r15
+       lnr     %r15,%r0
+       lnr     %r7,%r8
+
 #CHECK: lnxbr  %f0, %f8                # encoding: [0xb3,0x41,0x00,0x08]
 #CHECK: lnxbr  %f0, %f13               # encoding: [0xb3,0x41,0x00,0x0d]
 #CHECK: lnxbr  %f13, %f0               # encoding: [0xb3,0x41,0x00,0xd0]
        lpebr   %f15,%f0
        lpebr   %f15,%f9
 
+#CHECK: lpgfr  %r0, %r0                # encoding: [0xb9,0x10,0x00,0x00]
+#CHECK: lpgfr  %r0, %r15               # encoding: [0xb9,0x10,0x00,0x0f]
+#CHECK: lpgfr  %r15, %r0               # encoding: [0xb9,0x10,0x00,0xf0]
+#CHECK: lpgfr  %r7, %r8                # encoding: [0xb9,0x10,0x00,0x78]
+
+       lpgfr   %r0,%r0
+       lpgfr   %r0,%r15
+       lpgfr   %r15,%r0
+       lpgfr   %r7,%r8
+
+#CHECK: lpgr   %r0, %r0                # encoding: [0xb9,0x00,0x00,0x00]
+#CHECK: lpgr   %r0, %r15               # encoding: [0xb9,0x00,0x00,0x0f]
+#CHECK: lpgr   %r15, %r0               # encoding: [0xb9,0x00,0x00,0xf0]
+#CHECK: lpgr   %r7, %r8                # encoding: [0xb9,0x00,0x00,0x78]
+
+       lpgr    %r0,%r0
+       lpgr    %r0,%r15
+       lpgr    %r15,%r0
+       lpgr    %r7,%r8
+
+#CHECK: lpr    %r0, %r0                # encoding: [0x10,0x00]
+#CHECK: lpr    %r0, %r15               # encoding: [0x10,0x0f]
+#CHECK: lpr    %r15, %r0               # encoding: [0x10,0xf0]
+#CHECK: lpr    %r7, %r8                # encoding: [0x10,0x78]
+
+       lpr     %r0,%r0
+       lpr     %r0,%r15
+       lpr     %r15,%r0
+       lpr     %r7,%r8
+
 #CHECK: lpxbr  %f0, %f8                # encoding: [0xb3,0x40,0x00,0x08]
 #CHECK: lpxbr  %f0, %f13               # encoding: [0xb3,0x40,0x00,0x0d]
 #CHECK: lpxbr  %f13, %f0               # encoding: [0xb3,0x40,0x00,0xd0]
        n       %r0, 4095(%r15,%r1)
        n       %r15, 0
 
+#CHECK: nc     0(1), 0                 # encoding: [0xd4,0x00,0x00,0x00,0x00,0x00]
+#CHECK: nc     0(1), 0(%r1)            # encoding: [0xd4,0x00,0x00,0x00,0x10,0x00]
+#CHECK: nc     0(1), 0(%r15)           # encoding: [0xd4,0x00,0x00,0x00,0xf0,0x00]
+#CHECK: nc     0(1), 4095              # encoding: [0xd4,0x00,0x00,0x00,0x0f,0xff]
+#CHECK: nc     0(1), 4095(%r1)         # encoding: [0xd4,0x00,0x00,0x00,0x1f,0xff]
+#CHECK: nc     0(1), 4095(%r15)        # encoding: [0xd4,0x00,0x00,0x00,0xff,0xff]
+#CHECK: nc     0(1,%r1), 0             # encoding: [0xd4,0x00,0x10,0x00,0x00,0x00]
+#CHECK: nc     0(1,%r15), 0            # encoding: [0xd4,0x00,0xf0,0x00,0x00,0x00]
+#CHECK: nc     4095(1,%r1), 0          # encoding: [0xd4,0x00,0x1f,0xff,0x00,0x00]
+#CHECK: nc     4095(1,%r15), 0         # encoding: [0xd4,0x00,0xff,0xff,0x00,0x00]
+#CHECK: nc     0(256,%r1), 0           # encoding: [0xd4,0xff,0x10,0x00,0x00,0x00]
+#CHECK: nc     0(256,%r15), 0          # encoding: [0xd4,0xff,0xf0,0x00,0x00,0x00]
+
+       nc      0(1), 0
+       nc      0(1), 0(%r1)
+       nc      0(1), 0(%r15)
+       nc      0(1), 4095
+       nc      0(1), 4095(%r1)
+       nc      0(1), 4095(%r15)
+       nc      0(1,%r1), 0
+       nc      0(1,%r15), 0
+       nc      4095(1,%r1), 0
+       nc      4095(1,%r15), 0
+       nc      0(256,%r1), 0
+       nc      0(256,%r15), 0
+
 #CHECK: ng     %r0, -524288            # encoding: [0xe3,0x00,0x00,0x00,0x80,0x80]
 #CHECK: ng     %r0, -1                 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x80]
 #CHECK: ng     %r0, 0                  # encoding: [0xe3,0x00,0x00,0x00,0x00,0x80]
        o       %r0, 4095(%r15,%r1)
        o       %r15, 0
 
+#CHECK: oc     0(1), 0                 # encoding: [0xd6,0x00,0x00,0x00,0x00,0x00]
+#CHECK: oc     0(1), 0(%r1)            # encoding: [0xd6,0x00,0x00,0x00,0x10,0x00]
+#CHECK: oc     0(1), 0(%r15)           # encoding: [0xd6,0x00,0x00,0x00,0xf0,0x00]
+#CHECK: oc     0(1), 4095              # encoding: [0xd6,0x00,0x00,0x00,0x0f,0xff]
+#CHECK: oc     0(1), 4095(%r1)         # encoding: [0xd6,0x00,0x00,0x00,0x1f,0xff]
+#CHECK: oc     0(1), 4095(%r15)        # encoding: [0xd6,0x00,0x00,0x00,0xff,0xff]
+#CHECK: oc     0(1,%r1), 0             # encoding: [0xd6,0x00,0x10,0x00,0x00,0x00]
+#CHECK: oc     0(1,%r15), 0            # encoding: [0xd6,0x00,0xf0,0x00,0x00,0x00]
+#CHECK: oc     4095(1,%r1), 0          # encoding: [0xd6,0x00,0x1f,0xff,0x00,0x00]
+#CHECK: oc     4095(1,%r15), 0         # encoding: [0xd6,0x00,0xff,0xff,0x00,0x00]
+#CHECK: oc     0(256,%r1), 0           # encoding: [0xd6,0xff,0x10,0x00,0x00,0x00]
+#CHECK: oc     0(256,%r15), 0          # encoding: [0xd6,0xff,0xf0,0x00,0x00,0x00]
+
+       oc      0(1), 0
+       oc      0(1), 0(%r1)
+       oc      0(1), 0(%r15)
+       oc      0(1), 4095
+       oc      0(1), 4095(%r1)
+       oc      0(1), 4095(%r15)
+       oc      0(1,%r1), 0
+       oc      0(1,%r15), 0
+       oc      4095(1,%r1), 0
+       oc      4095(1,%r15), 0
+       oc      0(256,%r1), 0
+       oc      0(256,%r15), 0
+
 #CHECK: og     %r0, -524288            # encoding: [0xe3,0x00,0x00,0x00,0x80,0x81]
 #CHECK: og     %r0, -1                 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x81]
 #CHECK: og     %r0, 0                  # encoding: [0xe3,0x00,0x00,0x00,0x00,0x81]
        oy      %r0, 524287(%r15,%r1)
        oy      %r15, 0
 
+#CHECK: pfd    0, -524288            # encoding: [0xe3,0x00,0x00,0x00,0x80,0x36]
+#CHECK: pfd    0, -1                 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x36]
+#CHECK: pfd    0, 0                  # encoding: [0xe3,0x00,0x00,0x00,0x00,0x36]
+#CHECK: pfd    0, 1                  # encoding: [0xe3,0x00,0x00,0x01,0x00,0x36]
+#CHECK: pfd    0, 524287             # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x36]
+#CHECK: pfd    0, 0(%r1)             # encoding: [0xe3,0x00,0x10,0x00,0x00,0x36]
+#CHECK: pfd    0, 0(%r15)            # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x36]
+#CHECK: pfd    0, 524287(%r1,%r15)   # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x36]
+#CHECK: pfd    0, 524287(%r15,%r1)   # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x36]
+#CHECK: pfd    15, 0                 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x36]
+
+       pfd     0, -524288
+       pfd     0, -1
+       pfd     0, 0
+       pfd     0, 1
+       pfd     0, 524287
+       pfd     0, 0(%r1)
+       pfd     0, 0(%r15)
+       pfd     0, 524287(%r1,%r15)
+       pfd     0, 524287(%r15,%r1)
+       pfd     15, 0
+
+#CHECK: pfdrl  0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x02,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+       pfdrl   0, -0x100000000
+#CHECK: pfdrl  0, .[[LAB:L.*]]-2       # encoding: [0xc6,0x02,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+       pfdrl   0, -2
+#CHECK: pfdrl  0, .[[LAB:L.*]] # encoding: [0xc6,0x02,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+       pfdrl   0, 0
+#CHECK: pfdrl  0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x02,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+       pfdrl   0, 0xfffffffe
+
+#CHECK: pfdrl  0, foo                # encoding: [0xc6,0x02,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: pfdrl  15, foo               # encoding: [0xc6,0xf2,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+       pfdrl   0, foo
+       pfdrl   15, foo
+
+#CHECK: pfdrl  3, bar+100            # encoding: [0xc6,0x32,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: pfdrl  4, bar+100            # encoding: [0xc6,0x42,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+       pfdrl   3, bar+100
+       pfdrl   4, bar+100
+
+#CHECK: pfdrl  7, frob@PLT           # encoding: [0xc6,0x72,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: pfdrl  8, frob@PLT           # encoding: [0xc6,0x82,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+       pfdrl   7, frob@PLT
+       pfdrl   8, frob@PLT
+
 #CHECK: risbg  %r0, %r0, 0, 0, 0       # encoding: [0xec,0x00,0x00,0x00,0x00,0x55]
 #CHECK: risbg  %r0, %r0, 0, 0, 63      # encoding: [0xec,0x00,0x00,0x00,0x3f,0x55]
 #CHECK: risbg  %r0, %r0, 0, 255, 0     # encoding: [0xec,0x00,0x00,0xff,0x00,0x55]
        srlg    %r0,%r0,524287(%r1)
        srlg    %r0,%r0,524287(%r15)
 
+#CHECK: srst   %r0, %r0                # encoding: [0xb2,0x5e,0x00,0x00]
+#CHECK: srst   %r0, %r15               # encoding: [0xb2,0x5e,0x00,0x0f]
+#CHECK: srst   %r15, %r0               # encoding: [0xb2,0x5e,0x00,0xf0]
+#CHECK: srst   %r7, %r8                # encoding: [0xb2,0x5e,0x00,0x78]
+
+       srst    %r0,%r0
+       srst    %r0,%r15
+       srst    %r15,%r0
+       srst    %r7,%r8
+
 #CHECK: st     %r0, 0                  # encoding: [0x50,0x00,0x00,0x00]
 #CHECK: st     %r0, 4095               # encoding: [0x50,0x00,0x0f,0xff]
 #CHECK: st     %r0, 0(%r1)             # encoding: [0x50,0x00,0x10,0x00]
        sy      %r0, 524287(%r15,%r1)
        sy      %r15, 0
 
+#CHECK: tm     0, 0                    # encoding: [0x91,0x00,0x00,0x00]
+#CHECK: tm     4095, 0                 # encoding: [0x91,0x00,0x0f,0xff]
+#CHECK: tm     0, 255                  # encoding: [0x91,0xff,0x00,0x00]
+#CHECK: tm     0(%r1), 42              # encoding: [0x91,0x2a,0x10,0x00]
+#CHECK: tm     0(%r15), 42             # encoding: [0x91,0x2a,0xf0,0x00]
+#CHECK: tm     4095(%r1), 42           # encoding: [0x91,0x2a,0x1f,0xff]
+#CHECK: tm     4095(%r15), 42          # encoding: [0x91,0x2a,0xff,0xff]
+
+       tm      0, 0
+       tm      4095, 0
+       tm      0, 255
+       tm      0(%r1), 42
+       tm      0(%r15), 42
+       tm      4095(%r1), 42
+       tm      4095(%r15), 42
+
+#CHECK: tmhh   %r0, 0                  # encoding: [0xa7,0x02,0x00,0x00]
+#CHECK: tmhh   %r0, 32768              # encoding: [0xa7,0x02,0x80,0x00]
+#CHECK: tmhh   %r0, 65535              # encoding: [0xa7,0x02,0xff,0xff]
+#CHECK: tmhh   %r15, 0                 # encoding: [0xa7,0xf2,0x00,0x00]
+
+       tmhh    %r0, 0
+       tmhh    %r0, 0x8000
+       tmhh    %r0, 0xffff
+       tmhh    %r15, 0
+
+#CHECK: tmhl   %r0, 0                  # encoding: [0xa7,0x03,0x00,0x00]
+#CHECK: tmhl   %r0, 32768              # encoding: [0xa7,0x03,0x80,0x00]
+#CHECK: tmhl   %r0, 65535              # encoding: [0xa7,0x03,0xff,0xff]
+#CHECK: tmhl   %r15, 0                 # encoding: [0xa7,0xf3,0x00,0x00]
+
+       tmhl    %r0, 0
+       tmhl    %r0, 0x8000
+       tmhl    %r0, 0xffff
+       tmhl    %r15, 0
+
+#CHECK: tmlh   %r0, 0                  # encoding: [0xa7,0x00,0x00,0x00]
+#CHECK: tmlh   %r0, 32768              # encoding: [0xa7,0x00,0x80,0x00]
+#CHECK: tmlh   %r0, 65535              # encoding: [0xa7,0x00,0xff,0xff]
+#CHECK: tmlh   %r15, 0                 # encoding: [0xa7,0xf0,0x00,0x00]
+
+       tmlh    %r0, 0
+       tmlh    %r0, 0x8000
+       tmlh    %r0, 0xffff
+       tmlh    %r15, 0
+
+#CHECK: tmll   %r0, 0                  # encoding: [0xa7,0x01,0x00,0x00]
+#CHECK: tmll   %r0, 32768              # encoding: [0xa7,0x01,0x80,0x00]
+#CHECK: tmll   %r0, 65535              # encoding: [0xa7,0x01,0xff,0xff]
+#CHECK: tmll   %r15, 0                 # encoding: [0xa7,0xf1,0x00,0x00]
+
+       tmll    %r0, 0
+       tmll    %r0, 0x8000
+       tmll    %r0, 0xffff
+       tmll    %r15, 0
+
+#CHECK: tmy    -524288, 0              # encoding: [0xeb,0x00,0x00,0x00,0x80,0x51]
+#CHECK: tmy    -1, 0                   # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x51]
+#CHECK: tmy    0, 0                    # encoding: [0xeb,0x00,0x00,0x00,0x00,0x51]
+#CHECK: tmy    1, 0                    # encoding: [0xeb,0x00,0x00,0x01,0x00,0x51]
+#CHECK: tmy    524287, 0               # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x51]
+#CHECK: tmy    0, 255                  # encoding: [0xeb,0xff,0x00,0x00,0x00,0x51]
+#CHECK: tmy    0(%r1), 42              # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x51]
+#CHECK: tmy    0(%r15), 42             # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x51]
+#CHECK: tmy    524287(%r1), 42         # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x51]
+#CHECK: tmy    524287(%r15), 42        # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x51]
+
+       tmy     -524288, 0
+       tmy     -1, 0
+       tmy     0, 0
+       tmy     1, 0
+       tmy     524287, 0
+       tmy     0, 255
+       tmy     0(%r1), 42
+       tmy     0(%r15), 42
+       tmy     524287(%r1), 42
+       tmy     524287(%r15), 42
+
 #CHECK: x      %r0, 0                  # encoding: [0x57,0x00,0x00,0x00]
 #CHECK: x      %r0, 4095               # encoding: [0x57,0x00,0x0f,0xff]
 #CHECK: x      %r0, 0(%r1)             # encoding: [0x57,0x00,0x10,0x00]
        x       %r0, 4095(%r15,%r1)
        x       %r15, 0
 
+#CHECK: xc     0(1), 0                 # encoding: [0xd7,0x00,0x00,0x00,0x00,0x00]
+#CHECK: xc     0(1), 0(%r1)            # encoding: [0xd7,0x00,0x00,0x00,0x10,0x00]
+#CHECK: xc     0(1), 0(%r15)           # encoding: [0xd7,0x00,0x00,0x00,0xf0,0x00]
+#CHECK: xc     0(1), 4095              # encoding: [0xd7,0x00,0x00,0x00,0x0f,0xff]
+#CHECK: xc     0(1), 4095(%r1)         # encoding: [0xd7,0x00,0x00,0x00,0x1f,0xff]
+#CHECK: xc     0(1), 4095(%r15)        # encoding: [0xd7,0x00,0x00,0x00,0xff,0xff]
+#CHECK: xc     0(1,%r1), 0             # encoding: [0xd7,0x00,0x10,0x00,0x00,0x00]
+#CHECK: xc     0(1,%r15), 0            # encoding: [0xd7,0x00,0xf0,0x00,0x00,0x00]
+#CHECK: xc     4095(1,%r1), 0          # encoding: [0xd7,0x00,0x1f,0xff,0x00,0x00]
+#CHECK: xc     4095(1,%r15), 0         # encoding: [0xd7,0x00,0xff,0xff,0x00,0x00]
+#CHECK: xc     0(256,%r1), 0           # encoding: [0xd7,0xff,0x10,0x00,0x00,0x00]
+#CHECK: xc     0(256,%r15), 0          # encoding: [0xd7,0xff,0xf0,0x00,0x00,0x00]
+
+       xc      0(1), 0
+       xc      0(1), 0(%r1)
+       xc      0(1), 0(%r15)
+       xc      0(1), 4095
+       xc      0(1), 4095(%r1)
+       xc      0(1), 4095(%r15)
+       xc      0(1,%r1), 0
+       xc      0(1,%r15), 0
+       xc      4095(1,%r1), 0
+       xc      4095(1,%r15), 0
+       xc      0(256,%r1), 0
+       xc      0(256,%r15), 0
+
 #CHECK: xg     %r0, -524288            # encoding: [0xe3,0x00,0x00,0x00,0x80,0x82]
 #CHECK: xg     %r0, -1                 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x82]
 #CHECK: xg     %r0, 0                  # encoding: [0xe3,0x00,0x00,0x00,0x00,0x82]