Ilya Zakharevich on Mon, 1 Apr 2002 16:54:45 -0500

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

GP/PARI 2.1.3: ix86 assembler for divll

Try compiling this (e.g., append it to src/gp/gp.c)

  ddummyy(ulong a)
    (void)divll(a, 1000000000);

On ix86, this produces the following assembler:

          .align 2
  .globl _ddummyy
          movl 4(%esp),%eax
          movl _hiremainder,%edx
          divl $1000000000
          movl %edx,_hiremainder

which results in the following message from gas:

  {stdin}: Assembler messages:
  {stdin}:9343: Error: operands given don't match any known 386 instruction

In fact, this particular call to divll() may be a result of inlining
divis() into convi() (see src/kernel/none/mp.c).  Such an inlining is
observed in Math::Pari on one particular flavor of Linux with one
particular version of gcc with one particular build of Perl ;-).
Recall that Math::Pari compiles PARI with the same flags as perl was

Obviously, the flags restricting the arguments of the assembler for
divll() are not restrictive enough.  Can somebody improve the