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 5788F393D01A; Fri, 14 May 2021 07:13:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 5788F393D01A Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 14E73mGW173333; Fri, 14 May 2021 03:13:15 -0400 Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 38hgpdmpy3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 14 May 2021 03:13:14 -0400 Received: from m0098421.ppops.net (m0098421.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 14E74ILD177581; Fri, 14 May 2021 03:13:14 -0400 Received: from ppma06fra.de.ibm.com (48.49.7a9f.ip4.static.sl-reverse.com [159.122.73.72]) by mx0a-001b2d01.pphosted.com with ESMTP id 38hgpdmpwv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 14 May 2021 03:13:14 -0400 Received: from pps.filterd (ppma06fra.de.ibm.com [127.0.0.1]) by ppma06fra.de.ibm.com (8.16.0.43/8.16.0.43) with SMTP id 14E7DCTS024394; Fri, 14 May 2021 07:13:12 GMT Received: from b06cxnps4075.portsmouth.uk.ibm.com (d06relay12.portsmouth.uk.ibm.com [9.149.109.197]) by ppma06fra.de.ibm.com with ESMTP id 38hc6n82me-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 14 May 2021 07:13:12 +0000 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 14E7DAoV66060750 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 14 May 2021 07:13:10 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4D231A4051; Fri, 14 May 2021 07:13:10 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 81477A4040; Fri, 14 May 2021 07:13:08 +0000 (GMT) Received: from luoxhus-MacBook-Pro.local (unknown [9.197.233.152]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTPS; Fri, 14 May 2021 07:13:08 +0000 (GMT) Subject: Re: Ping: [PATCH] rs6000: Expand fmod and remainder when built with fast-math [PR97142] To: gcc-patches@gcc.gnu.org Cc: wschmidt@linux.ibm.com, dje.gcc@gmail.com, segher@kernel.crashing.org, linkw@gcc.gnu.org References: <20210416071007.78812-1-luoxhu@linux.ibm.com> <6d438971-4778-91cf-451c-a493b0cf9bdf@linux.ibm.com> From: Xionghu Luo Message-ID: <4ead69cf-daac-31bb-ddb5-d7b41cf298e2@linux.ibm.com> Date: Fri, 14 May 2021 15:13:05 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.0; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <6d438971-4778-91cf-451c-a493b0cf9bdf@linux.ibm.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: yJZf-ddL4NJEdhqLZd2Tl9IshYXdaOIj X-Proofpoint-GUID: YIMRw0wQl9x_pmh339jx2JOXsLGUWiV6 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391, 18.0.761 definitions=2021-05-14_02:2021-05-12, 2021-05-14 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 mlxlogscore=999 impostorscore=0 mlxscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 priorityscore=1501 spamscore=0 clxscore=1015 suspectscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2105140051 X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 May 2021 07:13:16 -0000 Test SPEC2017 Ofast P8LE for this patch : 511.povray_r +1.14%, 526.blender_r +1.72%, no obvious changes to others. On 2021/5/6 10:36, Xionghu Luo via Gcc-patches wrote: > Gentle ping, thanks. > > > On 2021/4/16 15:10, Xiong Hu Luo wrote: >> fmod/fmodf and remainder/remainderf could be expanded instead of library >> call when fast-math build, which is much faster. >> >> fmodf: >>       fdivs   f0,f1,f2 >>       friz    f0,f0 >>       fnmsubs f1,f2,f0,f1 >> >> remainderf: >>       fdivs   f0,f1,f2 >>       frin    f0,f0 >>       fnmsubs f1,f2,f0,f1 >> >> gcc/ChangeLog: >> >> 2021-04-16  Xionghu Luo  >> >>     PR target/97142 >>     * config/rs6000/rs6000.md (fmod3): New define_expand. >>     (remainder3): Likewise. >> >> gcc/testsuite/ChangeLog: >> >> 2021-04-16  Xionghu Luo  >> >>     PR target/97142 >>     * gcc.target/powerpc/pr97142.c: New test. >> --- >>   gcc/config/rs6000/rs6000.md                | 36 ++++++++++++++++++++++ >>   gcc/testsuite/gcc.target/powerpc/pr97142.c | 30 ++++++++++++++++++ >>   2 files changed, 66 insertions(+) >>   create mode 100644 gcc/testsuite/gcc.target/powerpc/pr97142.c >> >> diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md >> index a1315523fec..7e0e94e6ba4 100644 >> --- a/gcc/config/rs6000/rs6000.md >> +++ b/gcc/config/rs6000/rs6000.md >> @@ -4902,6 +4902,42 @@ (define_insn "fre" >>     [(set_attr "type" "fp") >>      (set_attr "isa" "*,")]) >> +(define_expand "fmod3" >> +  [(use (match_operand:SFDF 0 "gpc_reg_operand")) >> +    (use (match_operand:SFDF 1 "gpc_reg_operand")) >> +    (use (match_operand:SFDF 2 "gpc_reg_operand"))] >> +  "TARGET_HARD_FLOAT >> +  && TARGET_FPRND >> +  && flag_unsafe_math_optimizations" >> +{ >> +  rtx div = gen_reg_rtx (mode); >> +  emit_insn (gen_div3 (div, operands[1], operands[2])); >> + >> +  rtx friz = gen_reg_rtx (mode); >> +  emit_insn (gen_btrunc2 (friz, div)); >> + >> +  emit_insn (gen_nfms4 (operands[0], operands[2], friz, >> operands[1])); >> +  DONE; >> + }) >> + >> +(define_expand "remainder3" >> +  [(use (match_operand:SFDF 0 "gpc_reg_operand")) >> +    (use (match_operand:SFDF 1 "gpc_reg_operand")) >> +    (use (match_operand:SFDF 2 "gpc_reg_operand"))] >> +  "TARGET_HARD_FLOAT >> +  && TARGET_FPRND >> +  && flag_unsafe_math_optimizations" >> +{ >> +  rtx div = gen_reg_rtx (mode); >> +  emit_insn (gen_div3 (div, operands[1], operands[2])); >> + >> +  rtx frin = gen_reg_rtx (mode); >> +  emit_insn (gen_round2 (frin, div)); >> + >> +  emit_insn (gen_nfms4 (operands[0], operands[2], frin, >> operands[1])); >> +  DONE; >> + }) >> + >>   (define_insn "*rsqrt2" >>     [(set (match_operand:SFDF 0 "gpc_reg_operand" "=,wa") >>       (unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" ",wa")] >> diff --git a/gcc/testsuite/gcc.target/powerpc/pr97142.c >> b/gcc/testsuite/gcc.target/powerpc/pr97142.c >> new file mode 100644 >> index 00000000000..48f25ca5b5b >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/powerpc/pr97142.c >> @@ -0,0 +1,30 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-Ofast" } */ >> + >> +#include >> + >> +float test1 (float x, float y) >> +{ >> +  return fmodf (x, y); >> +} >> + >> +double test2 (double x, double y) >> +{ >> +  return fmod (x, y); >> +} >> + >> +float test3 (float x, float y) >> +{ >> +  return remainderf (x, y); >> +} >> + >> +double test4 (double x, double y) >> +{ >> +  return remainder (x, y); >> +} >> + >> +/* { dg-final { scan-assembler-not {\mbl fmod\M} } } */ >> +/* { dg-final { scan-assembler-not {\mbl fmodf\M} } } */ >> +/* { dg-final { scan-assembler-not {\mbl remainder\M} } } */ >> +/* { dg-final { scan-assembler-not {\mbl remainderf\M} } } */ >> + >> > -- Thanks, Xionghu