]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
s390: Allow to explicitly omit base register operand in assembly
authorJens Remus <jremus@linux.ibm.com>
Fri, 1 Mar 2024 11:45:14 +0000 (12:45 +0100)
committerJens Remus <jremus@linux.ibm.com>
Fri, 1 Mar 2024 11:45:14 +0000 (12:45 +0100)
The base register operand B may be omitted in D(B) by coding D and in
D(L,B) by coding D(L). The index register operand X may be omitted in
D(X,B) by coding D(B) or explicitly omitted by coding D(,B). In both
cases the omitted base register operand value defaults to zero.

Allow to explicitly omit the base register operand B in D(X,B) and
D(L,B) by coding D(X,) and D(L,). Default the omitted base register
operand value to zero.

gas/
* config/tc-s390.c: Allow to explicitly omit the base register
operand in assembly.
* NEWS: Mention that the base register now may be omitted on
s390.
* gas/testsuite/gas/s390/zarch-base-index-0.s: Update test cases
for change to allow to explicitly omit the base register
operand in assembly.
* gas/testsuite/gas/s390/zarch-base-index-0.d: Likewise.
* gas/testsuite/gas/s390/zarch-base-index-0-err.s: Likewise.
* gas/testsuite/gas/s390/zarch-base-index-0-err.l: Likewise.
* gas/testsuite/gas/s390/zarch-omitted-base-index.s: Likewise.
* gas/testsuite/gas/s390/zarch-omitted-base-index.d: Likewise.
* gas/testsuite/gas/s390/zarch-omitted-base-index-err.s:
Likewise.
* gas/testsuite/gas/s390/zarch-omitted-base-index-err.l:
Likewise.

Reviewed-by: Andreas Krebbel <krebbel@linux.ibm.com>
Signed-off-by: Jens Remus <jremus@linux.ibm.com>
gas/NEWS
gas/config/tc-s390.c
gas/testsuite/gas/s390/zarch-base-index-0-err.l
gas/testsuite/gas/s390/zarch-base-index-0-err.s
gas/testsuite/gas/s390/zarch-base-index-0.d
gas/testsuite/gas/s390/zarch-base-index-0.s
gas/testsuite/gas/s390/zarch-omitted-base-index-err.l
gas/testsuite/gas/s390/zarch-omitted-base-index-err.s
gas/testsuite/gas/s390/zarch-omitted-base-index.d
gas/testsuite/gas/s390/zarch-omitted-base-index.s

index 27be28dd6355e59850ae9d7972ef32ef6639dbf7..5d2a3645a88342af4aa6dc3b8a1b6a35fa4fb1ee 100644 (file)
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -1,5 +1,9 @@
 -*- text -*-
 
+* The base register operand in D(X,B) and D(L,B) may be explicitly omitted
+  in assembly on s390. It can now be coded as D(X,) or D(L,) instead of D(X,0)
+  D(X,%r0), D(L,0), and D(L,%r0).
+
 * Warn when a register name type does not match the operand type on s390.
   Add support for s390-specific option "warn-regtype-mismatch=[strict|relaxed|
   no]" to override the register name type check behavior. The default
index 9659875cb0d43b82cc3f4ca28c3d205f9610d059..edf88833bd6c201bc95140e7b16c9623dc9947e0 100644 (file)
@@ -1683,13 +1683,17 @@ md_gather_operands (char *str,
       else
        {
          /* We can find an 'early' closing parentheses in e.g. D(L) instead
-            of D(L,B).  In this case the base register has to be skipped.  */
-         if (*str == ')')
+            of D(L,B). In this case the base register has to be skipped.
+            Same if the base register has been explicilty omitted in e.g.
+            D(X,) or D(L,).  */
+         if (*str == ')' || (str[0] == ',' && str[1] == ')'))
            {
              operand = s390_operands + *(++opindex_ptr);
 
              if (!(operand->flags & S390_OPERAND_BASE))
-               as_bad (_("syntax error; ')' not allowed here"));
+               as_bad (_("syntax error; '%c' not allowed here"), *str);
+             if (*str == ',')
+               str++;
              str++;
            }
 
index 1762b6ec081301d8a823ae3728a3210ff22fabe0..e7d03ecdfe11b51a70fd26d8c24688622c0a5686 100644 (file)
 .*:8: Error: syntax error; missing '\)' after base register
 .*:9: Error: bad expression
 .*:9: Error: syntax error; missing '\)' after base register
-.*:10: Error: bad expression
-.*:10: Error: syntax error; missing '\)' after base register
-.*:11: Error: bad expression
-.*:11: Error: syntax error; missing '\)' after base register
 .*:12: Error: bad expression
 .*:12: Error: syntax error; missing '\)' after base register
+.*:13: Error: bad expression
+.*:13: Error: syntax error; missing '\)' after base register
+.*:14: Error: bad expression
+.*:14: Error: syntax error; missing '\)' after base register
 .*:15: Error: bad expression
 .*:15: Error: syntax error; missing '\)' after base register
 .*:16: Error: bad expression
 .*:16: Error: syntax error; missing '\)' after base register
-.*:17: Error: bad expression
-.*:17: Error: syntax error; missing '\)' after base register
-.*:18: Error: bad expression
-.*:18: Error: syntax error; missing '\)' after base register
-.*:19: Error: bad expression
-.*:19: Error: syntax error; missing '\)' after base register
-.*:20: Error: bad expression
-.*:20: Error: syntax error; missing '\)' after base register
+.*:17: Error: operand out of range \(0 is not between 1 and 256\)
+.*:18: Error: missing operand
+.*:19: Error: missing operand
+.*:20: Error: missing operand
 .*:21: Error: bad expression
+.*:21: Error: operand out of range \(0 is not between 1 and 256\)
+.*:21: Error: operand out of range \(32 is not between 0 and 15\)
 .*:21: Error: syntax error; missing '\)' after base register
+.*:21: Error: syntax error; expected ','
 .*:21: Error: bad expression
+.*:21: Error: found 'r', expected: '\)'
 .*:21: Error: syntax error; missing '\)' after base register
-.*:22: Error: bad expression
-.*:22: Error: syntax error; missing '\)' after base register
-.*:23: Error: bad expression
-.*:23: Error: syntax error; missing '\)' after base register
-.*:24: Error: operand out of range \(0 is not between 1 and 256\)
-.*:25: Error: missing operand
-.*:26: Error: missing operand
+.*:21: Error: junk at end of line: `r2\)'
+.*:22: Error: syntax error; missing '\(' after displacement
+.*:23: Error: invalid length field specified
+.*:26: Error: operand out of range \(0 is not between 1 and 16\)
 .*:27: Error: missing operand
-.*:27: Error: bad expression
-.*:27: Error: syntax error; missing '\)' after base register
-.*:28: Error: bad expression
-.*:28: Error: operand out of range \(0 is not between 1 and 256\)
-.*:28: Error: operand out of range \(32 is not between 0 and 15\)
-.*:28: Error: syntax error; missing '\)' after base register
-.*:28: Error: syntax error; expected ','
-.*:28: Error: bad expression
-.*:28: Error: found 'r', expected: '\)'
-.*:28: Error: syntax error; missing '\)' after base register
-.*:28: Error: junk at end of line: `r2\)'
-.*:29: Error: syntax error; missing '\(' after displacement
-.*:30: Error: invalid length field specified
-.*:33: Error: bad expression
-.*:33: Error: syntax error; missing '\)' after base register
-.*:34: Error: bad expression
-.*:34: Error: syntax error; missing '\)' after base register
-.*:35: Error: bad expression
-.*:35: Error: syntax error; missing '\)' after base register
+.*:28: Error: missing operand
+.*:29: Error: missing operand
+.*:30: Error: bad expression
+.*:30: Error: operand out of range \(0 is not between 1 and 16\)
+.*:30: Error: operand out of range \(32 is not between 0 and 15\)
+.*:30: Error: syntax error; missing '\)' after base register
+.*:30: Error: syntax error; expected ','
+.*:30: Error: found ',', expected: '\)'
+.*:31: Error: syntax error; missing '\(' after displacement
+.*:32: Error: operand out of range \(0 is not between 1 and 16\)
+.*:33: Error: missing operand
+.*:34: Error: missing operand
+.*:35: Error: missing operand
 .*:36: Error: bad expression
-.*:36: Error: syntax error; missing '\)' after base register
-.*:37: Error: bad expression
-.*:37: Error: syntax error; missing '\)' after base register
-.*:38: Error: bad expression
-.*:38: Error: syntax error; missing '\)' after base register
-.*:39: Error: bad expression
-.*:39: Error: syntax error; missing '\)' after base register
-.*:39: Error: bad expression
-.*:39: Error: syntax error; missing '\)' after base register
-.*:40: Error: bad expression
-.*:40: Error: syntax error; missing '\)' after base register
-.*:41: Error: bad expression
-.*:41: Error: syntax error; missing '\)' after base register
+.*:36: Error: operand out of range \(0 is not between 1 and 16\)
+.*:36: Error: syntax error; expected ','
+.*:37: Error: syntax error; missing '\(' after displacement
+.*:38: Error: operand out of range \(0 is not between 1 and 16\)
+.*:38: Error: operand out of range \(0 is not between 1 and 16\)
+.*:39: Error: missing operand
+.*:39: Error: missing operand
+.*:40: Error: missing operand
+.*:40: Error: missing operand
+.*:41: Error: missing operand
+.*:41: Error: missing operand
+.*:42: Error: bad expression
 .*:42: Error: operand out of range \(0 is not between 1 and 16\)
-.*:43: Error: missing operand
-.*:44: Error: missing operand
-.*:45: Error: missing operand
-.*:45: Error: bad expression
-.*:45: Error: syntax error; missing '\)' after base register
+.*:42: Error: operand out of range \(32 is not between 0 and 15\)
+.*:42: Error: syntax error; missing '\)' after base register
+.*:42: Error: syntax error; expected ','
+.*:42: Error: bad expression
+.*:42: Error: missing '\)'
+.*:42: Error: operand out of range \(0 is not between 1 and 16\)
+.*:42: Error: syntax error; expected ','
+.*:43: Error: syntax error; missing '\(' after displacement
+.*:43: Error: syntax error; missing '\(' after displacement
 .*:46: Error: bad expression
-.*:46: Error: operand out of range \(0 is not between 1 and 16\)
-.*:46: Error: operand out of range \(32 is not between 0 and 15\)
 .*:46: Error: syntax error; missing '\)' after base register
-.*:46: Error: syntax error; expected ','
-.*:46: Error: found ',', expected: '\)'
-.*:47: Error: syntax error; missing '\(' after displacement
-.*:48: Error: operand out of range \(0 is not between 1 and 16\)
-.*:49: Error: missing operand
-.*:50: Error: missing operand
-.*:51: Error: missing operand
-.*:51: Error: bad expression
-.*:51: Error: syntax error; missing '\)' after base register
-.*:52: Error: bad expression
-.*:52: Error: operand out of range \(0 is not between 1 and 16\)
-.*:52: Error: syntax error; expected ','
-.*:53: Error: syntax error; missing '\(' after displacement
-.*:54: Error: operand out of range \(0 is not between 1 and 16\)
-.*:54: Error: operand out of range \(0 is not between 1 and 16\)
-.*:55: Error: missing operand
-.*:55: Error: missing operand
-.*:56: Error: missing operand
-.*:56: Error: missing operand
-.*:57: Error: missing operand
-.*:57: Error: bad expression
-.*:57: Error: syntax error; missing '\)' after base register
-.*:57: Error: missing operand
-.*:57: Error: bad expression
-.*:57: Error: syntax error; missing '\)' after base register
-.*:58: Error: bad expression
-.*:58: Error: operand out of range \(0 is not between 1 and 16\)
-.*:58: Error: operand out of range \(32 is not between 0 and 15\)
-.*:58: Error: syntax error; missing '\)' after base register
-.*:58: Error: syntax error; expected ','
-.*:58: Error: bad expression
-.*:58: Error: missing '\)'
-.*:58: Error: operand out of range \(0 is not between 1 and 16\)
-.*:58: Error: syntax error; expected ','
-.*:59: Error: syntax error; missing '\(' after displacement
-.*:59: Error: syntax error; missing '\(' after displacement
-.*:62: Error: bad expression
-.*:62: Error: syntax error; missing '\)' after base register
-.*:63: Error: bad expression
-.*:63: Error: syntax error; missing '\)' after base register
-.*:64: Error: bad expression
-.*:64: Error: syntax error; missing '\)' after base register
-.*:65: Error: bad expression
-.*:65: Error: syntax error; missing '\)' after base register
-.*:66: Error: bad expression
-.*:66: Error: syntax error; missing '\)' after base register
+.*:47: Error: bad expression
+.*:47: Error: syntax error; missing '\)' after base register
index 175cc90b26994ab5f267017d32ef1bafa35e4918..472d24ef62730b0023e4acbf1aca5c2680dcc510 100644 (file)
@@ -5,21 +5,14 @@ foo:
        mvi     16(),32                 # syntax error: empty parentheses
 
 #              R1,D2(X2,B2)
-       a       %r1,16(%r2,)            # syntax error: explicitly omitted base
-       a       %r1,16(%r0,)            # syntax error: explicitly omitted base
-       a       %r1,16(0,)              # syntax error: explicitly omitted base
        a       %r1,16(,)               # syntax error: explicitly omitted index & base
        a       %r1,16()                # syntax error: empty parentheses
 
 #              D1(L1,B1),D2(B2)
-       mvc     16(1,),32(%r2)          # syntax error: explicitly omitted base
        mvc     16(1,%r1),32()          # syntax error: empty parentheses
        mvc     16(1,%r0),32()          # syntax error: empty parentheses
        mvc     16(1,0),32()            # syntax error: empty parentheses
-       mvc     16(1,),32(%r0)          # syntax error: explicitly omitted base
-       mvc     16(1,),32(0)            # syntax error: explicitly omitted base
        mvc     16(1,),32()             # syntax error: explicitly omitted base & empty parentheses
-       mvc     16(1,),32               # syntax error: explicitly omitted base
        mvc     16(1),32()              # syntax error: empty parentheses
        mvc     16(0,%r1),32(%r2)       # syntax error: length 0
        mvc     16(,%r1),32(%r2)        # syntax error: explicitly omitted length
@@ -30,15 +23,6 @@ foo:
        mvc     16(%r1),32(%r2)         # syntax error: omitted length
 
 #              D1(L1,B1),D2(L2,B2)
-       unpk    16(1,),32(2,%r2)        # syntax error: explicitly omitted base
-       unpk    16(1,%r1),32(2,)        # syntax error: explicitly omitted base
-       unpk    16(1,%r0),32(2,)        # syntax error: explicitly omitted base
-       unpk    16(1,0),32(2,)          # syntax error: explicitly omitted base
-       unpk    16(1,),32(2,%r0)        # syntax error: explicitly omitted base
-       unpk    16(1,),32(2,0)          # syntax error: explicitly omitted base
-       unpk    16(1,),32(2,)           # syntax error: explicitly omitted base
-       unpk    16(1,),32(2)            # syntax error: explicitly omitted base
-       unpk    16(1),32(2,)            # syntax error: explicitly omitted base
        unpk    16(0,%r1),32(2,%r2)     # syntax error: length 0
        unpk    16(,%r1),32(2,%r2)      # syntax error: explicitly omitted length
        unpk    16(,1),32(2,%r2)        # syntax error: explicitly omitted length
@@ -59,8 +43,5 @@ foo:
        unpk    16,32                   # syntax error: missing lengths
 
 #              V1,D2(VX2,B2),M3
-       vgef    %v1,16(%v2,),0          # syntax error: explicitly omitted base
-       vgef    %v1,16(%v0,),0          # syntax error: explicitly omitted base
-       vgef    %v1,16(0,),0            # syntax error: explicitly omitted base
        vgef    %v1,16(,),0             # syntax error: explicitly omitted index & base
        vgef    %v1,16(),0              # syntax error: empty parentheses
index 4dd913bff9208d4d00abac195d34deab39b6f708..717eaac2423b9daa88002254c52cfeec4a85b0e7 100644 (file)
@@ -19,6 +19,9 @@ Disassembly of section .text:
 .*:    5a 10 30 10 [    ]*a    %r1,16\(%r3\)
 .*:    5a 12 00 10 [    ]*a    %r1,16\(%r2,0\)
 .*:    5a 12 00 10 [    ]*a    %r1,16\(%r2,0\)
+.*:    5a 12 00 10 [    ]*a    %r1,16\(%r2,0\)
+.*:    5a 10 00 10 [    ]*a    %r1,16
+.*:    5a 10 00 10 [    ]*a    %r1,16
 .*:    5a 10 00 10 [    ]*a    %r1,16
 .*:    5a 10 00 10 [    ]*a    %r1,16
 .*:    5a 10 00 10 [    ]*a    %r1,16
@@ -34,6 +37,7 @@ Disassembly of section .text:
 .*:    d2 00 00 10 20 20 [      ]*mvc  16\(1,0\),32\(%r2\)
 .*:    d2 00 00 10 20 20 [      ]*mvc  16\(1,0\),32\(%r2\)
 .*:    d2 00 00 10 20 20 [      ]*mvc  16\(1,0\),32\(%r2\)
+.*:    d2 00 00 10 20 20 [      ]*mvc  16\(1,0\),32\(%r2\)
 .*:    d2 00 10 10 00 20 [      ]*mvc  16\(1,%r1\),32
 .*:    d2 00 10 10 00 20 [      ]*mvc  16\(1,%r1\),32
 .*:    d2 00 10 10 00 20 [      ]*mvc  16\(1,%r1\),32
@@ -46,14 +50,26 @@ Disassembly of section .text:
 .*:    d2 00 00 10 00 20 [      ]*mvc  16\(1,0\),32
 .*:    d2 00 00 10 00 20 [      ]*mvc  16\(1,0\),32
 .*:    d2 00 00 10 00 20 [      ]*mvc  16\(1,0\),32
+.*:    d2 00 00 10 00 20 [      ]*mvc  16\(1,0\),32
+.*:    d2 00 00 10 00 20 [      ]*mvc  16\(1,0\),32
+.*:    d2 00 00 10 00 20 [      ]*mvc  16\(1,0\),32
 .*:    d2 00 00 00 00 00 [      ]*mvc  0\(1,0\),0
 .*:    f3 01 10 10 20 20 [      ]*unpk 16\(1,%r1\),32\(2,%r2\)
 .*:    f3 01 00 10 20 20 [      ]*unpk 16\(1,0\),32\(2,%r2\)
 .*:    f3 01 00 10 20 20 [      ]*unpk 16\(1,0\),32\(2,%r2\)
 .*:    f3 01 00 10 20 20 [      ]*unpk 16\(1,0\),32\(2,%r2\)
+.*:    f3 01 00 10 20 20 [      ]*unpk 16\(1,0\),32\(2,%r2\)
 .*:    f3 01 10 10 00 20 [      ]*unpk 16\(1,%r1\),32\(2,0\)
 .*:    f3 01 10 10 00 20 [      ]*unpk 16\(1,%r1\),32\(2,0\)
 .*:    f3 01 10 10 00 20 [      ]*unpk 16\(1,%r1\),32\(2,0\)
+.*:    f3 01 10 10 00 20 [      ]*unpk 16\(1,%r1\),32\(2,0\)
+.*:    f3 01 00 10 00 20 [      ]*unpk 16\(1,0\),32\(2,0\)
+.*:    f3 01 00 10 00 20 [      ]*unpk 16\(1,0\),32\(2,0\)
+.*:    f3 01 00 10 00 20 [      ]*unpk 16\(1,0\),32\(2,0\)
+.*:    f3 01 00 10 00 20 [      ]*unpk 16\(1,0\),32\(2,0\)
+.*:    f3 01 00 10 00 20 [      ]*unpk 16\(1,0\),32\(2,0\)
+.*:    f3 01 00 10 00 20 [      ]*unpk 16\(1,0\),32\(2,0\)
+.*:    f3 01 00 10 00 20 [      ]*unpk 16\(1,0\),32\(2,0\)
 .*:    f3 01 00 10 00 20 [      ]*unpk 16\(1,0\),32\(2,0\)
 .*:    f3 01 00 10 00 20 [      ]*unpk 16\(1,0\),32\(2,0\)
 .*:    f3 01 00 10 00 20 [      ]*unpk 16\(1,0\),32\(2,0\)
@@ -71,6 +87,9 @@ Disassembly of section .text:
 .*:    e7 10 30 10 00 13 [      ]*vgef %v1,16\(%r3\),0
 .*:    e7 12 00 10 00 13 [      ]*vgef %v1,16\(%v2,0\),0
 .*:    e7 12 00 10 00 13 [      ]*vgef %v1,16\(%v2,0\),0
+.*:    e7 12 00 10 00 13 [      ]*vgef %v1,16\(%v2,0\),0
+.*:    e7 10 00 10 00 13 [      ]*vgef %v1,16,0
+.*:    e7 10 00 10 00 13 [      ]*vgef %v1,16,0
 .*:    e7 10 00 10 00 13 [      ]*vgef %v1,16,0
 .*:    e7 10 00 10 00 13 [      ]*vgef %v1,16,0
 .*:    e7 10 00 10 00 13 [      ]*vgef %v1,16,0
index 15c792d776fadf6eeaa71d6c1e4a1d7b8375f313..e34c626707e2bf8c63b571e8cd56756d69b655eb 100644 (file)
@@ -18,13 +18,13 @@ foo:
        a       %r1,16(%r3)
        a       %r1,16(%r2,%r0)
        a       %r1,16(%r2,0)
-#      a       %r1,16(%r2,)            # syntax error: explicitly omitted base
+       a       %r1,16(%r2,)            # syntax error: explicitly omitted base
        a       %r1,16(%r0,%r0)
        a       %r1,16(%r0,0)
-#      a       %r1,16(%r0,)            # syntax error: explicitly omitted base
+       a       %r1,16(%r0,)            # syntax error: explicitly omitted base
        a       %r1,16(0,%r0)
        a       %r1,16(0,0)
-#      a       %r1,16(0,)              # syntax error: explicitly omitted base
+       a       %r1,16(0,)              # syntax error: explicitly omitted base
        a       %r1,16(0,%r0)
        a       %r1,16(,%r0)
        a       %r1,16(,0)
@@ -39,7 +39,7 @@ foo:
        mvc     16(1,%r1),32(%r2)
        mvc     16(1,%r0),32(%r2)
        mvc     16(1,0),32(%r2)
-#      mvc     16(1,),32(%r2)          # syntax error: explicitly omitted base
+       mvc     16(1,),32(%r2)
        mvc     16(1),32(%r2)
        mvc     16(1,%r1),32(%r0)
        mvc     16(1,%r1),32(0)
@@ -53,10 +53,10 @@ foo:
        mvc     16(1,0),32(0)
 #      mvc     16(1,0),32()            # syntax error: empty parentheses
        mvc     16(1,0),32
-#      mvc     16(1,),32(%r0)          # syntax error: explicitly omitted base
-#      mvc     16(1,),32(0)            # syntax error: explicitly omitted base
+       mvc     16(1,),32(%r0)
+       mvc     16(1,),32(0)
 #      mvc     16(1,),32()             # syntax error: explicitly omitted base & empty parentheses
-#      mvc     16(1,),32               # syntax error: explicitly omitted base
+       mvc     16(1,),32
        mvc     16(1),32(%r0)
        mvc     16(1),32(0)
 #      mvc     16(1),32()              # syntax error: empty parentheses
@@ -67,27 +67,27 @@ foo:
        unpk    16(1,%r1),32(2,%r2)
        unpk    16(1,%r0),32(2,%r2)
        unpk    16(1,0),32(2,%r2)
-#      unpk    16(1,),32(2,%r2)        # syntax error: explicitly omitted base
+       unpk    16(1,),32(2,%r2)
        unpk    16(1),32(2,%r2)
        unpk    16(1,%r1),32(2,%r0)
        unpk    16(1,%r1),32(2,0)
-#      unpk    16(1,%r1),32(2,)        # syntax error: explicitly omitted base
+       unpk    16(1,%r1),32(2,)
        unpk    16(1,%r1),32(2)
        unpk    16(1,%r0),32(2,%r0)
        unpk    16(1,%r0),32(2,0)
-#      unpk    16(1,%r0),32(2,)        # syntax error: explicitly omitted base
+       unpk    16(1,%r0),32(2,)
        unpk    16(1,%r0),32(2)
        unpk    16(1,0),32(2,%r0)
        unpk    16(1,0),32(2,0)
-#      unpk    16(1,0),32(2,)          # syntax error: explicitly omitted base
+       unpk    16(1,0),32(2,)
        unpk    16(1,0),32(2)
-#      unpk    16(1,),32(2,%r0)        # syntax error: explicitly omitted base
-#      unpk    16(1,),32(2,0)          # syntax error: explicitly omitted base
-#      unpk    16(1,),32(2,)           # syntax error: explicitly omitted base
-#      unpk    16(1,),32(2)            # syntax error: explicitly omitted base
+       unpk    16(1,),32(2,%r0)
+       unpk    16(1,),32(2,0)
+       unpk    16(1,),32(2,)
+       unpk    16(1,),32(2)
        unpk    16(1),32(2,%r0)
        unpk    16(1),32(2,0)
-#      unpk    16(1),32(2,)            # syntax error: explicitly omitted base
+       unpk    16(1),32(2,)
        unpk    16(1),32(2)
        unpk    0(1),0(2)
 
@@ -99,13 +99,13 @@ foo:
        vgef    %v1,16(%r3),0
        vgef    %v1,16(%v2,%r0),0
        vgef    %v1,16(%v2,0),0
-#      vgef    %v1,16(%v2,),0          # syntax error: explicitly omitted base
+       vgef    %v1,16(%v2,),0
        vgef    %v1,16(%v0,%r0),0
        vgef    %v1,16(%v0,0),0
-#      vgef    %v1,16(%v0,),0          # syntax error: explicitly omitted base
+       vgef    %v1,16(%v0,),0
        vgef    %v1,16(0,%r0),0
        vgef    %v1,16(0,0),0
-#      vgef    %v1,16(0,),0            # syntax error: explicitly omitted base
+       vgef    %v1,16(0,),0
        vgef    %v1,16(,%r0),0
        vgef    %v1,16(,0),0
 #      vgef    %v1,16(,),0             # syntax error: explicitly omitted index & base
index e4bd7a8c41711dd59844315b1aeba16f0599c623..f222fe00093e6dd6fd722397781d7cef4841815d 100644 (file)
@@ -3,23 +3,19 @@
 .*:5: Error: syntax error; missing '\)' after base register
 .*:8: Error: bad expression
 .*:8: Error: syntax error; missing '\)' after base register
-.*:9: Error: bad expression
-.*:9: Error: syntax error; missing '\)' after base register
+.*:11: Warning: operand 2: expected general register name as base register
 .*:12: Error: bad expression
 .*:12: Error: syntax error; missing '\)' after base register
-.*:13: Warning: operand 2: expected general register name as base register
-.*:14: Error: bad expression
-.*:14: Error: syntax error; missing '\)' after base register
-.*:17: Error: missing operand
-.*:18: Error: missing operand
-.*:19: Error: invalid length field specified
-.*:20: Error: bad expression
-.*:20: Error: operand out of range \(0 is not between 1 and 256\)
-.*:20: Error: operand out of range \(32 is not between 0 and 15\)
-.*:20: Error: syntax error; missing '\)' after base register
-.*:20: Error: syntax error; expected ','
-.*:20: Error: bad expression
-.*:20: Error: found 'r', expected: '\)'
-.*:20: Error: syntax error; missing '\)' after base register
-.*:20: Error: junk at end of line: `r2\)'
-.*:21: Error: syntax error; missing '\(' after displacement
+.*:15: Error: missing operand
+.*:16: Error: missing operand
+.*:17: Error: invalid length field specified
+.*:18: Error: bad expression
+.*:18: Error: operand out of range \(0 is not between 1 and 256\)
+.*:18: Error: operand out of range \(32 is not between 0 and 15\)
+.*:18: Error: syntax error; missing '\)' after base register
+.*:18: Error: syntax error; expected ','
+.*:18: Error: bad expression
+.*:18: Error: found 'r', expected: '\)'
+.*:18: Error: syntax error; missing '\)' after base register
+.*:18: Error: junk at end of line: `r2\)'
+.*:19: Error: syntax error; missing '\(' after displacement
index dd0e9fe183f39c7e335bf0d9cf3d9b6bdb9c46cf..0114c640375628e570c6d68b61bc0a8030046387 100644 (file)
@@ -5,11 +5,9 @@ foo:
        clm     %r1,0b1000,16()
 
 #              R1,D2(X2,B2)
-       a       %r1,16(%r2,)
        a       %r1,16()
 
 #              V1,D2(VX2,B2),M3
-       vgef    %v1,16(%v2,),0
        vgef    %v1,16(%v2),0
        vgef    %v1,16(),0
 
index cb168a2fe18749ccb43f0e8b291df8984e72977d..2795a9d095cb61ea2675f54f1986165c6ee24dbd 100644 (file)
@@ -9,10 +9,12 @@ Disassembly of section .text:
 .*:    bd 18 20 10 [    ]*clm  %r1,8,16\(%r2\)
 .*:    bd 18 00 10 [    ]*clm  %r1,8,16
 .*:    5a 12 30 10 [    ]*a    %r1,16\(%r2,%r3\)
+.*:    5a 12 00 10 [    ]*a    %r1,16\(%r2,0\)
 .*:    5a 10 30 10 [    ]*a    %r1,16\(%r3\)
 .*:    5a 10 30 10 [    ]*a    %r1,16\(%r3\)
 .*:    5a 10 00 10 [    ]*a    %r1,16
 .*:    e7 12 30 10 00 13 [      ]*vgef %v1,16\(%v2,%r3\),0
+.*:    e7 12 00 10 00 13 [      ]*vgef %v1,16\(%v2,0\),0
 .*:    e7 10 30 10 00 13 [      ]*vgef %v1,16\(%r3\),0
 .*:    e7 10 30 10 00 13 [      ]*vgef %v1,16\(%r3\),0
 .*:    e7 10 00 10 00 13 [      ]*vgef %v1,16,0
@@ -20,3 +22,4 @@ Disassembly of section .text:
 .*:    d2 00 10 10 00 20 [      ]*mvc  16\(1,%r1\),32
 .*:    d2 00 00 10 20 20 [      ]*mvc  16\(1,0\),32\(%r2\)
 .*:    d2 00 00 10 00 20 [      ]*mvc  16\(1,0\),32
+.*:    07 07 [  ]*nopr %r7
index 8381319068bcb8701f8400ceecff30a6496bd1e2..1d4d434c9483346f83599b565004740a734bf149 100644 (file)
@@ -7,12 +7,14 @@ foo:
 
 #              R1,D1(X2,B2)
        a       %r1,16(%r2,%r3)
+       a       %r1,16(%r2,)
        a       %r1,16(,%r3)
        a       %r1,16(%r3)
        a       %r1,16
 
 #              V1,D2(VX2,B2),M3
        vgef    %v1,16(%v2,%r3),0
+       vgef    %v1,16(%v2,),0
        vgef    %v1,16(,%r3),0
        vgef    %v1,16(%r3),0
        vgef    %v1,16,0