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 B37B338582A3 for ; Sat, 28 Oct 2023 10:25:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B37B338582A3 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 B37B338582A3 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698488753; cv=none; b=nW+/H9GarjpsQ9sTnbidkfFjY3GygbEHPVfFJoYwhrNDG7A387QvXq/DLiasOIx20ukg+uDOSNfIAZ21Xz8dTmXJ2zBGeqRYVmMjZ+vEBhosRmx/sva7bj1bNfkWaIkvRT8UPPz3kXcupSx/ytkZa7LDu/26SSzKQ2N2O7YxEDU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698488753; c=relaxed/simple; bh=U4P+Rg2wSfmAWUAgdf0Uh+SgV0K3MfWKe+OxN2Xd90k=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=addE+4IMTN955maVuHCi34GfU/YsbTrjftCT0bHyTmoDSL+QXOdJ6GSXyaPJYiWc3OJWlJyJI11gXug/ZNOe4YSbseVlv3++9b0WZ8IleI0upnYPI0lKHxbPjSNCGW/UAlJ2EkEkGeHAsgkO72qiOXtKiCyLfrI/E8RaGOuvAPw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0353722.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 39SAJsf8004398; Sat, 28 Oct 2023 10:25:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : date : mime-version : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding; s=pp1; bh=kZpMFJzuwXglr1kEQznxBe2tMGF/i7M3EgualMAImh8=; b=fmFc2ESg4nvyWgILW16Iiyl80sk1q9njq6p1HId0OX6pdVA9xBGs5pDoT3SNc9mKDBB3 S45DIle9i5DMOcmjBKHKuV1hs1j7+kp4h2ixSZJto2XVFNXt8bnJII5pPGsNBMxOYQxa jdoYfzc5SjVC7ByXyRUsjxu1NvQAvyCkUQkkK2+b+SNECEcEmaaXjDkafiXq4TAzHK4O MAscoG21GruloViHaXAipkyLFSZT2JTiUa6Ma/h5evKee866sNcLObr1RMin+b4rHafb lh4Wp8ygT8s8SrpDw1ayMYVXdIaAv7Gs+OLZEnhvVpaI8paf9ykr5l71sW7HvdlvckCu Yw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3u10eu0346-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 28 Oct 2023 10:25:50 +0000 Received: from m0353722.ppops.net (m0353722.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 39SAOxVs014961; Sat, 28 Oct 2023 10:25:50 GMT 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 3u10eu033w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 28 Oct 2023 10:25:49 +0000 Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 39S7rGYq008517; Sat, 28 Oct 2023 10:25:49 GMT Received: from smtprelay03.wdc07v.mail.ibm.com ([172.16.1.70]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 3tywqqb7kc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 28 Oct 2023 10:25:49 +0000 Received: from smtpav04.wdc07v.mail.ibm.com (smtpav04.wdc07v.mail.ibm.com [10.39.53.231]) by smtprelay03.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 39SAPm0q26280572 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 28 Oct 2023 10:25:48 GMT Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7003858045; Sat, 28 Oct 2023 10:25:48 +0000 (GMT) Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DC3C358050; Sat, 28 Oct 2023 10:25:44 +0000 (GMT) Received: from [9.43.119.110] (unknown [9.43.119.110]) by smtpav04.wdc07v.mail.ibm.com (Postfix) with ESMTP; Sat, 28 Oct 2023 10:25:44 +0000 (GMT) Message-ID: Date: Sat, 28 Oct 2023 15:55:43 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v9 4/4] ree: Improve ree pass for rs6000 target using defined ABI interfaces Content-Language: en-US To: Bernhard Reutner-Fischer Cc: Vineet Gupta , gcc-patches@gcc.gnu.org, Jeff Law , Richard Biener , Segher Boessenkool , Peter Bergner , gnu-toolchain References: <32ca6e0e-ef68-4d4d-b864-c586a688b2c7@linux.ibm.com> <22541c92-a967-4e66-96b3-e4ad5011cd24@rivosinc.com> <20231023161027.362c626b@nbbrfq.loc> <8da41716-1111-4550-95dd-de41a402101e@linux.ibm.com> <4077DE16-87DA-4DDE-B119-6B516944B632@gmail.com> <7379c85b-178c-4196-a929-129052245165@linux.ibm.com> <20231027191612.068c67ee@nbbrfq.loc> From: Ajit Agarwal In-Reply-To: <20231027191612.068c67ee@nbbrfq.loc> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: 3-NJ0HDwjcoWQpfuF4E_qPe3d05Eswm- X-Proofpoint-GUID: dL25_RDYRJw-F64XrH9RZF2lY5w1iN2M X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.987,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-10-28_08,2023-10-27_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 clxscore=1015 mlxscore=0 malwarescore=0 mlxlogscore=999 lowpriorityscore=0 bulkscore=0 adultscore=0 impostorscore=0 phishscore=0 priorityscore=1501 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2310240000 definitions=main-2310280079 X-Spam-Status: No, score=-5.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,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 List-Id: On 27/10/23 10:46 pm, Bernhard Reutner-Fischer wrote: > On Wed, 25 Oct 2023 16:41:07 +0530 > Ajit Agarwal wrote: > >> On 25/10/23 2:19 am, Vineet Gupta wrote: >>> On 10/24/23 13:36, rep.dot.nop@gmail.com wrote: >>>>>>>> As said, I don't see why the below was not cleaned up before the V1 submission. >>>>>>>> Iff it breaks when manually CSEing, I'm curious why? >>>>>> The function below looks identical in v12 of the patch. >>>>>> Why didn't you use common subexpressions? >>>>>> ba >>>>> Using CSE here breaks aarch64 regressions hence I have reverted it back >>>>> not to use CSE, >>>> Just for my own education, can you please paste your patch perusing common subexpressions and an assembly diff of the failing versus working aarch64 testcase, along how you configured that failing (cross-?)compiler and the command-line of a typical testcase that broke when manually CSEing the function below? >>> >>> I was meaning to ask this before, but what exactly is the CSE issue, manually or whatever. > > If nothing else it would hopefully improve the readability. > >>> >> Here is the abi interface where I CSE'D and got a mail from automated regressions run that aarch64 >> test fails. > > We already concluded that this failure was obviously a hiccup on the > testers, no problem. Thanks. > >> +static inline bool >> +abi_extension_candidate_return_reg_p (int regno) >> +{ >> + return targetm.calls.function_value_regno_p (regno); >> +} > > But i was referring to abi_extension_candidate_p :) > > your v13 looks like this: > > +static bool > +abi_extension_candidate_p (rtx_insn *insn) > +{ > + rtx set = single_set (insn); > + machine_mode dst_mode = GET_MODE (SET_DEST (set)); > + rtx orig_src = XEXP (SET_SRC (set), 0); > + > + if (!FUNCTION_ARG_REGNO_P (REGNO (orig_src)) > + || abi_extension_candidate_return_reg_p (REGNO (orig_src))) > + return false; > + > + /* Return FALSE if mode of destination and source is same. */ > + if (dst_mode == GET_MODE (orig_src)) > + return false; > + > + machine_mode mode = GET_MODE (XEXP (SET_SRC (set), 0)); > + bool promote_p = abi_target_promote_function_mode (mode); > + > + /* Return FALSE if promote is false and REGNO of source and destination > + is different. */ > + if (!promote_p && REGNO (SET_DEST (set)) != REGNO (orig_src)) > + return false; > + > + return true; > +} > > and i suppose it would be easier to read if phrased something like > > static bool > abi_extension_candidate_p (rtx_insn *insn) > { > rtx set = single_set (insn); > rtx orig_src = XEXP (SET_SRC (set), 0); > unsigned int src_regno = REGNO (orig_src); > > /* Not a function argument reg or is a function values return reg. */ > if (!FUNCTION_ARG_REGNO_P (src_regno) > || abi_extension_candidate_return_reg_p (src_regno)) > return false; > > rtx dst = SET_DST (set); > machine_mode src_mode = GET_MODE (orig_src); > > /* Return FALSE if mode of destination and source is the same. */ > if (GET_MODE (dst) == src_mode) > return false; > > /* Return FALSE if the FIX THE COMMENT and REGNO of source and destination > is different. */ > if (!abi_target_promote_function_mode_p (src_mode) > && REGNO (dst) != src_regno) > return false; > > return true; > } > > so no, that's not exactly better. > > Maybe just do what the function comment says (i did not check the "not > promoted" part, but you get the idea): > > ^L > > /* Return TRUE if > reg source operand is argument register and not return register, > mode of source and destination operand are different, > if not promoted REGNO of source and destination operand are the same. */ > static bool > abi_extension_candidate_p (rtx_insn *insn) > { > rtx set = single_set (insn); > rtx orig_src = XEXP (SET_SRC (set), 0); > > if (FUNCTION_ARG_REGNO_P (REGNO (orig_src)) > && !abi_extension_candidate_return_reg_p (REGNO (orig_src)) > && GET_MODE (SET_DST (set)) != GET_MODE (orig_src) > && abi_target_promote_function_mode_p (GET_MODE (orig_src)) > && REGNO (SET_DST (set)) == REGNO (orig_src)) > return true; > > return false; > } > > I think this is much easier to actually read (and that's why good > function comments are important). In the end it's not important and > just personal preference. > Either way, I did not check the plausibility of the logic therein. > >> Addressed in V15 of the patch. >> >> I have not done any assembly diff as myself have not cross compiled with aarch64. > > fair enough.