From: Sten <St...@ma...> - 2005-08-28 18:16:59
|
Hi, Max. Thank you for the information. I'm not able currently to look at the thread you pointed as SourgeForge server is down. I'll do it later. I've done nessesary modifications to the siever-config.h file and now gnfs-sievers compiles without assembly code. I have another question related to the 64-bit binaries. First, I'm glad to announce I've completed the initial steps of converting code so that it can be compiled under VS 2005 x64 target. I've succeded in factoring snfs_small number with help of the Win64 binaries. However, now I'm trying to factor tstS1 number, and I see something odd. gnfs-lasieve4I12e reports very many warning messages like this: warning: not enough polynomials in mpqs with <some-big-number> Is it normal for 64-bit binaries? Have this problem been ever observed under 64-bit linux compilations or not? You know, Microsoft's 64-bit compiler is slightly different from Unix ones - they decided to leave the 'int' type 4 bytes long. And make 'long' type 8 bytes long. This can lead for us to some unexpected behaviour, however the problem can be easily avoided by fixed all warning messaged compilers prints related to inappropriate types convertion (I'll try to do it later). And at last, is it worth trying to continue tstS1 factorization or the warning above points something went wrong? Sten M> See thread " [Ggnfs-devel] gnfs-lasieve4e.c: is there a need in asm code?" about this code. It seems to be completely useless. M> A proper way to disable it is to alter the following block in ppc32/siever-config.h M> #ifdef __x86_64__ M> #define HAVE_SSIMD M> #endif M> Max M> Sten wrote: >> There is the following piece of assembly code in the gnfs-lasieve4e.c >> file. I found I need to convert it to the format compatible with Win64 >> platform. As MS VC 64 bit compiler doesn't support inline assembler, >> I'm going to place this code into separate file and rewrite it in yasm >> syntax as Brian suggested. >> >> It's not a trouble to convert the code itself, but I need to make a >> subroutine from it and give it a name. Does anyone happen to know what >> this code does or at least how should I name it? >> >> It seems the code searches for the vector of bytes with every coefficient >> greater or equar to x_i. May be, some polinominal comparitions? >> >> #elif defined(__x86_64__) >> asm volatile ( >> "movq (%%rax),%%mm7\n" >> ".align 32\n" >> "1:\n" >> "movq (%%rsi),%%mm1\n" >> "movq 8(%%rsi),%%mm0\n" >> "pmaxub 16(%%rsi),%%mm1\n" >> "pmaxub 24(%%rsi),%%mm0\n" >> "pmaxub %%mm7,%%mm1\n" >> "pmaxub %%mm1,%%mm0\n" >> "pcmpeqb %%mm7,%%mm0\n" >> "pmovmskb %%mm0,%%rax\n" >> "cmpq $255,%%rax\n" >> "jnz 2f\n" >> "leaq 32(%%rsi),%%rsi\n" >> "cmpq %%rsi,%%rdi\n" >> "ja 1b\n" >> "2:\n" >> "emms":"=S" (i_o):"a"(&x), >> "S"(i_o), "D"(i_max) >> ); >> >> Sten >> >> >> >> ------------------------------------------------------- >> SF.Net email is Sponsored by the Better Software Conference & EXPO >> September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices >> Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA >> Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf >> _______________________________________________ >> Ggnfs-devel mailing list >> Ggn...@li... >> https://lists.sourceforge.net/lists/listinfo/ggnfs-devel >> >> |