From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-313f1085ac2so5988805f8f.1 for ; Tue, 11 Jul 2023 13:24:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; 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 :from:to:cc:subject:date:message-id:reply-to; bh=ozFRFiysv+5P35t1OiSLvUJ/pQhdoHZmpLE+AJgDkPc=; b=S2l7CtHdSHMODaGWPFg+1wf1TSfoJx92ytmtWqfxkoW3GF5lUZ0Lu25JWhWckIIkjP rca8WMK4KwWBXBYucrEJlRH6MpXfS6lLtOAa6PBgeOMSbqPUh9zq6TMhCCl2jr7GN1cH sQz8ufzSLn+ie10UsIVxrbW6pyuV1vgvwOPcU68sUw8fsrQwmre9NHJDvAtxnneY+oVC mt2E31nQhD747VFgofdYZby6/fwYVOSXGmSxFAZd8hXMhpW40PzyGuU3Q4MQiuiPZAln HHw5X2k49ZkF9ScY3O1yZHsxJUyhmUkac+XkErKn6B5agqkFdWnAAC5BIqhi2IdPYyK9 tbVg== 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-Google-Smtp-Source: APBJJlG+DY0KaEpegCpYOnzDCxhKjQmwTKVZwEowlZHvRB/AWHu7rsCGMdfekIm2IBnogDs/k4Nubw== 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> From: Robin Dapp In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit 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 List-Id: 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); } -- 2.41.0