From patchwork Fri Jul 27 09:37:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Richard Earnshaw \(lists\)" X-Patchwork-Id: 143019 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp598767ljj; Fri, 27 Jul 2018 02:39:05 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfr5Xlu3oki9oB6XfklQjPCZFNSDpiSq9zQrGeoV6VuU/bhDjFZmP3B8c2Bad2YWaTB3qxy X-Received: by 2002:a63:ab4c:: with SMTP id k12-v6mr5329543pgp.386.1532684345581; Fri, 27 Jul 2018 02:39:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532684345; cv=none; d=google.com; s=arc-20160816; b=RY/KHCeX9fvob38eLb6MUk6m+VgJS3seRxoVt/QyBK40XWDxN6j1uvKCeOUJ78jqLg R2GE13pqjhF7q8xFwL/Nh11+FOUqbahwPIZugNMpURh5voCUxoLsTZ4vKOt0FSPXAorh nVpZo2xq9UhEKWMU7jyDNjKg/6Eodv4Wx/pMzlHa+6QVVvK+tdzQBCvpT+UTQ9DUVY1Y NZhmSGKQUfWQF5ZXT4R7KWBhMSHMCD3hkn+R3Hs7e3isNjEHQiK6Ukx9bJR20r/B8jud tbM2TPJCbI8S2vFdp34uKCCkadQWXlmFlpXtj6vQQAlEN+U59Xp7jpIpkPH2+fwGoj77 WxsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:delivered-to:sender:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mailing-list:dkim-signature :domainkey-signature:arc-authentication-results; bh=m8RvBy1C1FfkZciGh9kBFMLkklyo+EfjWH9/QV02BGM=; b=fPB9ACmhkVe+It5+RQsXHdfdrt+TFL9SWz6vvfs2ndK+WjgUBfl1Z4XH7PbHOUdFoU NZ3BGr03EUv84rby2EjiezymrkqJDOfPq/mTpjRmmx8QJnaFG8RhWK6gtvPoWrGjGbo+ vS9A9HZlSlFTIUP7WS8PMY3k50zlpP6KxKoMMzBnsFkgoo8+pB+Ydf47nl1z4UvooJGx vRxBB4LH8smTwX+vdpOkUTax6ZovbCXcvbvj4+ZCzWhGmb9k8wc3YHVaIBUT0WegZ6Nl AOu5HeylixZWcv9kT96kVSCbuqWTqSua3AQ+gtaMHpDH+EROHXPjtK3y2X7ysj/N6/mV ZjVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=wrFjtk7R; spf=pass (google.com: domain of gcc-patches-return-482505-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom="gcc-patches-return-482505-patch=linaro.org@gcc.gnu.org" Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id o189-v6si3426482pga.577.2018.07.27.02.39.05 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Jul 2018 02:39:05 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-return-482505-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=wrFjtk7R; spf=pass (google.com: domain of gcc-patches-return-482505-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom="gcc-patches-return-482505-patch=linaro.org@gcc.gnu.org" 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:message-id:in-reply-to:references :mime-version:content-type; q=dns; s=default; b=Dswplxvvt/XxhXc1 kUR/uvwpM3VYRmkYbljP5v2UxA6ge2cCyWea8VkcBUmRq5lbBQEd2AAoaMlFn7UX QlIQsZoTT6VCzHKIF3pwMKhznC8xXd5abtmb+Ws10w4yUHesyXxP3tMBMszr/KeG D1xZb0LdqB2ol6HuyxCSU+dawJk= 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:message-id:in-reply-to:references :mime-version:content-type; s=default; bh=AdI5PGpkQBGUs5pQsM0Q7+ rCcK8=; b=wrFjtk7Ri+K0XVyU2V0toRzq8xh8sBOSCvt4nedvoD/nAhxTM6i3sY zh7hgNvbrxUgPIHUTWO82ktCapk5hPmqUag00S1TC6ZUc90vvR9nSBmUQdWT6aST XVlrEl6E1lipIcjFUP1+V+MionQF2ZSB2HD9Y13+vBMzkmQvP/ZKk= Received: (qmail 46741 invoked by alias); 27 Jul 2018 09:38:30 -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 46592 invoked by uid 89); 27 Jul 2018 09:38:28 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy=wireless, Wireless, 1687, enumerators X-HELO: foss.arm.com Received: from usa-sjc-mx-foss1.foss.arm.com (HELO foss.arm.com) (217.140.101.70) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 27 Jul 2018 09:38:26 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 09BDB1682; Fri, 27 Jul 2018 02:38:25 -0700 (PDT) Received: from e120077-lin.cambridge.arm.com (e120077-lin.cambridge.arm.com [10.2.207.74]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6631C3F575; Fri, 27 Jul 2018 02:38:24 -0700 (PDT) From: Richard Earnshaw To: gcc-patches@gcc.gnu.org Cc: Richard Earnshaw Subject: [PATCH 02/11] Arm - add speculation_barrier pattern Date: Fri, 27 Jul 2018 10:37:46 +0100 Message-Id: <1532684275-13041-3-git-send-email-Richard.Earnshaw@arm.com> In-Reply-To: <1532684275-13041-1-git-send-email-Richard.Earnshaw@arm.com> References: <1531154299-28349-1-git-send-email-Richard.Earnshaw@arm.com> <1532684275-13041-1-git-send-email-Richard.Earnshaw@arm.com> MIME-Version: 1.0 This patch defines a speculation barrier for AArch32. * config/arm/unspecs.md (unspecv): Add VUNSPEC_SPECULATION_BARRIER. * config/arm/arm.md (speculation_barrier): New expand. (speculation_barrier_insn): New pattern. --- gcc/config/arm/arm.md | 21 +++++++++++++++++++++ gcc/config/arm/unspecs.md | 1 + 2 files changed, 22 insertions(+) diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 361a026..ca2a2f5 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -12012,6 +12012,27 @@ (define_insn "" [(set_attr "length" "4") (set_attr "type" "coproc")]) +(define_expand "speculation_barrier" + [(unspec_volatile [(const_int 0)] VUNSPEC_SPECULATION_BARRIER)] + "TARGET_EITHER" + " + /* Don't emit anything for Thumb1 and suppress the warning from the + generic expansion. */ + if (!TARGET_32BIT) + DONE; + " +) + +;; Generate a hard speculation barrier when we have not enabled speculation +;; tracking. +(define_insn "*speculation_barrier_insn" + [(unspec_volatile [(const_int 0)] VUNSPEC_SPECULATION_BARRIER)] + "TARGET_32BIT" + "isb\;dsb\\tsy" + [(set_attr "type" "block") + (set_attr "length" "8")] +) + ;; Vector bits common to IWMMXT and Neon (include "vec-common.md") ;; Load the Intel Wireless Multimedia Extension patterns diff --git a/gcc/config/arm/unspecs.md b/gcc/config/arm/unspecs.md index b05f85e..1941673 100644 --- a/gcc/config/arm/unspecs.md +++ b/gcc/config/arm/unspecs.md @@ -168,6 +168,7 @@ (define_c_enum "unspecv" [ VUNSPEC_MCRR2 ; Represent the coprocessor mcrr2 instruction. VUNSPEC_MRRC ; Represent the coprocessor mrrc instruction. VUNSPEC_MRRC2 ; Represent the coprocessor mrrc2 instruction. + VUNSPEC_SPECULATION_BARRIER ; Represents an unconditional speculation barrier. ]) ;; Enumerators for NEON unspecs.