From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 9B5E23858D32 for ; Wed, 21 Sep 2022 05:20:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9B5E23858D32 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 Received: from pps.filterd (m0127361.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 28L4LJpN023216; Wed, 21 Sep 2022 05:20:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : date : subject : from : to : cc : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pp1; bh=GHGFIP1iiEHMIV2/Vq23x8RhmhrD5WG6RsfSuAlua6k=; b=cqYSxg5gxXXpZUvexaiGakjWjbqMD58d069KdFbeVbqiASc6bwLotwD1k4T6MPuMAoMX We+P6JlEKq9es+kezYjLrd0nd1sZ4hzOKrKTqAaGU3nLcr/8OVdPXXZBWflyEYiYkRkB 9q9a+pY08K0bK39OTj8gdj5pyTmvY8oozpCe/AqFhvl8+FN9E9W6LWS85fMqeH9InN0W H559a9U4zP4AAn1P0p+jMyZSxSNXLv2vUXhZmtinj9GtZbNLeniWJaBfD65rFt/2OT4D r6o7IZLAQypCxN2evhHBhgq1K16gEa0pUnWGDt33KLmVHgbPEAo+KJ8pK2RwJ/qwisQ/ xw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3jqugnhevx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 21 Sep 2022 05:20:57 +0000 Received: from m0127361.ppops.net (m0127361.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 28L4M9wF025407; Wed, 21 Sep 2022 05:20:57 GMT Received: from ppma03ams.nl.ibm.com (62.31.33a9.ip4.static.sl-reverse.com [169.51.49.98]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3jqugnheuw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 21 Sep 2022 05:20:57 +0000 Received: from pps.filterd (ppma03ams.nl.ibm.com [127.0.0.1]) by ppma03ams.nl.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 28L57Gob005662; Wed, 21 Sep 2022 05:20:55 GMT Received: from b06cxnps4076.portsmouth.uk.ibm.com (d06relay13.portsmouth.uk.ibm.com [9.149.109.198]) by ppma03ams.nl.ibm.com with ESMTP id 3jn5v94r8c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 21 Sep 2022 05:20:55 +0000 Received: from b06wcsmtp001.portsmouth.uk.ibm.com (b06wcsmtp001.portsmouth.uk.ibm.com [9.149.105.160]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 28L5KqdA44630370 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 21 Sep 2022 05:20:52 GMT Received: from b06wcsmtp001.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0067DA405B; Wed, 21 Sep 2022 05:20:52 +0000 (GMT) Received: from b06wcsmtp001.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 977FBA4054; Wed, 21 Sep 2022 05:20:50 +0000 (GMT) Received: from [9.200.101.101] (unknown [9.200.101.101]) by b06wcsmtp001.portsmouth.uk.ibm.com (Postfix) with ESMTP; Wed, 21 Sep 2022 05:20:50 +0000 (GMT) Message-ID: Date: Wed, 21 Sep 2022 13:20:49 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Subject: Ping^3 [PATCH v6, rs6000] Implemented f[min/max]_optab by xs[min/max]dp [PR103605] Content-Language: en-US From: HAO CHEN GUI To: gcc-patches Cc: Segher Boessenkool , David , "Kewen.Lin" , Peter Bergner References: <504feaec-9e0c-8768-9adf-435e877dedc2@linux.ibm.com> <60e33434-d830-d580-2cb7-f7882d2d1b21@linux.ibm.com> In-Reply-To: <60e33434-d830-d580-2cb7-f7882d2d1b21@linux.ibm.com> Content-Type: text/plain; charset=UTF-8 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: zCAw6yFCU-eynW3-4skRsILTzX4RuCHn X-Proofpoint-GUID: kYl1PdYEqGwQ6enk80MvEHaMtzDrg04c Content-Transfer-Encoding: 8bit X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-09-21_02,2022-09-20_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 impostorscore=0 mlxscore=0 phishscore=0 malwarescore=0 suspectscore=0 clxscore=1011 lowpriorityscore=0 spamscore=0 mlxlogscore=999 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2209210032 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,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 List-Id: Hi, Gentle ping this: https://gcc.gnu.org/pipermail/gcc-patches/2022-June/597158.html Thanks. On 1/8/2022 上午 10:03, HAO CHEN GUI wrote: > Hi, > Gentle ping this: > https://gcc.gnu.org/pipermail/gcc-patches/2022-June/597158.html > Thanks. > > > On 4/7/2022 下午 2:32, HAO CHEN GUI wrote: >> Hi, >> Gentle ping this: >> https://gcc.gnu.org/pipermail/gcc-patches/2022-June/597158.html >> Thanks. >> >> On 24/6/2022 上午 10:02, HAO CHEN GUI wrote: >>> Hi, >>> This patch implements optab f[min/max]_optab by xs[min/max]dp on rs6000. >>> Tests show that outputs of xs[min/max]dp are consistent with the standard >>> of C99 fmin/max. >>> >>> This patch also binds __builtin_vsx_xs[min/max]dp to fmin/max instead >>> of smin/max. So the builtins always generate xs[min/max]dp on all >>> platforms. >>> >>> Bootstrapped and tested on ppc64 Linux BE and LE with no regressions. >>> Is this okay for trunk? Any recommendations? Thanks a lot. >>> >>> ChangeLog >>> 2022-06-24 Haochen Gui >>> >>> gcc/ >>> PR target/103605 >>> * config/rs6000/rs6000.md (FMINMAX): New. >>> (minmax_op): New. >>> (f3): New pattern by UNSPEC_FMAX and UNSPEC_FMIN. >>> * config/rs6000/rs6000-builtins.def (__builtin_vsx_xsmaxdp): Set >>> pattern to fmaxdf3. >>> (__builtin_vsx_xsmindp): Set pattern to fmindf3. >>> >>> gcc/testsuite/ >>> PR target/103605 >>> * gcc.dg/powerpc/pr103605.c: New. >>> >>> >>> patch.diff >>> diff --git a/gcc/config/rs6000/rs6000-builtins.def b/gcc/config/rs6000/rs6000-builtins.def >>> index f4a9f24bcc5..8b735493b40 100644 >>> --- a/gcc/config/rs6000/rs6000-builtins.def >>> +++ b/gcc/config/rs6000/rs6000-builtins.def >>> @@ -1613,10 +1613,10 @@ >>> XSCVSPDP vsx_xscvspdp {} >>> >>> const double __builtin_vsx_xsmaxdp (double, double); >>> - XSMAXDP smaxdf3 {} >>> + XSMAXDP fmaxdf3 {} >>> >>> const double __builtin_vsx_xsmindp (double, double); >>> - XSMINDP smindf3 {} >>> + XSMINDP fmindf3 {} >>> >>> const double __builtin_vsx_xsrdpi (double); >>> XSRDPI vsx_xsrdpi {} >>> diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md >>> index bf85baa5370..ae0dd98f0f9 100644 >>> --- a/gcc/config/rs6000/rs6000.md >>> +++ b/gcc/config/rs6000/rs6000.md >>> @@ -158,6 +158,8 @@ (define_c_enum "unspec" >>> UNSPEC_HASHCHK >>> UNSPEC_XXSPLTIDP_CONST >>> UNSPEC_XXSPLTIW_CONST >>> + UNSPEC_FMAX >>> + UNSPEC_FMIN >>> ]) >>> >>> ;; >>> @@ -5341,6 +5343,22 @@ (define_insn_and_split "*s3_fpr" >>> DONE; >>> }) >>> >>> + >>> +(define_int_iterator FMINMAX [UNSPEC_FMAX UNSPEC_FMIN]) >>> + >>> +(define_int_attr minmax_op [(UNSPEC_FMAX "max") >>> + (UNSPEC_FMIN "min")]) >>> + >>> +(define_insn "f3" >>> + [(set (match_operand:SFDF 0 "vsx_register_operand" "=wa") >>> + (unspec:SFDF [(match_operand:SFDF 1 "vsx_register_operand" "wa") >>> + (match_operand:SFDF 2 "vsx_register_operand" "wa")] >>> + FMINMAX))] >>> + "TARGET_VSX && !flag_finite_math_only" >>> + "xsdp %x0,%x1,%x2" >>> + [(set_attr "type" "fp")] >>> +) >>> + >>> (define_expand "movcc" >>> [(set (match_operand:GPR 0 "gpc_reg_operand") >>> (if_then_else:GPR (match_operand 1 "comparison_operator") >>> diff --git a/gcc/testsuite/gcc.target/powerpc/pr103605.c b/gcc/testsuite/gcc.target/powerpc/pr103605.c >>> new file mode 100644 >>> index 00000000000..1c938d40e61 >>> --- /dev/null >>> +++ b/gcc/testsuite/gcc.target/powerpc/pr103605.c >>> @@ -0,0 +1,37 @@ >>> +/* { dg-do compile } */ >>> +/* { dg-require-effective-target powerpc_vsx_ok } */ >>> +/* { dg-options "-O2 -mvsx" } */ >>> +/* { dg-final { scan-assembler-times {\mxsmaxdp\M} 3 } } */ >>> +/* { dg-final { scan-assembler-times {\mxsmindp\M} 3 } } */ >>> + >>> +#include >>> + >>> +double test1 (double d0, double d1) >>> +{ >>> + return fmin (d0, d1); >>> +} >>> + >>> +float test2 (float d0, float d1) >>> +{ >>> + return fmin (d0, d1); >>> +} >>> + >>> +double test3 (double d0, double d1) >>> +{ >>> + return fmax (d0, d1); >>> +} >>> + >>> +float test4 (float d0, float d1) >>> +{ >>> + return fmax (d0, d1); >>> +} >>> + >>> +double test5 (double d0, double d1) >>> +{ >>> + return __builtin_vsx_xsmindp (d0, d1); >>> +} >>> + >>> +double test6 (double d0, double d1) >>> +{ >>> + return __builtin_vsx_xsmaxdp (d0, d1); >>> +}