From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by sourceware.org (Postfix) with ESMTPS id C1A883857C52 for ; Thu, 14 Mar 2024 15:42:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C1A883857C52 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=baylibre.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C1A883857C52 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::42b ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1710430934; cv=none; b=ijm+yfjLmtiAZGSDE4Y3b42YVUB+g+w11sH9ftqpZejle1Wdfe68RObi9nHGBs5dAyMfrA6i5CCzlQUvXuFnI87ZumyN6fPOxyhw7xIW6Q2qQsNxblZlvpSsueIyv210zl+sSW+JzegBvLBxWOvnMyeyYeu7w8ogc9Kj4tXJDmM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1710430934; c=relaxed/simple; bh=o+z+nrhaP9gWPRLj6Aluq2DDoEHNL0uAIC5sfpAvqds=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Muxa5K5BhTEpP/PXbB2LfL8a2ZhYCiCUA2Lw/S8lfMhheOARtuUzOON71q41Bw0h21bSG2LuFUUxiKw8Gq7eQHjNofXf7iQcfNcI+h4qteYdzYdC4wAQ04KSt2wBupQgoFRc+Lvmw2QD/Z4vKIzjpZlCccHXakC89hgP4vM8FRY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-33ddd1624beso735894f8f.1 for ; Thu, 14 Mar 2024 08:42:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1710430930; x=1711035730; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=YVZZMu/SEao4Vv8k9vPRdOYA6wmhGNQv8/LTQBlzk6U=; b=KyaMeS8GlMOcaRqs9R5/rj8MGcJAjAxTFaXn7Vt+9OYfUfmoK56qEjslju3feRip6V IapWmzubWWAb0ujuuAxvT9Yz3Q8V198zmalQxiREa1RZkFCN97KCFzlNS/W1+cRuRwlq GTqDVGRDcEGqy9bqXNyzNOl8z5+113YxZrWBeaIw6uXncRoZgRMHc7lMWJGYM1ROBUmr XjRCpx4Km9EkEV2XzNvFODc0K7Nwwxq62lUgcw2DtfRi3nSmcPNJW+XT8PiR2WhwxKgR aMJeiwTxtcnBWcj39pMw7so4rbBMtmLIx8x7nRT94/ERG10vvxE4PKzeRbhXU5MzxMX3 VBjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710430930; x=1711035730; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YVZZMu/SEao4Vv8k9vPRdOYA6wmhGNQv8/LTQBlzk6U=; b=em+Gkxpa50N2z2ac3wF5e+XTgL7WCoFSgs/e8KjRWbvDyc9VIwXUEDWcRl7h8M4h2Z /5ol2VdTO51E2N93YXMRxpQkqkaDZipEuRwD+xM5fisovJBTGwlGaLkz82Hwk1C3iytk Vd0TyoIN/iv4yYlOSp6C7dACee/cQyJp4Zk+gVh49Wm+iJmtkAR/Nu9BYe1nJQwaVRST jp6nHSUBTQZJD0Ifd8TFKJ5KU5KDP8pk6K9BuvkDAVXpbTxkwigveH3nvkIb42okKvcG VUlgRBbGd/Fo/RwO0GRWnEsMoykbYHRfQqYgiqUdMr35cB6I5Zq92FM1lqM27FKLlwzN YiqQ== X-Gm-Message-State: AOJu0Yz2o3F0mG3Ph58qZm7q5nN+lGwNCSNo7NmMj5oBLH6BLhQlkPH+ /MWRM599UKY3TJjM4NHm2X1wz8vlPex/7maCO5JW/GI/GI3T0YNSPTqtX/KKMztXmKPPJOIinDh 8JB4= X-Google-Smtp-Source: AGHT+IHMiscv9LkllHncu8Dix8Jf6u7FQ3VokO/Jo9D6J36qog5yMXKq3FkMRAhI4q9kdD6atYVh/w== X-Received: by 2002:adf:db4d:0:b0:33e:621e:35b2 with SMTP id f13-20020adfdb4d000000b0033e621e35b2mr2313650wrj.6.1710430929686; Thu, 14 Mar 2024 08:42:09 -0700 (PDT) Received: from arnold.baylibre (laubervilliers-658-1-213-31.w90-63.abo.wanadoo.fr. [90.63.244.31]) by smtp.googlemail.com with ESMTPSA id s15-20020adfeccf000000b0033e9e26a2d0sm1009829wro.37.2024.03.14.08.42.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Mar 2024 08:42:08 -0700 (PDT) From: Andrew Stubbs To: gcc-patches@gcc.gnu.org Subject: [PATCH] vect: Use xor to invert oversized vector masks Date: Thu, 14 Mar 2024 15:41:53 +0000 Message-ID: <20240314154153.263896-1-ams@baylibre.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-9.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Don't enable excess lanes when inverting vector bit-masks smaller than the integer mode. This is yet another case of wrong-code due to mishandling of oversized bitmasks. This issue shows up in vect/tsvc/vect-tsvc-s278.c and vect/tsvc/vect-tsvc-s279.c if I set the preferred vector size to V32 (down from V64) on amdgcn. OK for mainline? Andrew gcc/ChangeLog: * expr.cc (expand_expr_real_2): Use xor to invert vector masks. --- gcc/expr.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gcc/expr.cc b/gcc/expr.cc index 403eeaa108e4..3540327d879e 100644 --- a/gcc/expr.cc +++ b/gcc/expr.cc @@ -10497,6 +10497,17 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode, immed_wide_int_const (mask, int_mode), target, 1, OPTAB_LIB_WIDEN); } + /* If it's a vector mask don't enable excess bits. */ + else if (VECTOR_BOOLEAN_TYPE_P (type) + && SCALAR_INT_MODE_P (mode) + && maybe_ne (GET_MODE_PRECISION (mode), + TYPE_VECTOR_SUBPARTS (type).to_constant ())) + { + auto nunits = TYPE_VECTOR_SUBPARTS (type).to_constant (); + temp = expand_binop (mode, xor_optab, op0, + GEN_INT ((HOST_WIDE_INT_1U << nunits) - 1), + target, true, OPTAB_WIDEN); + } else temp = expand_unop (mode, one_cmpl_optab, op0, target, 1); gcc_assert (temp); -- 2.41.0