aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/config/tc-s390.c15
-rw-r--r--gas/testsuite/gas/s390/zarch-arch12.d8
-rw-r--r--gas/testsuite/gas/s390/zarch-arch12.s8
-rw-r--r--opcodes/s390-opc.txt7
4 files changed, 38 insertions, 0 deletions
diff --git a/gas/config/tc-s390.c b/gas/config/tc-s390.c
index b53e33a..5a485e0 100644
--- a/gas/config/tc-s390.c
+++ b/gas/config/tc-s390.c
@@ -1510,6 +1510,21 @@ md_gather_operands (char *str,
if (*str++ != ')')
as_bad (_("syntax error; missing ')' after base register"));
skip_optional = 0;
+
+ if ((opcode->flags & (S390_INSTR_FLAG_OPTPARM
+ | S390_INSTR_FLAG_OPTPARM2))
+ && opindex_ptr[1] != '\0'
+ && opindex_ptr[2] == '\0'
+ && *str == '\0')
+ continue;
+
+ if ((opcode->flags & S390_INSTR_FLAG_OPTPARM2)
+ && opindex_ptr[1] != '\0'
+ && opindex_ptr[2] != '\0'
+ && opindex_ptr[3] == '\0'
+ && *str == '\0')
+ continue;
+
/* If there is a next operand it must be separated by a comma. */
if (opindex_ptr[1] != '\0')
{
diff --git a/gas/testsuite/gas/s390/zarch-arch12.d b/gas/testsuite/gas/s390/zarch-arch12.d
index 0a6796b..ac01648 100644
--- a/gas/testsuite/gas/s390/zarch-arch12.d
+++ b/gas/testsuite/gas/s390/zarch-arch12.d
@@ -201,3 +201,11 @@ Disassembly of section .text:
.*: b9 3c 00 69 [ ]*prno %r6,%r9
.*: b9 a1 00 69 [ ]*tpei %r6,%r9
.*: b9 ac 00 69 [ ]*irbm %r6,%r9
+.*: e7 f6 9f a0 00 06 [ ]*vl %v15,4000\(%r6,%r9\)
+.*: e7 f6 9f a0 d0 06 [ ]*vl %v15,4000\(%r6,%r9\),13
+.*: e7 f1 6f a0 04 36 [ ]*vlm %v15,%v17,4000\(%r6\)
+.*: e7 f1 6f a0 d4 36 [ ]*vlm %v15,%v17,4000\(%r6\),13
+.*: e7 f6 9f a0 00 0e [ ]*vst %v15,4000\(%r6,%r9\)
+.*: e7 f6 9f a0 d0 0e [ ]*vst %v15,4000\(%r6,%r9\),13
+.*: e7 f1 6f a0 04 3e [ ]*vstm %v15,%v17,4000\(%r6\)
+.*: e7 f1 6f a0 d4 3e [ ]*vstm %v15,%v17,4000\(%r6\),13
diff --git a/gas/testsuite/gas/s390/zarch-arch12.s b/gas/testsuite/gas/s390/zarch-arch12.s
index 1dd7434..51b1690 100644
--- a/gas/testsuite/gas/s390/zarch-arch12.s
+++ b/gas/testsuite/gas/s390/zarch-arch12.s
@@ -195,3 +195,11 @@ foo:
prno %r6,%r9
tpei %r6,%r9
irbm %r6,%r9
+ vl %v15,4000(%r6,%r9)
+ vl %v15,4000(%r6,%r9),13
+ vlm %v15,%v17,4000(%r6)
+ vlm %v15,%v17,4000(%r6),13
+ vst %v15,4000(%r6,%r9)
+ vst %v15,4000(%r6,%r9),13
+ vstm %v15,%v17,4000(%r6)
+ vstm %v15,%v17,4000(%r6),13
diff --git a/opcodes/s390-opc.txt b/opcodes/s390-opc.txt
index d8a9cce..c782aa9 100644
--- a/opcodes/s390-opc.txt
+++ b/opcodes/s390-opc.txt
@@ -1880,3 +1880,10 @@ b929 kma RRF_R0RR "cipher message with galois counter mode" arch12 zarch
b93c prno RRE_RR "perform pseudorandom number operation" arch12 zarch
b9a1 tpei RRE_RR "test pending external interruption" arch12 zarch
b9ac irbm RRE_RR "insert reference bits multiple" arch12 zarch
+
+# Aligned vector store hints
+
+e70000000006 vl VRX_VRRDU "vector memory load" arch12 zarch optparm
+e70000000036 vlm VRS_VVRDU "vector load multiple" arch12 zarch optparm
+e7000000000e vst VRX_VRRDU "vector store" arch12 zarch optparm
+e7000000003e vstm VRS_VVRDU "vector store multiple" arch12 zarch optparm