From patchwork Mon Dec 2 08:22:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Surya Kumari Jangala X-Patchwork-Id: 102206 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6A0333858C50 for ; Mon, 2 Dec 2024 08:23:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6A0333858C50 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=ryMGXGtX 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 467FB3858D33 for ; Mon, 2 Dec 2024 08:22:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 467FB3858D33 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 467FB3858D33 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=1733127772; cv=none; b=DMA/n8w7bvvolkkvpCcyRZfMoHbbcn03+7w5PhPO1GxNeulEpOIMgHXH1PJK/Eu6UoA9kMMSXx4Gbbb4F5/qMOO0DPfK4//srPtB3nnG8y323oUN52uK73UlPj0eXZ/dDx12KjS3Uoi+fNkHW0kAzUs1MJVxaizukPM713CdAQU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733127772; c=relaxed/simple; bh=gCjPNvE8PUBBOzn8kizA7hZsZ+W9zGEJsXX7LT9U1Ds=; h=DKIM-Signature:Message-ID:Date:MIME-Version:To:From:Subject; b=HnHoNFfVGfh1J9ePLjMi9snixDaRxMiVb6/l5J9WPau6+9WFC1mzy7HwHGLdqW1n/aJtTHeuVt3CZkKKIpnaQvcfeRftBNICLJ8zcXyY21r8E1ahc3ULfaRxG08R3aMFv0jEtJkWVsubD7RGca+Ozm7FISKfQ6hQMJL9AHicIAA= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 467FB3858D33 Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4B1FiPP3016184 for ; Mon, 2 Dec 2024 08:22:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h= content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=pp1; bh=04yIBKANQGa48s3gZDRI2gXR/ebd NDAqe7rv1Qt/d6Y=; b=ryMGXGtXnD8f5pI80JfTCb16J/vUyz1PBdu+cVkVlXQk vsrlKkDe5lBm91vsF2HvqMU2DVTvdk7pbnivZXXnD9TWQ5666RUkyBPGuh6Xsvfv RgpeVIqiXOiEhKYZTyar5LEGQxTlk+Lj8gokNzQ3eHMW3RjYVrKdbxnK1FTzj8rl OGHvTUplkeX7qzat+gyP635JDT2ndI/5zgmo3KD54aDBrMJikaSOVSZe21TFWvKz DifI+mrP5oaHbffA6wzxqHdYKTX7SrwgeSD1fRE+7twQFwaAaqH9eE8F03dibImX HIKqbGyOEeiE7h6QGOqSQBa5swUhGOegZcCk0GdSPQ== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 437tcv80bn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 02 Dec 2024 08:22:50 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 4B1Iv6if005273 for ; Mon, 2 Dec 2024 08:22:50 GMT Received: from smtprelay03.wdc07v.mail.ibm.com ([172.16.1.70]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 438fr19v4p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 02 Dec 2024 08:22:50 +0000 Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay03.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 4B28MmSX34603322 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 2 Dec 2024 08:22:48 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 99AD558059; Mon, 2 Dec 2024 08:22:48 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A271A58058; Mon, 2 Dec 2024 08:22:47 +0000 (GMT) Received: from [9.61.241.175] (unknown [9.61.241.175]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 2 Dec 2024 08:22:47 +0000 (GMT) Message-ID: <94b3e7c4-7a0f-4f3c-aa92-af81d20de15e@linux.ibm.com> Date: Mon, 2 Dec 2024 13:52:45 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: binutils@sourceware.org, Peter Bergner From: Surya Kumari Jangala Subject: [PATCH] PowerPC: Add support for RFC02680 - PQC Acceleration, Instructions X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: fnwGDiuloGgSHmof-KYyKekaKudeFQC2 X-Proofpoint-GUID: fnwGDiuloGgSHmof-KYyKekaKudeFQC2 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-15_01,2024-10-11_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 suspectscore=0 mlxlogscore=953 spamscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 priorityscore=1501 mlxscore=0 bulkscore=0 malwarescore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2411120000 definitions=main-2412020070 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_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP 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~patchwork=sourceware.org@sourceware.org PowerPC: Add support for RFC02680 - PQC Acceleration Instructions opcodes/ * ppc-opc.c (powerpc_opcodes): Add xvadduwm, xvadduhm, xvsubuwm, xvsubuhm, xvmuluwm, xvmuluhm, xvmulhsw, xvmulhsh, xvmulhuw, xvmulhuh. gas/ * testsuite/gas/ppc/future.s: New test. * testsuite/gas/ppc/future.d: Likewise. --- gas/testsuite/gas/ppc/future.d | 10 ++++++++++ gas/testsuite/gas/ppc/future.s | 10 ++++++++++ opcodes/ppc-opc.c | 10 ++++++++++ 3 files changed, 30 insertions(+) diff --git a/gas/testsuite/gas/ppc/future.d b/gas/testsuite/gas/ppc/future.d index c0d9080c04f..d639e8c618f 100644 --- a/gas/testsuite/gas/ppc/future.d +++ b/gas/testsuite/gas/ppc/future.d @@ -25,4 +25,14 @@ Disassembly of section \.text: .*: (9a 8d 2a 7d|7d 2a 8d 9a) stxvprl vs40,r10,r17 .*: (da 95 6a 7d|7d 6a 95 da) stxvprll vs42,r10,r18 .*: (c6 9d e9 f3|f3 e9 9d c6) xvrlw vs31,vs41,vs51 +.*: (1e a4 ca f3|f3 ca a4 1e) xvadduwm vs30,vs42,vs52 +.*: (5e ac ca f3|f3 ca ac 5e) xvadduhm vs30,vs42,vs53 +.*: (9e b4 ab f3|f3 ab b4 9e) xvsubuwm vs29,vs43,vs54 +.*: (d9 f4 e0 f3|f3 e0 f4 d9) xvsubuhm vs63,vs0,vs30 +.*: (1e e5 c8 f3|f3 c8 e5 1e) xvmuluwm vs30,vs40,vs60 +.*: (5f f5 9d f3|f3 9d f5 5f) xvmuluhm vs60,vs61,vs62 +.*: (9f 25 43 f0|f0 43 25 9f) xvmulhsw vs34,vs35,vs36 +.*: (d8 1d 22 f0|f0 22 1d d8) xvmulhsh vs1,vs2,vs3 +.*: (90 b3 95 f2|f2 95 b3 90) xvmulhuw vs20,vs21,vs22 +.*: (d6 a3 8a f2|f2 8a a3 d6) xvmulhuh vs20,vs42,vs52 #pass diff --git a/gas/testsuite/gas/ppc/future.s b/gas/testsuite/gas/ppc/future.s index 4e782e8764d..9abf6b3de7b 100644 --- a/gas/testsuite/gas/ppc/future.s +++ b/gas/testsuite/gas/ppc/future.s @@ -17,3 +17,13 @@ _start: stxvprl 40,10,17 stxvprll 42,10,18 xvrlw 31,41,51 + xvadduwm 30,42,52 + xvadduhm 30,42,53 + xvsubuwm 29,43,54 + xvsubuhm 63,0,30 + xvmuluwm 30,40,60 + xvmuluhm 60,61,62 + xvmulhsw 34,35,36 + xvmulhsh 1,2,3 + xvmulhuw 20,21,22 + xvmulhuh 20,42,52 diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c index 705b5d78d84..ed5675b4f93 100644 --- a/opcodes/ppc-opc.c +++ b/opcodes/ppc-opc.c @@ -9320,6 +9320,7 @@ const struct powerpc_opcode powerpc_opcodes[] = { {"xvredp", XX2(60,218), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, {"xvmuldp", XX3(60,112), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, {"xvmsubadp", XX3(60,113), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, +{"xvmulhuw", XX3(60,114), XX3_MASK, PPCVSXF, PPCVLE, {XT6, XA6, XB6}}, {"xvcmpgedp", XX3RC(60,115,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, {"xvcmpgedp.", XX3RC(60,115,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, {"xvcvuxwdp", XX2(60,232), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, @@ -9328,38 +9329,45 @@ const struct powerpc_opcode powerpc_opcodes[] = { {"xvrdpic", XX2(60,235), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, {"xvdivdp", XX3(60,120), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, {"xvmsubmdp", XX3(60,121), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, +{"xvmulhuh", XX3(60,122), XX3_MASK, PPCVSXF, PPCVLE, {XT6, XA6, XB6}}, {"xvcvsxwdp", XX2(60,248), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, {"xvrdpim", XX2(60,249), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, {"xvtdivdp", XX3(60,125), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}}, {"xsmaxcdp", XX3(60,128), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, {"xsnmaddasp", XX3(60,129), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, {"xxland", XX3(60,130), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, +{"xvadduwm", XX3(60,131), XX3_MASK, PPCVSXF, PPCVLE, {XT6, XA6, XB6}}, {"xscvdpsp", XX2(60,265), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, {"xscvdpspn", XX2(60,267), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}}, {"xsmincdp", XX3(60,136), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, {"xsnmaddmsp", XX3(60,137), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, {"xxlandc", XX3(60,138), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, +{"xvadduhm", XX3(60,139), XX3_MASK, PPCVSXF, PPCVLE, {XT6, XA6, XB6}}, {"xsrsp", XX2(60,281), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}}, {"xsmaxjdp", XX3(60,144), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, {"xsnmsubasp", XX3(60,145), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, {"xxmr", XX3(60,146), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6}}, {"xxlor", XX3(60,146), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, +{"xvsubuwm", XX3(60,147), XX3_MASK, PPCVSXF, PPCVLE, {XT6, XA6, XB6}}, {"xscvuxdsp", XX2(60,296), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}}, {"xststdcsp", XX2(60,298), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}}, {"xsminjdp", XX3(60,152), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, {"xsnmsubmsp", XX3(60,153), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, {"xxlxor", XX3(60,154), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, +{"xvsubuhm", XX3(60,155), XX3_MASK, PPCVSXF, PPCVLE, {XT6, XA6, XB6}}, {"xscvsxdsp", XX2(60,312), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}}, {"xsmaxdp", XX3(60,160), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, {"xsnmaddadp", XX3(60,161), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, {"xxlnot", XX3(60,162), XX3_MASK, PPCVSX, PPCVLE|EXT, {XT6, XAB6}}, {"xxlnor", XX3(60,162), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, +{"xvmuluwm", XX3(60,163), XX3_MASK, PPCVSXF, PPCVLE, {XT6, XA6, XB6}}, {"xscvdpuxds", XX2(60,328), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, {"xscvspdp", XX2(60,329), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, {"xscvspdpn", XX2(60,331), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}}, {"xsmindp", XX3(60,168), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, {"xsnmaddmdp", XX3(60,169), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, {"xxlorc", XX3(60,170), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, +{"xvmuluhm", XX3(60,171), XX3_MASK, PPCVSXF, PPCVLE, {XT6, XA6, XB6}}, {"xscvdpsxds", XX2(60,344), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, {"xsabsdp", XX2(60,345), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, {"xsxexpdp", XX2VA(60,347,0),XX2_MASK|1, PPCVSX3, PPCVLE, {RT, XB6}}, @@ -9369,12 +9377,14 @@ const struct powerpc_opcode powerpc_opcodes[] = { {"xscpsgndp", XX3(60,176), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, {"xsnmsubadp", XX3(60,177), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, {"xxlnand", XX3(60,178), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, +{"xvmulhsw", XX3(60,179), XX3_MASK, PPCVSXF, PPCVLE, {XT6, XA6, XB6}}, {"xscvuxddp", XX2(60,360), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, {"xsnabsdp", XX2(60,361), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, {"xststdcdp", XX2(60,362), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}}, {"xvrlw", XX3(60,184), XX3_MASK, PPCVSXF, PPCVLE, {XT6, XA6, XB6}}, {"xsnmsubmdp", XX3(60,185), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, {"xxleqv", XX3(60,186), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, +{"xvmulhsh", XX3(60,187), XX3_MASK, PPCVSXF, PPCVLE, {XT6, XA6, XB6}}, {"xscvsxddp", XX2(60,376), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, {"xsnegdp", XX2(60,377), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, {"xvmaxsp", XX3(60,192), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},