From patchwork Fri Mar 1 15:18:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Schulze Frielinghaus X-Patchwork-Id: 1906751 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=KS7H8jHa; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TmWwM2Xzgz23hc for ; Sat, 2 Mar 2024 02:19:31 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 47D223858408 for ; Fri, 1 Mar 2024 15:19:29 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 98D1D3858401 for ; Fri, 1 Mar 2024 15:18:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 98D1D3858401 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 98D1D3858401 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=1709306345; cv=none; b=MmKn7Gr4xQIS6AbQn3bgihtKJobM8tgu6e88BhSocKwNv+nfxWnW3l8HKSM9yw3Vg1pTXiMnbSTFul7emARz6DwEQhUUGYpYll0mD1Zcy3nnIEuE0XAEH0oav2zt07ouUN47H068kSIZlJUpaOQmdfFbRaPeVo6p26dqy7CEgnY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1709306345; c=relaxed/simple; bh=8lA6gHBsQknEvrqfqejqVfM1hfYLek9KOkOMvkeudZI=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=S8A6Vq6HSUfMVX4lHsSIhwEjoIci+/DHW+wLsDCuGUTzO8kcRnw6Ug8wc6FKjwqS/6lR1JdmljphKSNXpo+mSRjT5af/IKiW3Jf5PsDUIBvvaoA/hHiFSyYHlKw+8C79Nm7WJ/C5RpnLX5OJUKjD4dmfequz50FPCqb3Q4Q1+Vo= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 421F2Iu3031732 for ; Fri, 1 Mar 2024 15:18:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding; s=pp1; bh=EXDSEZewXKIpkqA/a1kJLEIfaBtOjdY7YarUxONpr4g=; b=KS7H8jHaCYN5p48CZyNGDsBQ+31UaCKiI4wUQaaXy0VALGDg+1wTPRyCuKRd7DqkmYhJ kJiEjubx9yppLod4zmk4MgwY0NTHXmT6vYRd5SurJFpuuFPCxCLTZBWoL4IVrm/Xskvb 8cflffUF41CPUk/OJiX4AwCvT7fp1VJ/t1mDk8S3PQgIi1TC+iB3xNPjA+KKDdmt7D5Y mE/CCtXXR0bhJQ+UJRQbnrau4kCIgDYn2PN2CtOz5x+lj2uB3ZFMLBn4V+2TRZfFzATv Ot89KWoogYC9XKKKCu+d2QbnA3obtolIbssNF882CLR86hRVYFkvizx22XmdC9Ca1PQI qw== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3wkhad0ehm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 01 Mar 2024 15:18:54 +0000 Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 421CUFTZ008164 for ; Fri, 1 Mar 2024 15:18:53 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3wfv9mw0x8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 01 Mar 2024 15:18:53 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 421FIige24314474 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 1 Mar 2024 15:18:46 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 13E9F2004B; Fri, 1 Mar 2024 15:18:44 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DD38520043; Fri, 1 Mar 2024 15:18:43 +0000 (GMT) Received: from a8345010.lnxne.boe (unknown [9.152.108.100]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTPS; Fri, 1 Mar 2024 15:18:43 +0000 (GMT) From: Stefan Schulze Frielinghaus To: krebbel@linux.ibm.com, gcc-patches@gcc.gnu.org Cc: ulrich.weigand@de.ibm.com, Stefan Schulze Frielinghaus Subject: [PATCH] s390: Streamline NNPA builtins with POP mnemonics Date: Fri, 1 Mar 2024 16:18:31 +0100 Message-ID: <20240301151831.1785057-1-stefansf@linux.ibm.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: RWdXSM7gvl_Mr5oSmG9pQ8_zc6B1apFt X-Proofpoint-GUID: RWdXSM7gvl_Mr5oSmG9pQ8_zc6B1apFt 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-03-01_14,2024-03-01_02,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 mlxlogscore=942 priorityscore=1501 impostorscore=0 spamscore=0 clxscore=1015 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2403010127 X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H2, 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: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org At the moment there are no extended mnemonics for vclfn(h,l) and vcrnf defined in the Principles of Operation. Thus, remove the suffix "s" from the builtins and expanders and introduce a further operand for the data type. gcc/ChangeLog: * config/s390/s390-builtin-types.def: Update to reflect latest changes. * config/s390/s390-builtins.def: Remove suffix s from s390_vclfn(h,l)s and s390_vcrnfs. * config/s390/s390.md: Similar, remove suffix s from unspec definitions. * config/s390/vecintrin.h (vec_extend_to_fp32_hi): Redefine. (vec_extend_to_fp32_lo): Redefine. (vec_round_from_fp32): Redefine. * config/s390/vx-builtins.md (vclfnhs_v8hi): Remove suffix s. (vclfnh_v8hi): Add with extra operand. (vclfnls_v8hi): Remove suffix s. (vclfnl_v8hi): Add with extra operand. (vcrnfs_v8hi): Remove suffix s. (vcrnf_v8hi): Add with extra operand. --- OK for mainline? gcc/config/s390/s390-builtin-types.def | 4 ++-- gcc/config/s390/s390-builtins.def | 6 +++--- gcc/config/s390/s390.md | 6 +++--- gcc/config/s390/vecintrin.h | 6 +++--- gcc/config/s390/vx-builtins.md | 27 ++++++++++++++------------ 5 files changed, 26 insertions(+), 23 deletions(-) diff --git a/gcc/config/s390/s390-builtin-types.def b/gcc/config/s390/s390-builtin-types.def index ce51ae8cd3f..c3d09b42835 100644 --- a/gcc/config/s390/s390-builtin-types.def +++ b/gcc/config/s390/s390-builtin-types.def @@ -273,7 +273,6 @@ DEF_FN_TYPE_2 (BT_FN_V2DI_V2DF_V2DF, BT_V2DI, BT_V2DF, BT_V2DF) DEF_FN_TYPE_2 (BT_FN_V2DI_V2DI_V2DI, BT_V2DI, BT_V2DI, BT_V2DI) DEF_FN_TYPE_2 (BT_FN_V2DI_V4SI_V4SI, BT_V2DI, BT_V4SI, BT_V4SI) DEF_FN_TYPE_2 (BT_FN_V4SF_FLT_INT, BT_V4SF, BT_FLT, BT_INT) -DEF_FN_TYPE_2 (BT_FN_V4SF_UV8HI_UINT, BT_V4SF, BT_UV8HI, BT_UINT) DEF_FN_TYPE_2 (BT_FN_V4SF_V4SF_UCHAR, BT_V4SF, BT_V4SF, BT_UCHAR) DEF_FN_TYPE_2 (BT_FN_V4SF_V4SF_V4SF, BT_V4SF, BT_V4SF, BT_V4SF) DEF_FN_TYPE_2 (BT_FN_V4SI_BV4SI_V4SI, BT_V4SI, BT_BV4SI, BT_V4SI) @@ -324,7 +323,6 @@ DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_USHORT_INT, BT_UV8HI, BT_UV8HI, BT_USHORT, BT_I DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UV8HI_INT, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT) DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UV8HI_INTPTR, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR) DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI) -DEF_FN_TYPE_3 (BT_FN_UV8HI_V4SF_V4SF_UINT, BT_UV8HI, BT_V4SF, BT_V4SF, BT_UINT) DEF_FN_TYPE_3 (BT_FN_V16QI_UV16QI_UV16QI_INTPTR, BT_V16QI, BT_UV16QI, BT_UV16QI, BT_INTPTR) DEF_FN_TYPE_3 (BT_FN_V16QI_V16QI_V16QI_INTPTR, BT_V16QI, BT_V16QI, BT_V16QI, BT_INTPTR) DEF_FN_TYPE_3 (BT_FN_V16QI_V16QI_V16QI_V16QI, BT_V16QI, BT_V16QI, BT_V16QI, BT_V16QI) @@ -340,6 +338,7 @@ DEF_FN_TYPE_3 (BT_FN_V2DI_V2DF_INT_INTPTR, BT_V2DI, BT_V2DF, BT_INT, BT_INTPTR) DEF_FN_TYPE_3 (BT_FN_V2DI_V2DF_V2DF_INTPTR, BT_V2DI, BT_V2DF, BT_V2DF, BT_INTPTR) DEF_FN_TYPE_3 (BT_FN_V2DI_V2DI_V2DI_INTPTR, BT_V2DI, BT_V2DI, BT_V2DI, BT_INTPTR) DEF_FN_TYPE_3 (BT_FN_V2DI_V4SI_V4SI_V2DI, BT_V2DI, BT_V4SI, BT_V4SI, BT_V2DI) +DEF_FN_TYPE_3 (BT_FN_V4SF_UV8HI_UINT_UINT, BT_V4SF, BT_UV8HI, BT_UINT, BT_UINT) DEF_FN_TYPE_3 (BT_FN_V4SF_V2DF_INT_INT, BT_V4SF, BT_V2DF, BT_INT, BT_INT) DEF_FN_TYPE_3 (BT_FN_V4SF_V4SF_FLT_INT, BT_V4SF, BT_V4SF, BT_FLT, BT_INT) DEF_FN_TYPE_3 (BT_FN_V4SF_V4SF_UCHAR_UCHAR, BT_V4SF, BT_V4SF, BT_UCHAR, BT_UCHAR) @@ -377,6 +376,7 @@ DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_UINTCONSTPTR_UCHAR, BT_UV4SI, BT_UV4SI, B DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_UV4SI, BT_INT) DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_INT_INTPTR, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT, BT_INTPTR) DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, BT_INT) +DEF_FN_TYPE_4 (BT_FN_UV8HI_V4SF_V4SF_UINT_UINT, BT_UV8HI, BT_V4SF, BT_V4SF, BT_UINT, BT_UINT) DEF_FN_TYPE_4 (BT_FN_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG, BT_VOID, BT_UV2DI, BT_UV2DI, BT_ULONGLONGPTR, BT_ULONGLONG) DEF_FN_TYPE_4 (BT_FN_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG, BT_VOID, BT_UV4SI, BT_UV4SI, BT_UINTPTR, BT_ULONGLONG) DEF_FN_TYPE_4 (BT_FN_VOID_V4SI_V4SI_INTPTR_ULONGLONG, BT_VOID, BT_V4SI, BT_V4SI, BT_INTPTR, BT_ULONGLONG) diff --git a/gcc/config/s390/s390-builtins.def b/gcc/config/s390/s390-builtins.def index 02ff516c677..0d4e20ea425 100644 --- a/gcc/config/s390/s390-builtins.def +++ b/gcc/config/s390/s390-builtins.def @@ -3025,10 +3025,10 @@ B_DEF (s390_vstrszf, vstrszv4si, 0, /* arch 14 builtins */ -B_DEF (s390_vclfnhs, vclfnhs_v8hi, 0, B_NNPA, O2_U4, BT_FN_V4SF_UV8HI_UINT) -B_DEF (s390_vclfnls, vclfnls_v8hi, 0, B_NNPA, O2_U4, BT_FN_V4SF_UV8HI_UINT) +B_DEF (s390_vclfnh, vclfnh_v8hi, 0, B_NNPA, O2_U4 | O3_U4, BT_FN_V4SF_UV8HI_UINT_UINT) +B_DEF (s390_vclfnl, vclfnl_v8hi, 0, B_NNPA, O2_U4 | O3_U4, BT_FN_V4SF_UV8HI_UINT_UINT) -B_DEF (s390_vcrnfs, vcrnfs_v8hi, 0, B_NNPA, O3_U4, BT_FN_UV8HI_V4SF_V4SF_UINT) +B_DEF (s390_vcrnf, vcrnf_v8hi, 0, B_NNPA, O3_U4 | O4_U4, BT_FN_UV8HI_V4SF_V4SF_UINT_UINT) B_DEF (s390_vcfn, vcfn_v8hi, 0, B_NNPA, O2_U4, BT_FN_UV8HI_UV8HI_UINT) B_DEF (s390_vcnf, vcnf_v8hi, 0, B_NNPA, O2_U4, BT_FN_UV8HI_UV8HI_UINT) diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 8aa40ba5b7f..65d98163193 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -241,9 +241,9 @@ UNSPEC_VEC_VFMIN UNSPEC_VEC_VFMAX - UNSPEC_NNPA_VCLFNHS_V8HI - UNSPEC_NNPA_VCLFNLS_V8HI - UNSPEC_NNPA_VCRNFS_V8HI + UNSPEC_NNPA_VCLFNH_V8HI + UNSPEC_NNPA_VCLFNL_V8HI + UNSPEC_NNPA_VCRNF_V8HI UNSPEC_NNPA_VCFN_V8HI UNSPEC_NNPA_VCNF_V8HI diff --git a/gcc/config/s390/vecintrin.h b/gcc/config/s390/vecintrin.h index 9abbd761067..c690c41d8e4 100644 --- a/gcc/config/s390/vecintrin.h +++ b/gcc/config/s390/vecintrin.h @@ -174,9 +174,9 @@ __lcbb(const void *ptr, int bndry) #define vec_vsterf_flt vec_vlerf_flt #define vec_vsterg_dbl vec_vlerg_dbl -#define vec_extend_to_fp32_hi __builtin_s390_vclfnhs -#define vec_extend_to_fp32_lo __builtin_s390_vclfnls -#define vec_round_from_fp32 __builtin_s390_vcrnfs +#define vec_extend_to_fp32_hi(X, Y) __builtin_s390_vclfnh((X), 2, (Y)) +#define vec_extend_to_fp32_lo(X, Y) __builtin_s390_vclfnl((X), 2, (Y)) +#define vec_round_from_fp32(X, Y, Z) __builtin_s390_vcrnf((X), (Y), (Z), 2) #define vec_convert_to_fp16 __builtin_s390_vcfn #define vec_convert_from_fp16 __builtin_s390_vcnf #define vec_gather_element __builtin_s390_vec_gather_element diff --git a/gcc/config/s390/vx-builtins.md b/gcc/config/s390/vx-builtins.md index 432d81a719f..322756f6d36 100644 --- a/gcc/config/s390/vx-builtins.md +++ b/gcc/config/s390/vx-builtins.md @@ -2220,36 +2220,39 @@ ;; NNPA Facility ;; -(define_insn "vclfnhs_v8hi" +(define_insn "vclfnh_v8hi" [(set (match_operand:V4SF 0 "register_operand" "=v") (unspec:V4SF [(vec_select:V4HI (match_operand:V8HI 1 "register_operand" "v") (parallel [(const_int 0) (const_int 1) (const_int 2) (const_int 3)])) - (match_operand:QI 2 "const_mask_operand" "C")] - UNSPEC_NNPA_VCLFNHS_V8HI))] + (match_operand:QI 2 "const_mask_operand" "C") + (match_operand:QI 3 "const_mask_operand" "C")] + UNSPEC_NNPA_VCLFNH_V8HI))] "TARGET_NNPA" - "vclfnh\t%v0,%v1,2,%2" + "vclfnh\t%v0,%v1,%2,%3" [(set_attr "op_type" "VRR")]) -(define_insn "vclfnls_v8hi" +(define_insn "vclfnl_v8hi" [(set (match_operand:V4SF 0 "register_operand" "=v") (unspec:V4SF [(vec_select:V4HI (match_operand:V8HI 1 "register_operand" "v") (parallel [(const_int 4) (const_int 5) (const_int 6) (const_int 7)])) - (match_operand:QI 2 "const_mask_operand" "C")] - UNSPEC_NNPA_VCLFNLS_V8HI))] + (match_operand:QI 2 "const_mask_operand" "C") + (match_operand:QI 3 "const_mask_operand" "C")] + UNSPEC_NNPA_VCLFNL_V8HI))] "TARGET_NNPA" - "vclfnl\t%v0,%v1,2,%2" + "vclfnl\t%v0,%v1,%2,%3" [(set_attr "op_type" "VRR")]) -(define_insn "vcrnfs_v8hi" +(define_insn "vcrnf_v8hi" [(set (match_operand:V8HI 0 "register_operand" "=v") (unspec:V8HI [(match_operand:V4SF 1 "register_operand" "v") (match_operand:V4SF 2 "register_operand" "v") - (match_operand:QI 3 "const_mask_operand" "C")] - UNSPEC_NNPA_VCRNFS_V8HI))] + (match_operand:QI 3 "const_mask_operand" "C") + (match_operand:QI 4 "const_mask_operand" "C")] + UNSPEC_NNPA_VCRNF_V8HI))] "TARGET_NNPA" - "vcrnf\t%v0,%v1,%v2,%3,2" + "vcrnf\t%v0,%v1,%v2,%3,%4" [(set_attr "op_type" "VRR")]) (define_insn "vcfn_v8hi"