From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qv1-xf2b.google.com (mail-qv1-xf2b.google.com [IPv6:2607:f8b0:4864:20::f2b]) by sourceware.org (Postfix) with ESMTPS id 4539B393BC04 for ; Tue, 5 Jan 2021 07:20:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 4539B393BC04 Received: by mail-qv1-xf2b.google.com with SMTP id p12so14257461qvj.13 for ; Mon, 04 Jan 2021 23:20:10 -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=8UpY3q4kOFZpzRjs0BXurISMdJRJLxVntdsUnArmWv4=; b=mrOqhQmK76RsH4/Uq99I6XoaBnBk1RaG4R+McMDM86MMHj4B0ix7Y8fDXAEFzJR+qY cKAkamol15yYIYOelHliWpkKCQ1ieYeBDIvVJhJdvpjU5qNL8m8u0sjc0OtWiG3/0EHs lnE88+fmj/PPFOQdjpa052DRyuU08OrvKzSE4PSW6MSLl0oM0XJ1aMtLwGw1IahqhOH0 5XZORT5jiPUX4Wz0yl1Lr3L0pk2ZOfEqw53pyy0avgM6QB7z6lmzIcFIlKFJlx8GwRqx j7eaD5+EcpBdEGQVEWnqy28GZlbkUn3IFGjXCXIObFNTycAaZCI2gcHJwF/+YU0W8gJr 6opQ== X-Gm-Message-State: AOAM532UizDadv7IvVGkytcxixvsUFJ/zE1PLtHlgeS8h1x0Z4KMMi7f t4oKMPSfKmWqQ9xDjGMCyXBFMsNuxrlySh/Gz0E= X-Google-Smtp-Source: ABdhPJzLmP0oit1tk4LRTAiKicOK/9YiR9T7T4hZaK3CeVTdnl2liPNgHZcuOD/ThWFtxuZ61WYDQs0Kkm2XeML1m34= X-Received: by 2002:ad4:58c2:: with SMTP id dh2mr56462014qvb.4.1609831209955; Mon, 04 Jan 2021 23:20:09 -0800 (PST) MIME-Version: 1.0 References: <20210104084920.GK3788@tucnak> In-Reply-To: From: Uros Bizjak Date: Tue, 5 Jan 2021 08:19:58 +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=-3.1 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 07:20:11 -0000 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)) 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. Uros.