Hi Jian-Xin,
You are right, there is a bug in that we should not emit bad assembly.
However, I think it is correct that this code does not compile with
the options we are using and the bug doesn't change my proposed build
change.
I filed bug 935 ("impossible constraint error not detected") with a
test case that might make things more clear:
https://bugs.open64.net/show_bug.cgi?id=935
Christopher, I believe SSE2 support has been cleaned up in the last
few years and anything missing should be considered a bug.
-David Coakley / AMD Open Source Compiler Engineering
On Sat, Dec 3, 2011 at 10:49 PM, Jian-Xin Lai <[email protected]> wrote:
> I haven't tried to build the compiler on Fedora 16. But it looks like
> a bug in CG when generate the x87 instructions. Why not fix the error?
>
> 2011/12/4 David Coakley <[email protected]>:
>> Hi all,
>>
>> I recently tried building on Fedora 16 64-bit and ran into the same
>> error others have seen:
>>
>> /tmp/ccspin#.BqR0xk.s: Assembler messages:
>> /tmp/ccspin#.BqR0xk.s:1662: Error: bad register name `%st2'
>> /tmp/ccspin#.BqR0xk.s:1732: Error: operand type mismatch for `divss'
>> make[3]: *** [ieee_module_support.o] Error 1
>>
>> The conflict occurs because the system include files assume SSE2
>> support while the Open64 build is set up to target the most generic
>> cpu possible -- for 32-bit code, it's i386 which does not support
>> SSE2.
>>
>> My proposed fix follows -- we remove the restrictive options and just
>> let the compiler use the default options according to the host system.
>> With this change I'm able to build on Fedora 16 since we
>> automatically tune for a cpu that supports SSE2 for any 64-bit host.
>> The only negative effect I can think of is that those who build binary
>> releases of Open64 will need to be careful about selecting a build
>> machine that matches the minimum target cpu requirements.
>>
>> -David Coakley / AMD Open Source Compiler Engineering
>>
>>
>> Index: osprey/linux/make/gcommondefs
>> ===================================================================
>> --- osprey/linux/make/gcommondefs (revision 3843)
>> +++ osprey/linux/make/gcommondefs (working copy)
>> @@ -166,16 +166,6 @@
>> CCNAME = pathcc
>> C++NAME = pathCC
>> F90 = pathf90
>> - ifeq ($(BUILD_TARGET), X8664)
>> - CCNAME += -march=anyx86
>> - C++NAME += -march=anyx86
>> - F90 += -march=anyx86
>> - endif
>> - ifeq ($(BUILD_TARGET), IA32)
>> - CCNAME += -march=anyx86
>> - C++NAME += -march=anyx86
>> - F90 += -march=anyx86
>> - endif
>> F77 = $(F90)
>> AR = ar
>> endif
>>
>> @@ -186,23 +176,6 @@
>> C++NAME = openCC
>> F90 = openf90
>> F90_RTLIBS = -Wl,-Bstatic -lfortran -Wl,-Bdynamic
>> -
>> - ifeq ($(BUILD_TARGET), X8664)
>> - CCNAME += -march=anyx86
>> - C++NAME += -march=anyx86
>> - F90 += -march=anyx86
>> - endif
>> - ifeq ($(BUILD_TARGET), IA32)
>> - CCNAME += -march=anyx86
>> - C++NAME += -march=anyx86
>> - F90 += -march=anyx86
>> - endif
>> - ifeq ($(BUILD_TARGET), IA64)
>> - # only 64bit libraries set the BUILD_ARCH to X8664
>> - CCNAME +=
>> - C++NAME +=
>> - F90 +=
>> - endif
>> F77 = $(F90)
>> AR = ar
>> endif
>> @@ -218,32 +191,15 @@
>> CCNAME += -run-build=$(TOP_BUILDDIR) -L$(BUILD_AREA)/libopen64rt
>> -L$(BUILD_AREA)/libacml_mv
>> C++NAME += -run-build=$(TOP_BUILDDIR)
>> F90 += -run-build=$(TOP_BUILDDIR)
>> -
>> - ifeq ($(BUILD_TARGET), X8664)
>> - CCNAME += -march=anyx86
>> - C++NAME += -march=anyx86
>> - F90 += -march=anyx86
>> - endif
>> - ifeq ($(BUILD_TARGET), IA32)
>> - CCNAME += -march=anyx86
>> - C++NAME += -march=anyx86
>> - F90 += -march=anyx86
>> - endif
>> - ifeq ($(BUILD_TARGET), IA64)
>> - # only 64bit libraries set the BUILD_ARCH to X8664
>> - CCNAME +=
>> - C++NAME +=
>> - F90 +=
>> - endif
>> F77 = $(F90)
>> AR = ar
>> endif
>>
>> ifeq ($(BUILD_ARCH), IA32)
>> # only 32bit libraries set the BUILD_TARGET to IA32
>> - CCNAME += -m32 -mno-sse2
>> - C++NAME += -m32 -mno-sse2
>> - F90 += -m32 -mno-sse2
>> + CCNAME += -m32
>> + C++NAME += -m32
>> + F90 += -m32
>> endif
>>
>> ifeq ($(BUILD_ARCH), X8664)
>>
>> ------------------------------------------------------------------------------
>> All the data continuously generated in your IT infrastructure
>> contains a definitive record of customers, application performance,
>> security threats, fraudulent activity, and more. Splunk takes this
>> data and makes sense of it. IT sense. And common sense.
>> http://p.sf.net/sfu/splunk-novd2d
>> _______________________________________________
>> Open64-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>
>
>
> --
> Regards,
> Lai Jian-Xin
------------------------------------------------------------------------------
Cloud Services Checklist: Pricing and Packaging Optimization
This white paper is intended to serve as a reference, checklist and point of
discussion for anyone considering optimizing the pricing and packaging model
of a cloud services business. Read Now!
http://www.accelacomm.com/jaw/sfnl/114/51491232/
_______________________________________________
Open64-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/open64-devel