I successfully compiled the x86 assembly code into my
copy of Mesa on win95. I did this using the nasm assembler -
rest of my compilation was done using MS VC++ 5.0.
I first tried to compile the assembly using cygwin gcc (gas) to produce
the MS compatible object file, the compilation was ok but the
resulting library certainly was not.
When compiling with NASM I met one typo in the assembly source,
JZ ctp4_finish was missing the "NEAR" tag. Apparently this is
because x86a.S.m4 around line 1350 has JZ LLBL(ctp4_finish)
the correct form seems to be JZ(LLBL(ctp4_finish))
When looking at the compiled program Vtune 3.0 got
fits from sequences like:
shl ECX , 4
jz near p2mgm_finish
It complained that the first instruction sets some of the flags
(but not all), while the second was using the flags and claimed that
this sequence would get a 12-16 cycle penalty on PPro and P2
As this sequency is not inside the transformation inner loop the actual
effect
was not really visible in my tests (and this might of course be
an error from VTUNE). In any case it is possible to
get rid of the problem by placing for example TEST ECX,ECX between
the offending instructions.
Eero
btw, when integrating the the x86 asm the the compilation I also
changed the default mode of the VC++ compiler from __stdcall to __cdecl
(/Gd vx /Gz in Makefile.fx) this seems to work ok (and it also solves
qsort related compilation problems with enums.c). Does anybode remember
the
reason for using the __stdcall default? The change does not
affect the external interface of the compiled library.