From patchwork Thu Feb 15 15:58:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Remus X-Patchwork-Id: 201613 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp499365dyb; Thu, 15 Feb 2024 08:04:16 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCWDdAMYDy+t+dXEduI05aqR4kAJsk2eF3u0v0HbQLNtFnFL1e3y8a4T+Qi+FRlszTY/de2YwGktfTDVR2vkAUXVvE1vHw== X-Google-Smtp-Source: AGHT+IGrLKFwhZ62lH1jpV8QYQK1C8rvtCcf2MLjz8PbjHDQMPHflOk7xK3sEH8n4ExIiVNBAGky X-Received: by 2002:a05:620a:309:b0:787:3e3b:4dae with SMTP id s9-20020a05620a030900b007873e3b4daemr293185qkm.67.1708013056125; Thu, 15 Feb 2024 08:04:16 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708013056; cv=pass; d=google.com; s=arc-20160816; b=0c9txgOBQDBM+4nJxrHT47a6RA7K5PT542Bo7Gya3LG/1XTzvZctdH/nMYx092nsrf b1BeDgVu0hoQY3mYJ+QM1Mf8nUhwgcMDBT+J5QBLKvP6R5xtX7MaN9eSQz5WBj43YOiE h8cUlvzKQn8aE++imxsAG1zrIJQhMjEkmvlgkF5Bv3RiKLKqndlgp34kgPjpJ+6qAtI5 XIIviFXqlTOI0l8UYrGN/x5GTgOYmW5eNfENA5JsP5H1FOCQkdgWD0AfbyemA7OxZDUy FMiTJAH6RbCq0X3p6HWXxraGUeHIuoIRXdjuRJ1+HpwTqN+rnFXobbuyodVPaxqu3Umo rTLw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:arc-filter:dmarc-filter:delivered-to; bh=TdofC/u8Q4ZwMrDAyrQnBEHt1Gfvz2UhTRW2nkO1Cew=; fh=6sWHPsCQUoLz5ZcbqIohOjwdU7jjRT/citiAJwaEf0c=; b=cHFXajPVXD3J3IwCu7hwHAAnFZdZ40xCwqCbTwTXSH220BwPafax/sk8/MJ5Wa329N u0TJCdLhXckv0HUTc28F6bafdtOcCUZzVox5LHLB5P7QKj7OEZckjVZ3YTFQSfoC64Jb AZKB5d5m3jhrEP2WQgsxTToOx1fh88N/9YP9h6lrUC+hUFn3gR/W1lBuf1sbvzl5zE/k XK1ctDslhM46APPmkrIqdUeMDsa/PjaqQHNm5H73rWnOQEKLIMaWtZMKVC9A4h+FWEZ2 rUNceOa7leSFAPdDwVOIIOA/B5Ya9peTZM5pJO+sIm/f2uzvGpYC8jBHFzBQtG5Ybuwc EDew==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b="Jk/3aWD7"; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=ibm.com Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id b23-20020a05620a0cd700b00785a9e8dbedsi1751315qkj.128.2024.02.15.08.04.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 08:04:16 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b="Jk/3aWD7"; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=ibm.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3C905386D631 for ; Thu, 15 Feb 2024 16:03:09 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 2BD8A38654AD for ; Thu, 15 Feb 2024 15:58:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2BD8A38654AD Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 2BD8A38654AD Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708012722; cv=none; b=IP1cyr7SnTlieKC2RUIdHX0YoNOieTVISU/BJ36fsXK95PFkodX08syN2mCJOpgpQHVP9yInThaBdsKPqL3sNezONSeT0YVso1mODbJc0Xf9I/+VuoMfNkScL6GFEFtMKOC9/ytX8W7dhmjmBUopVBXpPOgcHh9s4ttBdrymkHc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708012722; c=relaxed/simple; bh=VUAnyA4AEiEmwex95eV5RwcBIdSzSkfVnd3OqHmCDXI=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=ZXKfhpfn9v2rc2jCHZSdHpIBE8rajghCObBjJgdHe6pfMAt0HDg0gkCspQTKve18Gi1Shk7Lw+U/NMouEAlx6Eh2iUFgj0FSGkQsIB04I8wzqUSBuY9SO1bos8lIQX47CKfm2eKwxrwXptLfseCsXrS8zsHnQWz8b+Cl36ActFM= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FF0Xln018165 for ; Thu, 15 Feb 2024 15:58:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=TdofC/u8Q4ZwMrDAyrQnBEHt1Gfvz2UhTRW2nkO1Cew=; b=Jk/3aWD7eDIO3aQgceMvg8SQBEUiQ6hL5iE9Ysa6Hg4AefamuFFmYIW5jhBBs8yuyByE Mi4OHOx0YW8h6bxWXmmpRvmulCTbe93TkzvGTolPMr5jV/zLmrFl115St6tBJlKqGsoR /RCacMqR+cThBeC86A5KquktdHwDqOHaecN+UGLZE+/MordkNgJwgoOOfFQsDzzWEC/0 tUbxkYRfWh/zWbgcYX1Vku0XjSU1bQGChxfzusw5FLp7QGjnuEXoun7dEGLadnDvU3NA FoM0MFZ2rOroxHEgw7hlWaRsDYIRYUOYN8wf7iOYd1K3m9cLmnofD2aEPFgDas5ZzGCW HQ== Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3w9mvhsuw9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 15 Feb 2024 15:58:36 +0000 Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 41FD8tE9032553 for ; Thu, 15 Feb 2024 15:58:36 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 3w6kftwxsq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 15 Feb 2024 15:58:35 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 41FFwUN026608164 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 15:58:32 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 45E082004B; Thu, 15 Feb 2024 15:58:30 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 169C220073; Thu, 15 Feb 2024 15:58:30 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 15 Feb 2024 15:58:30 +0000 (GMT) From: Jens Remus To: binutils@sourceware.org Cc: Jens Remus , Andreas Krebbel Subject: [PATCH 12/14] s390: Allow to explicitly omit base register operand in assembly Date: Thu, 15 Feb 2024 16:58:19 +0100 Message-Id: <20240215155821.4065623-13-jremus@linux.ibm.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240215155821.4065623-1-jremus@linux.ibm.com> References: <20240215155821.4065623-1-jremus@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: clEKOX5Rd8pihqdkThPIGi7IjMMPSKHr X-Proofpoint-GUID: clEKOX5Rd8pihqdkThPIGi7IjMMPSKHr X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 mlxscore=0 lowpriorityscore=0 phishscore=0 adultscore=0 clxscore=1015 malwarescore=0 mlxlogscore=851 bulkscore=0 suspectscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150129 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790981498355011132 X-GMAIL-MSGID: 1790981498355011132 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 Signed-off-by: Jens Remus --- gas/NEWS | 4 + gas/config/tc-s390.c | 10 +- .../gas/s390/zarch-base-index-0-err.l | 156 ++++++------------ .../gas/s390/zarch-base-index-0-err.s | 19 --- gas/testsuite/gas/s390/zarch-base-index-0.d | 19 +++ gas/testsuite/gas/s390/zarch-base-index-0.s | 38 ++--- .../gas/s390/zarch-omitted-base-index-err.l | 32 ++-- .../gas/s390/zarch-omitted-base-index-err.s | 2 - .../gas/s390/zarch-omitted-base-index.d | 3 + .../gas/s390/zarch-omitted-base-index.s | 2 + 10 files changed, 120 insertions(+), 165 deletions(-) diff --git a/gas/NEWS b/gas/NEWS index e5572da5f7b8..f862547ac748 100644 --- 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 diff --git a/gas/config/tc-s390.c b/gas/config/tc-s390.c index daa44bb3f816..85a86d590ad1 100644 --- a/gas/config/tc-s390.c +++ b/gas/config/tc-s390.c @@ -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++; } diff --git a/gas/testsuite/gas/s390/zarch-base-index-0-err.l b/gas/testsuite/gas/s390/zarch-base-index-0-err.l index 1762b6ec0813..e7d03ecdfe11 100644 --- a/gas/testsuite/gas/s390/zarch-base-index-0-err.l +++ b/gas/testsuite/gas/s390/zarch-base-index-0-err.l @@ -5,122 +5,70 @@ .*: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 diff --git a/gas/testsuite/gas/s390/zarch-base-index-0-err.s b/gas/testsuite/gas/s390/zarch-base-index-0-err.s index 175cc90b2699..472d24ef6273 100644 --- a/gas/testsuite/gas/s390/zarch-base-index-0-err.s +++ b/gas/testsuite/gas/s390/zarch-base-index-0-err.s @@ -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 diff --git a/gas/testsuite/gas/s390/zarch-base-index-0.d b/gas/testsuite/gas/s390/zarch-base-index-0.d index 4dd913bff920..717eaac2423b 100644 --- a/gas/testsuite/gas/s390/zarch-base-index-0.d +++ b/gas/testsuite/gas/s390/zarch-base-index-0.d @@ -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 diff --git a/gas/testsuite/gas/s390/zarch-base-index-0.s b/gas/testsuite/gas/s390/zarch-base-index-0.s index 15c792d776fa..e34c626707e2 100644 --- a/gas/testsuite/gas/s390/zarch-base-index-0.s +++ b/gas/testsuite/gas/s390/zarch-base-index-0.s @@ -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 diff --git a/gas/testsuite/gas/s390/zarch-omitted-base-index-err.l b/gas/testsuite/gas/s390/zarch-omitted-base-index-err.l index e4bd7a8c4171..f222fe00093e 100644 --- a/gas/testsuite/gas/s390/zarch-omitted-base-index-err.l +++ b/gas/testsuite/gas/s390/zarch-omitted-base-index-err.l @@ -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 diff --git a/gas/testsuite/gas/s390/zarch-omitted-base-index-err.s b/gas/testsuite/gas/s390/zarch-omitted-base-index-err.s index dd0e9fe183f3..0114c6403756 100644 --- a/gas/testsuite/gas/s390/zarch-omitted-base-index-err.s +++ b/gas/testsuite/gas/s390/zarch-omitted-base-index-err.s @@ -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 diff --git a/gas/testsuite/gas/s390/zarch-omitted-base-index.d b/gas/testsuite/gas/s390/zarch-omitted-base-index.d index cb168a2fe187..2795a9d095cb 100644 --- a/gas/testsuite/gas/s390/zarch-omitted-base-index.d +++ b/gas/testsuite/gas/s390/zarch-omitted-base-index.d @@ -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 diff --git a/gas/testsuite/gas/s390/zarch-omitted-base-index.s b/gas/testsuite/gas/s390/zarch-omitted-base-index.s index 8381319068bc..1d4d434c9483 100644 --- a/gas/testsuite/gas/s390/zarch-omitted-base-index.s +++ b/gas/testsuite/gas/s390/zarch-omitted-base-index.s @@ -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