Re: gcc -ansi versus SSE4.2 detection

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: hlinnaka(at)iki(dot)fi
Cc: pgsql-hackers(at)postgreSQL(dot)org
Subject: Re: gcc -ansi versus SSE4.2 detection
Date: 2015-06-05 19:07:53
Message-ID: 25456.1433531273@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Heikki Linnakangas <hlinnaka(at)iki(dot)fi> writes:
> On 06/05/2015 09:27 PM, Tom Lane wrote:
>> ... However I found out that adding -ansi
>> also caused configure to stop selecting "-msse4.2", which seemed odd,
>> since that switch has no bearing on C language conformance. And it fell
>> back to the slicing-by-8 CRC implementation too.

> Hmm, that's odd. -ansi has no effect on the CRC implementation on my system.

Ummm ... I was reading the diff backwards. Actually it seems that on
dromedary's platform, CFLAGS_SSE42 is set to empty by default, but forcing
"-ansi" makes it get set to "-msse4.2". Evidently, (this) gcc will accept
the _mm_crc32_foo intrinsics by default normally, but if you say -ansi
then it won't accept them unless you also say "-msse4.2".

It looks like the actual reason that we aren't using the runtime-check
CRC implementation is that we can't find a way to do "cpuid" on this
old version of OS X. Not sure if it's worth the time to look for one;
modern versions of OS X do have __get_cpuid().

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Petr Jelinek 2015-06-05 19:08:44 Re: Further issues with jsonb semantics, documentation
Previous Message Steve Kehlet 2015-06-05 19:01:47 Re: [GENERAL] 9.4.1 -> 9.4.2 problem: could not access status of transaction 1