From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 80460 invoked by alias); 14 Nov 2018 13:08:02 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 78261 invoked by uid 89); 14 Nov 2018 13:08:01 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-13.4 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=Moreover X-HELO: mx0a-001b2d01.pphosted.com Received: from mx0b-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com) (148.163.158.5) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 14 Nov 2018 13:08:00 +0000 Received: from pps.filterd (m0098417.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id wAED4XjU042657 for ; Wed, 14 Nov 2018 08:07:58 -0500 Received: from e06smtp05.uk.ibm.com (e06smtp05.uk.ibm.com [195.75.94.101]) by mx0a-001b2d01.pphosted.com with ESMTP id 2nrgw42r7k-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 14 Nov 2018 08:07:58 -0500 Received: from localhost by e06smtp05.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 14 Nov 2018 13:07:56 -0000 Received: from b06cxnps4076.portsmouth.uk.ibm.com (9.149.109.198) by e06smtp05.uk.ibm.com (192.168.101.135) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Wed, 14 Nov 2018 13:07:54 -0000 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id wAED7rSM7274984 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 14 Nov 2018 13:07:53 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EF0D84C040; Wed, 14 Nov 2018 13:07:52 +0000 (GMT) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C7DF94C046; Wed, 14 Nov 2018 13:07:52 +0000 (GMT) Received: from oc6142347168.ibm.com (unknown [9.152.222.44]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTP; Wed, 14 Nov 2018 13:07:52 +0000 (GMT) From: Robin Dapp To: gcc-patches@gcc.gnu.org Cc: krebbel@linux.ibm.com, iii@linux.ibm.com Subject: [PATCH 0/6] If conversion with multiple sets. Date: Wed, 14 Nov 2018 13:08:00 -0000 x-cbid: 18111413-0020-0000-0000-000002E7E931 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18111413-0021-0000-0000-00002136FD94 Message-Id: <20181114130752.5057-1-rdapp@linux.ibm.com> X-SW-Source: 2018-11/txt/msg01250.txt.bz2 Hi, the follow patch set was created in an attempt to allow multiple sets to be if converted. I was not able to make it work out of the box since I found the cost estimation for the newly created sequence to always be much higher than the sequence before. This is due to noce_convert_multiple_sets creating temporaries that will only get optimized away (if at all) after the cost estimation. Therefore, I decided to expose the number of created conditional moves to the backend in the hope that all temporaries get eliminated eventually. The backend may still use the cost estimation but currently, the original_cost is not even set up properly when the noce_conversion_profitable_p is called. The series also allows noce_convert_multiple_sets to use immediate operands without moving them into a register. Moreover it tries to only create temporaries when needed so in the future, a cost estimation may be easier. Regards Robin -- ifcvt: Store the number of created cmovs. ifcvt: Allow constants operands in noce_convert_multiple_sets. ifcvt: Use enum instead of transform_name string. S/390: Implement noce_conversion_profitable_p. ifcvt: Only created temporaries as needed. S/390: Add test for noce_convert_multiple_sets. gcc/config/s390/s390.c | 17 ++ gcc/ifcvt.c | 148 ++++++++++++++---- gcc/ifcvt.h | 71 ++++++++- .../gcc.target/s390/ifcvt-two-insns-int.c | 26 +++ 4 files changed, 226 insertions(+), 36 deletions(-) create mode 100644 gcc/testsuite/gcc.target/s390/ifcvt-two-insns-int.c -- 2.17.0