David Miller <da...@davemloft.net> writes:

  From: David Miller <da...@davemloft.net>
  Date: Fri, 29 Mar 2013 22:14:05 -0400 (EDT)
  
  > Great.  Let's sort out the strange hang behavior I get with your code.
  > 
  > I think it's rshift.  I actually happened to be working on rshift when
  > you sent your combined code, and I also get strange hangs with my
  > rshift too.
  
  For reference here is the rshift.asm I was using.
  
Put this at the end of your code, to make it work:

L(end34):
        srlx    u0, cnt, %l2
        or      %l3, %l4, r0

        sllx    u1, tcnt, %l5
        stx     r0, [n + r0_off]        C WAS: rp + 0

        or      %l2, %l5, r1
        sub     n, -(2 * 8), %o5

        srlx    u1, cnt, %l3
        stx     r1, [%o5 + r1_off]      C WAS: rp + 8

L(end12):
        add     n, r0_off, rp

        andcc   n, 8, %g0
        bz,pn   %xcc, L(done)
         nop

        add     rp, 8, rp

        ldx     [n + u0_off], u1
        sllx    u1, tcnt, %l4
        or      %l3, %l4, r0
        stx     r0, [rp + 8]
        srlx    u1, cnt, %l3
L(done):
        stx     %l3, [rp + 16]

        ret
        restore retval, 0, %o0
EPILOGUE()


-- 
Torbjörn
_______________________________________________
gmp-devel mailing list
gmp-devel@gmplib.org
http://gmplib.org/mailman/listinfo/gmp-devel

Reply via email to