From patchwork Wed Nov 22 16:06:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Remus X-Patchwork-Id: 168424 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2b07:b0:403:3b70:6f57 with SMTP id io7csp1431268vqb; Wed, 22 Nov 2023 08:06:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IH2oCgnq5pU78HbnDWwWKJEVq3sNiTTYsWFZJc8A9txUv1hANfG3D2gLpbWRUSlZtUU0Ujk X-Received: by 2002:a05:620a:2a10:b0:778:b526:c9d8 with SMTP id o16-20020a05620a2a1000b00778b526c9d8mr3330469qkp.27.1700669218169; Wed, 22 Nov 2023 08:06:58 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1700669218; cv=pass; d=google.com; s=arc-20160816; b=o1+r/nM6+Nva7UiRjhkFxuQwQMo73IKz/Xi8Rj03D5gxgrHXWIWaYIjwPBgg1LQW8Z eiKPhNR/jUClpiOB0fjjdpoRFBSYBk2HOVYNBohWYTmP7hAKo2ugvOq1kaj2hctXU/lE RaZXDvByiWiWPFr6dXSma18BvL8JZfl/VHnOfL63CresJireBY/pBFmJWbY/brwTGJsx 90y4OG7KLZk/wFTDF33tyj/JGuUJ9zzZN9uhQwX3INueu1Wh1cgH3NbCZtq0Y9gQa8Kf kwkgn4idZ1VNNpYEITdmfzrgggdqMkif0aoAS6lfRajGGp7z/9Htnlto0JZug75MlvVT iKGQ== 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:mime-version :content-transfer-encoding:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-filter:dmarc-filter :delivered-to; bh=b44eqtUqyRrwmetI1IYYf45RR3me6XSrX7w79uVIeL4=; fh=lE3HXkiifBSVPU+f05x++3qNjjxlDvLZxwnRCBzavKo=; b=IDebgSBp9tBeYJJcR50XMdnp3JFtqfcTbYEZClMUDwTeiabo0YTWzP8KY1HQUF/7R2 HN62a8PL04PEsGsPM2nZT2kYaOMlHoGriG2he5N7JrfCQsTfpf0d2FYHRsodjnd7e4Z6 giz8k7Zx537S9rlCZbs/FSZ191Xw4LuRUWRgjG2oj3irHvSuoYAUfcYeMSP3XJZ6mFVO DXxz/gYFioVGP0eL9C5Rclbq8GNygGDJ6Q/AaLzxEj5NP5Z+nK9FRGkGzE/9FbrH+YWw osBkCaCfu8I16nNhcFNBh8Wentec51ytQDZfBFjcvwkW7w6PWC6JpGiaNqeO+xuf3ZDV GIYQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=L7Zsu8Kj; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 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. [8.43.85.97]) by mx.google.com with ESMTPS id w16-20020a05620a445000b00779d0a62e5fsi12794467qkp.660.2023.11.22.08.06.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Nov 2023 08:06:58 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=L7Zsu8Kj; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 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 E2BFD3858C31 for ; Wed, 22 Nov 2023 16:06:57 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 0D8913858D35 for ; Wed, 22 Nov 2023 16:06:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0D8913858D35 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 0D8913858D35 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700669213; cv=none; b=JkG2BsAoEJMFR7YHo5Micjjz690cn3MPgJ0v8oSBUG5tYbbNq3llFpDHNSYS8Pn8CrCbz+R09AEQQ2N6pXeBDKuhB58Ifr1ATPR71cLT/Q1yEHOXu8Eng+gw2Loxi6m4ej6LbVF4eya8gVcSH9Ah2bHOgrhFQe2GeQXB0UPg11c= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700669213; c=relaxed/simple; bh=PSlXeDmcOpD2Ug9X4HdJ41lZQl8TU338qoJ2gtveSwE=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=wT2K8NEz3LlfM1GFNnQteAXJltSKlkoiJE8e1gQVNXfSrMk88bSkIeJg84CCUfMYeKvBDddV2hR6xF5mjEk6NuEvYhTPCmbCU6A6FdqCcGMcyqNOnSreUfGtaWptuRcIEyhpQqVJk4GA5Q7YowUfBe4OS04fayCqqL4w8yU4WEg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0353723.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3AMFF32T002624 for ; Wed, 22 Nov 2023 16:06:50 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 : content-transfer-encoding : mime-version; s=pp1; bh=b44eqtUqyRrwmetI1IYYf45RR3me6XSrX7w79uVIeL4=; b=L7Zsu8KjGPAjASSLqWv4b7apV9yeMZMIs++6W17Dr+XcUnIF/ebkiazo37hpWyqMK7Pi OTkaAKepprl6e5ec3/d6THxg4AeT/EJ2fFsu/tNJNML7NnNtFerKtTUaBHvjM+bpammd kZD76LUKvqczQsj71pU8797/tBPtoDWchLzXdwRdbWqbqHTkWYjZ2pvLjf5VTAtBrm7+ sI/dq1TAn2ivWHmoxrHDL5sTPfa7iL3d9z3KDszdpHgeRB9yS47WxjBIjt4EhGai1ge/ a8+vjO6moilRp33jXfp3Gw9uHrgjwrn8ddy/iJKtA8C7p6543NaICKxDU5wOFSW4ZeJ8 dw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3uhm4ahqwb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 22 Nov 2023 16:06:50 +0000 Received: from m0353723.ppops.net (m0353723.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 3AMFFaQ0007412 for ; Wed, 22 Nov 2023 16:06:49 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3uhm4ahqvy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Nov 2023 16:06:49 +0000 Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 3AMG5UdX032096; Wed, 22 Nov 2023 16:06:49 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3uf7yys22j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Nov 2023 16:06:48 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 3AMG6j7U20906630 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 22 Nov 2023 16:06:45 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8C7642004B; Wed, 22 Nov 2023 16:06:45 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6BB0520043; Wed, 22 Nov 2023 16:06:45 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 22 Nov 2023 16:06:45 +0000 (GMT) From: Jens Remus To: binutils@sourceware.org Cc: Jens Remus , Andreas Krebbel , Nick Clifton Subject: [PATCH v2 4/6] s390: Align optional operand definition to specs Date: Wed, 22 Nov 2023 17:06:43 +0100 Message-Id: <20231122160643.1326583-1-jremus@linux.ibm.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231120140635.3642601-5-jremus@linux.ibm.com> References: <20231120140635.3642601-5-jremus@linux.ibm.com> X-TM-AS-GCONF: 00 X-Proofpoint-GUID: FX5aGB4-qqvE6vXnGi_siYj2-eO4Ktv6 X-Proofpoint-ORIG-GUID: JPF24aaKb8ukirOILC4udWKZ2gBbdRoA X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.987,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-11-22_12,2023-11-22_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 mlxscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 suspectscore=0 priorityscore=1501 malwarescore=0 phishscore=0 bulkscore=0 mlxlogscore=326 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311060000 definitions=main-2311220115 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H4, 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: 1783092465588220744 X-GMAIL-MSGID: 1783280926005169708 The IBM z/Architecture Principle of Operation [1] specifies the last operand(s) of some (extended) mnemonics to be optional. Align the mnemonic definitions in the opcode table according to specification. This changes the last operand of the following (extended) mnemonics to be optional: risbg, risbgz, risbgn, risbgnz, risbhg, risblg, rnsbg, rosbg, rxsbg Note that efpc and sfpc actually have only one operand, but had erroneously been defined to have two. For backwards compatibility the wrong RR register format must be retained. Since the superfluous second operand is defined as optional the instruction can still be coded as specified. [1]: IBM z/Architecture Principles of Operation, SA22-7832-13, IBM z16, https://publibfp.dhe.ibm.com/epubs/pdf/a227832d.pdf opcodes/ * s390-opc.txt: Align optional operand definition to specification. testsuite/ * zarch-z10.s: Add test cases for risbg, risbgz, rnsbg, rosbg, and rxsbg. * zarch-z10.d: Likewise. * zarch-z196.s: Add test cases for risbhg and risblg. * zarch-z196.d: Likewise. * zarch-zEC12.s: Add test cases for risbgn and risbgnz. * zarch-zEC12.d: Likewise. Signed-off-by: Jens Remus Reviewed-by: Andreas Krebbel --- gas/testsuite/gas/s390/zarch-z10.d | 6 ++++++ gas/testsuite/gas/s390/zarch-z10.s | 6 ++++++ gas/testsuite/gas/s390/zarch-z196.d | 2 ++ gas/testsuite/gas/s390/zarch-z196.s | 2 ++ gas/testsuite/gas/s390/zarch-zEC12.d | 18 ++++++++---------- gas/testsuite/gas/s390/zarch-zEC12.s | 3 +++ opcodes/s390-opc.txt | 20 +++++++++++--------- 7 files changed, 38 insertions(+), 19 deletions(-) diff --git a/gas/testsuite/gas/s390/zarch-z10.d b/gas/testsuite/gas/s390/zarch-z10.d index 2c7c485a1a1..4aca8372363 100644 --- a/gas/testsuite/gas/s390/zarch-z10.d +++ b/gas/testsuite/gas/s390/zarch-z10.d @@ -360,11 +360,17 @@ Disassembly of section .text: .*: e3 a6 75 b3 01 36 [ ]*pfd 10,5555\(%r6,%r7\) *([\da-f]+): c6 a2 00 00 00 00 [ ]*pfdrl 10,\1 .*: ec 67 d2 dc e6 54 [ ]*rnsbg %r6,%r7,210,220,230 +.*: ec 67 d2 dc 00 54 [ ]*rnsbg %r6,%r7,210,220 .*: ec 67 d2 dc e6 57 [ ]*rxsbg %r6,%r7,210,220,230 +.*: ec 67 d2 dc 00 57 [ ]*rxsbg %r6,%r7,210,220 .*: ec 67 d2 dc e6 56 [ ]*rosbg %r6,%r7,210,220,230 +.*: ec 67 d2 dc 00 56 [ ]*rosbg %r6,%r7,210,220 .*: ec 67 d2 14 e6 55 [ ]*risbg %r6,%r7,210,20,230 +.*: ec 67 d2 14 00 55 [ ]*risbg %r6,%r7,210,20 .*: ec 67 d2 bc e6 55 [ ]*risbgz %r6,%r7,210,60,230 +.*: ec 67 d2 bc 00 55 [ ]*risbgz %r6,%r7,210,60 .*: ec 67 d2 94 e6 55 [ ]*risbgz %r6,%r7,210,20,230 +.*: ec 67 d2 94 00 55 [ ]*risbgz %r6,%r7,210,20 *([\da-f]+): c4 6f 00 00 00 00 [ ]*strl %r6,\1 *([\da-f]+): c4 6b 00 00 00 00 [ ]*stgrl %r6,\1 *([\da-f]+): c4 67 00 00 00 00 [ ]*sthrl %r6,\1 diff --git a/gas/testsuite/gas/s390/zarch-z10.s b/gas/testsuite/gas/s390/zarch-z10.s index 5cfc533d4d1..3ed61a4f0fd 100644 --- a/gas/testsuite/gas/s390/zarch-z10.s +++ b/gas/testsuite/gas/s390/zarch-z10.s @@ -354,11 +354,17 @@ foo: pfd 10,5555(%r6,%r7) pfdrl 10,. rnsbg %r6,%r7,210,220,230 + rnsbg %r6,%r7,210,220 rxsbg %r6,%r7,210,220,230 + rxsbg %r6,%r7,210,220 rosbg %r6,%r7,210,220,230 + rosbg %r6,%r7,210,220 risbg %r6,%r7,210,20,230 + risbg %r6,%r7,210,20 risbg %r6,%r7,210,188,230 + risbg %r6,%r7,210,188 risbgz %r6,%r7,210,20,230 + risbgz %r6,%r7,210,20 strl %r6,. stgrl %r6,. sthrl %r6,. diff --git a/gas/testsuite/gas/s390/zarch-z196.d b/gas/testsuite/gas/s390/zarch-z196.d index 0f8bfeafa25..b9db65f43ee 100644 --- a/gas/testsuite/gas/s390/zarch-z196.d +++ b/gas/testsuite/gas/s390/zarch-z196.d @@ -29,7 +29,9 @@ Disassembly of section .text: .*: e3 67 8a 4d fe c2 [ ]*llch %r6,-5555\(%r7,%r8\) .*: e3 67 8a 4d fe c6 [ ]*llhh %r6,-5555\(%r7,%r8\) .*: ec 67 0c 0d 0e 5d [ ]*risbhg %r6,%r7,12,13,14 +.*: ec 67 0c 0d 00 5d [ ]*risbhg %r6,%r7,12,13 .*: ec 67 0c 0d 0e 51 [ ]*risblg %r6,%r7,12,13,14 +.*: ec 67 0c 0d 00 51 [ ]*risblg %r6,%r7,12,13 .*: e3 67 8a 4d fe c3 [ ]*stch %r6,-5555\(%r7,%r8\) .*: e3 67 8a 4d fe c7 [ ]*sthh %r6,-5555\(%r7,%r8\) .*: e3 67 8a 4d fe cb [ ]*stfh %r6,-5555\(%r7,%r8\) diff --git a/gas/testsuite/gas/s390/zarch-z196.s b/gas/testsuite/gas/s390/zarch-z196.s index 31be5a62dba..213c2a1e676 100644 --- a/gas/testsuite/gas/s390/zarch-z196.s +++ b/gas/testsuite/gas/s390/zarch-z196.s @@ -23,7 +23,9 @@ foo: llch %r6,-5555(%r7,%r8) llhh %r6,-5555(%r7,%r8) risbhg %r6,%r7,12,13,14 + risbhg %r6,%r7,12,13 risblg %r6,%r7,12,13,14 + risblg %r6,%r7,12,13 stch %r6,-5555(%r7,%r8) sthh %r6,-5555(%r7,%r8) stfh %r6,-5555(%r7,%r8) diff --git a/gas/testsuite/gas/s390/zarch-zEC12.d b/gas/testsuite/gas/s390/zarch-zEC12.d index 96bf59b9fb0..57d7becdcdf 100644 --- a/gas/testsuite/gas/s390/zarch-zEC12.d +++ b/gas/testsuite/gas/s390/zarch-zEC12.d @@ -47,8 +47,11 @@ Disassembly of section .text: .*: eb 6c 7a 4d fe 2b [ ]*clgtnh %r6,-5555\(%r7\) .*: eb 6c 7a 4d fe 2b [ ]*clgtnh %r6,-5555\(%r7\) .*: ec 67 0c 0d 0e 59 [ ]*risbgn %r6,%r7,12,13,14 +.*: ec 67 0c 0d 00 59 [ ]*risbgn %r6,%r7,12,13 .*: ec 67 0c bc 0e 59 [ ]*risbgnz %r6,%r7,12,60,14 +.*: ec 67 0c bc 00 59 [ ]*risbgnz %r6,%r7,12,60 .*: ec 67 0c 94 0e 59 [ ]*risbgnz %r6,%r7,12,20,14 +.*: ec 67 0c 94 00 59 [ ]*risbgnz %r6,%r7,12,20 .*: ed 0f 8f a0 6d aa [ ]*cdzt %f6,4000\(16,%r8\),13 .*: ed 21 8f a0 4d ab [ ]*cxzt %f4,4000\(34,%r8\),13 .*: ed 0f 8f a0 6d a8 [ ]*czdt %f6,4000\(16,%r8\),13 @@ -56,16 +59,11 @@ Disassembly of section .text: .*: b2 e8 c0 56 [ ]*ppa %r5,%r6,12 .*: b9 8f 60 59 [ ]*crdte %r5,%r6,%r9 .*: b9 8f 61 59 [ ]*crdte %r5,%r6,%r9,1 -.*: c5 a0 0c 00 00 0c [ ]*bprp 10,136 ,136 +.*: c5 a0 0c 00 00 0c [ ]*bprp 10,148 ,148 *([\da-f]+): c5 a0 00 00 00 00 [ ]*bprp 10,\1 ,\1 -[ ]*125: R_390_PLT12DBL bar\+0x1 -[ ]*127: R_390_PLT24DBL bar\+0x3 +[ ]*137: R_390_PLT12DBL bar\+0x1 +[ ]*139: R_390_PLT24DBL bar\+0x3 *([\da-f]+): c7 a0 00 00 00 00 [ ]*bpp 10,\1 ,0 -[ ]*12e: R_390_PLT16DBL bar\+0x4 +[ ]*140: R_390_PLT16DBL bar\+0x4 *([\da-f]+): c7 a0 00 00 00 00 [ ]*bpp 10,\1 ,0 -[ ]*134: R_390_PC16DBL baz\+0x4 - - -0000000000000136 : - -.*: 07 07 [ ]*nopr %r7 +[ ]*146: R_390_PC16DBL baz\+0x4 diff --git a/gas/testsuite/gas/s390/zarch-zEC12.s b/gas/testsuite/gas/s390/zarch-zEC12.s index 03b577e4830..3a30e8d72bf 100644 --- a/gas/testsuite/gas/s390/zarch-zEC12.s +++ b/gas/testsuite/gas/s390/zarch-zEC12.s @@ -44,8 +44,11 @@ foo: clgtnh %r6,-5555(%r7) risbgn %r6,%r7,12,13,14 + risbgn %r6,%r7,12,13 risbgn %r6,%r7,12,188,14 + risbgn %r6,%r7,12,188 risbgnz %r6,%r7,12,20,14 + risbgnz %r6,%r7,12,20 cdzt %f6,4000(16,%r8),13 cxzt %f4,4000(34,%r8),13 diff --git a/opcodes/s390-opc.txt b/opcodes/s390-opc.txt index b7efa813e47..9aeb2cc7ad1 100644 --- a/opcodes/s390-opc.txt +++ b/opcodes/s390-opc.txt @@ -305,6 +305,7 @@ b30d debr RRE_FF "divide short bfp" g5 esa,zarch ed000000000d deb RXE_FRRD "divide short bfp" g5 esa,zarch b35b didbr RRF_FUFF "divide to integer long bfp" g5 esa,zarch b353 diebr RRF_FUFF "divide to integer short bfp" g5 esa,zarch +# efpc and sfpc have only one operand; retain RR register format for compatibility b38c efpc RRE_RR "extract fpc" g5 esa,zarch optparm b342 ltxbr RRE_FEFE "load and test extended bfp" g5 esa,zarch b312 ltdbr RRE_FF "load and test long bfp" g5 esa,zarch @@ -348,6 +349,7 @@ b31f msdbr RRF_F0FF "multiply and subtract long bfp" g5 esa,zarch ed000000001f msdb RXF_FRRDF "multiply and subtract long bfp" g5 esa,zarch b30f msebr RRF_F0FF "multiply and subtract short bfp" g5 esa,zarch ed000000000f mseb RXF_FRRDF "multiply and subtract short bfp" g5 esa,zarch +# efpc and sfpc have only one operand; retain RR register format for compatibility b384 sfpc RRE_RR "set fpc" g5 esa,zarch optparm b299 srnm S_RD "set rounding mode" g5 esa,zarch b316 sqxbr RRE_FEFE "square root extended bfp" g5 esa,zarch @@ -966,11 +968,11 @@ c201 msfi RIL_RI "multiply single immediate (32)" z10 zarch c200 msgfi RIL_RI "multiply single immediate (64)" z10 zarch e30000000036 pfd RXY_URRD "prefetch data" z10 zarch c602 pfdrl RIL_UP "prefetch data relative long" z10 zarch -ec0000000054 rnsbg RIE_RRUUU "rotate then and selected bits" z10 zarch -ec0000000057 rxsbg RIE_RRUUU "rotate then exclusive or selected bits" z10 zarch -ec0000000056 rosbg RIE_RRUUU "rotate then or selected bits" z10 zarch -ec0000000055 risbg RIE_RRUUU "rotate then insert selected bits" z10 zarch -ec0000800055 risbgz RIE_RRUUU2 "rotate then insert selected bits and zero remaining bits" z10 zarch +ec0000000054 rnsbg RIE_RRUUU "rotate then and selected bits" z10 zarch optparm +ec0000000057 rxsbg RIE_RRUUU "rotate then exclusive or selected bits" z10 zarch optparm +ec0000000056 rosbg RIE_RRUUU "rotate then or selected bits" z10 zarch optparm +ec0000000055 risbg RIE_RRUUU "rotate then insert selected bits" z10 zarch optparm +ec0000800055 risbgz RIE_RRUUU2 "rotate then insert selected bits and zero remaining bits" z10 zarch optparm c40f strl RIL_RP "store relative long (32)" z10 zarch c40b stgrl RIL_RP "store relative long (64)" z10 zarch c407 sthrl RIL_RP "store halfword relative long" z10 zarch @@ -1014,8 +1016,8 @@ e300000000c4 lhh RXY_RRRD "load halfword high" z196 zarch e300000000ca lfh RXY_RRRD "load high" z196 zarch e300000000c2 llch RXY_RRRD "load logical character high" z196 zarch e300000000c6 llhh RXY_RRRD "load logical halfword high" z196 zarch -ec000000005d risbhg RIE_RRUUU "rotate then insert selected bits high" z196 zarch -ec0000000051 risblg RIE_RRUUU "rotate then insert selected bits low" z196 zarch +ec000000005d risbhg RIE_RRUUU "rotate then insert selected bits high" z196 zarch optparm +ec0000000051 risblg RIE_RRUUU "rotate then insert selected bits low" z196 zarch optparm e300000000c3 stch RXY_RRRD "store character high" z196 zarch e300000000c7 sthh RXY_RRRD "store halfword high" z196 zarch e300000000cb stfh RXY_RRRD "store high" z196 zarch @@ -1153,8 +1155,8 @@ eb0000000023 clt RSY_RURD "compare logical and trap 32 bit reg-mem" zEC12 zarch eb0000000023 clt$12 RSY_R0RD "compare logical and trap 32 bit reg-mem" zEC12 zarch eb000000002b clgt RSY_RURD "compare logical and trap 64 bit reg-mem" zEC12 zarch eb000000002b clgt$12 RSY_R0RD "compare logical and trap 64 bit reg-mem" zEC12 zarch -ec0000000059 risbgn RIE_RRUUU "rotate then insert selected bits nocc" zEC12 zarch -ec0000800059 risbgnz RIE_RRUUU2 "rotate then insert selected bits and zero remaining bits nocc" zEC12 zarch +ec0000000059 risbgn RIE_RRUUU "rotate then insert selected bits nocc" zEC12 zarch optparm +ec0000800059 risbgnz RIE_RRUUU2 "rotate then insert selected bits and zero remaining bits nocc" zEC12 zarch optparm ed00000000aa cdzt RSL_LRDFU "convert from zoned long" zEC12 zarch ed00000000ab cxzt RSL_LRDFEU "convert from zoned extended" zEC12 zarch ed00000000a8 czdt RSL_LRDFU "convert to zoned long" zEC12 zarch From patchwork Wed Nov 22 16:07:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Remus X-Patchwork-Id: 168425 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2b07:b0:403:3b70:6f57 with SMTP id io7csp1432247vqb; Wed, 22 Nov 2023 08:08:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IH8EU+g4BE6tYUQfJrYsr2gSyyNmBIs2UjTN7X9WgCcSg0AdunZvib3jPNjaue3VS0zJYGn X-Received: by 2002:a05:622a:3d4:b0:423:754c:e6e3 with SMTP id k20-20020a05622a03d400b00423754ce6e3mr3063609qtx.47.1700669288877; Wed, 22 Nov 2023 08:08:08 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1700669288; cv=pass; d=google.com; s=arc-20160816; b=VhGBZwgJRHbRvEltemFhhgpbXA+U1AkGtuKJJElyOvhOSq5cotyzaEqiw3ArmluUI2 dmkDwC5p4puCxCP6AGzxHWEzuplmIe+A2rz4A8elIVhGenbx6uSDA0FsS1APBjPdh5q9 G4sR/4p/NjdR/6eldFdbp6u7wjJH53l5R2sCUfg+bhyecBjONfo3e53LYg+/nnHeKAsV LgrtfjCSBIHc4hXWifSC2BWWyCywe8D1E+J++ZrcGg1V01ONaIgMRxc8olMOvY9OTKm8 Cm3nmvH0gs99y9ZekRm+cOeXWsM2cTF+urtVqvn6n9gDyDJR0C5iKnDEkbp6XCKjjQlr 5MiQ== 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:mime-version :content-transfer-encoding:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-filter:dmarc-filter :delivered-to; bh=t+afLk7ja27sQjGNb0m13DXbd1VzvTwArzSwpgVM1uo=; fh=lE3HXkiifBSVPU+f05x++3qNjjxlDvLZxwnRCBzavKo=; b=O29LjEXEgNkMKjdleZMuowtfl/xZKlF93K0u9j3BzwvUozVu1hdoz0hmwoU5kri+Na lsGnGKD3D4CpfvLdt0FKg77ghPEYQWPHE/cXSpsLK014GS8XuKpC7BCetXl2m0TujGjP ozDb1XNbm4jR/YeYi6MT1nPNnZ6XKr0P5NR3BWHnAubT9wS+VwYhQULDNQHvHYFpPIHP quW9kESRz9DTzWLUZpuu33YkcqCrc7fWMdci3enbVqcIPTFhi+wBnJq0UFOL8vSODKfs b1WOsdSHZc+aa9G0K+0xsEFX8rUyRfg4VGiBj/9Q24AHzYcnbJtxFdQzqP39rYvnDmIy fzOw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=OJq7GnqB; 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 js22-20020a05622a809600b00423732aa538si2699834qtb.551.2023.11.22.08.08.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Nov 2023 08:08:08 -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=OJq7GnqB; 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 A060F385842E for ; Wed, 22 Nov 2023 16:08:08 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 0F00A3858D33 for ; Wed, 22 Nov 2023 16:08:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0F00A3858D33 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 0F00A3858D33 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700669283; cv=none; b=jzqoBWeJZcc9YRVyT8QWM6SEocApnAZxiuUpeJOKNXbL+bZrlf2+5Y5P8Y9veQaP5S/N6uyB06A0pI/5QzaldmTSKdmva0AWzv4EMEaVzPqSlfv8lJOgGeAbF2GAvGrJv2kUB+PNb/7NfyQXD0TP0jd5HnjYcPjaVXdinpr1dfM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700669283; c=relaxed/simple; bh=Lk2B+t39FIwEOz+9qrBHaTL0Qi3KdYdJHb0zI8jmMGU=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=ZwKMpl5qifF4XgpVAAhUkh8I2LobnWc+pmCYmRO0mcc+qZSR8rmE8OHagLHTNoVlczRGvyK9HThwi6d6VWx2ltbHmKF5hSJj44mF5YIaVlz5dNw3g2ZF8s49X+ytd9TU8ECjpUqgyZadqIY9o5jPudherzrxcnXRv2IZfFaxRVA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0353723.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3AMFF3FJ002655 for ; Wed, 22 Nov 2023 16:07:59 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 : content-transfer-encoding : mime-version; s=pp1; bh=t+afLk7ja27sQjGNb0m13DXbd1VzvTwArzSwpgVM1uo=; b=OJq7GnqBE9KgJdeWcqqb9D3ylnQNDmUA1poVBU4zZheIh9gvxU2Zv46MxC9LTn0mQHLL JRfUxbyAl90L91BBsSNIyzZoZjImIgZmLwFVRnv9YcUvAhU69jpQBGhKahllZwhh0GLv PeK52B6fq2WIh6cBY3MRy3wZCprIQKfdu18Hm6iRWlzGf9KZg5dA4CLj/o9FEDyLlc+4 mNiuAey7UqHLKoLJ8oC72EvCJxaR5qebpRWH6gSXBI0r2sivM7BHCPnbJDVLQV9pPd5L NEyK0V/CC8iOCYQqFGz1EPl+9UbOg/HqfC9I8Tvn1h6OLw+xbvPejDthxR2a9ZXO/9dX Eg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3uhm4ahsrn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 22 Nov 2023 16:07:59 +0000 Received: from m0353723.ppops.net (m0353723.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 3AMFF4Nq002695 for ; Wed, 22 Nov 2023 16:07:58 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3uhm4ahsr5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Nov 2023 16:07:58 +0000 Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 3AMG5XEu001768; Wed, 22 Nov 2023 16:07:58 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3uf8kp0w3u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Nov 2023 16:07:57 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 3AMG7sFr44892592 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 22 Nov 2023 16:07:54 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8CFEE2004B; Wed, 22 Nov 2023 16:07:54 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 58B3620040; Wed, 22 Nov 2023 16:07:54 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 22 Nov 2023 16:07:54 +0000 (GMT) From: Jens Remus To: binutils@sourceware.org Cc: Jens Remus , Andreas Krebbel , Nick Clifton Subject: [PATCH v2 5/6] s390: Add missing extended mnemonics Date: Wed, 22 Nov 2023 17:07:52 +0100 Message-Id: <20231122160752.1351106-1-jremus@linux.ibm.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231120140635.3642601-6-jremus@linux.ibm.com> References: <20231120140635.3642601-6-jremus@linux.ibm.com> X-TM-AS-GCONF: 00 X-Proofpoint-GUID: KtvHYZvldvI7_tSe37vRB9eLHputWxWy X-Proofpoint-ORIG-GUID: WjPTKTN3NaTmdXZeFGTEPc-lSzvoMLSH X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.987,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-11-22_12,2023-11-22_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 mlxscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 suspectscore=0 priorityscore=1501 malwarescore=0 phishscore=0 bulkscore=0 mlxlogscore=657 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311060000 definitions=main-2311220115 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H4, 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: 1783092173450111134 X-GMAIL-MSGID: 1783280999872909684 Add extended mnemonics specified in the z/Architecture Principles of Operation [1] and z/Architecture Reference Summary [2], that were previously missing from the opcode table. The following added extended mnemonics are synonyms to a base mnemonic and therefore disassemble into their base mnemonic: jc, jcth, lfi, llgfi, llghi The following added extended mnemonics are more specific than their base mnemonic and therefore disassemble into the added extended mnemonic: risbhgz, risblgz, rnsbgt, rosbgt, rxsbgt The following added extended mnemonics are more specific than their base mnemonic, but disassemble into their base mnemonic due to design constraints: notr, notgr The missing extended mnemonic jl* conditional jump long flavors cannot be added, as they would clash with the existing non-standard extended mnemonic j* conditional jump flavors jle and jlh. The missing extended mnemonic jlc jump long conditional is not added, as the related jl* flavors cannot be added. Note that these missing jl* conditional jump long flavors are already defined as non-standard jg* flavors instead. While the related missing extended mnemonic jlc could be added as non-standard jgc instead it is forgone in favor of not adding further non-standard mnemonics. The missing extended mnemonics sllhh, sllhl, slllh, srlhh, srlhl, and srllh cannot be implemented using the current design, as they require computed operands. For that reason the following missing extended mnemonics are not added as well, as they fall into the same category of instructions that operate on high and low words of registers. They should better be added together, not to confuse the user, which of those instructions are currently implemented or not. lhhr, lhlr, llhfr, llchhr, llchlr, llclhr, llhhhr, llhhlr, llhlhr, nhhr, nhlr, nlhr, ohhr, ohlr, olhr, xhhr, xhlr, xlhr [1] IBM z/Architecture Principles of Operation, SA22-7832-13, IBM z16, https://publibfp.dhe.ibm.com/epubs/pdf/a227832d.pdf [2] IBM z/Architecture Reference Summary, SA22-7871-11, https://www.ibm.com/support/pages/sites/default/files/2022-09/SA22-7871-11.pdf opcodes/ * s390-opc.c: Define operand formats R_CP16_28, U6_18, and U5_27. Define instruction formats RIE_RRUUU3, RIE_RRUUU4, and RRF_R0RR4. * s390-opc.txt: Add extended mnemonics jc, jcth, lfi, llgfi, llghi, notgr, notr, risbhgz, risblgz, rnsbgt, rosbgt, and rxsbgt. gas/ * config/tc-s390.c: Add support to insert operand for format R_CP16_28, reusing existing logic for format V_CP16_12. * testsuite/gas/s390/esa-g5.s: Add test for extended mnemonic jc. * testsuite/gas/s390/esa-g5.d: Likewise. * testsuite/gas/s390/zarch-z900.s: Add test for extended mnemonic llghi. * testsuite/gas/s390/zarch-z900.d: Likewise. * testsuite/gas/s390/zarch-z9-109.s: Add tests for extended mnemonics lfi and llgfi. * testsuite/gas/s390/zarch-z9-109.d: Likewise. * testsuite/gas/s390/zarch-z10.s: Add tests for extended mnemonics rnsbgt, rosbgt, and rxsbgt. * testsuite/gas/s390/zarch-z10.d: Likewise. * testsuite/gas/s390/zarch-z196.s: Add tests for extended mnemonics jcth, risbhgz, and risblgz. * testsuite/gas/s390/zarch-z196.d: Likewise. * testsuite/gas/s390/zarch-arch13.s: Add tests for extended mnemonics notr and notgr. * testsuite/gas/s390/zarch-arch13.d: Likewise. Signed-off-by: Jens Remus Reviewed-by: Andreas Krebbel --- gas/config/tc-s390.c | 12 ++++++++---- gas/testsuite/gas/s390/esa-g5.d | 1 + gas/testsuite/gas/s390/esa-g5.s | 1 + gas/testsuite/gas/s390/zarch-arch13.d | 4 ++++ gas/testsuite/gas/s390/zarch-arch13.s | 4 ++++ gas/testsuite/gas/s390/zarch-z10.d | 12 ++++++++++++ gas/testsuite/gas/s390/zarch-z10.s | 12 ++++++++++++ gas/testsuite/gas/s390/zarch-z196.d | 10 +++++++++- gas/testsuite/gas/s390/zarch-z196.s | 9 +++++++++ gas/testsuite/gas/s390/zarch-z9-109.d | 2 ++ gas/testsuite/gas/s390/zarch-z9-109.s | 2 ++ gas/testsuite/gas/s390/zarch-z900.d | 5 +++-- gas/testsuite/gas/s390/zarch-z900.s | 1 + opcodes/s390-opc.c | 22 +++++++++++++++++----- opcodes/s390-opc.txt | 14 ++++++++++++++ 15 files changed, 99 insertions(+), 12 deletions(-) diff --git a/gas/config/tc-s390.c b/gas/config/tc-s390.c index 765a9a2e6bd..d601618d9dc 100644 --- a/gas/config/tc-s390.c +++ b/gas/config/tc-s390.c @@ -699,13 +699,17 @@ s390_insert_operand (unsigned char *insn, if (operand->flags & S390_OPERAND_OR8) uval |= 8; - /* Duplicate the operand at bit pos 12 to 16. */ + /* Duplicate the GPR/VR operand at bit pos 12 to 16. */ if (operand->flags & S390_OPERAND_CP16) { - /* Copy VR operand at bit pos 12 to bit pos 16. */ + /* Copy GPR/VR operand at bit pos 12 to bit pos 16. */ insn[2] |= uval << 4; - /* Copy the flag in the RXB field. */ - insn[4] |= (insn[4] & 4) >> 1; + + if (operand->flags & S390_OPERAND_VR) + { + /* Copy the VR flag in the RXB field. */ + insn[4] |= (insn[4] & 4) >> 1; + } } /* Insert fragments of the operand byte for byte. */ diff --git a/gas/testsuite/gas/s390/esa-g5.d b/gas/testsuite/gas/s390/esa-g5.d index 7422e88b127..d276af1a70d 100644 --- a/gas/testsuite/gas/s390/esa-g5.d +++ b/gas/testsuite/gas/s390/esa-g5.d @@ -80,6 +80,7 @@ Disassembly of section .text: *([\da-f]+): a7 95 00 00 [ ]*bras %r9,\1 *([\da-f]+): a7 65 00 00 [ ]*bras %r6,\1 *([\da-f]+): a7 64 00 00 [ ]*jlh \1 + *([\da-f]+): a7 64 00 00 [ ]*jlh \1 *([\da-f]+): a7 66 00 00 [ ]*brct %r6,\1 *([\da-f]+): a7 66 00 00 [ ]*brct %r6,\1 *([\da-f]+): 84 69 00 00 [ ]*brxh %r6,%r9,\1 diff --git a/gas/testsuite/gas/s390/esa-g5.s b/gas/testsuite/gas/s390/esa-g5.s index ee3d6319b19..2901a866ec9 100644 --- a/gas/testsuite/gas/s390/esa-g5.s +++ b/gas/testsuite/gas/s390/esa-g5.s @@ -74,6 +74,7 @@ foo: bras %r9,. jas %r6,. brc 6,. + jc 6,. brct 6,. jct %r6,. brxh %r6,%r9,. diff --git a/gas/testsuite/gas/s390/zarch-arch13.d b/gas/testsuite/gas/s390/zarch-arch13.d index fecbeb548c0..3ebdd9c17f3 100644 --- a/gas/testsuite/gas/s390/zarch-arch13.d +++ b/gas/testsuite/gas/s390/zarch-arch13.d @@ -12,7 +12,11 @@ Disassembly of section .text: .*: b9 74 b0 69 [ ]*nnrk %r6,%r9,%r11 .*: b9 64 b0 69 [ ]*nngrk %r6,%r9,%r11 .*: b9 76 b0 69 [ ]*nork %r6,%r9,%r11 +.*: b9 76 70 67 [ ]*nork %r6,%r7,%r7 +.*: b9 76 70 67 [ ]*nork %r6,%r7,%r7 .*: b9 66 b0 69 [ ]*nogrk %r6,%r9,%r11 +.*: b9 66 70 67 [ ]*nogrk %r6,%r7,%r7 +.*: b9 66 70 67 [ ]*nogrk %r6,%r7,%r7 .*: b9 77 b0 69 [ ]*nxrk %r6,%r9,%r11 .*: b9 67 b0 69 [ ]*nxgrk %r6,%r9,%r11 .*: b9 75 b0 69 [ ]*ocrk %r6,%r9,%r11 diff --git a/gas/testsuite/gas/s390/zarch-arch13.s b/gas/testsuite/gas/s390/zarch-arch13.s index 9563a1b4698..a830b20b3a5 100644 --- a/gas/testsuite/gas/s390/zarch-arch13.s +++ b/gas/testsuite/gas/s390/zarch-arch13.s @@ -6,7 +6,11 @@ foo: nnrk %r6,%r9,%r11 nngrk %r6,%r9,%r11 nork %r6,%r9,%r11 + nork %r6,%r7,%r7 + notr %r6,%r7 nogrk %r6,%r9,%r11 + nogrk %r6,%r7,%r7 + notgr %r6,%r7 nxrk %r6,%r9,%r11 nxgrk %r6,%r9,%r11 ocrk %r6,%r9,%r11 diff --git a/gas/testsuite/gas/s390/zarch-z10.d b/gas/testsuite/gas/s390/zarch-z10.d index 4aca8372363..4a051533f93 100644 --- a/gas/testsuite/gas/s390/zarch-z10.d +++ b/gas/testsuite/gas/s390/zarch-z10.d @@ -361,10 +361,22 @@ Disassembly of section .text: *([\da-f]+): c6 a2 00 00 00 00 [ ]*pfdrl 10,\1 .*: ec 67 d2 dc e6 54 [ ]*rnsbg %r6,%r7,210,220,230 .*: ec 67 d2 dc 00 54 [ ]*rnsbg %r6,%r7,210,220 +.*: ec 67 92 dc e6 54 [ ]*rnsbgt %r6,%r7,18,220,230 +.*: ec 67 92 dc 00 54 [ ]*rnsbgt %r6,%r7,18,220 +.*: ec 67 92 1c 26 54 [ ]*rnsbgt %r6,%r7,18,28,38 +.*: ec 67 92 1c 00 54 [ ]*rnsbgt %r6,%r7,18,28 .*: ec 67 d2 dc e6 57 [ ]*rxsbg %r6,%r7,210,220,230 .*: ec 67 d2 dc 00 57 [ ]*rxsbg %r6,%r7,210,220 +.*: ec 67 92 dc e6 57 [ ]*rxsbgt %r6,%r7,18,220,230 +.*: ec 67 92 dc 00 57 [ ]*rxsbgt %r6,%r7,18,220 +.*: ec 67 92 1c 26 57 [ ]*rxsbgt %r6,%r7,18,28,38 +.*: ec 67 92 1c 00 57 [ ]*rxsbgt %r6,%r7,18,28 .*: ec 67 d2 dc e6 56 [ ]*rosbg %r6,%r7,210,220,230 .*: ec 67 d2 dc 00 56 [ ]*rosbg %r6,%r7,210,220 +.*: ec 67 92 dc e6 56 [ ]*rosbgt %r6,%r7,18,220,230 +.*: ec 67 92 dc 00 56 [ ]*rosbgt %r6,%r7,18,220 +.*: ec 67 92 1c 26 56 [ ]*rosbgt %r6,%r7,18,28,38 +.*: ec 67 92 1c 00 56 [ ]*rosbgt %r6,%r7,18,28 .*: ec 67 d2 14 e6 55 [ ]*risbg %r6,%r7,210,20,230 .*: ec 67 d2 14 00 55 [ ]*risbg %r6,%r7,210,20 .*: ec 67 d2 bc e6 55 [ ]*risbgz %r6,%r7,210,60,230 diff --git a/gas/testsuite/gas/s390/zarch-z10.s b/gas/testsuite/gas/s390/zarch-z10.s index 3ed61a4f0fd..45bb8944793 100644 --- a/gas/testsuite/gas/s390/zarch-z10.s +++ b/gas/testsuite/gas/s390/zarch-z10.s @@ -355,10 +355,22 @@ foo: pfdrl 10,. rnsbg %r6,%r7,210,220,230 rnsbg %r6,%r7,210,220 + rnsbg %r6,%r7,146,220,230 + rnsbg %r6,%r7,146,220 + rnsbgt %r6,%r7,18,28,38 + rnsbgt %r6,%r7,18,28 rxsbg %r6,%r7,210,220,230 rxsbg %r6,%r7,210,220 + rxsbg %r6,%r7,146,220,230 + rxsbg %r6,%r7,146,220 + rxsbgt %r6,%r7,18,28,38 + rxsbgt %r6,%r7,18,28 rosbg %r6,%r7,210,220,230 rosbg %r6,%r7,210,220 + rosbg %r6,%r7,146,220,230 + rosbg %r6,%r7,146,220 + rosbgt %r6,%r7,18,28,38 + rosbgt %r6,%r7,18,28 risbg %r6,%r7,210,20,230 risbg %r6,%r7,210,20 risbg %r6,%r7,210,188,230 diff --git a/gas/testsuite/gas/s390/zarch-z196.d b/gas/testsuite/gas/s390/zarch-z196.d index b9db65f43ee..ac2478d6219 100644 --- a/gas/testsuite/gas/s390/zarch-z196.d +++ b/gas/testsuite/gas/s390/zarch-z196.d @@ -14,6 +14,7 @@ Disassembly of section .text: .*: cc 6a 00 00 fd e8 [ ]*alsih %r6,65000 .*: cc 6b 00 00 fd e8 [ ]*alsihn %r6,65000 *([\da-f]+): cc 66 00 00 00 00 [ ]*brcth %r6,\1 + *([\da-f]+): cc 66 00 00 00 00 [ ]*brcth %r6,\1 .*: b9 cd 00 67 [ ]*chhr %r6,%r7 .*: b9 dd 00 67 [ ]*chlr %r6,%r7 .*: e3 67 85 b3 01 cd [ ]*chf %r6,5555\(%r7,%r8\) @@ -30,8 +31,16 @@ Disassembly of section .text: .*: e3 67 8a 4d fe c6 [ ]*llhh %r6,-5555\(%r7,%r8\) .*: ec 67 0c 0d 0e 5d [ ]*risbhg %r6,%r7,12,13,14 .*: ec 67 0c 0d 00 5d [ ]*risbhg %r6,%r7,12,13 +.*: ec 67 0c 8d 0e 5d [ ]*risbhgz %r6,%r7,12,13,14 +.*: ec 67 0c 8d 00 5d [ ]*risbhgz %r6,%r7,12,13 +.*: ec 67 0c 8d 0e 5d [ ]*risbhgz %r6,%r7,12,13,14 +.*: ec 67 0c 8d 00 5d [ ]*risbhgz %r6,%r7,12,13 .*: ec 67 0c 0d 0e 51 [ ]*risblg %r6,%r7,12,13,14 .*: ec 67 0c 0d 00 51 [ ]*risblg %r6,%r7,12,13 +.*: ec 67 0c 8d 0e 51 [ ]*risblgz %r6,%r7,12,13,14 +.*: ec 67 0c 8d 00 51 [ ]*risblgz %r6,%r7,12,13 +.*: ec 67 0c 8d 0e 51 [ ]*risblgz %r6,%r7,12,13,14 +.*: ec 67 0c 8d 00 51 [ ]*risblgz %r6,%r7,12,13 .*: e3 67 8a 4d fe c3 [ ]*stch %r6,-5555\(%r7,%r8\) .*: e3 67 8a 4d fe c7 [ ]*sthh %r6,-5555\(%r7,%r8\) .*: e3 67 8a 4d fe cb [ ]*stfh %r6,-5555\(%r7,%r8\) @@ -261,4 +270,3 @@ Disassembly of section .text: .*: b9 2c 00 00 [ ]*pcc .*: b9 2d 60 59 [ ]*kmctr %r5,%r6,%r9 .*: b9 28 00 00 [ ]*pckmo -.*: 07 07 [ ]*nopr %r7 diff --git a/gas/testsuite/gas/s390/zarch-z196.s b/gas/testsuite/gas/s390/zarch-z196.s index 213c2a1e676..bd594259532 100644 --- a/gas/testsuite/gas/s390/zarch-z196.s +++ b/gas/testsuite/gas/s390/zarch-z196.s @@ -8,6 +8,7 @@ foo: alsih %r6,65000 alsihn %r6,65000 brcth %r6,. + jcth %r6,. chhr %r6,%r7 chlr %r6,%r7 chf %r6,5555(%r7,%r8) @@ -24,8 +25,16 @@ foo: llhh %r6,-5555(%r7,%r8) risbhg %r6,%r7,12,13,14 risbhg %r6,%r7,12,13 + risbhg %r6,%r7,12,141,14 + risbhg %r6,%r7,12,141 + risbhgz %r6,%r7,12,13,14 + risbhgz %r6,%r7,12,13 risblg %r6,%r7,12,13,14 risblg %r6,%r7,12,13 + risblg %r6,%r7,12,141,14 + risblg %r6,%r7,12,141 + risblgz %r6,%r7,12,13,14 + risblgz %r6,%r7,12,13 stch %r6,-5555(%r7,%r8) sthh %r6,-5555(%r7,%r8) stfh %r6,-5555(%r7,%r8) diff --git a/gas/testsuite/gas/s390/zarch-z9-109.d b/gas/testsuite/gas/s390/zarch-z9-109.d index 5a9717c24ac..012270e733f 100644 --- a/gas/testsuite/gas/s390/zarch-z9-109.d +++ b/gas/testsuite/gas/s390/zarch-z9-109.d @@ -36,6 +36,7 @@ Disassembly of section .text: .*: b9 85 00 69 [ ]*llghr %r6,%r9 .*: c0 6e ff ff ff ff [ ]*llihf %r6,4294967295 .*: c0 6f ff ff ff ff [ ]*llilf %r6,4294967295 +.*: c0 6f ff ff ff ff [ ]*llilf %r6,4294967295 .*: c0 6c ff ff ff ff [ ]*oihf %r6,4294967295 .*: c0 6d ff ff ff ff [ ]*oilf %r6,4294967295 .*: c2 65 ff ff ff ff [ ]*slfi %r6,4294967295 @@ -70,4 +71,5 @@ Disassembly of section .text: .*: ed 95 af ff 60 38 [ ]*mayl %f6,%f9,4095\(%r5,%r10\) .*: b9 be 00 67 [ ]*srstu %r6,%r7 .*: d0 16 5f ff ad 05 [ ]*trtr 4095\(23,%r5\),3333\(%r10\) +.*: c0 69 ff ff ff ff [ ]*iilf %r6,4294967295 .*: 07 07 [ ]*nopr %r7 diff --git a/gas/testsuite/gas/s390/zarch-z9-109.s b/gas/testsuite/gas/s390/zarch-z9-109.s index 10d77ac673e..22dca84fd32 100644 --- a/gas/testsuite/gas/s390/zarch-z9-109.s +++ b/gas/testsuite/gas/s390/zarch-z9-109.s @@ -30,6 +30,7 @@ foo: llghr %r6,%r9 llihf %r6,4294967295 llilf %r6,4294967295 + llgfi %r6,4294967295 oihf %r6,4294967295 oilf %r6,4294967295 slfi %r6,4294967295 @@ -64,3 +65,4 @@ foo: mayl %f6,%f9,4095(%r5,%r10) srstu %r6,%r7 trtr 4095(23,%r5),3333(%r10) + lfi %r6,4294967295 diff --git a/gas/testsuite/gas/s390/zarch-z900.d b/gas/testsuite/gas/s390/zarch-z900.d index 93aee212785..88751711c1b 100644 --- a/gas/testsuite/gas/s390/zarch-z900.d +++ b/gas/testsuite/gas/s390/zarch-z900.d @@ -85,6 +85,7 @@ Disassembly of section .text: .*: a5 9d ff ff [ ]*llihl %r9,65535 .*: a5 9e ff ff [ ]*llilh %r9,65535 .*: a5 9f ff ff [ ]*llill %r9,65535 +.*: a5 9f ff ff [ ]*llill %r9,65535 .*: ef 96 5f ff af ff [ ]*lmd %r9,%r6,4095\(%r5\),4095\(%r10\) .*: eb 96 5f ff 00 04 [ ]*lmg %r9,%r6,4095\(%r5\) .*: eb 96 5f ff 00 96 [ ]*lmh %r9,%r6,4095\(%r5\) @@ -153,6 +154,6 @@ Disassembly of section .text: *([\da-f]+): c0 65 00 00 00 00 [ ]*brasl %r6,\1 *([\da-f]+): c0 65 80 00 00 00 [ ]*brasl %r6,ffffffff0+\1 *([\da-f]+): c0 65 80 00 00 00 [ ]*brasl %r6,ffffffff0+\1 -.*: c0 65 7f ff ff ff [ ]*brasl %r6,1000002d0 -.*: c0 65 7f ff ff ff [ ]*brasl %r6,1000002d6 +.*: c0 65 7f ff ff ff [ ]*brasl %r6,1000002d4 +.*: c0 65 7f ff ff ff [ ]*brasl %r6,1000002da .*: 07 07 [ ]*nopr %r7 diff --git a/gas/testsuite/gas/s390/zarch-z900.s b/gas/testsuite/gas/s390/zarch-z900.s index 22fa1da5a30..8890fbb78a0 100644 --- a/gas/testsuite/gas/s390/zarch-z900.s +++ b/gas/testsuite/gas/s390/zarch-z900.s @@ -79,6 +79,7 @@ foo: llihl %r9,65535 llilh %r9,65535 llill %r9,65535 + llghi %r9,65535 lmd %r9,%r6,4095(%r5),4095(%r10) lmg %r9,%r6,4095(%r5) lmh %r9,%r6,4095(%r5) diff --git a/opcodes/s390-opc.c b/opcodes/s390-opc.c index b52fc8c3b62..0427bd8b2e0 100644 --- a/opcodes/s390-opc.c +++ b/opcodes/s390-opc.c @@ -62,7 +62,9 @@ const struct s390_operand s390_operands[] = { 4, 24, S390_OPERAND_GPR }, #define R_28 (R_24 + 1) /* GPR starting at position 28 */ { 4, 28, S390_OPERAND_GPR }, -#define R_32 (R_28 + 1) /* GPR starting at position 32 */ +#define R_CP16_28 (R_28 + 1) /* GPR starting at position 28 */ + { 4, 28, S390_OPERAND_GPR | S390_OPERAND_CP16 }, /* with a copy at pos 16 */ +#define R_32 (R_CP16_28+1) /* GPR starting at position 32 */ { 4, 32, S390_OPERAND_GPR }, /* General purpose register pair operands. */ @@ -222,9 +224,13 @@ const struct s390_operand s390_operands[] = { 4, 36, 0 }, #define U8_8 (U4_36 + 1) /* 8 bit unsigned value starting at 8 */ { 8, 8, 0 }, -#define U8_16 (U8_8 + 1) /* 8 bit unsigned value starting at 16 */ +#define U6_18 (U8_8 + 1) /* 6 bit unsigned value starting at 18 */ + { 6, 18, 0 }, +#define U8_16 (U6_18 + 1) /* 8 bit unsigned value starting at 16 */ { 8, 16, 0 }, -#define U6_26 (U8_16 + 1) /* 6 bit unsigned value starting at 26 */ +#define U5_27 (U8_16 + 1) /* 5 bit unsigned value starting at 27 */ + { 5, 27, 0 }, +#define U6_26 (U5_27 + 1) /* 6 bit unsigned value starting at 26 */ { 6, 26, 0 }, #define U8_24 (U6_26 + 1) /* 8 bit unsigned value starting at 24 */ { 8, 24, 0 }, @@ -289,7 +295,7 @@ static inline void unused_s390_operands_static_asserts(void) p - pc relative r - general purpose register re - gpr extended operand, a valid general purpose register pair - u - unsigned integer, 4, 8, 16 or 32 bit + u - unsigned integer, 4, 6, 8, 16 or 32 bit m - mode field, 4 bit 0 - operand skipped. The order of the letters reflects the layout of the format in @@ -325,7 +331,9 @@ static inline void unused_s390_operands_static_asserts(void) #define INSTR_RIE_R0U0 6, { R_8,U16_16,0,0,0,0 } /* e.g. clfitne */ #define INSTR_RIE_RUI0 6, { R_8,I16_16,U4_12,0,0,0 } /* e.g. lochi */ #define INSTR_RIE_RRUUU 6, { R_8,R_12,U8_16,U8_24,U8_32,0 } /* e.g. rnsbg */ -#define INSTR_RIE_RRUUU2 6, { R_8,R_12,U8_16,U6_26,U8_32,0 } /* e.g. rnsbg */ +#define INSTR_RIE_RRUUU2 6, { R_8,R_12,U8_16,U6_26,U8_32,0 } /* e.g. risbgz */ +#define INSTR_RIE_RRUUU3 6, { R_8,R_12,U8_16,U5_27,U8_32,0 } /* e.g. risbhg */ +#define INSTR_RIE_RRUUU4 6, { R_8,R_12,U6_18,U8_24,U8_32,0 } /* e.g. rnsbgt */ #define INSTR_RIL_0P 6, { J32_16,0,0,0,0 } /* e.g. jg */ #define INSTR_RIL_RP 6, { R_8,J32_16,0,0,0,0 } /* e.g. brasl */ #define INSTR_RIL_UP 6, { U4_8,J32_16,0,0,0,0 } /* e.g. brcl */ @@ -374,6 +382,7 @@ static inline void unused_s390_operands_static_asserts(void) #define INSTR_RRF_R0RR2 4, { R_24,R_28,R_16,0,0,0 } /* e.g. ark */ #define INSTR_RRF_R0RER 4, { RE_24,R_28,R_16,0,0,0 } /* e.g. mgrk */ #define INSTR_RRF_R0RR3 4, { R_24,R_28,R_16,0,0,0 } /* e.g. selrz */ +#define INSTR_RRF_R0RR4 4, { R_24,R_CP16_28,0,0,0,0 } /* e.g. notr */ #define INSTR_RRF_U0FF 4, { F_24,U4_16,F_28,0,0,0 } /* e.g. fidbr */ #define INSTR_RRF_U0FEFE 4, { FE_24,U4_16,FE_28,0,0,0 } /* e.g. fixbr */ #define INSTR_RRF_U0RF 4, { R_24,U4_16,F_28,0,0,0 } /* e.g. cfebr */ @@ -550,6 +559,8 @@ static inline void unused_s390_operands_static_asserts(void) #define MASK_RIE_RUI0 { 0xff, 0x00, 0x00, 0x00, 0xff, 0xff } #define MASK_RIE_RRUUU { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } #define MASK_RIE_RRUUU2 { 0xff, 0x00, 0x00, 0xc0, 0x00, 0xff } +#define MASK_RIE_RRUUU3 { 0xff, 0x00, 0x00, 0xe0, 0x00, 0xff } +#define MASK_RIE_RRUUU4 { 0xff, 0x00, 0xc0, 0x00, 0x00, 0xff } #define MASK_RIL_0P { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } #define MASK_RIL_RP { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } #define MASK_RIL_UP { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } @@ -598,6 +609,7 @@ static inline void unused_s390_operands_static_asserts(void) #define MASK_RRF_R0RR2 { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } #define MASK_RRF_R0RER { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } #define MASK_RRF_R0RR3 { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 } +#define MASK_RRF_R0RR4 { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } #define MASK_RRF_U0FF { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 } #define MASK_RRF_U0FEFE { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 } #define MASK_RRF_U0RF { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 } diff --git a/opcodes/s390-opc.txt b/opcodes/s390-opc.txt index 9aeb2cc7ad1..674c0cf1987 100644 --- a/opcodes/s390-opc.txt +++ b/opcodes/s390-opc.txt @@ -272,6 +272,7 @@ a701 tml RI_RU "test under mask low" g5 esa,zarch 4700 nop RX_0RRD "no operation" g5 esa,zarch optparm 4700 b*8 RX_0RRD "conditional branch" g5 esa,zarch 47f0 b RX_0RRD "unconditional branch" g5 esa,zarch +a704 jc RI_UP "conditional jump" g5 esa,zarch a704 jnop RI_0P "nop jump" g5 esa,zarch a704 j*8 RI_0P "conditional jump" g5 esa,zarch a704 br*8 RI_0P "conditional jump" g5 esa,zarch @@ -473,8 +474,10 @@ eb0000000080 icmh RSE_RURD "insert characters under mask high" z900 zarch a702 tmhh RI_RU "test under mask high high" z900 zarch a703 tmhl RI_RU "test under mask high low" z900 zarch c004 brcl RIL_UP "branch relative on condition long" z900 esa,zarch +# jlc omitted due to missing jl* (see jl*8) and not added as non-standard jgc c004 jgnop RIL_0P "nop jump long" z900 esa,zarch c004 jg*8 RIL_0P "conditional jump long" z900 esa,zarch +# jl*8 omitted due to clash with non-standard j*8 flavors jle and jlh; exists as non-standard jg*8 instead c004 br*8l RIL_0P "conditional jump long" z900 esa,zarch c0f4 jg RIL_0P "unconditional jump long" z900 esa,zarch c0f4 brul RIL_0P "unconditional jump long" z900 esa,zarch @@ -523,6 +526,7 @@ a50c llihh RI_RU "load logical immediate high high" z900 zarch a50d llihl RI_RU "load logical immediate high low" z900 zarch a50e llilh RI_RU "load logical immediate low high" z900 zarch a50f llill RI_RU "load logical immediate low low" z900 zarch +a50f llghi RI_RU "load logical immediate" z900 zarch b2b1 stfl S_RD "store facility list" z900 esa,zarch b2b2 lpswe S_RD "load psw extended" z900 zarch b90d dsgr RRE_RER "divide single 64" z900 zarch @@ -750,6 +754,7 @@ c006 xihf RIL_RU "exclusive or immediate high" z9-109 zarch c007 xilf RIL_RU "exclusive or immediate low" z9-109 zarch c008 iihf RIL_RU "insert immediate high" z9-109 zarch c009 iilf RIL_RU "insert immediate low" z9-109 zarch +c009 lfi RIL_RU "insert immediate 32" z9-109 zarch # z9-109 misc instruction b983 flogr RRE_RER "find leftmost one" z9-109 zarch e30000000012 lt RXY_RRRD "load and test 32" z9-109 zarch @@ -767,6 +772,7 @@ b995 llhr RRE_RR "load logical halfword 32" z9-109 zarch b985 llghr RRE_RR "load logical halfword 64" z9-109 zarch c00e llihf RIL_RU "load logical immediate high" z9-109 zarch c00f llilf RIL_RU "load logical immediate low" z9-109 zarch +c00f llgfi RIL_RU "load logical immediate" z9-109 zarch c00c oihf RIL_RU "or immediate high" z9-109 zarch c00d oilf RIL_RU "or immediate low" z9-109 zarch c205 slfi RIL_RU "subtract logical immediate 32" z9-109 zarch @@ -969,8 +975,11 @@ c200 msgfi RIL_RI "multiply single immediate (64)" z10 zarch e30000000036 pfd RXY_URRD "prefetch data" z10 zarch c602 pfdrl RIL_UP "prefetch data relative long" z10 zarch ec0000000054 rnsbg RIE_RRUUU "rotate then and selected bits" z10 zarch optparm +ec0080000054 rnsbgt RIE_RRUUU4 "rotate then and selected bits and test results" z10 zarch optparm ec0000000057 rxsbg RIE_RRUUU "rotate then exclusive or selected bits" z10 zarch optparm +ec0080000057 rxsbgt RIE_RRUUU4 "rotate then exclusive or selected bits and test results" z10 zarch optparm ec0000000056 rosbg RIE_RRUUU "rotate then or selected bits" z10 zarch optparm +ec0080000056 rosbgt RIE_RRUUU4 "rotate then or selected bits and test results" z10 zarch optparm ec0000000055 risbg RIE_RRUUU "rotate then insert selected bits" z10 zarch optparm ec0000800055 risbgz RIE_RRUUU2 "rotate then insert selected bits and zero remaining bits" z10 zarch optparm c40f strl RIL_RP "store relative long (32)" z10 zarch @@ -1003,6 +1012,7 @@ b9da alhhlr RRF_R0RR2 "add logical high low" z196 zarch cc0a alsih RIL_RI "add logical with signed immediate high with cc" z196 zarch cc0b alsihn RIL_RI "add logical with signed immediate high no cc" z196 zarch cc06 brcth RIL_RP "branch relative on count high" z196 zarch +cc06 jcth RIL_RP "jump on count high" z196 zarch b9cd chhr RRE_RR "compare high high" z196 zarch b9dd chlr RRE_RR "compare high low" z196 zarch e300000000cd chf RXY_RRRD "compare high" z196 zarch @@ -1017,7 +1027,9 @@ e300000000ca lfh RXY_RRRD "load high" z196 zarch e300000000c2 llch RXY_RRRD "load logical character high" z196 zarch e300000000c6 llhh RXY_RRRD "load logical halfword high" z196 zarch ec000000005d risbhg RIE_RRUUU "rotate then insert selected bits high" z196 zarch optparm +ec000080005d risbhgz RIE_RRUUU3 "rotate then insert selected bits high and zero remaining bits" z196 zarch optparm ec0000000051 risblg RIE_RRUUU "rotate then insert selected bits low" z196 zarch optparm +ec0000800051 risblgz RIE_RRUUU3 "rotate then insert selected bits low and zero remaining bits" z196 zarch optparm e300000000c3 stch RXY_RRRD "store character high" z196 zarch e300000000c7 sthh RXY_RRRD "store halfword high" z196 zarch e300000000cb stfh RXY_RRRD "store high" z196 zarch @@ -1913,7 +1925,9 @@ e50a mvcrl SSE_RDRD "move right to left" arch13 zarch b974 nnrk RRF_R0RR2 "nand 32 bit" arch13 zarch b964 nngrk RRF_R0RR2 "nand 64 bit" arch13 zarch b976 nork RRF_R0RR2 "nor 32 bit" arch13 zarch +b976 notr RRF_R0RR4 "not 32 bit" arch13 zarch b966 nogrk RRF_R0RR2 "nor 64 bit" arch13 zarch +b966 notgr RRF_R0RR4 "not 64 bit" arch13 zarch b977 nxrk RRF_R0RR2 "not exclusive or 32 bit" arch13 zarch b967 nxgrk RRF_R0RR2 "not exclusive or 64 bit" arch13 zarch b975 ocrk RRF_R0RR2 "or with complement 32 bit" arch13 zarch