Re: [PATCH v7 0/1] refs.c: SSE4.2 optimizations for check_refname_component
- From
David Turner <dturner@twopensource.com>
- Date
- Jun 9, 2014, 22:39 UTC
- Message-ID
- <1402353543.18134.203.camel@stross>
- In-Reply-To
- <xmqqfvjdenk5.fsf@gitster.dls.corp.google.com>
On Mon, 2014-06-09 at 15:16 -0700, Junio C Hamano wrote:
Show 13 quoted lines
> David Turner <dturner@twopensource.com> writes: > > > Since Junio has picked up the first patch from previous versions of > > this series, I'm just going to send the second (SSE) one. I decided > > not to s/NO_SSE42/!HAVE_SSE42/ because it looks like git mostly uses > > the former convention (for instance, that's what GIT_PARSE_WITH > > generates). > > Yeah but NO_FROTZ is used only when FROTZ is something everybody is > expected to have (e.g. it's in posix, people ought to have it, but > we do support those who don't), isn't it? For a very arch specific > stuff like sse42, I'd feel better to make it purely opt-in by > forcing people to explicitly say HAVE_SSE42 to enable it.
The patch now has two kinds of autodetection:
1. At build-time, we check for the compiler supporting -msse4.2. If it does, and if the user has not explicitly done --without-sse, then we build with SSE support. This does not mean that the SSE code will necessarily be used because: 2. At run-time, if we have built with SSE support, we check cpuid to choose a version of the function that will run on the current CPU.
So I think we never hit a case where we try to use SSE and fail, which is the major reason I see to make it non-default.
To me, this means that we should not require people to explicitly request SSE, because we generally want to try to provide the most-efficient version of git that will work everywhere. In fact, I am not sure we need a --without-sse option at all, since all it saves is a cpuid instruction. But I don't need to remove the option, in case there's a use for it I'm not thinking of.