.ugen .verstamp 3 11 .text .align 4 .globl mult155b64c # 1 #define UL1 ((unsigned long)1) # 2 void * mult155b64c(a,b,c) # 3 unsigned long a[], b[], c[]; # 4 { unsigned long a00=a[0],a01=a[1],a02=a[2], b0=b[0],b1=b[1],b2=b[2], .ent mult155b64c 2 mult155b64c: ldgp $gp, 0($27) lda $sp, -64($sp) stq $26, 0($sp) stq $9, 8($sp) stq $10, 16($sp) stq $11, 24($sp) stq $12, 32($sp) stq $13, 40($sp) stq $14, 48($sp) stq $15, 56($sp) .mask 0x04001E00, -64 .frame $sp, 64, $26, 0 .prologue 1 ldq $0, 0($16) ldq $19, 8($16) ldq $20, 16($16) ldq $21, 0($17) ldq $1, 8($17) ldq $2, 16($17) # 5 a10,a11,a12,a20,a21,a22,a30,a31,a32, c0=0,c1=0,c2=0,c3=0,c4=0, k; bis $31, $31, $3 bis $31, $31, $4 bis $31, $31, $5 bis $31, $31, $6 bis $31, $31, $7 # 6 a12 = (a02<<1)+(a01>>63); a11 = (a01<<1)+(a00>>63); a10 = a00<<1; sll $20, 1, $22 srl $19, 63, $23 addq $22, $23, $8 sll $19, 1, $24 srl $0, 63, $25 addq $24, $25, $26 # 7 a22 = (a02<<2)+(a01>>62); a21 = (a01<<2)+(a00>>62); a20 = a00<<2; srl $19, 62, $27 s4addq $20, $27, $9 srl $0, 62, $22 s4addq $19, $22, $10 # 8 a32 = (a02<<3)+(a01>>61); a31 = (a01<<3)+(a00>>61); a30 = a00<<3; srl $19, 61, $23 s8addq $20, $23, $11 srl $0, 61, $24 s8addq $19, $24, $12 # 9 for (k=0;k<9;k++) bis $31, $31, $16 .align 3 $32: # 10 { c3<<=4; c3+=c2>>60; c2<<=4; c2+=c1>>60; sll $6, 4, $6 srl $5, 60, $25 addq $6, $25, $6 sll $5, 4, $5 srl $4, 60, $27 addq $5, $27, $5 # 11 c1<<=4; c1+=c0>>60; c0<<=4; sll $4, 4, $4 srl $3, 60, $22 addq $4, $22, $4 sll $3, 4, $3 # 12 if (b0 & (UL1<<63)) { c0 ^= a30; c1 ^= a31; c2 ^= a32; } sll $0, 3, $23 xor $3, $23, $13 xor $4, $12, $14 xor $5, $11, $15 cmovlt $21, $13, $3 cmovlt $21, $14, $4 cmovlt $21, $15, $5 # 13 if (b0 & (UL1<<62)) { c0 ^= a20; c1 ^= a21; c2 ^= a22; } addq $21, $21, $24 sll $0, 2, $25 xor $3, $25, $13 xor $4, $10, $14 xor $5, $9, $15 cmovlt $24, $13, $3 cmovlt $24, $14, $4 cmovlt $24, $15, $5 # 14 if (b0 & (UL1<<61)) { c0 ^= a10; c1 ^= a11; c2 ^= a12; } s4addq $21, 0, $27 sll $0, 1, $22 xor $3, $22, $13 xor $4, $26, $14 xor $5, $8, $15 cmovlt $27, $13, $3 cmovlt $27, $14, $4 cmovlt $27, $15, $5 # 15 if (b0 & (UL1<<60)) { c0 ^= a00; c1 ^= a01; c2 ^= a02; } s8addq $21, 0, $23 xor $3, $0, $13 xor $4, $19, $14 xor $5, $20, $15 cmovlt $23, $13, $3 cmovlt $23, $14, $4 cmovlt $23, $15, $5 # 16 if (b1 & (UL1<<63)) { c1 ^= a30; c2 ^= a31; c3 ^= a32; } sll $0, 3, $24 xor $4, $24, $13 xor $5, $12, $14 xor $6, $11, $15 cmovlt $1, $13, $4 cmovlt $1, $14, $5 cmovlt $1, $15, $6 # 17 if (b1 & (UL1<<62)) { c1 ^= a20; c2 ^= a21; c3 ^= a22; } addq $1, $1, $25 sll $0, 2, $27 xor $4, $27, $13 xor $5, $10, $14 xor $6, $9, $15 cmovlt $25, $13, $4 cmovlt $25, $14, $5 cmovlt $25, $15, $6 # 18 if (b1 & (UL1<<61)) { c1 ^= a10; c2 ^= a11; c3 ^= a12; } s4addq $1, 0, $22 sll $0, 1, $23 xor $4, $23, $13 xor $5, $26, $14 xor $6, $8, $15 cmovlt $22, $13, $4 cmovlt $22, $14, $5 cmovlt $22, $15, $6 # 19 if (b1 & (UL1<<60)) { c1 ^= a00; c2 ^= a01; c3 ^= a02; } s8addq $1, 0, $24 xor $4, $0, $13 xor $5, $19, $14 xor $6, $20, $15 cmovlt $24, $13, $4 cmovlt $24, $14, $5 cmovlt $24, $15, $6 # 20 b0<<=4; b1<<=4; } sll $21, 4, $21 sll $1, 4, $1 addq $16, 1, $16 cmpeq $16, 9, $25 beq $25, $32 # 21 b2<<=36; sll $2, 36, $2 # 22 for (;k<16;k++) cmpult $16, 16, $27 beq $27, $54 .align 3 $41: # 23 { c4<<=4; c4+=c3>>60; c3<<=4; c3+=c2>>60; c2<<=4; c2+=c1>>60; sll $7, 4, $7 srl $6, 60, $22 addq $7, $22, $7 sll $6, 4, $6 srl $5, 60, $23 addq $6, $23, $6 sll $5, 4, $5 srl $4, 60, $24 addq $5, $24, $5 # 24 c1<<=4; c1+=c0>>60; c0<<=4; sll $4, 4, $4 srl $3, 60, $25 addq $4, $25, $4 sll $3, 4, $3 # 25 if (b0 & (UL1<<63)) { c0 ^= a30; c1 ^= a31; c2 ^= a32; } sll $0, 3, $27 xor $3, $27, $13 xor $4, $12, $14 xor $5, $11, $15 cmovlt $21, $13, $3 cmovlt $21, $14, $4 cmovlt $21, $15, $5 # 26 if (b0 & (UL1<<62)) { c0 ^= a20; c1 ^= a21; c2 ^= a22; } addq $21, $21, $22 sll $0, 2, $23 xor $3, $23, $13 xor $4, $10, $14 xor $5, $9, $15 cmovlt $22, $13, $3 cmovlt $22, $14, $4 cmovlt $22, $15, $5 # 27 if (b0 & (UL1<<61)) { c0 ^= a10; c1 ^= a11; c2 ^= a12; } s4addq $21, 0, $24 sll $0, 1, $25 xor $3, $25, $13 xor $4, $26, $14 xor $5, $8, $15 cmovlt $24, $13, $3 cmovlt $24, $14, $4 cmovlt $24, $15, $5 # 28 if (b0 & (UL1<<60)) { c0 ^= a00; c1 ^= a01; c2 ^= a02; } s8addq $21, 0, $27 xor $3, $0, $13 xor $4, $19, $14 xor $5, $20, $15 cmovlt $27, $13, $3 cmovlt $27, $14, $4 cmovlt $27, $15, $5 # 29 if (b1 & (UL1<<63)) { c1 ^= a30; c2 ^= a31; c3 ^= a32; } sll $0, 3, $22 xor $4, $22, $13 xor $5, $12, $14 xor $6, $11, $15 cmovlt $1, $13, $4 cmovlt $1, $14, $5 cmovlt $1, $15, $6 # 30 if (b1 & (UL1<<62)) { c1 ^= a20; c2 ^= a21; c3 ^= a22; } addq $1, $1, $23 sll $0, 2, $24 xor $4, $24, $13 xor $5, $10, $14 xor $6, $9, $15 cmovlt $23, $13, $4 cmovlt $23, $14, $5 cmovlt $23, $15, $6 # 31 if (b1 & (UL1<<61)) { c1 ^= a10; c2 ^= a11; c3 ^= a12; } s4addq $1, 0, $25 sll $0, 1, $27 xor $4, $27, $13 xor $5, $26, $14 xor $6, $8, $15 cmovlt $25, $13, $4 cmovlt $25, $14, $5 cmovlt $25, $15, $6 # 32 if (b1 & (UL1<<60)) { c1 ^= a00; c2 ^= a01; c3 ^= a02; } s8addq $1, 0, $22 xor $4, $0, $13 xor $5, $19, $14 xor $6, $20, $15 cmovlt $22, $13, $4 cmovlt $22, $14, $5 cmovlt $22, $15, $6 # 33 if (b2 & (UL1<<63)) { c2 ^= a30; c3 ^= a31; c4 ^= a32; } sll $0, 3, $23 xor $5, $23, $13 xor $6, $12, $14 xor $7, $11, $15 cmovlt $2, $13, $5 cmovlt $2, $14, $6 cmovlt $2, $15, $7 # 34 if (b2 & (UL1<<62)) { c2 ^= a20; c3 ^= a21; c4 ^= a22; } addq $2, $2, $24 sll $0, 2, $25 xor $5, $25, $13 xor $6, $10, $14 xor $7, $9, $15 cmovlt $24, $13, $5 cmovlt $24, $14, $6 cmovlt $24, $15, $7 # 35 if (b2 & (UL1<<61)) { c2 ^= a10; c3 ^= a11; c4 ^= a12; } s4addq $2, 0, $27 sll $0, 1, $22 xor $5, $22, $13 xor $6, $26, $14 xor $7, $8, $15 cmovlt $27, $13, $5 cmovlt $27, $14, $6 cmovlt $27, $15, $7 # 36 if (b2 & (UL1<<60)) { c2 ^= a00; c3 ^= a01; c4 ^= a02; } s8addq $2, 0, $23 xor $5, $0, $13 xor $6, $19, $14 xor $7, $20, $15 cmovlt $23, $13, $5 cmovlt $23, $14, $6 cmovlt $23, $15, $7 # 37 b0<<=4; b1<<=4; b2<<=4; } sll $21, 4, $21 sll $1, 4, $1 sll $2, 4, $2 addq $16, 1, $16 cmpult $16, 16, $24 bne $24, $41 $54: # 38 c[0]=c0; c[1]=c1; c[2]=c2; c[3]=c3; c[4]=c4; } stq $3, 0($18) stq $4, 8($18) stq $5, 16($18) stq $6, 24($18) stq $7, 32($18) .livereg 0xFC7F0002,0x3FC00000 ldq $26, 0($sp) ldq $9, 8($sp) ldq $10, 16($sp) ldq $11, 24($sp) ldq $12, 32($sp) ldq $13, 40($sp) ldq $14, 48($sp) ldq $15, 56($sp) lda $sp, 64($sp) ret $31, ($26), 1 .end mult155b64b