From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 8DBA43858C62; Wed, 15 Feb 2023 07:08:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8DBA43858C62 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1676444937; bh=zw7TRKyTrQsspVDfKZgf2bxLkM1GFLu2XnxZ2oU2uUE=; h=From:To:Subject:Date:In-Reply-To:References:From; b=x6bYLh2DFr1XzgEZDt5w8mKYTLOUCXdO0YSIW3K5Vf2PfaDuENxWOQ2Aa/bKFYCmR NyZvzx8T07XZdp9gAfrPHfwwhlUFi1X3cafW56Xy0kDZbRqXRZMxWccAUEb5LR0jNh H8MOfPI0jFhkkaWw4Np9JUoxUnBvMzHOFrmqvOvw= From: "crazylht at gmail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/107096] Fully masking vectorization with AVX512 ICEs gcc.dg/vect/vect-over-widen-*.c Date: Wed, 15 Feb 2023 07:08:54 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 13.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: crazylht at gmail dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D107096 --- Comment #10 from Hongtao.liu --- >=20 > There's no other way to do N bit to two N/2 bit hi/lo (un)packing > (there's a 2x N/2 bit -> N bit operation, for whatever reason). > There's also no way to transform the d rgroup mask into the > f rgroup mask for the first example aka duplicate bits in place, > { b0, b1, b2, ... bN } -> { b0, b0, b1, b1, b2, b2, ... bN, bN }, > nor the reverse. >=20 Can we just do VIEW_CONVERT_EXPR for vectype instead of mask_type. .i.e we can do VCE to tranform V8SI to V16HI, then use mask_load for V16HI with = same mask {b0, b0, b1, b1, b2, b2, .}, then VCE it to back to V8SI, it should be= ok as long as duplicated bits in place.(or VCE V16HI to V8SI then use mask {b0, b1, b2, ..., bN}, and VCE V8SI back to V16HI after masked load/move).=