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: 1806504 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=aTZGfpMc; dkim-atps=neutral Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4R0sn54WCCz20WT for ; Wed, 12 Jul 2023 06:25:13 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9A8523857721 for ; Tue, 11 Jul 2023 20:25:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9A8523857721 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1689107111; 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=aTZGfpMcJs5mvw54KsejYXfPf1yE/YuFgKRVURMfgmyF1NbV46+yT58tSpNcCG9UG lBcGii5KCNw3ad5vbCB6M/8y/gDHyaI0MoM1ydyweE2eq6xswyOV1dCch6rXpGWaXe lhUgTaqBgw2bQ4HLleXorf/8Yjw+XBhZmJXF3eOk= 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-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> 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+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" 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); }