From patchwork Fri Jul 27 09:37:54 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: 143023 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp599849ljj; Fri, 27 Jul 2018 02:40:21 -0700 (PDT) X-Google-Smtp-Source: AAOMgpeoUliD/E1hDkzQa3GDXaVW9eDHtq8qX1l4hV1UxPMM330npbVGSC0gVElnZ6k5ao8f1Bxc X-Received: by 2002:a63:f804:: with SMTP id n4-v6mr5515128pgh.106.1532684421742; Fri, 27 Jul 2018 02:40:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532684421; cv=none; d=google.com; s=arc-20160816; b=dkious34Rrt3Bj7Vusz1FmxqJlPWXrYN9ubtkZXjsDt0XNODsLgtZcXA4c0P+b+y64 VCvlkG3LuMm+ym2MIVfFxXe1B1D5pZwzPa/Iq2OT8HtODP9vnyh82Wi50+339/VTfUvI pCIwkCNQg+yoFMY3DQrrtCAkeCfor+L9qyNL6jcHcZntqglvYyvFbPFyHNk75qRWGEyw 7g9uQ6JI9JmLftvliFYDrqa6NKesraKzDm0MnFAb6AxmWlMSgrU8Zy3jUTlza6sUoF85 8q/V1tkuQ66kd0KsKu7X7JIWswXNJJGkOjVcuKtnYIbBtSEOhCEbwq0iYJT/q1xb76BS XJHw== 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=zfwVBwzOLyHocEz+mnje7BhiedRM4ny6sesabYTbU1A=; b=RFHQpAZZsIPfounScSZkFGeN9pGJ4zaL739OCX6qAlQviZD/TK5JObGT8QqDSWatKL g/j8ogFxGilhrkNJ7G16R1yBQ0OgqxwBtmaZj2Muym//uO3I4I8LNZP0Ds1oCRSAYiU7 GQRng0xpQlE/Ri2JCjDRKjvQ4U+KLwYzaXDE7wOl9h1olhAZ9MK6j8Dm+8YfX/PUtWUt 161EQr0NDtpWJ5KPiRdETkBX6UugEz09VAL3kyYpKsEBcQ2YZyrZ3i+NHzuNuhcTAe5J SX2OMhg8hF/rIX30ikSyHuEkGAhAz9gwrnJN7MmtZr2DVjtF9bUHTuAbcRY3FfMSVvHG 0Peg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=EwyKl7vc; spf=pass (google.com: domain of gcc-patches-return-482509-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom="gcc-patches-return-482509-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 o1-v6si3129442plb.279.2018.07.27.02.40.21 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Jul 2018 02:40:21 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-return-482509-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=EwyKl7vc; spf=pass (google.com: domain of gcc-patches-return-482509-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom="gcc-patches-return-482509-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=rhW9mGpTWNstCMtP sP5uzIBO0wtfadHI6Jr1ZET+JcAmEgXrI2iRP6skfMm+xcX6zZ2c16C0ekE1DJt6 gJYFtxBO7zdASyZ3FTzR42nUCE+brDj6nj5EwmvGGzWw8XzXl1aYSS6M7Cc7fo2l oTEvAWInhKmNACfy0mRAIwE73AI= 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=mHi6sG3vxRV66leBRrxpRY kIQrg=; b=EwyKl7vcCIrNMV8rSj2CSUGRxZtmOpYAfbtOuYzKG5W9ugHhf5VJTe fXrOz0MiLIyfhqVMSVjq+lvPvutHYJ4xf8VCfcBn18MUh2efG4ArT2Pxl5jQ8ox4 60a6eYGxB1f84A2Cyf8h3iCHjk+DaQyPQvjpGmdpVarO4ATfzLGBw= Received: (qmail 48043 invoked by alias); 27 Jul 2018 09:38:39 -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 47893 invoked by uid 89); 27 Jul 2018 09:38:38 -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_FAIL autolearn=ham version=3.3.2 spammy=3019 X-HELO: eggs.gnu.org Received: from eggs.gnu.org (HELO eggs.gnu.org) (208.118.235.92) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 27 Jul 2018 09:38:36 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fizCj-0006FY-89 for gcc-patches@gcc.gnu.org; Fri, 27 Jul 2018 05:38:34 -0400 Received: from foss.arm.com ([217.140.101.70]:47232) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fizCi-0006BH-VP for gcc-patches@gcc.gnu.org; Fri, 27 Jul 2018 05:38:33 -0400 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 BA2A01684; Fri, 27 Jul 2018 02:38:32 -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 CFE363F575; Fri, 27 Jul 2018 02:38:31 -0700 (PDT) From: Richard Earnshaw To: gcc-patches@gcc.gnu.org, hubicka@ucw.cz, ubizjak@gmail.com Cc: Richard Earnshaw Subject: [PATCH 10/11] x86 - add speculation_barrier pattern Date: Fri, 27 Jul 2018 10:37:54 +0100 Message-Id: <1532684275-13041-11-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 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.140.101.70 This patch adds a speculation barrier for x86, based on my understanding of the required mitigation for that CPU, which is to use an lfence instruction. This patch needs some review by an x86 expert and if adjustments are needed, I'd appreciate it if they could be picked up by the port maintainer. This is supposed to serve as an example of how to deploy the new __builtin_speculation_safe_value() intrinsic on this architecture. * config/i386/i386.md (unspecv): Add UNSPECV_SPECULATION_BARRIER. (speculation_barrier): New insn. --- gcc/config/i386/i386.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 559ad93..73948c1 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -301,6 +301,9 @@ (define_c_enum "unspecv" [ ;; For CLDEMOTE support UNSPECV_CLDEMOTE + + ;; For Speculation Barrier support + UNSPECV_SPECULATION_BARRIER ]) ;; Constants to represent rounding modes in the ROUND instruction @@ -20979,6 +20982,13 @@ (define_insn "cldemote" [(set_attr "type" "other") (set_attr "memory" "unknown")]) +(define_insn "speculation_barrier" + [(unspec_volatile [(const_int 0)] UNSPECV_SPECULATION_BARRIER)] + "" + "lfence" + [(set_attr "type" "other") + (set_attr "length" "3")]) + (include "mmx.md") (include "sse.md") (include "sync.md")