Can I compile with MMX and SSE/SSE2 instruction sets ?

Timothy Madden terminatorul@gmail.com
Wed Jun 27 13:47:00 GMT 2012


On 06/27/2012 01:09 AM, Allin Cottrell wrote:
> On Tue, 26 Jun 2012, Nix wrote:
>
>> On 26 Jun 2012, Carlos O'Donell told this:
>>> We need to decide if we want to fix install_root for all the
>>> users that are already expecting it to work.
>>
>> Given the likely triviality of the fix, is it really worth agonizing
>> over it? I mean, it's no more than this, isn't it?
>>
>> diff --git a/config.make.in b/config.make.in
>> index 65410ab..da8fcbd 100644
>> --- a/config.make.in
>> +++ b/config.make.in
>> @@ -5,7 +5,7 @@ version = @VERSION@
>> release = @RELEASE@
>>
>> # Installation prefixes.
>> -install_root = $(DESTDIR)
>> +install_root ?= $(DESTDIR)
>
> I'm puzzled by the reported failure of "install_root" to do what it's
> supposed to. I've been using that formulation for years, to install new
> builds of glibc into /tmp/glibc-N.M from where I make a tarball, which I
> subsequently untar into the system location using a bootable CD
> (SystemRescueCd). This worked fine for me with glibc 2.15. I use the
> invocation, for example,
>
> make install_root=/tmp/glibc-2.15 install
>
> and nothing spills into system locations. I don't mind using DESTDIR
> instead; I just don't understand the complaint.

It seems to work for the Slackware build script for glibc package, too.

I tried to type
	env LANGUAGE=C LC_ALL=C install_root=$HOME/usr make install

and after that my system would not boot anymore. I regretfully have to 
say I am not looking forward to repeat the experience. The problem is my 
original glibc was installed from an online location (I keep my system 
up to date with slackware-current using slackpkg) and I could not get my 
pppoe connection up using the install DVD. Trying to install the now-old 
version of glibc from the DVD did not help, my system would still not boot.

But I would still like to try and compile the slackware package again with
	-O3 -march=pentium4 -mtune=pentium4 -mmmx -msse -msse2 \
		-mfpmath=sse

although I have seen this produces many floating-point precision tests 
to no longer pass, including to no longer detect or signal division by 
zero or invalid number FP conditions.

However I noticed from make check output that there was no precision 
test reported as failed for long double operations.

Am I right to assume that the FPU uses long double internally, while 
SSE/SSE2 instructions use float if float arguments are given, and double 
if double arguments are given ?

In that case, could glibc explicitly convert all floating-point 
arguments to double, just so SSE instructions would use the same 
internal precision as FPU instructions and produce the same results ?

Or could the exception condition flags when SSE is used be fixed ?


Thank you,
Timothy Madden



More information about the Libc-help mailing list