From patchwork Thu Aug 15 11:00:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Uros Bizjak X-Patchwork-Id: 1147529 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-507035-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="Aj8zv15Q"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="djRyVmjU"; 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 468NmL6LSNz9sN1 for ; Thu, 15 Aug 2019 21:01:05 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:from:date:message-id:subject:to:cc:content-type; q=dns; s=default; b=uH01bPwlXvrZ2XsWG+t8rO2VkvGxOicIuoYol9UmK3k 6az/KebrDI+6OamVFnOmTHDmEz4Z2fSEP/grsS9Imrt36dNoS6916qoEVMFoe8wT 9LwtV06NbafGz8CHZKd1YYDBRt0ynUkYAUlrmHlvNNLOw1F/rzBLFvbOu4cFivGo = 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 :mime-version:from:date:message-id:subject:to:cc:content-type; s=default; bh=1OJLTcEOSfedNxQf8YmSVFX2naQ=; b=Aj8zv15QpKyp1JNez 3bI313BSwiOFYJ3YDuXnpKC2P1duWjUxTiMMGn0B3zm7WOC7QL2rSzU2Mqh1h5QM 8piPq9/JFayy5DvbZI87GMRCzxfAyVBKnWLuDnd9oOfY25fDFcd5R+HxKhpQlIeS AKuM5iko4UXoTGTGKqW62pXU/I= Received: (qmail 119766 invoked by alias); 15 Aug 2019 11:00:57 -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 119758 invoked by uid 89); 15 Aug 2019 11:00:57 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-7.7 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mail-oi1-f175.google.com Received: from mail-oi1-f175.google.com (HELO mail-oi1-f175.google.com) (209.85.167.175) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 15 Aug 2019 11:00:56 +0000 Received: by mail-oi1-f175.google.com with SMTP id a127so1423510oii.2 for ; Thu, 15 Aug 2019 04:00:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=NWI/3W5DqRftqHlpYhTHbk9NT2+qwXIq4IrPFihmJUg=; b=djRyVmjUyNPlAmft1e61T4ak0msE9PBD0TnXdxX/vQEplskYwlvf8r7770FgsC0nwJ gwi22jYhQpJ3MWXPi0klE7G0cRgvUOpSuoMwGX73Mk2HWgiPdZt4yM1hcs0QlD/BOR0m PgxMWCr/Zqz5qgihVOuWy1yUV9StuJIH4kB6rPJeBEMoKUiJ8jDxq+zPfW126UwUZ6aX DEe3Y/3LiNp9awjBdD+/kDkt5wMWvyf1BqdEMy1euuPTHqAY4NrUPjY7Ktqff+AS8oLY xUTH9Pd7gejLV5OTTTS0Y/cRpc5yPVIrq+uDjwDabzknOURk6ubrOBqd2fGlFhqiwh1r wy2Q== MIME-Version: 1.0 From: Uros Bizjak Date: Thu, 15 Aug 2019 13:00:43 +0200 Message-ID: Subject: [PATCH, i386]: Fix recent STV testsuite failures To: "gcc-patches@gcc.gnu.org" Cc: Richard Biener The COMPARE RTX has a special conversion procedure that applies only to DImode double-word operands. Do not convert single-word SImode and DImode operands for now. 2019-08-15 Uroš Bizjak * config/i386/i386-features.c (general_scalar_chain::convert_insn) : Revert 2019-08-14 change. (convertible_comparison_p): Revert 2019-08-14 change. Return false for (TARGET_64BIT || mode != DImode). Also update a couple of nearby comments. Boostrapped and regression tested on x86_64-linux-gnu {,-m32}. Committed to mainline SVN. Uros. Index: config/i386/i386-features.c =================================================================== --- config/i386/i386-features.c (revision 274504) +++ config/i386/i386-features.c (working copy) @@ -1030,11 +1030,11 @@ general_scalar_chain::convert_insn (rtx_insn *insn case COMPARE: src = SUBREG_REG (XEXP (XEXP (src, 0), 0)); - gcc_assert ((REG_P (src) && GET_MODE (src) == GET_MODE_INNER (vmode)) - || (SUBREG_P (src) && GET_MODE (src) == vmode)); + gcc_assert ((REG_P (src) && GET_MODE (src) == DImode) + || (SUBREG_P (src) && GET_MODE (src) == V2DImode)); if (REG_P (src)) - subreg = gen_rtx_SUBREG (vmode, src, 0); + subreg = gen_rtx_SUBREG (V2DImode, src, 0); else subreg = copy_rtx_if_shared (src); emit_insn_before (gen_vec_interleave_lowv2di (copy_rtx_if_shared (subreg), @@ -1273,8 +1273,12 @@ has_non_address_hard_reg (rtx_insn *insn) (const_int 0 [0]))) */ static bool -convertible_comparison_p (rtx_insn *insn, enum machine_mode mode) +convertible_comparison_p (rtx_insn *insn, machine_mode mode) { + /* ??? Currently convertible for double-word DImode chain only. */ + if (TARGET_64BIT || mode != DImode) + return false; + if (!TARGET_SSE4_1) return false; @@ -1306,12 +1310,12 @@ static bool if (!SUBREG_P (op1) || !SUBREG_P (op2) - || GET_MODE (op1) != mode - || GET_MODE (op2) != mode + || GET_MODE (op1) != SImode + || GET_MODE (op2) != SImode || ((SUBREG_BYTE (op1) != 0 - || SUBREG_BYTE (op2) != GET_MODE_SIZE (mode)) + || SUBREG_BYTE (op2) != GET_MODE_SIZE (SImode)) && (SUBREG_BYTE (op2) != 0 - || SUBREG_BYTE (op1) != GET_MODE_SIZE (mode)))) + || SUBREG_BYTE (op1) != GET_MODE_SIZE (SImode)))) return false; op1 = SUBREG_REG (op1); @@ -1319,13 +1323,13 @@ static bool if (op1 != op2 || !REG_P (op1) - || GET_MODE (op1) != GET_MODE_WIDER_MODE (mode).else_blk ()) + || GET_MODE (op1) != DImode) return false; return true; } -/* The DImode version of scalar_to_vector_candidate_p. */ +/* The general version of scalar_to_vector_candidate_p. */ static bool general_scalar_to_vector_candidate_p (rtx_insn *insn, enum machine_mode mode) @@ -1344,7 +1348,7 @@ general_scalar_to_vector_candidate_p (rtx_insn *in if (GET_CODE (src) == COMPARE) return convertible_comparison_p (insn, mode); - /* We are interested in DImode promotion only. */ + /* We are interested in "mode" only. */ if ((GET_MODE (src) != mode && !CONST_INT_P (src)) || GET_MODE (dst) != mode)