From patchwork Tue Jan 16 03:04:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "juzhe.zhong@rivai.ai" X-Patchwork-Id: 188368 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:42cf:b0:101:a8e8:374 with SMTP id q15csp20894dye; Mon, 15 Jan 2024 19:06:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IH9tFuEjeukdapuMOyv7/iUVwVpPVPSJl1L0OAxymMSwOkP5HubZOk5JiXlR1rSdIp/IGLz X-Received: by 2002:a05:622a:243:b0:429:aee6:ba49 with SMTP id c3-20020a05622a024300b00429aee6ba49mr8283838qtx.32.1705374362775; Mon, 15 Jan 2024 19:06:02 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1705374362; cv=pass; d=google.com; s=arc-20160816; b=LNT/l2ZXknPiXMVWBE2ZIcrf1qw8SeqUJlhAkLZzX2f1pbAQW/DXMnWTTPuRt++lA9 9AdhD3UgRjBQclwseXb/5Lm7ZA6azk4j/FH60I02wPKKe0BB2swP/fFTxYIW+tO50KU5 kPnXcI4XP0PZEM3ojD4ti0Wkv6MpeWmBeOPy7rjp2NacNXdCt9I1FkskZ05rYmyo7646 zDIsSd+8oexrsvNKY7gbDWFbpsCpKoBaDCdGKiINytKmbpsDT4UM8WHe+gGYBMIM+lGL Js8Up3z4TmxLblga93IA4dCNTut121+DhVk7tHAA5aWJLJebObJu2vk56CoaLcC/uiut IJyQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:feedback-id :content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:arc-filter:dmarc-filter:delivered-to; bh=/dIGweqT+4cd6pz2DIbOnT9FyQXU6skzo5IOUdwCEqI=; fh=12MRPJmZ1mgDpHqWoogMKqnaGRGM2b7lcuJroqfjJiw=; b=EQYfeVtqy46bxU95NF0OfTPDw6eOPzOkNleDpifOCmzTHJwQclJ1KUG8rhJX+R+HRy g355fu4hO3wRMgXywM+90rIipvoFotqYrcooQ8JLwrgJKUMJuqwux1rjRImAGWKU9xS9 0tZFNbluOEwo2gN9ncd54Y6mWnpSUr78Z7YkdU8zA5Z3rohb/ufPydXSFigzhLebEq+d buuV23MAIwywQd7jRNEkibZXkywvqrZSF6Q3NaCSXWMm9DpRq5QbXAZCm9iAOeKbgAV6 J40UYnvsDjPIiBnJBIoUYfeA9t2kRCkHxjuhlINLTVve12p/m9zRioWNvi/bMmIISOFb 6IVQ== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id e9-20020a05622a110900b00429d15b8b20si6970519qty.699.2024.01.15.19.06.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Jan 2024 19:06:02 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7B0AA3858D1E for ; Tue, 16 Jan 2024 03:06:02 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbguseast3.qq.com (smtpbguseast3.qq.com [54.243.244.52]) by sourceware.org (Postfix) with ESMTPS id D9CC13858D1E for ; Tue, 16 Jan 2024 03:05:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D9CC13858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D9CC13858D1E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=54.243.244.52 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705374312; cv=none; b=T7dsp3bPW9IpbG4IIEL/r2WTRksB5O+jgxFpw5SDecgTW424WP3siPifIsZ3mK9ldGGFHy1ScfFZ1jLcwKHpq5qrOhGW5or1wY3Se5EWgxSQHofXx9wCW9hZ2cI72mqt86DfIH3I8xnvObtbP8A9xfYQ76Bl0FqmLD1IvBU4amc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705374312; c=relaxed/simple; bh=6znSaH4cFj2wPmEEHpzcjQ9C3RDdEz6kTn6ieUdGS7I=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=YbvFMu0IwAmaIvSZ/WtnbLNvieM8MdElb2kcN9TdsHixuFEPD3jPHo5UlH9ZBENa6lf7WUWdUb4TU7DXtMJ9EsQ5ruRJYbeZjFf5rZm0fw7/1gS6EyElM/9qykz1ZoX92hFdCwxP7e76v2JvQjeWqqN2cUNJ90bUSUczotRGL3I= ARC-Authentication-Results: i=1; server2.sourceware.org X-QQ-mid: bizesmtp66t1705374302tj5csgc7 X-QQ-Originating-IP: j++eyTng3VhyUJhtpVGh9PHWwTn4hTiGN20jSE3hsRQ= Received: from rios-cad121.hadoop.rioslab.org ( [58.60.1.9]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 16 Jan 2024 11:05:01 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: zT6n3Y95oi3rR6HZVCWo3XD/f/03q+dx9zqGO41BNcQrfBEjrZOwOigjYt7mP b4Q0jLQDqA/e3Qs03my9kHvOlA4wFA2pdyICJ1NGnEYvWMtqoktkcXbod/9/+yo80oPYbYl VFV9UeSqHYyMHtrSR/GpdWlQ6GgijOFrZoy6RHqvKYbffyO69kP9ar0JCuvXP+Ub2Uo5HAj nYYXgZJFmpKr1NuLNsZ0jtrA7is4yP6XlwTMaclHJpD1H6zPk87CuCxGccvwGWz8Rmb+88F BH7qKz10KR3Cgo+aQ+MsIjeK+aUXhkT+LuPOwP/1ZNpZ5gH2zd/+U6APgRgSONklOmwBZRE CB2ENFCnbIQ9kjbTnwvg9PgniidJ3zWWUmz9Wo1V2MG5wBIXtX5mm8C17iwb5+LjSjNAQ7Z X-QQ-GoodBg: 2 X-BIZMAIL-ID: 13943272457556655963 From: Juzhe-Zhong To: gcc-patches@gcc.gnu.org Cc: kito.cheng@gmail.com, kito.cheng@sifive.com, jeffreyalaw@gmail.com, rdapp.gcc@gmail.com, Juzhe-Zhong Subject: [PATCH] RISC-V: Report Sorry when users enable RVV in big-endian mode [PR113404] Date: Tue, 16 Jan 2024 11:04:49 +0800 Message-Id: <20240116030449.379762-1-juzhe.zhong@rivai.ai> X-Mailer: git-send-email 2.36.3 MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788214628183574713 X-GMAIL-MSGID: 1788214628183574713 As PR113404 mentioned: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113404 We have ICE when we enable RVV in big-endian mode: during RTL pass: expand a-float-point-dynamic-frm-66.i:2:14: internal compiler error: in to_constant, at poly-int.h:588 0xab4c2c poly_int<2u, unsigned short>::to_constant() const /repo/gcc-trunk/gcc/poly-int.h:588 0xab4de1 poly_int<2u, unsigned short>::to_constant() const /repo/gcc-trunk/gcc/tree.h:4055 0xab4de1 default_function_arg_padding(machine_mode, tree_node const*) /repo/gcc-trunk/gcc/targhooks.cc:844 0x12e2327 locate_and_pad_parm(machine_mode, tree_node*, int, int, int, tree_node*, args_size*, locate_and_pad_arg_data*) /repo/gcc-trunk/gcc/function.cc:4061 0x12e2aca assign_parm_find_entry_rtl /repo/gcc-trunk/gcc/function.cc:2614 0x12e2c89 assign_parms /repo/gcc-trunk/gcc/function.cc:3693 0x12e59df expand_function_start(tree_node*) /repo/gcc-trunk/gcc/function.cc:5152 0x112fafb execute /repo/gcc-trunk/gcc/cfgexpand.cc:6739 Report users that we don't support RVV in big-endian mode for the following reasons: 1. big-endian in RISC-V is pretty rare case. 2. We didn't test RVV in big-endian and we don't have enough time to test it since it's stage 4 now. Naive disallow RVV in big-endian. Tested no regression, ok for trunk ? PR target/113404 gcc/ChangeLog: * config/riscv/riscv.cc (riscv_override_options_internal): Report sorry for RVV in big-endian mode. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/big_endian-1.c: New test. * gcc.target/riscv/rvv/base/big_endian-2.c: New test. --- gcc/config/riscv/riscv.cc | 5 +++++ gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-1.c | 5 +++++ gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-2.c | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-2.c diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 89caf156f03..41626fa34e4 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -8787,6 +8787,11 @@ riscv_override_options_internal (struct gcc_options *opts) sorry ("Current RISC-V GCC cannot support VLEN greater than 4096bit for " "'V' Extension"); + /* FIXME: We don't support RVV in big-endian for now, we may enable RVV with + big-endian after finishing full coverage testing. */ + if (TARGET_VECTOR && TARGET_BIG_ENDIAN) + sorry ("Current RISC-V GCC cannot support RVV in big-endian mode"); + /* Convert -march to a chunks count. */ riscv_vector_chunks = riscv_convert_vector_bits (opts); } diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-1.c b/gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-1.c new file mode 100644 index 00000000000..9eaf7ad33b2 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-1.c @@ -0,0 +1,5 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv -mabi=lp64d -mbig-endian -O3" } */ + +#pragma riscv intrinsic "vector" +vfloat32m1_t foo (vfloat32m1_t) {} // { dg-excess-errors "sorry, unimplemented: Current RISC-V GCC cannot support RVV in big-endian mode" } diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-2.c b/gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-2.c new file mode 100644 index 00000000000..86cf58370bf --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/base/big_endian-2.c @@ -0,0 +1,5 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gc_zve32x -mabi=lp64d -mbig-endian -O3" } */ + +#pragma riscv intrinsic "vector" +vint32m1_t foo (vint32m1_t) {} // { dg-excess-errors "sorry, unimplemented: Current RISC-V GCC cannot support RVV in big-endian mode" }