From patchwork Fri Nov 2 14:58:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aaron Sawdey X-Patchwork-Id: 992350 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-488896-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="xDH7QZSk"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 42mlb15w9RzB4Wh for ; Sat, 3 Nov 2018 01:59:08 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:to:cc :from:subject:date:mime-version:content-type :content-transfer-encoding:message-id; q=dns; s=default; b=cOPGN DYWauxWqAC6pmnSeiIvGT4yGGYTBElSMP5+Y0B9wXF+h0ewFrL8XKMR4gL2TVB4H Tr8csjt27gtglfwW/h5uEZ/1r3BAYtncF9Hw+hziW6ILPRjzgXs5D1QxmYmZrLy9 Sev8J75qd2nNQN5bTYwsLAreuU2XvAh1ZZPPSo= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:to:cc :from:subject:date:mime-version:content-type :content-transfer-encoding:message-id; s=default; bh=liwwS9G6Dww /J543OdRBzjozzbg=; b=xDH7QZSkV2fSnaaRWlg8fhC6irtg5aPsgYIq+YlbeLj crRjLya5GYMTfCUPXwfLx+NI2R/xis410AbuRgJ4Sv/0LoW/4BzCGyCa9p9Jd48d jX7RG1QyXMPQVsDQyk6A40I06MKsTBS9VjpFq+vqV3iuZDtdvS32wiubwHfjY+nM = Received: (qmail 20145 invoked by alias); 2 Nov 2018 14:59:00 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 20119 invoked by uid 89); 2 Nov 2018 14:58:59 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-17.1 required=5.0 tests=BAYES_00, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_NUMSUBJECT, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=pay X-HELO: mx0a-001b2d01.pphosted.com Received: from mx0a-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com) (148.163.156.1) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 02 Nov 2018 14:58:58 +0000 Received: from pps.filterd (m0098409.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id wA2EswmK104123 for ; Fri, 2 Nov 2018 10:58:56 -0400 Received: from e12.ny.us.ibm.com (e12.ny.us.ibm.com [129.33.205.202]) by mx0a-001b2d01.pphosted.com with ESMTP id 2ngqbdmjhp-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 02 Nov 2018 10:58:55 -0400 Received: from localhost by e12.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 2 Nov 2018 14:58:53 -0000 Received: from b01cxnp23034.gho.pok.ibm.com (9.57.198.29) by e12.ny.us.ibm.com (146.89.104.199) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Fri, 2 Nov 2018 14:58:52 -0000 Received: from b01ledav001.gho.pok.ibm.com (b01ledav001.gho.pok.ibm.com [9.57.199.106]) by b01cxnp23034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id wA2Ewp5M23855324 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 2 Nov 2018 14:58:51 GMT Received: from b01ledav001.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0C09F28060; Fri, 2 Nov 2018 14:58:51 +0000 (GMT) Received: from b01ledav001.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A622A28058; Fri, 2 Nov 2018 14:58:50 +0000 (GMT) Received: from [9.85.193.185] (unknown [9.85.193.185]) by b01ledav001.gho.pok.ibm.com (Postfix) with ESMTP; Fri, 2 Nov 2018 14:58:50 +0000 (GMT) To: GCC Patches Cc: Segher Boessenkool , Bill Schmidt , David Edelsohn From: Aaron Sawdey Subject: [PATCH][rs6000] fix ICE for strncmp expansion on power6 Date: Fri, 2 Nov 2018 09:58:50 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 x-cbid: 18110214-0060-0000-0000-000002CBF455 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00009972; HX=3.00000242; KW=3.00000007; PH=3.00000004; SC=3.00000268; SDB=6.01111617; UDB=6.00576086; IPR=6.00891708; MB=3.00024005; MTD=3.00000008; XFM=3.00000015; UTC=2018-11-02 14:58:53 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18110214-0061-0000-0000-00004710558B Message-Id: X-IsSubscribed: yes This patch addresses an ICE for a missing instruction when targeting power6. The issue is that we shouldn't generate x-form load rtx if TARGET_AVOID_XFORM is true because it won't end up being matched. More generally, on big endian we do not need to use ldbrx et. al. which are index loads, but can just use ld and other normal d-form loads. So this is going to generate better code for BE in general which is why I have changed it to do this for big endian or TARGET_AVOID_XFORM. Bootstrap/regtest passes on ppc32 and ppc64 (power 6/7/8), ok for trunk? Thanks! Aaron 2018-11-02 Aaron Sawdey * config/rs6000/rs6000-string.c (expand_strncmp_gpr_sequence): Pay attention to TARGET_AVOID_XFORM. Index: gcc/config/rs6000/rs6000-string.c =================================================================== --- gcc/config/rs6000/rs6000-string.c (revision 265733) +++ gcc/config/rs6000/rs6000-string.c (working copy) @@ -1798,12 +1798,18 @@ rid of the extra bytes. */ cmp_bytes = bytes_to_compare; - rtx offset_reg = gen_reg_rtx (Pmode); - emit_move_insn (offset_reg, GEN_INT (offset)); - - rtx addr1 = gen_rtx_PLUS (Pmode, src1_addr, offset_reg); + rtx offset_rtx; + if (BYTES_BIG_ENDIAN || TARGET_AVOID_XFORM) + offset_rtx = GEN_INT (offset); + else + { + offset_rtx = gen_reg_rtx (Pmode); + emit_move_insn (offset_rtx, GEN_INT (offset)); + } + rtx addr1 = gen_rtx_PLUS (Pmode, src1_addr, offset_rtx); + rtx addr2 = gen_rtx_PLUS (Pmode, src2_addr, offset_rtx); + do_load_for_compare_from_addr (load_mode, tmp_reg_src1, addr1, orig_src1); - rtx addr2 = gen_rtx_PLUS (Pmode, src2_addr, offset_reg); do_load_for_compare_from_addr (load_mode, tmp_reg_src2, addr2, orig_src2); /* We must always left-align the data we read, and