public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jeff Law <jeffreyalaw@gmail.com>
To: Richard Biener <richard.guenther@gmail.com>,
	Mariam Arutunian <mariamarutunian@gmail.com>
Cc: GCC Patches <gcc-patches@gcc.gnu.org>
Subject: Re: [RFC/RFA] [PATCH 02/12] Add built-ins and tests for bit-forward and bit-reversed CRCs
Date: Mon, 27 May 2024 09:16:35 -0600	[thread overview]
Message-ID: <ba19ef95-5c29-4d92-a5ec-223b6a156609@gmail.com> (raw)
In-Reply-To: <CAFiYyc1wkbC6txo2T_t_e3C0hApNzKKjF1ooDmJU6Ncxq2Lm1A@mail.gmail.com>



On 5/27/24 12:38 AM, Richard Biener wrote:
> On Fri, May 24, 2024 at 10:44 AM Mariam Arutunian
> <mariamarutunian@gmail.com> wrote:
>>
>> This patch introduces new built-in functions to GCC for computing bit-forward and bit-reversed CRCs.
>> These builtins aim to provide efficient CRC calculation capabilities.
>> When the target architecture supports CRC operations (as indicated by the presence of a CRC optab),
>> the builtins will utilize the expander to generate CRC code.
>> In the absence of hardware support, the builtins default to generating code for a table-based CRC calculation.
> 
> I wonder whether for embedded target use we should arrange for the 
> table-based CRC calculation to be out-of-line and implemented in a
> way so uses across TUs can be merged?  I guess a generic
> implementation inside libgcc is difficult?
I think the difficulty is the table is dependent upon the polynomial. 
So we'd have to arrange to generate, then pass in the table.

In theory we could have the linker fold away duplicate tables as those 
should be in read only sections without relocations to internal members. 
  So much like we do for constant pool entries.  Though this hasn't been 
tested.

The CRC implementation itself could be subject to ICF if it's off in its 
own function.  If it's inlined (and that's a real possibility), then 
there's little hope of ICF helping on the codesize.

Or we could just not do any of this for -Os/-Oz if the target doesn't 
have a carryless multiply or crc with the appropriate polynomial.  Given 
the CRC table is probably larger than all the code in a bitwise 
impementation, disabling for -Os/-Oz seems like a very reasonable choice.


jeff

  reply	other threads:[~2024-05-27 15:16 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-24  8:41 Mariam Arutunian
2024-05-25 18:16 ` Jeff Law
2024-05-27  6:38 ` Richard Biener
2024-05-27 15:16   ` Jeff Law [this message]
2024-05-28  6:44     ` Richard Biener
2024-06-01  4:53       ` Jeff Law

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ba19ef95-5c29-4d92-a5ec-223b6a156609@gmail.com \
    --to=jeffreyalaw@gmail.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=mariamarutunian@gmail.com \
    --cc=richard.guenther@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).