From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7795 invoked by alias); 28 Jun 2018 07:16:32 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 7332 invoked by uid 89); 28 Jun 2018 07:16:16 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-11.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS,TIME_LIMIT_EXCEEDED autolearn=unavailable version=3.3.2 spammy=Knowing, Hx-languages-length:1187 X-HELO: mail-io0-f176.google.com Received: from mail-io0-f176.google.com (HELO mail-io0-f176.google.com) (209.85.223.176) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 28 Jun 2018 07:16:03 +0000 Received: by mail-io0-f176.google.com with SMTP id l25-v6so4231021ioh.12 for ; Thu, 28 Jun 2018 00:16:03 -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=f4r5t0hE9wN0KeX1mGuOgA3LpHJANc24FM4HVjAZOnY=; b=Mt4RQocnuahXE1dk4Sei3OhqSIGLqU0G+8nHYEpzESB/EImznZYo/ccp5RvzKmkSqq i/FYIglWS9fMoEGXk77YBpweqCky+V1dnBlSA70pd7YHnLy1Jf45pwDRaOT7DMOlWC7p smkWjj3o1Zt0cfz0ogtESVV9BEWu4ECSeec67ujcI6lf5xF1w649UX8D+vROBT26HymM 4TIxtH2WMaLvM2/uwKx5uAJ/LOcBZK8I8HE9GGcXKPY9skKNbuHjHy2jIyEX/7KIuOL7 hB9STAIHJR9lB6GzPfbRTJZLIXNeo2532vZyjooWz4UWK403Odqp2HhEnk4n4xTXvfxR UxtQ== MIME-Version: 1.0 Received: by 2002:a02:2e51:0:0:0:0:0 with HTTP; Thu, 28 Jun 2018 00:16:01 -0700 (PDT) From: Uros Bizjak Date: Thu, 28 Jun 2018 07:16:00 -0000 Message-ID: Subject: Re: [patch, i386] false dependencies fix To: "gcc-patches@gcc.gnu.org" Cc: Jeff Law , "Nesterovskiy, Alexander" Content-Type: text/plain; charset="UTF-8" X-SW-Source: 2018-06/txt/msg01769.txt.bz2 Hello! >> --- i386.md (revision 259756) >> +++ i386.md (working copy) >> @@ -3547,7 +3547,7 @@ >> { >> case MODE_DF: >> if (TARGET_AVX && REG_P (operands[0]) && REG_P (operands[1])) >> - return "vmovsd\t{%1, %0, %0|%0, %0, %1}"; >> + return "%vmovsd\t{%d1, %0|%0, %d1}"; >> return "%vmovsd\t{%1, %0|%0, %1}"; >> >> case MODE_V4SF: >> @@ -3748,7 +3748,7 @@ >> { >> case MODE_SF: >> if (TARGET_AVX && REG_P (operands[0]) && REG_P (operands[1])) >> - return "vmovss\t{%1, %0, %0|%0, %0, %1}"; >> + return "%vmovss\t{%d1, %0|%0, %d1}"; >> return "%vmovss\t{%1, %0|%0, %1}"; > So what I'm confused about is in the original output template operand 0 > is duplicated. In the new template operand 1 is duplicated. > > Presumably what you're trying to accomplish is avoiding a false read on > operand 0 (the destination)? Can you please confirm? > Knowing that should also help me evaluate the changes to recp and rsqrt > since they're being changed to the same style encoding when operating > strictly on registers. Please don't change "v" -> "%v" for TARGET_AVX templates. We know that in this case, all insn mnemonics are prefixed with "v". Uros.