From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qt1-x82b.google.com (mail-qt1-x82b.google.com [IPv6:2607:f8b0:4864:20::82b]) by sourceware.org (Postfix) with ESMTPS id 0F57D382EAC5 for ; Tue, 5 Jan 2021 10:30:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0F57D382EAC5 Received: by mail-qt1-x82b.google.com with SMTP id u21so20454413qtw.11 for ; Tue, 05 Jan 2021 02:30:25 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=20muBoJfnUgX1N4jds5OJrQPldAhFhD4kMmYiqLGcCM=; b=itegIt0Cd5tvhY9ChFrCY6rQ6kDekZuqj6zbI/+RGEOzc4c6tu47px1NHi3SKKGdKL nJeF2mNJ6BMOziSzZsW9N6NuJWixZa2C34l0WENZ5JQtMZLVsG3z2IURnU/PCDd8cq77 CWVCr2U1msD7njF67+RIAA89yVZAFz8l5Z1FSZ28dHU4SMODTZEwGOwwMkvus19QOG8B KGn2+1Cky4jhuv/BqKN7A0i3weOUQJbJfHfKySnj4GZUSge7C8UviX3CQX9OzcoDKUUs Xh8WsHxcc5EAO1gee6FjTaG5+Ps0lyHWatwA3Crwt8GeSUzRJjtTA5KXUeJcVHtwNcbZ 5HcQ== X-Gm-Message-State: AOAM530Qq3yx+grCu7R7QP6FeCjUd29PlumYBGD7T88cmfk/2zfBC/Yg 4sS0VNw/iDgcJAscOFDlgaqGJX1iK46VvZo7aDs= X-Google-Smtp-Source: ABdhPJw0/TkhrjgDDJ9+kvG+ODKRWEwib7QJVhUnODsYq7QgSJiy9lObAsTygaXX870ZZGNxmuategwXIxw3lUa5quY= X-Received: by 2002:ac8:5806:: with SMTP id g6mr75439742qtg.292.1609842624636; Tue, 05 Jan 2021 02:30:24 -0800 (PST) MIME-Version: 1.0 References: <20210104084920.GK3788@tucnak> In-Reply-To: From: Uros Bizjak Date: Tue, 5 Jan 2021 11:30:13 +0100 Message-ID: Subject: Re: [PATCH]i386: Optimize pmovskb on zero_extend of subreg HI of the result [PR98461] To: Hongtao Liu Cc: Jakub Jelinek , GCC Patches , Kirill Yukhin Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jan 2021 10:30:26 -0000 On Tue, Jan 5, 2021 at 11:25 AM Hongtao Liu wrote: > > On Tue, Jan 5, 2021 at 3:20 PM Uros Bizjak wrote: > > > > On Tue, Jan 5, 2021 at 8:04 AM Uros Bizjak wrote: > > > > > > > > +(define_split > > > > + [(set (match_operand:SI 0 "register_operand") > > > > + (zero_extend:SI > > > > + (not:HI > > > > + (subreg:HI > > > > + (unspec:SI > > > > + [(match_operand:V16QI 1 "register_operand")] > > > > + UNSPEC_MOVMSK) 0))))] > > > > + "TARGET_SSE2" > > > > + [(set (match_dup 2) > > > > + (unspec:SI [(match_dup 1)] UNSPEC_MOVMSK)) > > > > + (set (match_dup 0) > > > > + (match_dup 3))] > > > > > > Just write: > > > > > > (set (match_dup 0) > > > (xor:SI (match_dup 2)(const_int 65535)) > > > > Yes, changed. > > > BTW: This could be a universal combine splitter to simplify > > > > unsigned int foo (unsigned short z) > > { > > return (unsigned short)~z; > > } > > > > Trying 7 -> 8: > > 7: r87:HI=~r88:SI#0 > > REG_DEAD r88:SI > > 8: r86:SI=zero_extend(r87:HI) > > REG_DEAD r87:HI > > Failed to match this instruction: > > (set (reg:SI 86) > > (zero_extend:SI (not:HI (subreg:HI (reg:SI 88) 0)))) > > > > But combine does not "split" to one insns. > > Yes, according to PSabi, the top half of the register is not > necessarily 0, so if you add the splitter, it just changes from notl + > movzwl to xor + movzwl, which doesn't look better? Indeed. The patch is OK. Uros.