On Thursday 30 June 2011 20:06:22 Cactus wrote: > On Jun 30, 5:17 pm, Jason <ja...@njkfrudils.plus.com> wrote: > > On Thursday 30 June 2011 16:28:41 Cactus wrote: > > > On Jun 30, 4:14 pm, Jason <ja...@njkfrudils.plus.com> wrote: > > > > On Thursday 30 June 2011 16:07:37 Cactus wrote: > > > > > On Jun 30, 3:00 pm, Jason <ja...@njkfrudils.plus.com> wrote: > > > > > > On Thursday 30 June 2011 07:59:58 Jason wrote: > > > > > > > On Thursday 30 June 2011 01:51:41 Bill Hart wrote: > > > > > > > > On 30 June 2011 01:39, Jason <ja...@njkfrudils.plus.com> wrote: > > > > > > > > > On Thursday 30 June 2011 00:42:07 jason wrote: > > > > > > > > >> > 12) Yasm to assemble all asm files , just need to get it > > > > > > > > >> > to work in a FAT build > > > > > > > > >> > > > > > > > > >> This only happens in a shared build and appears to be > > > > > > > > >> caused by square brackets in the fat_entrys.asm file. I > > > > > > > > >> not sure what the sure brackets are for? Anyway the whole > > > > > > > > >> thing should be rewritten with RIP relative addressing > > > > > > > > >> because the current code breaks the call/ret symmetry > > > > > > > > > > > > > > > > > > No it doesn't , DUH > > > > > > > > > > > > > > > > > >> , and > > > > > > > > >> this will knock a few cycles off. > > > > > > > > >> > > > > > > > > >> Jason > > > > > > > > > > > > > > > > > > using rip relative addressing fixes the problem , but I'm > > > > > > > > > still not 100% convinced as the old code was > > > > > > > > > > > > > > > > > > call L(movl_eip_edx) > > > > > > > > > > > > > > > > > > L(entry_here$2): > > > > > > > > > addq $_GLOBAL_OFFSET_TABLE_+[.-L(entry_here$2)], > > > > > > > > > %r11 movq GSYM_PREFIX`'__gmpn_cpuvec@GOT(%r11), %r11 > > > > > > > > > jmp *m4_empty_if_zero($2)(%r11) > > > > > > > > > > > > > > > > > > the bit of code > > > > > > > > > > > > > > > > > > .-L(entry_here$2) > > > > > > > > > > > > > > > > > > should always evaluate to 0 ??? > > > > > > > > > and what do the square brackets do ? they get passed to the > > > > > > > > > assembler(or rather gcc) > > > > > > > > > > > > > > > > > > assuming they always evalulate to zero we can use > > > > > > > > > > > > > > > > > > lea _GLOBAL_OFFSET_TABLE(%rip),%r11 > > > > > > > > > movq GSYM_PREFIX`'__gmpn_cpuvec@GOT(%r11), %r11 > > > > > > > > > jmp *m4_empty_if_zero($2)(%r11) > > > > > > > > > > > > > > > > > > instead which passes make check > > > > > > > > > > > > > > > > Who the hell knows. You probably understand this better than > > > > > > > > any of us here. What you say certainly sounds feasible. > > > > > > > > > > > > > > > > Bill. > > > > > > > > > > > > > > Without the square brackets we get the error > > > > > > > > > > > > > > tmp-fat_entry.s:61: Error: undefined symbol > > > > > > > `_GLOBAL_OFFSET_TABLE_' in operation > > > > > > > > > > > > > > strange. I'll go ahead with the rip relative form and if we get > > > > > > > a problem we only need to revert fat_entry.asm and change back > > > > > > > from yasm to gas in mpn/Makeasm.am > > > > > > > > > > > > > > Jason > > > > > > > > > > > > Hi , I've changed the x86_64 and x86_64w fat builds to RIP > > > > > > addressing , which is faster,neater and smaller and also set > > > > > > x86_64 to use yasm for all *.asm and *.as in the mpn directory. > > > > > > x86_64w already used yasm only , except for fat_entry.asm where > > > > > > gas is still used , we could fairly easily change this but whats > > > > > > the point. We could also implement the reverse and get gas to > > > > > > build all the *.as *.asm files , that way would remove the need > > > > > > for yasm(execpt for MSVC, which you have to download it separate > > > > > > anyway) > > > > > > > > > > I really don't want any code in x86_64w that does not (a) compile > > > > > with YASM, and (b) does not comply with Widows x64 calling > > > > > conventions. > > > > > > > > > > Brian > > > > > > > > It would involve no code or ABI changes , I would just use the GAS > > > > options to get it to accept the existing code with NO modifications , > > > > it's pretty easy to do , take a day or two , but I have no intention > > > > of doing it anytime soon :) > > > > > > And I forgot (c) no m4 either since this tool is completely alien to > > > Windows :-) > > > > Yep , no M4 , but I meant only for unix like shells , I'm not going to > > mess with the GUI,MSBUILD,CL builds, but to be perverse we could install > > M4 like we do for YASM .... :) or even worse autotools does support > > CL.EXE so ..... aaaarrrggghhhh > > > > > Maybe we should create two 'x86_64w directories' since the growth of > > > what is in the current x86_64w directory makes it ever less obvious > > > what I am managing and what I am not? > > > > No , the only directory not used by the MSVC builds is "fat" , there is > > no new asm code except fat_entry.asm and there wont be anything else. I > > know you don't have a separate GUI MSVC build for bobcat , but there is > > no new code there. I wont be writing any windows asm code as you can do > > it so much faster > > > > :) . If at some stage you get a bobcat say(they are great media players, > > > > fanless and silent) and wanted to do a GUI build for it , then the best > > asm functions are already there, otherwise just ignore the directory. > > MinGW64 can do a bobcat build and so can the CL MSVC build. > > Say I do write some specific linux bobcat code , then it's totally up to > > you whether you do a windows version. I will at some some be doing a > > fake ABI , so I can write and speed test windows code on a linux box > > without needing any windows OS'es on that particular cpu. > > I am not worried about the mingw64 build since I don't explicitly > support this. > > But most people will expect the MSVC command line build to be fully > compliant with x64 calling conventions and I don't think this will be > true for a FAT build unlesss the proper prolgues and epilogues have > been implemented in the initialisation and vectoring code. >
Yep , the current MinGW64 can be built and run as a FAT build , but I guess it's not completely compliant , have to think about it , see if it's worth fixing > To me it doesn't make sense to have even one *.asm file in the x86_64 > directory that requires m4 and GAS (both *nix tools). This directory > is explicitly for code that is intended for Windows and it should > hence be possible to build all the code it contains with native > Windows tools (+YASM). > > But since I place a high priority on maintaining the Windows status of > files in this directory, I will do the conversion if you can provide > the m4 output for the asm file in question. I can probably convert > without this but there seem to be some pretty nasty m4-isms that need > converting. > > If we cannot do this, I am inclined to split off the x86_64w Windows > code into a seperate directory and convert it to use MASM so that we > have a true fully native build (i.e. no YASM). This would allow the > Windows build with MSVC tools alone (several people have asked for > this). > > Brian -- You received this message because you are subscribed to the Google Groups "mpir-devel" group. To post to this group, send email to mpir-devel@googlegroups.com. To unsubscribe from this group, send email to mpir-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/mpir-devel?hl=en.