From patchwork Tue Aug 20 09:18:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Leoshkevich X-Patchwork-Id: 1149944 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-507335-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="qbOLMqRS"; 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 46CQHR1vQHz9sBF for ; Tue, 20 Aug 2019 19:20:03 +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:from :to:cc:subject:date:in-reply-to:references:mime-version :content-transfer-encoding:message-id; q=dns; s=default; b=oviS9 aKt3FUgmwsG1ovFET1TaXbkcEK/JGqa3qTqbJuzgvrQ1FbwYcPfyrOOa09G0HS2P qtRabGwAXsrbizUtDYgW/Nu8P3N/f5fm2XvzdqecTnsBiiJdX2ppdb2Qc3AiT42u OrqPdgEucTjvRts4nYWAFKt59NlCfs39yfXJN0= 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:from :to:cc:subject:date:in-reply-to:references:mime-version :content-transfer-encoding:message-id; s=default; bh=l8PKjdKjaFx yh+5sUO60+V6KjbU=; b=qbOLMqRSSjBAgdcj953HbFG3kLIHVZbEaaEWR/m85l1 B6eIUZw9tqkSxRwVnfP0TTQHBLFBQ1Kc+obI0RJ5Ihdw5Z3aWursUjfGFDN8d9KL dIgnawiF7LPf05bzTLpFIkU0e6VMsDpk72TrwEWsLkPiJMO9dcZlvZnhMrJJqMPc = Received: (qmail 25210 invoked by alias); 20 Aug 2019 09:19:38 -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 25155 invoked by uid 89); 20 Aug 2019 09:19:37 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-21.9 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.1 spammy=ck 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; Tue, 20 Aug 2019 09:19:36 +0000 Received: from pps.filterd (m0098416.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x7K97oKc189823 for ; Tue, 20 Aug 2019 05:19:34 -0400 Received: from e06smtp01.uk.ibm.com (e06smtp01.uk.ibm.com [195.75.94.97]) by mx0b-001b2d01.pphosted.com with ESMTP id 2ugd9ejac0-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 20 Aug 2019 05:19:34 -0400 Received: from localhost by e06smtp01.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 20 Aug 2019 10:19:32 +0100 Received: from b06cxnps4074.portsmouth.uk.ibm.com (9.149.109.196) by e06smtp01.uk.ibm.com (192.168.101.131) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Tue, 20 Aug 2019 10:19:31 +0100 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps4074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x7K9JT6l41418874 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 20 Aug 2019 09:19:29 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9A01DA405B; Tue, 20 Aug 2019 09:19:29 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6ECC5A4059; Tue, 20 Aug 2019 09:19:29 +0000 (GMT) Received: from white.boeblingen.de.ibm.com (unknown [9.152.97.160]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP; Tue, 20 Aug 2019 09:19:29 +0000 (GMT) From: Ilya Leoshkevich To: gcc-patches@gcc.gnu.org Cc: Ilya Leoshkevich Subject: [PATCH 4/8] S/390: Implement vcond expander for V1TI,V1TF Date: Tue, 20 Aug 2019 11:18:41 +0200 In-Reply-To: <20190820091845.80750-1-iii@linux.ibm.com> References: <20190820091845.80750-1-iii@linux.ibm.com> MIME-Version: 1.0 x-cbid: 19082009-4275-0000-0000-0000035B076C X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19082009-4276-0000-0000-0000386D26B7 Message-Id: <20190820091845.80750-5-iii@linux.ibm.com> X-IsSubscribed: yes Currently gcc does not emit wf{c,k}* instructions when comparing long double values. Middle-end actually adds them in the first place, but then veclower pass replaces them with floating point register pair operations, because the corresponding expander is missing. gcc/ChangeLog: 2019-08-09 Ilya Leoshkevich * config/s390/vector.md (vcondv1tiv1tf): New variant of vcond$a$b expander. --- gcc/config/s390/vector.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gcc/config/s390/vector.md b/gcc/config/s390/vector.md index 0702e1de835..7d90d97b006 100644 --- a/gcc/config/s390/vector.md +++ b/gcc/config/s390/vector.md @@ -629,6 +629,21 @@ DONE; }) +(define_expand "vcondv1tiv1tf" + [(set (match_operand:V1TI 0 "register_operand" "") + (if_then_else:V1TI + (match_operator 3 "comparison_operator" + [(match_operand:V1TF 4 "register_operand" "") + (match_operand:V1TF 5 "nonmemory_operand" "")]) + (match_operand:V1TI 1 "nonmemory_operand" "") + (match_operand:V1TI 2 "nonmemory_operand" "")))] + "TARGET_VXE" +{ + s390_expand_vcond (operands[0], operands[1], operands[2], + GET_CODE (operands[3]), operands[4], operands[5]); + DONE; +}) + (define_expand "vcondu" [(set (match_operand:V_HW 0 "register_operand" "") (if_then_else:V_HW