From patchwork Mon Sep 25 02:05:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: HAO CHEN GUI X-Patchwork-Id: 144171 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp931452vqu; Sun, 24 Sep 2023 19:06:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH2/XIPvQMdELEsexl6wbIuG+zIyj6x7wTxFjpZOvgJ95Yuq4GVdm4WWjR8DQLA/XXVCDPN X-Received: by 2002:a17:907:7d86:b0:9a5:cf6f:3efc with SMTP id oz6-20020a1709077d8600b009a5cf6f3efcmr4856015ejc.77.1695607601461; Sun, 24 Sep 2023 19:06:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695607601; cv=none; d=google.com; s=arc-20160816; b=QooOitUctLEeMZg/e0ocq88ayXoJP4IU1Dphmg+g6bhPfyReoI9SVqECxkQvqQZwiy wMyYYESq2r1jeXzFePXcz+0qNCzSbxYahUSC6fAI7DJ81LAHWiM+iP4CiJr3wvmnORq3 1v16shkXfKSf2plgJ6HJQ5oI1GgH3x4UhDMREwICsQDrDvUMp4vy++ArKRjQRS8P53uZ SuL5hOAIx2oTMsJJw8NPEuDs8ityFBW4medKjw67MIMpbG7LrcX3ZAVHbJYQKAI5rQRj wFXWgOmTDv9jBHA3nYnlX0PffT0O2sWTFSoc28oY17IlgxTEpVuzEiEGCPOMLXLJh2gT YD9A== ARC-Message-Signature: i=1; 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:subject:from:cc:to:content-language :user-agent:date:message-id:dkim-signature:dmarc-filter:delivered-to; bh=c0IFGKFCCw77PsaZxSdmQC/Hs+FUDcVfu4svlKju9Lw=; fh=3eUSxJU+9IWNwGHlMjnmqDQDnJfeMKAjlglEUO7a4vw=; b=Um3nf3Eo5F+AQ6wOjLmPY2D8M9HhLPWxSUCaJNKkvVCLn/M+jgM2XvtNUjQ8M4Tt6C 76qE6V3cgRN49sP4H0xKf2jFZoStJ56OBARaDpuXGLtArr4XJJucLO4JYQItIlQ6CPcm WowB1QvDaJY5F+u13jFCv0D+QlNq8+GJJvd6PXCX3VlrGjS1RU3kuqOquj1L7YZstyYO e1+t18WF83f/5abxVsge8gZ/8CL0E+LbqiGzCh1wCyAvgHnXFcDSLKSQa7h+z0GJ2r16 A17edaj6+0dU4th8LQ+3g9fTKo9xFxJCnW6y5+a53r5Z7kNHwF57nwr36X573pPU86jb P3jw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=dzsA7xOL; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=ibm.com Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id kl8-20020a170907994800b00992bcbf775asi7955643ejc.940.2023.09.24.19.06.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Sep 2023 19:06:41 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.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=dzsA7xOL; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.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 187D23856DFB for ; Mon, 25 Sep 2023 02:06:36 +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 903FE3857C40 for ; Mon, 25 Sep 2023 02:05:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 903FE3857C40 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 (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38ON7ORS028149; Mon, 25 Sep 2023 02:05:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : date : to : cc : from : subject : content-type : content-transfer-encoding : mime-version; s=pp1; bh=c0IFGKFCCw77PsaZxSdmQC/Hs+FUDcVfu4svlKju9Lw=; b=dzsA7xOLMa3IVQ0LZZbkOy3FPdDmHsbiPO2dwGYD81zEo77tfQGjXidpo0oZtRVykild RN1wdxIaBJnCL6p/LHOx7JCkpWN47Fa9z+lrI/kg39b2B1KbbOmNBe32tqG8nCYhrXjS ImRJPl/B+imx1IB+jkeIqXzwg/O1ml5qRaZLop8Nrk6tZfWoZNEtAHi8j/ydyDmhGiJj 1cranKBu8urZtuHstpTn/AEc4hweQ2DT9rpPyTItnRI0r3+MnvAs023PxykdDxGzzkAP syYKcn4q/MCpZoAcbRuoKn44b48eA/9HvcQtzigvGhdP+OAE/M7UUKLFXmN/tozrau4/ Kg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3ta7gtnuaa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 25 Sep 2023 02:05:51 +0000 Received: from m0356517.ppops.net (m0356517.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 38P1bOpC012301; Mon, 25 Sep 2023 02:05:50 GMT 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 3ta7gtnua3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 25 Sep 2023 02:05:50 +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 38P0q7Du011032; Mon, 25 Sep 2023 02:05:49 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3tabujxk3c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 25 Sep 2023 02:05:49 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 38P25kP442795356 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 25 Sep 2023 02:05:46 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4E2F520049; Mon, 25 Sep 2023 02:05:46 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D7B6020040; Mon, 25 Sep 2023 02:05:43 +0000 (GMT) Received: from [9.197.229.126] (unknown [9.197.229.126]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 25 Sep 2023 02:05:43 +0000 (GMT) Message-ID: <77605bb5-c8c9-275d-f180-7c9bf13cf34e@linux.ibm.com> Date: Mon, 25 Sep 2023 10:05:43 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Content-Language: en-US To: gcc-patches Cc: Segher Boessenkool , David , "Kewen.Lin" , Peter Bergner From: HAO CHEN GUI Subject: [PATCH-2v3, rs6000] Implement 32bit inline lrint [PR88558] X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: mQcEK6q2MIaa4ogHgXM5-D7pNpAZ4R3b X-Proofpoint-GUID: n6oZD_acWQ7uMmkpuxmRwZEAQsw4r8qR X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-24_21,2023-09-21_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 bulkscore=0 impostorscore=0 clxscore=1015 mlxscore=0 lowpriorityscore=0 mlxlogscore=847 malwarescore=0 adultscore=0 priorityscore=1501 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309250010 X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, 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: 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+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777973435991483076 X-GMAIL-MSGID: 1777973435991483076 Hi, This patch implements 32bit inline lrint by "fctiw". It depends on the patch1 to do SImode move from FP registers on P7. Compared to last version, the main change is to add some test cases. https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629187.html Bootstrapped and tested on powerpc64-linux BE and LE with no regressions. Thanks Gui Haochen ChangeLog rs6000: support 32bit inline lrint gcc/ PR target/88558 * config/rs6000/rs6000.md (lrintdi2): Remove TARGET_FPRND from insn condition. (lrintsi2): New insn pattern for 32bit lrint. gcc/testsuite/ PR target/106769 * gcc.target/powerpc/pr88558.h: New. * gcc.target/powerpc/pr88558-p7.c: New. * gcc.target/powerpc/pr88558-p8.c: New. patch.diff diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index ac5d29a2cf8..a41898e0e08 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -6655,10 +6655,18 @@ (define_insn "lrintdi2" [(set (match_operand:DI 0 "gpc_reg_operand" "=d") (unspec:DI [(match_operand:SFDF 1 "gpc_reg_operand" "")] UNSPEC_FCTID))] - "TARGET_HARD_FLOAT && TARGET_FPRND" + "TARGET_HARD_FLOAT" "fctid %0,%1" [(set_attr "type" "fp")]) +(define_insn "lrintsi2" + [(set (match_operand:SI 0 "gpc_reg_operand" "=d") + (unspec:SI [(match_operand:SFDF 1 "gpc_reg_operand" "")] + UNSPEC_FCTIW))] + "TARGET_HARD_FLOAT && TARGET_POPCNTD" + "fctiw %0,%1" + [(set_attr "type" "fp")]) + (define_insn "btrunc2" [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa") (unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "d,wa")] diff --git a/gcc/testsuite/gcc.target/powerpc/pr88558-p7.c b/gcc/testsuite/gcc.target/powerpc/pr88558-p7.c new file mode 100644 index 00000000000..3932656c5fd --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr88558-p7.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fno-math-errno -mdejagnu-cpu=power7" } */ + +/* -fno-math-errno is required to make {i,l,ll}rint{,f} inlined */ + +#include "pr88558.h" + +/* { dg-final { scan-assembler-times {\mfctid\M} 4 { target lp64 } } } */ +/* { dg-final { scan-assembler-times {\mfctid\M} 2 { target ilp32 } } } */ +/* { dg-final { scan-assembler-times {\mfctiw\M} 2 { target lp64 } } } */ +/* { dg-final { scan-assembler-times {\mfctiw\M} 4 { target ilp32 } } } */ +/* { dg-final { scan-assembler-times {\mstfiwx\M} 2 { target lp64 } } } */ +/* { dg-final { scan-assembler-times {\mstfiwx\M} 4 { target ilp32 } } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/pr88558-p8.c b/gcc/testsuite/gcc.target/powerpc/pr88558-p8.c new file mode 100644 index 00000000000..1afc8fd4f0d --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr88558-p8.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-options "-O2 -fno-math-errno -mdejagnu-cpu=power8" } */ + +/* -fno-math-errno is required to make {i,l,ll}rint{,f} inlined */ + +#include "pr88558.h" + +/* { dg-final { scan-assembler-times {\mfctid\M} 4 { target lp64 } } } */ +/* { dg-final { scan-assembler-times {\mfctid\M} 2 { target ilp32 } } } */ +/* { dg-final { scan-assembler-times {\mfctiw\M} 2 { target lp64 } } } */ +/* { dg-final { scan-assembler-times {\mfctiw\M} 4 { target ilp32 } } } */ +/* { dg-final { scan-assembler-times {\mmfvsrwz\M} 2 { target lp64 } } } */ +/* { dg-final { scan-assembler-times {\mmfvsrwz\M} 4 { target ilp32 } } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/pr88558.h b/gcc/testsuite/gcc.target/powerpc/pr88558.h new file mode 100644 index 00000000000..9c604faadd1 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr88558.h @@ -0,0 +1,29 @@ +long int test1 (double a) +{ + return __builtin_lrint (a); +} + +long long test2 (double a) +{ + return __builtin_llrint (a); +} + +int test3 (double a) +{ + return __builtin_irint (a); +} + +long int test4 (float a) +{ + return __builtin_lrintf (a); +} + +long long test5 (float a) +{ + return __builtin_llrintf (a); +} + +int test6 (float a) +{ + return __builtin_irintf (a); +}