------- Comment #1 from tbm at cyrius dot com  2007-08-21 15:32 -------
typedef unsigned long int word64;
extern word64 tiger_table[4 * 256];
tiger_compress (word64 * str, word64 state[3])
{
  {
    register word64 a, b, c;
    word64 aa, bb, cc;
    word64 x0, x1, x2, x3, x4, x5, x6, x7;
    b = ((word64 *) state)[1];
    bb = b;
    cc = c;
  __asm__ ("    movl    %10, %%ebx      \n" "   movq    %11, %%rcx      \n" "  
movq    %13, %%rdx   \n" "    movq    %6, %%r8  \n" " xorq    %%r8, %2         
       \n" "  andq    %2, %%rbx  \n" "     andq     %2, %%rcx  \n" "       
andq    %2, %%rdx  \n" "        shrl    $(16-3), %%ebx  \n" "   shrq $(32-3),
%%rcx   \n" "   shrq    $(48-3), %%rdx  \n" "   movzbl  %2b, %%eax      \n" "  
movzwl  %2w, %
%edi    \n" "   movq    (%7,%%rax,8), %%rsi  \n" "      shrl    $(8), %%edi 
\n" "      movq    %2, %%
rax  \n" "      xorq    (2048*1)(%7,%%rbx), %%rsi  \n" "        movq    %2,
%%rbx  \n" "        shrl $24, %%eax \n" " andq    %12, %%rbx      \n" "   xorq 
  (2048*2)(%7,%%rcx), %%rsi  \n" "        shrq $(40-3), %%rbx \n" "     movq   
%2, %%rcx  \n" "        xorq    (2048*3)(%7,%%rdx), %%rsi  \n"
 "      movq    (2048*3)(%7,%%rdi,8), %%rdx  \n" "      shrq    $56, %%rcx \n"
"        xorq    (2048*
2)(%7,%%rax,8), %%rdx  \n" "    xorq    (2048*1)(%7,%%rbx), %%rdx  \n" "       
subq     %%rsi, %0 \n"
 "      xorq    (%7,%%rcx,8), %%rdx  \n" "      addq     %%rdx, %1 \n" "leaq   
(%1,%1,8), %1\n": "+r"
 (c), "+r" (a), "+r" (b): "r" (c), "r" (a), "r" (b), "m" (x7), "r"
(&tiger_table), "i" (0xFFL), "i" (0
xFF00L), "i" (0xFF0000L), "r" (0xFF00000000LL), "r" (0xFF0000000000LL), "r"
(0xFF000000000000LL):"3",
"%rax", "%rbx", "%rcx", "%rdx", "%rsi", "%edi",
             "%r8");
      {
      }
    b -= bb;
    c += cc;
    ((word64 *) state)[1] = b;
    ((word64 *) state)[2] = c;
  };
}
tiger_t (word64 * str, word64 length, word64 res[3])
{
}


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33138

Reply via email to