From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qv1-xf32.google.com (mail-qv1-xf32.google.com [IPv6:2607:f8b0:4864:20::f32]) by sourceware.org (Postfix) with ESMTPS id D6E483858D39 for ; Tue, 14 Mar 2023 21:52:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D6E483858D39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivosinc.com Received: by mail-qv1-xf32.google.com with SMTP id nv15so13637156qvb.7 for ; Tue, 14 Mar 2023 14:52:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20210112.gappssmtp.com; s=20210112; t=1678830777; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=wRxckG/0KFrCR091V2ddwzlZtoq3e6dBMmr9G1wbOkQ=; b=2it6vgLofSK78JLZutg3tr2U/wgUEe5noHRVK4wkZ3KGmFvfOb9lcNu1nT2Esr/n7X /Ev3pZ34toYPeUhENPQ1vK5+ovAEI7F/7j+pCfhzxPoFst7ZQkdNscT3wuGTFCmNFDzJ 2XmFcQrDfwHW1JS/f6t2VMOhlI3PL7VnzD//rZJX1dUt+vRuf3Jp73DjeqWUca++FRWU x/Ng6WDtLBoWhoPqRR5dd09NDQ1Tg/S3XsAEU7gXi20sHeyG3jtGoKQqQxhBkY4+PM+X TIu8y4fTmmUkNyQDl6KJ5bbQNEQur5ZhMNXMfmouVW7OD1GBcSnVphB0J7fHuRWWshRw lxyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678830777; 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=wRxckG/0KFrCR091V2ddwzlZtoq3e6dBMmr9G1wbOkQ=; b=trulemqkjgblxrilmY3/wlSJMB7JL9APCRRUOYMxUld37LljpXvv72zcMx6z6MFYj+ 7HE6YRZmXfEIEKVXs6oQ4/NLvK36+hgYkWieMbKkXitHJcSoELxH/htBjJpur9yg7ImD su8XoWJo7HQK25gEg2OjCg2nbaoPGhmnzgJ37GcSqUEw2qJka63xsthHcH9QR8rBOrW5 IdBjrN/em5+NvBzNXCuYIFRrAOeJMvhohelW1J+blE2B4MwF2YIBtdEe2EE6XHpB+qBw JyK0SLx8/U03uEQwvV2qIQ0z+5qmFP1Xlmu4ZRveQAurb097j/0FJOdmciy8gXY9+gYP hc+w== X-Gm-Message-State: AO0yUKUwVbkVShHw6HHjdSlhFpo6IBdSRrCSWz8jvO2SpJKY0rdw9Po3 GmV+TqqqYEThnZb8wRGlCdtkr28aANsD5k/nG6w= X-Google-Smtp-Source: AK7set8+UStEmgaMhi9+R+RJw+4RymAjC37VJDerIaVvOHhirG16sUF/lUL0sMQNk39DhjaCLQxgPw== X-Received: by 2002:ac8:7fc2:0:b0:3d3:fe29:1caf with SMTP id b2-20020ac87fc2000000b003d3fe291cafmr3391690qtk.0.1678830776763; Tue, 14 Mar 2023 14:52:56 -0700 (PDT) Received: from system76-pc.ba.rivosinc.com ([136.57.172.92]) by smtp.gmail.com with ESMTPSA id e2-20020ac84902000000b003b869f71eedsm790035qtq.66.2023.03.14.14.52.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Mar 2023 14:52:56 -0700 (PDT) From: Michael Collison To: gcc-patches@gcc.gnu.org Subject: [PATCH] vect: Verify that GET_MODE_NUNITS is greater than one. Date: Tue, 14 Mar 2023 17:52:56 -0400 Message-Id: <20230314215256.4153026-1-collison@rivosinc.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP 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: While working on autovectorizing for the RISCV port I encountered an issue where can_duplicate_and_interleave_p assumes that GET_MODE_NUNITS is a evenly divisible by two. The RISC-V target has vector modes (e.g. VNx1DImode), where GET_MODE_NUNITS is equal to one. Tested on RISCV and x86_64-linux-gnu. Okay? 2023-03-09 Michael Collison * tree-vect-slp.cc (can_duplicate_and_interleave_p): Check that GET_MODE_NUNITS is greater than one. --- gcc/tree-vect-slp.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index 9a4e000925e..add58113fa8 100644 --- a/gcc/tree-vect-slp.cc +++ b/gcc/tree-vect-slp.cc @@ -426,7 +426,8 @@ can_duplicate_and_interleave_p (vec_info *vinfo, unsigned int count, if (vector_type && VECTOR_MODE_P (TYPE_MODE (vector_type)) && known_eq (GET_MODE_SIZE (TYPE_MODE (vector_type)), - GET_MODE_SIZE (base_vector_mode))) + GET_MODE_SIZE (base_vector_mode)) + && known_gt (GET_MODE_NUNITS (TYPE_MODE (vector_type)), 1)) { /* Try fusing consecutive sequences of COUNT / NVECTORS elements together into elements of type INT_TYPE and using the result -- 2.34.1