![]() |
|
|
#144 |
|
Oct 2006
On a Suzuki Boulevard C90
2·3·41 Posts |
FYI, sr5sieve-1.5.8 passes the sr5check test.
Thanks for the clarification on the command-line.txt option. Using that is easier for me in one way because I can create finer grained ranges (I never have the same number of CPUs to run with, so I can't get even splits on G boundaries when divying up ranges). 1.5.9 doesn't compile when EXPERIMENTAL is set to 1. I get errors starting with: gcc412 -O3 -ffast-math -mtune=G5 -mcpu=970 -m64 -fomit-frame-pointer -maltivec -mabi=altivec -Wall -Xassembler -mregnames -DDEFAULT_L1_CACHE_SIZE=32 -DDEFAULT_L2_CACHE_SIZE=512 -DUSE_ASM -DUSE_INLINE_MULMOD -DNDEBUG -c -o bsgs.o bsgs.c bsgs.c: In function 'climb_ladder_2': bsgs.c:603: error: impossible register constraint in 'asm' I've attached the full error list. I get the same errors with gcc-3.4.6. Last fiddled with by BlisteringSheep on 2007-06-26 at 03:26 Reason: added EXPERIMENTAL notation |
|
|
|
|
|
#145 |
|
Mar 2003
New Zealand
115710 Posts |
This is probably to do with the condition registers. I will write a version that uses fixed registers cr4, cr5, cr6, cr7 instead of trying to get GCC to choose them. Until then you could try changing the definition of CONDITION_REGISTER_T from `uint64_t' to `char', or `int' and see if it makes a difference.
Last fiddled with by geoff on 2007-06-26 at 04:02 Reason: fixed quote. |
|
|
|
|
|
#146 |
|
Oct 2006
On a Suzuki Boulevard C90
2×3×41 Posts |
|
|
|
|
|
|
#147 | ||
|
"Mark"
Apr 2003
Between here and the
11·577 Posts |
Quote:
Quote:
8 |
||
|
|
|
|
|
#148 |
|
Mar 2003
New Zealand
13×89 Posts |
I think I know what caused the compile errors in verison 1.5.9 -- register "cc" refers to all condition registers, not just cr0. I think if you replaced each "cc" with "cr0" then it would compile.
In version 1.5.10 I have used fixed condition registers instead of getting GCC to choose which ones to use. There are two options in asm-ppc64.h: EXPERIMENTAL=1 uses just one condition register for all conditional branches, EXPERIMENTAL=2 uses up to 4 condition registers. |
|
|
|
|
|
#149 |
|
Oct 2006
On a Suzuki Boulevard C90
2·3·41 Posts |
With EXPERIMENTAL set to 1 or 2:
gcc412 -O3 -ffast-math -mtune=G5 -mcpu=970 -m64 -fomit-frame-pointer -maltivec -mabi=altivec -Wall -Xassembler -mregnames -DDEFAULT_L1_CACHE_SIZE=32 -DDEFAULT_L2_CACHE_SIZE=512 -DUSE_ASM -DUSE_INLINE_MULMOD -DNDEBUG -c -o bsgs.o bsgs.c bsgs.c: In function 'baby_steps_4': bsgs.c:263: error: expected string literal before ')' token bsgs.c: In function 'baby_steps_1': bsgs.c:340: error: expected string literal before ')' token bsgs.c: In function 'giant_steps_1': bsgs.c:511: error: expected string literal before ')' token bsgs.c: In function 'climb_ladder_4': bsgs.c:617: error: expected string literal before ')' token bsgs.c: In function 'climb_ladder_1': bsgs.c:659: error: expected string literal before ')' token bsgs.c: In function 'setup64': bsgs.c:763: error: expected string literal before ')' token bsgs.c:796: error: expected string literal before ')' token bsgs.c:848: error: expected string literal before ')' token make: *** [bsgs.o] Error 1 |
|
|
|
|
|
#150 |
|
Oct 2006
On a Suzuki Boulevard C90
2·3·41 Posts |
The output from the preprocessor for the part of baby_steps_4() with the error:
Code:
for (j = 0; j < 3; j++)
BJ64[j+1] = ({ register uint64_t ret, s, t; asm ("mulhdu %0, %8, %3" "\n\t" "mulld %1, %9, %3" "\n\t" "mulhdu %2, %9, %3" "\n\t" "adde %1, %0, %1" "\n\t" "addze %2, %2" "\n\t" "srd %1, %1, %6" "\n\t" "sld %2, %2, %7" "\n\t" "or %1, %1, %2" "\n\t" "mulld %0, %3, %4" "\n\t" "mulld %2, %1, %5" "\n\t" "sub %0, %0, %2" "\n\t" "cmpdi cr6, %0, 0" "\n\t" "bge+ cr6, 0f" "\n\t" "add %0, %0, %5" "\n" "0:" : "=&r" (ret), "=&r" (s), "=&r" (t) : "r" (BJ64[j]), "r" (b), "r" (p), "r" (pShift), "r" (64-pShift), "r" (bLO), "r" (bHI) : "cr0", "cr6", ); ret; });
|
|
|
|
|
|
#151 |
|
Mar 2003
New Zealand
48516 Posts |
|
|
|
|
|
|
#152 |
|
Oct 2006
On a Suzuki Boulevard C90
2×3×41 Posts |
As best as I can see, it's complaining because after preprocessing, the last line of the assembly code:
Code:
: "r7", "r8", "r9", "r10", "cr0", "cr6" ); \ Code:
"r" (bLO), "r" (bHI) : "cr0", "cr6", ); ret; }); |
|
|
|
|
|
#153 | |
|
Mar 2003
New Zealand
13×89 Posts |
Quote:
Code:
: "cr0", "cr6", ); \ |
|
|
|
|
|
|
#154 |
|
Oct 2006
On a Suzuki Boulevard C90
2·3·41 Posts |
The difficulty for me is that the trailing comma isn't in asm-ppc64.h; it's in the preprocessed code. I can't see what it is in asm-ppc64.h that is causing it to appear after preprocessing.
Never mind. I found it (I was looking in the wrong place). Last fiddled with by BlisteringSheep on 2007-06-28 at 02:27 Reason: eating crow |
|
|
|
![]() |
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| srsieve/sr2sieve enhancements | rogue | Software | 300 | 2021-03-18 20:31 |
| 32-bit of sr1sieve and sr2sieve for Win | pepi37 | Software | 5 | 2013-08-09 22:31 |
| sr2sieve question | SaneMur | Information & Answers | 2 | 2011-08-21 22:04 |
| sr2sieve client | mgpower0 | Prime Sierpinski Project | 54 | 2008-07-15 16:50 |
| How to use sr2sieve | nuggetprime | Riesel Prime Search | 40 | 2007-12-03 06:01 |