summaryrefslogtreecommitdiff
path: root/test/MC/SystemZ
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@linux.vnet.ibm.com>2013-09-05 10:36:45 +0000
committerRichard Sandiford <rsandifo@linux.vnet.ibm.com>2013-09-05 10:36:45 +0000
commit16277c4698f36a756c540fae326874774156aaed (patch)
tree640d07133c8f2ab9f909e7b2c464f96e6c1a5496 /test/MC/SystemZ
parenta83aeae350d822ec84ded34ff3fdf1e0917d3bfd (diff)
downloadllvm-16277c4698f36a756c540fae326874774156aaed.tar.gz
llvm-16277c4698f36a756c540fae326874774156aaed.tar.bz2
llvm-16277c4698f36a756c540fae326874774156aaed.tar.xz
[SystemZ] Add NC, OC and XC
For now these are just used to handle scalar ANDs, ORs and XORs in which all operands are memory. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190041 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC/SystemZ')
-rw-r--r--test/MC/SystemZ/insn-bad.s132
-rw-r--r--test/MC/SystemZ/insn-good.s78
2 files changed, 210 insertions, 0 deletions
diff --git a/test/MC/SystemZ/insn-bad.s b/test/MC/SystemZ/insn-bad.s
index 54979fdaf9..a7affaef2f 100644
--- a/test/MC/SystemZ/insn-bad.s
+++ b/test/MC/SystemZ/insn-bad.s
@@ -2051,6 +2051,50 @@
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
@@ -2167,6 +2211,50 @@
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
@@ -2903,6 +2991,50 @@
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
diff --git a/test/MC/SystemZ/insn-good.s b/test/MC/SystemZ/insn-good.s
index be7e308549..0cbccc4a29 100644
--- a/test/MC/SystemZ/insn-good.s
+++ b/test/MC/SystemZ/insn-good.s
@@ -5774,6 +5774,32 @@
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]
@@ -5948,6 +5974,32 @@
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]
@@ -7340,6 +7392,32 @@
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]