git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v6 2/2] refs.c: SSE4.2 optimizations for check_refname_component

From
Torsten Bögershausen <tboegi@web.de>
Date
Jun 4, 2014, 14:25 UTC
Message-ID
<538F2C6B.2030004@web.de>
In-Reply-To
<CACsJy8CK3LNaPVNv=EfFX06uOgpujAz364ZDFL3HBPicDNF57w@mail.gmail.com>
On 2014-06-04 13.21, Duy Nguyen wrote:
Show 30 quoted lines
> On Wed, Jun 4, 2014 at 3:04 PM, Torsten Bögershausen <tboegi@web.de> wrote:
>>
>> On 2014-06-04 05.38, David Turner wrote:
>> []
>>> []
>>> diff --git a/Makefile b/Makefile
>>> index a53f3a8..dd2127a 100644
>>> --- a/Makefile
>>> +++ b/Makefile
>>> @@ -1326,6 +1326,11 @@ else
>>>               COMPAT_OBJS += compat/win32mmap.o
>>>       endif
>>>  endif
>>> +ifdef NO_SSE42
>>> +     BASIC_CFLAGS += -DNO_SSE42
>>> +else
>>> +     BASIC_CFLAGS += -msse4.2
>>> +endif
>> This does work for some people, but break for others, like the systems in my test-lab.
>> On 2 different systems the gcc has support for -msse4.2, but the processor has not,
>> and t5511 fails with "Illegal instruction".
>> How can that be?
>> The maintainer of a Linux distro wants to ship gcc with all possible features,
>> an the end-user can compile the code with all the features his very processor has.
> 
> I think glibc code uses cpuid instruction to decide whether to use
> optimized version. May be we can do the same? If we go that route and
> have a way to detect sse support from compiler, then we can drop
> NO_SSE42, enable all and pick one at runtime.
> 
Running make under a non-X86 processor like arm fails, as his gcc does not have -msse4.2

On the other hand, looking here: http://sourceware.org/ml/libc-alpha/2009-10/msg00063.html and looking into refs.c, it seems as if we can try to run strcspn(refname, bad_characters) and strstr(refname, "@{" and strstr(refname, ".." on each refname, instead of checking each char in a loop. The library will pick the fastest version for strcspn() automatically.

David, the repo you run the tests on, is it public? Or is there a public repo with this many refs ? Or can you make a dummy repo with 60k refs ?

Previous: Duy NguyenNext: David Turner
Message 5 of 14 in “refs.c: optimize check_refname_component()”
  1. 1/2 refs.c: optimize check_refname_component()David Turner, Jun 4, 2014
  2. 2/2 refs.c: SSE4.2 optimizations for check_refname_componentDavid Turner, Jun 4, 2014
  3. Torsten BögershausenJun 4, 2014
  4. Duy NguyenJun 4, 2014
  5. Torsten BögershausenJun 4, 2014
  6. David TurnerJun 4, 2014
  7. Torsten BögershausenJun 5, 2014
  8. Ondřej BílkaJun 5, 2014
  9. David TurnerJun 5, 2014
  10. Torsten BögershausenJun 5, 2014
  11. David TurnerJun 5, 2014
  12. David TurnerJun 4, 2014
  13. Junio C HamanoJun 4, 2014
  14. David TurnerJun 5, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.