From patchwork Tue Jul 11 20:24:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robin Dapp X-Patchwork-Id: 118707 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp724735vqm; Tue, 11 Jul 2023 13:26:13 -0700 (PDT) X-Google-Smtp-Source: APBJJlEBCyp22QhJFM61t/DHybhvVQaiu2XeFIDWKK+Gy/zMTFEloubnkpPQ/kEyAnxwyoFECR8s X-Received: by 2002:aa7:d1cb:0:b0:51d:8967:325f with SMTP id g11-20020aa7d1cb000000b0051d8967325fmr16648580edp.36.1689107173401; Tue, 11 Jul 2023 13:26:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689107173; cv=none; d=google.com; s=arc-20160816; b=O9p8tewQDWP7RqX1USNDjnrrj/dZynmb/tjGT+VPPWi8Kvm723ldoGYvyBJyY9CVHJ lzluqpzWp5XG1uIL/prMD3L4UTghc3f8QnKm6rQkKyAXFqe/aWuw0PMyCc7AjKYj5tLc EPN9UdTG5BU7/ZA7xgZNfi7jm2KaQ0AMnbPry89lvNYnTE+FGSajU+nHBxf7MFvgRNFw 0+LD2H5Cic01sQQobG0velSvAsIsjjV3v/32lIETDxR/D13np/81KxfoHi59hkZpz8ji l+VP5VfX4pvVeYGtGofT9pHcTyZhrrgsbXd49Zn3VDxcont+CYbBWVhUciDWELKNhu2a uzpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:in-reply-to:references:to :content-language:subject:cc:user-agent:mime-version:date:message-id :dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=ozFRFiysv+5P35t1OiSLvUJ/pQhdoHZmpLE+AJgDkPc=; fh=j5VMsxlcI9ctJwk/QARk0BH6mhrU7OH+rNeTp+4Bcc4=; b=z+TD3EuDWPWcvwJmZtm45MF6ajDAKSFsXwYhL9J0OcF+STO1x+CPm8+rsUUQBDKogI LTylALi3zm1YlcOhCQ2hF0aXBqf4CxyHJiS1T+YxO51MSmwW4AwcQv2VzQyqT8AqLHlT 6d59t35ZxRRF1CrxK+hJtsPnVIPV9vfn7uNP7zSsSRHT4hw86GdaOUWTe2DRidtiCm3p gqvgNQmIorIONN7BvPayfDXBkIZG1rz/0xLVnhskI3py6FIG4ELgHk/TBnQhr56UaYfl L8E5i8+ZRaoFFkAInCh3Y7Az/3jdXvSfzOkPjKZNj5AF7iw1Eded3Sg+JftFqGgncF9k ju+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=RPpm1TF4; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id o4-20020a056402038400b0051e2a1c217csi3228693edv.556.2023.07.11.13.26.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Jul 2023 13:26:13 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=RPpm1TF4; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 134753857438 for ; Tue, 11 Jul 2023 20:25:35 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 134753857438 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1689107135; bh=ozFRFiysv+5P35t1OiSLvUJ/pQhdoHZmpLE+AJgDkPc=; h=Date:Cc:Subject:To:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=RPpm1TF4etQZ6j+3qAKcMFAsMWl2TyVCtGc4ojEmukkxnzTsAtuTvxDwA2kF2t4ZP ltTWQN5E/4XbmZACxcfg+sC+YDoRM72jSopHjtbqBfKHd6wsrtqOY8Ui3nakDpETHR gdBpkgejWJ9iGjAcmGX4giVjNDAbQuGuKGSGgor4= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by sourceware.org (Postfix) with ESMTPS id 0AA2B3858430 for ; Tue, 11 Jul 2023 20:24:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0AA2B3858430 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-313f1085ac2so5988805f8f.1 for ; Tue, 11 Jul 2023 13:24:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689107086; x=1691699086; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:cc:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ozFRFiysv+5P35t1OiSLvUJ/pQhdoHZmpLE+AJgDkPc=; b=ejwBOnjp9nbp1UYdhhxoVfrOtq3AMKKz4He0nINv7B1v+5W4lfeeoPYGSOrR7lQBS6 gQ8RpZpYGdLldwetA+owhBmbO/sWEpJ/KpgyZ82/9NMy8TziFFSawTFUvy4VqmwM6N8q sBOtPtsPHHdHlveam9a/l6uQ9+n3psZvL10JYGNeqT2Di8Pl9x0M/4BT7uHzDxshCqPh qrJ8lN+9yDdLLEZsyGQ3JiG4nhz9fh7givPfWfcFGx4SOsTji9lUypzmwypTd6dv4tKc jdFimfXs7tGa6KvoXeFGLpN0BVYVM5qUlRdFJUNJV9zMnEgehKnShW1YEkoAnGlauUpr rjng== X-Gm-Message-State: ABy/qLZSMZPLxoUCAH82PY99Mmi0zJAr7Iko9PMV56/90f6+tvnyIkWV gB3ZppNTDSenmi+sjuUfsUU8+Skvj8mTTA== X-Received: by 2002:a5d:51cc:0:b0:314:121d:8cbf with SMTP id n12-20020a5d51cc000000b00314121d8cbfmr10956483wrv.25.1689107086053; Tue, 11 Jul 2023 13:24:46 -0700 (PDT) Received: from [192.168.1.24] (ip-046-005-130-086.um12.pools.vodafone-ip.de. [46.5.130.86]) by smtp.gmail.com with ESMTPSA id t4-20020a5d4604000000b00313e59cb371sm3134175wrq.12.2023.07.11.13.24.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 11 Jul 2023 13:24:45 -0700 (PDT) Message-ID: <7f4427e7-37f2-428e-7d6b-8196f688ee72@gmail.com> Date: Tue, 11 Jul 2023 22:24:44 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Cc: rdapp.gcc@gmail.com Subject: [PATCH v2] genopinit: Allow more than 256 modes. Content-Language: en-US To: Robin Dapp via Gcc-patches , jeffreyalaw , "juzhe.zhong@rivai.ai" , Richard Biener , richard.sandiford@arm.com References: <8fd3db77-035d-6874-6c71-47c944c465b5@gmail.com> <7d2aba95-9433-8419-126b-cae83075422e@gmail.com> In-Reply-To: X-Spam-Status: No, score=-9.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, 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 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-Patchwork-Original-From: Robin Dapp via Gcc-patches From: Robin Dapp Reply-To: Robin Dapp Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771124929713112134 X-GMAIL-MSGID: 1771157243542191944 Attached is v2 that does not switch to uint64_t but stays within 32 bits by shifting the optab by 20 and the mode(s) by 10 bits. Regards Robin Upcoming changes for RISC-V will have us exceed 255 modes or 8 bits. This patch increases the limit to 10 bits and adjusts the hashing function for the gen* and optabs-query lookups accordingly. Consequently, the number of optabs is limited to 4095. gcc/ChangeLog: * genopinit.cc (main): Adjust maximal number of optabs and machine modes. * gensupport.cc (find_optab): Shift optab by 20 and mode by 10 bits. * optabs-query.h (optab_handler): Ditto. (convert_optab_handler): Ditto. --- gcc/genopinit.cc | 5 ++--- gcc/gensupport.cc | 2 +- gcc/optabs-query.h | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/gcc/genopinit.cc b/gcc/genopinit.cc index 6bd8858a1d9..2a841006884 100644 --- a/gcc/genopinit.cc +++ b/gcc/genopinit.cc @@ -182,8 +182,7 @@ main (int argc, const char **argv) progname = "genopinit"; - if (NUM_OPTABS > 0xffff - || MAX_MACHINE_MODE >= ((1 << MACHINE_MODE_BITSIZE) - 1)) + if (NUM_OPTABS > 0xfff || NUM_MACHINE_MODES > 0x3ff) fatal ("genopinit range assumptions invalid"); if (!init_rtx_reader_args_cb (argc, argv, handle_arg)) @@ -439,7 +438,7 @@ main (int argc, const char **argv) "bool\n" "swap_optab_enable (optab op, machine_mode m, bool set)\n" "{\n" - " unsigned scode = (op << 16) | m;\n" + " unsigned scode = (op << 20) | m;\n" " int i = lookup_handler (scode);\n" " if (i >= 0)\n" " {\n" diff --git a/gcc/gensupport.cc b/gcc/gensupport.cc index e39e6dacce2..959d1d9c83c 100644 --- a/gcc/gensupport.cc +++ b/gcc/gensupport.cc @@ -3806,7 +3806,7 @@ find_optab (optab_pattern *p, const char *name) { p->name = name; p->op = optabs[pindex].op; - p->sort_num = (p->op << 16) | (p->m2 << 8) | p->m1; + p->sort_num = (p->op << 20) | (p->m2 << 10) | p->m1; return true; } } diff --git a/gcc/optabs-query.h b/gcc/optabs-query.h index 043e9791bc1..920eb6a1b67 100644 --- a/gcc/optabs-query.h +++ b/gcc/optabs-query.h @@ -37,7 +37,7 @@ convert_optab_p (optab op) inline enum insn_code optab_handler (optab op, machine_mode mode) { - unsigned scode = (op << 16) | mode; + unsigned scode = (op << 20) | mode; gcc_assert (op > LAST_CONV_OPTAB); return raw_optab_handler (scode); } @@ -50,7 +50,7 @@ inline enum insn_code convert_optab_handler (convert_optab op, machine_mode to_mode, machine_mode from_mode) { - unsigned scode = (op << 16) | (from_mode << 8) | to_mode; + unsigned scode = (op << 20) | (from_mode << 10) | to_mode; gcc_assert (convert_optab_p (op)); return raw_optab_handler (scode); }