📄 ppc.pl
字号:
$LD r6,`3*$BNSZ`(r4) $LD r7,`2*$BNSZ`(r4) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r8,r12 adde r10,r9,r10 addze r11,r11 $ST r12,`5*$BNSZ`(r3) #r[5]=c3 #mul_add_c(a[3],b[3],c1,c2,c3); $LD r7,`3*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r8,r10 adde r11,r9,r11 $ST r10,`6*$BNSZ`(r3) #r[6]=c1 $ST r11,`7*$BNSZ`(r3) #r[7]=c2 bclr BO_ALWAYS,CR0_LT .long 0x00000000## NOTE: The following label name should be changed to# "bn_mul_comba8" i.e. remove the first dot# for the gcc compiler. This should be automatically# done in the build# .align 4.bn_mul_comba8:## Optimized version of the bn_mul_comba8 routine.## void bn_mul_comba8(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b)# r3 contains r# r4 contains a# r5 contains b# r6, r7 are the 2 BN_ULONGs being multiplied.# r8, r9 are the results of the 32x32 giving 64 multiply.# r10, r11, r12 are the equivalents of c1, c2, and c3.# xor r0,r0,r0 #r0=0. Used in addze below. #mul_add_c(a[0],b[0],c1,c2,c3); $LD r6,`0*$BNSZ`(r4) #a[0] $LD r7,`0*$BNSZ`(r5) #b[0] $UMULL r10,r6,r7 $UMULH r11,r6,r7 $ST r10,`0*$BNSZ`(r3) #r[0]=c1; #mul_add_c(a[0],b[1],c2,c3,c1); $LD r7,`1*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 addze r12,r9 # since we didnt set r12 to zero before. addze r10,r0 #mul_add_c(a[1],b[0],c2,c3,c1); $LD r6,`1*$BNSZ`(r4) $LD r7,`0*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 $ST r11,`1*$BNSZ`(r3) #r[1]=c2; #mul_add_c(a[2],b[0],c3,c1,c2); $LD r6,`2*$BNSZ`(r4) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r0 #mul_add_c(a[1],b[1],c3,c1,c2); $LD r6,`1*$BNSZ`(r4) $LD r7,`1*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 #mul_add_c(a[0],b[2],c3,c1,c2); $LD r6,`0*$BNSZ`(r4) $LD r7,`2*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 $ST r12,`2*$BNSZ`(r3) #r[2]=c3; #mul_add_c(a[0],b[3],c1,c2,c3); $LD r7,`3*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r0 #mul_add_c(a[1],b[2],c1,c2,c3); $LD r6,`1*$BNSZ`(r4) $LD r7,`2*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 #mul_add_c(a[2],b[1],c1,c2,c3); $LD r6,`2*$BNSZ`(r4) $LD r7,`1*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 #mul_add_c(a[3],b[0],c1,c2,c3); $LD r6,`3*$BNSZ`(r4) $LD r7,`0*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 $ST r10,`3*$BNSZ`(r3) #r[3]=c1; #mul_add_c(a[4],b[0],c2,c3,c1); $LD r6,`4*$BNSZ`(r4) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r0 #mul_add_c(a[3],b[1],c2,c3,c1); $LD r6,`3*$BNSZ`(r4) $LD r7,`1*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 #mul_add_c(a[2],b[2],c2,c3,c1); $LD r6,`2*$BNSZ`(r4) $LD r7,`2*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 #mul_add_c(a[1],b[3],c2,c3,c1); $LD r6,`1*$BNSZ`(r4) $LD r7,`3*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 #mul_add_c(a[0],b[4],c2,c3,c1); $LD r6,`0*$BNSZ`(r4) $LD r7,`4*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 $ST r11,`4*$BNSZ`(r3) #r[4]=c2; #mul_add_c(a[0],b[5],c3,c1,c2); $LD r7,`5*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r0 #mul_add_c(a[1],b[4],c3,c1,c2); $LD r6,`1*$BNSZ`(r4) $LD r7,`4*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 #mul_add_c(a[2],b[3],c3,c1,c2); $LD r6,`2*$BNSZ`(r4) $LD r7,`3*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 #mul_add_c(a[3],b[2],c3,c1,c2); $LD r6,`3*$BNSZ`(r4) $LD r7,`2*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 #mul_add_c(a[4],b[1],c3,c1,c2); $LD r6,`4*$BNSZ`(r4) $LD r7,`1*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 #mul_add_c(a[5],b[0],c3,c1,c2); $LD r6,`5*$BNSZ`(r4) $LD r7,`0*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 $ST r12,`5*$BNSZ`(r3) #r[5]=c3; #mul_add_c(a[6],b[0],c1,c2,c3); $LD r6,`6*$BNSZ`(r4) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r0 #mul_add_c(a[5],b[1],c1,c2,c3); $LD r6,`5*$BNSZ`(r4) $LD r7,`1*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 #mul_add_c(a[4],b[2],c1,c2,c3); $LD r6,`4*$BNSZ`(r4) $LD r7,`2*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 #mul_add_c(a[3],b[3],c1,c2,c3); $LD r6,`3*$BNSZ`(r4) $LD r7,`3*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 #mul_add_c(a[2],b[4],c1,c2,c3); $LD r6,`2*$BNSZ`(r4) $LD r7,`4*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 #mul_add_c(a[1],b[5],c1,c2,c3); $LD r6,`1*$BNSZ`(r4) $LD r7,`5*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 #mul_add_c(a[0],b[6],c1,c2,c3); $LD r6,`0*$BNSZ`(r4) $LD r7,`6*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 $ST r10,`6*$BNSZ`(r3) #r[6]=c1; #mul_add_c(a[0],b[7],c2,c3,c1); $LD r7,`7*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r0 #mul_add_c(a[1],b[6],c2,c3,c1); $LD r6,`1*$BNSZ`(r4) $LD r7,`6*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 #mul_add_c(a[2],b[5],c2,c3,c1); $LD r6,`2*$BNSZ`(r4) $LD r7,`5*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 #mul_add_c(a[3],b[4],c2,c3,c1); $LD r6,`3*$BNSZ`(r4) $LD r7,`4*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 #mul_add_c(a[4],b[3],c2,c3,c1); $LD r6,`4*$BNSZ`(r4) $LD r7,`3*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 #mul_add_c(a[5],b[2],c2,c3,c1); $LD r6,`5*$BNSZ`(r4) $LD r7,`2*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 #mul_add_c(a[6],b[1],c2,c3,c1); $LD r6,`6*$BNSZ`(r4) $LD r7,`1*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 #mul_add_c(a[7],b[0],c2,c3,c1); $LD r6,`7*$BNSZ`(r4) $LD r7,`0*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 $ST r11,`7*$BNSZ`(r3) #r[7]=c2; #mul_add_c(a[7],b[1],c3,c1,c2); $LD r7,`1*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r0 #mul_add_c(a[6],b[2],c3,c1,c2); $LD r6,`6*$BNSZ`(r4) $LD r7,`2*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 #mul_add_c(a[5],b[3],c3,c1,c2); $LD r6,`5*$BNSZ`(r4) $LD r7,`3*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 #mul_add_c(a[4],b[4],c3,c1,c2); $LD r6,`4*$BNSZ`(r4) $LD r7,`4*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 #mul_add_c(a[3],b[5],c3,c1,c2); $LD r6,`3*$BNSZ`(r4) $LD r7,`5*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 #mul_add_c(a[2],b[6],c3,c1,c2); $LD r6,`2*$BNSZ`(r4) $LD r7,`6*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 #mul_add_c(a[1],b[7],c3,c1,c2); $LD r6,`1*$BNSZ`(r4) $LD r7,`7*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 $ST r12,`8*$BNSZ`(r3) #r[8]=c3; #mul_add_c(a[2],b[7],c1,c2,c3); $LD r6,`2*$BNSZ`(r4) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r0 #mul_add_c(a[3],b[6],c1,c2,c3); $LD r6,`3*$BNSZ`(r4) $LD r7,`6*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 #mul_add_c(a[4],b[5],c1,c2,c3); $LD r6,`4*$BNSZ`(r4) $LD r7,`5*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 #mul_add_c(a[5],b[4],c1,c2,c3); $LD r6,`5*$BNSZ`(r4) $LD r7,`4*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 #mul_add_c(a[6],b[3],c1,c2,c3); $LD r6,`6*$BNSZ`(r4) $LD r7,`3*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 #mul_add_c(a[7],b[2],c1,c2,c3); $LD r6,`7*$BNSZ`(r4) $LD r7,`2*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12 $ST r10,`9*$BNSZ`(r3) #r[9]=c1; #mul_add_c(a[7],b[3],c2,c3,c1); $LD r7,`3*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r0 #mul_add_c(a[6],b[4],c2,c3,c1); $LD r6,`6*$BNSZ`(r4) $LD r7,`4*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 #mul_add_c(a[5],b[5],c2,c3,c1); $LD r6,`5*$BNSZ`(r4) $LD r7,`5*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 #mul_add_c(a[4],b[6],c2,c3,c1); $LD r6,`4*$BNSZ`(r4) $LD r7,`6*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 #mul_add_c(a[3],b[7],c2,c3,c1); $LD r6,`3*$BNSZ`(r4) $LD r7,`7*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r11,r11,r8 adde r12,r12,r9 addze r10,r10 $ST r11,`10*$BNSZ`(r3) #r[10]=c2; #mul_add_c(a[4],b[7],c3,c1,c2); $LD r6,`4*$BNSZ`(r4) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r0 #mul_add_c(a[5],b[6],c3,c1,c2); $LD r6,`5*$BNSZ`(r4) $LD r7,`6*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 #mul_add_c(a[6],b[5],c3,c1,c2); $LD r6,`6*$BNSZ`(r4) $LD r7,`5*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 #mul_add_c(a[7],b[4],c3,c1,c2); $LD r6,`7*$BNSZ`(r4) $LD r7,`4*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r12,r12,r8 adde r10,r10,r9 addze r11,r11 $ST r12,`11*$BNSZ`(r3) #r[11]=c3; #mul_add_c(a[7],b[5],c1,c2,c3); $LD r7,`5*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r0 #mul_add_c(a[6],b[6],c1,c2,c3); $LD r6,`6*$BNSZ`(r4) $LD r7,`6*$BNSZ`(r5) $UMULL r8,r6,r7 $UMULH r9,r6,r7 addc r10,r10,r8 adde r11,r11,r9 addze r12,r12
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -