From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender4-pp-o91.zoho.com (sender4-pp-o91.zoho.com [136.143.188.91]) by sourceware.org (Postfix) with ESMTPS id 8CEBF3858D28; Mon, 1 Apr 2024 12:20:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8CEBF3858D28 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=zoho.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=zoho.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8CEBF3858D28 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=136.143.188.91 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1711974056; cv=pass; b=d9T/K+LTULccGngJ6e+F332rK/DtovU4+aiXthrjr4ftgfCwP+OFhh0yPcuIgN38eHnD2nao9A4c8jJUdLtaaRaNWVMucI+b+K2RBxs0To0HOnexaTXKNVbm9R7po8mkGrQpxl8E1ggaxLlFMYCqlNa0dtW1PQNJKYeXK52pzGk= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1711974056; c=relaxed/simple; bh=nIOX+VNPa8BCA15vXWR+/S/IiN29Y9iflIZFe+jIih4=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=vQt2nuROQQTJWCmCvsKlf2HQvN0L5pD2ZCI0OI8CZNbdcAgSMwMM+9FSbRQ9scv+g6TVN6VxapHAFIEKpo5YMe6zGKd6z5Qpo2I2GWqBrs9JFpCwqaxeo4SHQRy1AxvF0/SGOcox7aI5fsuAk2/VlGX0Kkbs/oq+8gxZuoWbbn0= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; t=1711974039; cv=none; d=zohomail.com; s=zohoarc; b=H104RRha+h/0UyCFHhzRQncx/+vdNhPGCtlsF5bYdBYz0PxB3z11t3dpS0ZXSLNUxRaGPwOO58GOUVLQGmN0mi1jSi1Gv18wm44FEZ32ESRYpoc/Er30Om1n3F/almHLgpoJwWWBV+N8RSKa86BCaIKaG+jHDE888S/Xm2qvPbo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1711974039; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=+ANj/OgtW8b2wxy7+RZgZpoq67qTc6f2Bj8QgbooJ0Y=; b=eAHjmWOhymM65o/jKzwC1Y3Do0WwdVhgzOm/RsEyQ0hZgoHlISjy7AHDUbG1GErx+rRa6jQLshphKXiJyG252oR0ElW7URZNeCFo9GeIG7/ELH2J6pcv9iHyj2gRPXFHdP8osoz+JPiZZoeReYYNBW4l9kmuvA9Q/Kc3Cvfd0iw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zoho.com; spf=pass smtp.mailfrom=bouanto@zoho.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1711974039; s=zm2022; d=zoho.com; i=bouanto@zoho.com; h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Feedback-ID:Message-Id:Reply-To; bh=+ANj/OgtW8b2wxy7+RZgZpoq67qTc6f2Bj8QgbooJ0Y=; b=aaNtRmJdMb/4uTwXshYD7mBuzT8iAriI/iD38UMOl1KZ0DHQceqFbykCXGp13klE SkU4ngE/9/RHkVFk0r46ai5/W1XPGgKTH2xWtQAatvJ2rN/UoCYoZwUpKTqkxuBXibz UvH5FBQAcaCtrH8lw4uqejux/3RAOiSEmmpkKYj4= Received: by mx.zohomail.com with SMTPS id 1711974037354267.9580495836519; Mon, 1 Apr 2024 05:20:37 -0700 (PDT) Message-ID: <1f7f229f-5d42-4bb6-9a47-0f3c630bea44@zoho.com> Date: Mon, 1 Apr 2024 08:20:35 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Frontend access to target features (was Re: [PATCH] libgccjit: Add ability to get CPU features) To: Arthur Cohen , David Malcolm , jit@gcc.gnu.org, gcc-patches@gcc.gnu.org Cc: Iain Buclaw References: <8b0199d9835f568b7bcde41bf9432c21f604e489.camel@zoho.com> <755705e37731c4fbc3ab7eb1a96d8df0147bb002.camel@redhat.com> <6050c91ae34a2cdaeebd79ada9e2b9ffaf881e21.camel@zoho.com> <997ddb068ca13f755accd03f38141e56c87b84a7.camel@redhat.com> Content-Language: en-US, fr From: Antoni Boucher In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Feedback-ID: rr080112280c81c55f92604e25cec9b7d700003ef84ee93d5830cba5f7630c25ad9c10a3a2dfe5c3ca866930b5:zu0801122671a28388f330ff6f5543dbbd0000b5e2bf0ba5b4fbb96569bf5236ab6406b4b4399a05e4a700:rf080112262f47cbcbadcdbbf976863a6b000056f69fc57856d22567faecd0e747ee0aafbe815b86571bb1:ZohoMail X-ZohoMailClient: External X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,KAM_SHORT,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: David: Ping. Le 2024-03-19 à 07 h 03, Arthur Cohen a écrit : > Hi, > > On 3/5/24 16:09, David Malcolm wrote: >> On Thu, 2023-11-09 at 19:33 -0500, Antoni Boucher wrote: >>> Hi. >>> See answers below. >>> >>> On Thu, 2023-11-09 at 18:04 -0500, David Malcolm wrote: >>>> On Thu, 2023-11-09 at 17:27 -0500, Antoni Boucher wrote: >>>>> Hi. >>>>> This patch adds support for getting the CPU features in libgccjit >>>>> (bug >>>>> 112466) >>>>> >>>>> There's a TODO in the test: >>>>> I'm not sure how to test that gcc_jit_target_info_arch returns >>>>> the >>>>> correct value since it is dependant on the CPU. >>>>> Any idea on how to improve this? >>>>> >>>>> Also, I created a CStringHash to be able to have a >>>>> std::unordered_set. Is there any built-in way of >>>>> doing >>>>> this? >>>> >>>> Thanks for the patch. >>>> >>>> Some high-level questions: >>>> >>>> Is this specifically about detecting capabilities of the host that >>>> libgccjit is currently running on? or how the target was configured >>>> when libgccjit was built? >>> >>> I'm less sure about this part. I'll need to do more tests. >>> >>>> >>>> One of the benefits of libgccjit is that, in theory, we support all >>>> of >>>> the targets that GCC already supports.  Does this patch change >>>> that, >>>> or >>>> is this more about giving client code the ability to determine >>>> capabilities of the specific host being compiled for? >>> >>> This should not change that. If it does, this is a bug. >>> >>>> >>>> I'm nervous about having per-target jit code.  Presumably there's a >>>> reason that we can't reuse existing target logic here - can you >>>> please >>>> describe what the problem is.  I see that the ChangeLog has: >>>> >>>>>          * config/i386/i386-jit.cc: New file. >>>> >>>> where i386-jit.cc has almost 200 lines of nontrivial code.  Where >>>> did >>>> this come from?  Did you base it on existing code in our source >>>> tree, >>>> making modifications to fit the new internal API, or did you write >>>> it >>>> from scratch?  In either case, how onerous would this be for other >>>> targets? >>> >>> This was mostly copied from the same code done for the Rust and D >>> frontends. >>> See this commit and the following: >>> https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=b1c06fd9723453dd2b2ec306684cb806dc2b4fbb >>> The equivalent to i386-jit.cc is there: >>> https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=22e3557e2d52f129f2bbfdc98688b945dba28dc9 >> >> [CCing Iain and Arthur re those patches; for reference, the patch being >> discussed is attached to : >> https://gcc.gnu.org/pipermail/jit/2024q1/001792.html ] >> >> One of my concerns about this patch is that we seem to be gaining code >> that's per-(frontend x config) which seems to be copied and pasted with >> a search and replace, which could lead to an M*N explosion. > > I think this is definitely already the case, and it would be worth > investigating if C/C++/Rust/jit can reuse a similar set of target files, > or how to factor them together. I imagine that all of these components > share similar needs for the targets they support. > >> >> Is there any real difference between the per-config code for the >> different frontends, or should there be a general "enumerate all >> features of the target" hook that's independent of the frontend? (but >> perhaps calls into it). >> >> Am I right in thinking that (rustc with default LLVM backend) has some >> set of feature strings that both (rustc with rustc_codegen_gcc) and >> gccrs are trying to emulate?  If so, is it presumably a goal that >> libgccjit gives identical results to gccrs?  If so, would it be crazy >> for libgccjit to consume e.g. config/i386/i386-rust.cc ? > > I think this would definitely make sense, and it could probably be > extended to other frontends. For the time being I think it makes sense > to try it out for gccrs and jit. But finding a fitting name will be hard :) > > Best, > > Arthur > >> >> Dave >> >>> >>>> >>>> I'm not at expert at target hooks (or at the i386 backend), so if >>>> we >>>> do >>>> go with this approach I'd want someone else to review those parts >>>> of >>>> the patch. >>>> >>>> Have you verified that GCC builds with this patch with jit *not* >>>> enabled in the enabled languages? >>> >>> I will do. >>> >>>> >>>> [...snip...] >>>> >>>> A nitpick: >>>> >>>>> +.. function:: const char * \ >>>>> +              gcc_jit_target_info_arch (gcc_jit_target_info >>>>> *info) >>>>> + >>>>> +   Get the architecture of the currently running CPU. >>>> >>>> What does this string look like? >>>> How long does the pointer remain valid? >>> >>> It's the march string, like "znver2", for instance. >>> It remains valid until we free the gcc_jit_target_info object. >>> >>>> >>>> Thanks again; hope the above makes sense >>>> Dave >>>> >>> >>