On Tue, 2005-05-10 at 11:11 -0400, Jakub Jelinek wrote:
On Tue, May 10, 2005 at 05:08:34PM +0200, Nils Philippsen wrote:
> > If the only place that you want to enable -msse2 for are the clobber
> > lists of __asm statements, then perhaps best would be to conditionalize
> > them:
> > __asm ("something" : ... : ... :
> > #ifdef __SSE2__
> > "xmm0", "xmm1"
> > #endif
> > );
> > etc., because without -msse2 (resp. -msse (__SSE__ macro)), the registers
> > are not known to the compiler, so there is no point to tell the compiler
> > about them.
>
> Ahh. If I understand you correctly, given that the various asm optimized
> functions are in separate source files, it should be ensured that
> -mmmx/sse/sse2/3dnow are used only for the relevant source files?
Yes (and assuming they don't also contain code that is called
unconditionally).
I expect that to be the case (the code is in files called gimp-
composite-{generic,mmx,altivec,sse,sse2,...}).
Or don't pass -mmmx/-msse/-msse2/-m3dnow etc. at all, and hide
all the
SSE2 etc. stuff in __asm and conditionally don't expose the clobbers
to GCC.
The idea is to use the most optimized code path possible from one
binary. Besides, I don't really think we want to have
i686,pentiumX,athlon variants of GIMP packages ;-).
Nils
--
Nils Philippsen / Red Hat / nphilipp(a)redhat.com
"They that can give up essential liberty to obtain a little temporary
safety deserve neither liberty nor safety." -- B. Franklin, 1759
PGP fingerprint: C4A8 9474 5C4C ADE3 2B8F 656D 47D8 9B65 6951 3011