1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.ident "sparcv8plus.s, Version 1.4" 2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.ident "SPARC v9 ISA artwork by Andy Polyakov <appro@fy.chalmers.se>" 3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ==================================================================== 6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL 7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * project. 8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Rights for redistribution and usage in source and binary forms are 10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * granted according to the OpenSSL license. Warranty of any kind is 11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * disclaimed. 12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ==================================================================== 13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This is my modest contributon to OpenSSL project (see 17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * http://www.openssl.org/ for more information about it) and is 18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * a drop-in UltraSPARC ISA replacement for crypto/bn/bn_asm.c 19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * module. For updates see http://fy.chalmers.se/~appro/hpe/. 20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Questions-n-answers. 22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. How to compile? 24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. With SC4.x/SC5.x: 25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * cc -xarch=v8plus -c bn_asm.sparc.v8plus.S -o bn_asm.o 27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * and with gcc: 29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * gcc -mcpu=ultrasparc -c bn_asm.sparc.v8plus.S -o bn_asm.o 31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * or if above fails (it does if you have gas installed): 33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * gcc -E bn_asm.sparc.v8plus.S | as -xarch=v8plus /dev/fd/0 -o bn_asm.o 35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Quick-n-dirty way to fuse the module into the library. 37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Provided that the library is already configured and built 38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * (in 0.9.2 case with no-asm option): 39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * # cd crypto/bn 41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * # cp /some/place/bn_asm.sparc.v8plus.S . 42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * # cc -xarch=v8plus -c bn_asm.sparc.v8plus.S -o bn_asm.o 43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * # make 44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * # cd ../.. 45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * # make; make test 46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Quick-n-dirty way to get rid of it: 48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * # cd crypto/bn 50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * # touch bn_asm.c 51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * # make 52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * # cd ../.. 53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * # make; make test 54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. V8plus achitecture? What kind of beast is that? 56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. Well, it's rather a programming model than an architecture... 57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * It's actually v9-compliant, i.e. *any* UltraSPARC, CPU under 58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * special conditions, namely when kernel doesn't preserve upper 59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 32 bits of otherwise 64-bit registers during a context switch. 60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. Why just UltraSPARC? What about SuperSPARC? 62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. Original release did target UltraSPARC only. Now SuperSPARC 63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * version is provided along. Both version share bn_*comba[48] 64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * implementations (see comment later in code for explanation). 65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * But what's so special about this UltraSPARC implementation? 66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Why didn't I let compiler do the job? Trouble is that most of 67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * available compilers (well, SC5.0 is the only exception) don't 68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * attempt to take advantage of UltraSPARC's 64-bitness under 69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 32-bit kernels even though it's perfectly possible (see next 70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * question). 71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. 64-bit registers under 32-bit kernels? Didn't you just say it 73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * doesn't work? 74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. You can't adress *all* registers as 64-bit wide:-( The catch is 75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * that you actually may rely upon %o0-%o5 and %g1-%g4 being fully 76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * preserved if you're in a leaf function, i.e. such never calling 77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * any other functions. All functions in this module are leaf and 78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 10 registers is a handful. And as a matter of fact none-"comba" 79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * routines don't require even that much and I could even afford to 80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * not allocate own stack frame for 'em:-) 81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. What about 64-bit kernels? 83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. What about 'em? Just kidding:-) Pure 64-bit version is currently 84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * under evaluation and development... 85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. What about shared libraries? 87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. What about 'em? Kidding again:-) Code does *not* contain any 88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * code position dependencies and it's safe to include it into 89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * shared library as is. 90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. How much faster does it go? 92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. Do you have a good benchmark? In either case below is what I 93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * experience with crypto/bn/expspeed.c test program: 94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * v8plus module on U10/300MHz against bn_asm.c compiled with: 96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * cc-5.0 -xarch=v8plus -xO5 -xdepend +7-12% 98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * cc-4.2 -xarch=v8plus -xO5 -xdepend +25-35% 99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * egcs-1.1.2 -mcpu=ultrasparc -O3 +35-45% 100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * v8 module on SS10/60MHz against bn_asm.c compiled with: 102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * cc-5.0 -xarch=v8 -xO5 -xdepend +7-10% 104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * cc-4.2 -xarch=v8 -xO5 -xdepend +10% 105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * egcs-1.1.2 -mv8 -O3 +35-45% 106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * As you can see it's damn hard to beat the new Sun C compiler 108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * and it's in first place GNU C users who will appreciate this 109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * assembler implementation:-) 110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Revision history. 114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.0 - initial release; 116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.1 - new loop unrolling model(*); 117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * - some more fine tuning; 118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.2 - made gas friendly; 119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * - updates to documentation concerning v9; 120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * - new performance comparison matrix; 121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.3 - fixed problem with /usr/ccs/lib/cpp; 122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.4 - native V9 bn_*_comba[48] implementation (15% more efficient) 123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * resulting in slight overall performance kick; 124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * - some retunes; 125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * - support for GNU as added; 126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * (*) Originally unrolled loop looked like this: 128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * for (;;) { 129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * op(p+0); if (--n==0) break; 130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * op(p+1); if (--n==0) break; 131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * op(p+2); if (--n==0) break; 132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * op(p+3); if (--n==0) break; 133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * p+=4; 134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * } 135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * I unroll according to following: 136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * while (n&~3) { 137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * op(p+0); op(p+1); op(p+2); op(p+3); 138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * p+=4; n=-4; 139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * } 140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * if (n) { 141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * op(p+0); if (--n==0) return; 142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * op(p+2); if (--n==0) return; 143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * op(p+3); return; 144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * } 145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 147221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#if defined(__SUNPRO_C) && defined(__sparcv9) 148221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom /* They've said -xarch=v9 at command line */ 149221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom .register %g2,#scratch 150221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom .register %g3,#scratch 151221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# define FRAME_SIZE -192 152221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#elif defined(__GNUC__) && defined(__arch64__) 153221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom /* They've said -m64 at command line */ 154221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom .register %g2,#scratch 155221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom .register %g3,#scratch 156221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# define FRAME_SIZE -192 157221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#else 158221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# define FRAME_SIZE -96 159221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif 160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * GNU assembler can't stand stuw:-( 162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define stuw st 164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.section ".text",#alloc,#execinstr 166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.file "bn_asm.sparc.v8plus.S" 167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 32 169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_mul_add_words 171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_mul_add_words(rp,ap,num,w) 173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *rp,*ap; 174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int num; 175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG w; 176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_mul_add_words: 178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sra %o2,%g0,%o2 ! signx %o2 179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brgz,a %o2,.L_bn_mul_add_words_proceed 180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%g2 181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr %o0 183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_add_words_proceed: 188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srl %o3,%g0,%o3 ! clruw %o3 189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project andcc %o2,-4,%g0 190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bz,pn %icc,.L_bn_mul_add_words_tail 191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr %o5 192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_add_words_loop: ! wow! 32 aligned! 194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o0],%g1 195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+4],%g3 196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g2,%g2 197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g1,%o5,%o4 198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %o4,%g2,%o4 200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0] 201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o0+4],%g1 204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+8],%g2 205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g3,%g3 206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g1,%o5,%o4 207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec 4,%o2 208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %o4,%g3,%o4 209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0+4] 210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o0+8],%g1 213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+12],%g3 214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g2,%g2 215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g1,%o5,%o4 216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project inc 16,%o1 217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %o4,%g2,%o4 218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0+8] 219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o0+12],%g1 222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g3,%g3 223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g1,%o5,%o4 224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project inc 16,%o0 225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %o4,%g3,%o4 226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project andcc %o2,-4,%g0 227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0-4] 228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bnz,a,pt %icc,.L_bn_mul_add_words_loop 230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%g2 231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brnz,a,pn %o2,.L_bn_mul_add_words_tail 233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%g2 234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_add_words_return: 235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov %o5,%o0 237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_add_words_tail: 239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o0],%g1 240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g2,%g2 241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g1,%o5,%o4 242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec %o2 243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %o4,%g2,%o4 244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brz,pt %o2,.L_bn_mul_add_words_return 246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0] 247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+4],%g2 249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o0+4],%g1 250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g2,%g2 251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g1,%o5,%o4 252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec %o2 253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %o4,%g2,%o4 254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brz,pt %o2,.L_bn_mul_add_words_return 256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0+4] 257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+8],%g2 259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o0+8],%g1 260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g2,%g2 261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g1,%o5,%o4 262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %o4,%g2,%o4 263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0+8] 264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o0 266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type bn_mul_add_words,#function 268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size bn_mul_add_words,(.-bn_mul_add_words) 269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 32 271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_mul_words 273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_mul_words(rp,ap,num,w) 275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *rp,*ap; 276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int num; 277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG w; 278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_mul_words: 280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sra %o2,%g0,%o2 ! signx %o2 281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brgz,a %o2,.L_bn_mul_words_proceeed 282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%g2 283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr %o0 285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_words_proceeed: 290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srl %o3,%g0,%o3 ! clruw %o3 291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project andcc %o2,-4,%g0 292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bz,pn %icc,.L_bn_mul_words_tail 293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr %o5 294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_words_loop: ! wow! 32 aligned! 296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+4],%g3 297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g2,%g2 298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g2,%o5,%o4 299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0] 301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+8],%g2 304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g3,%g3 305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g3,%o5,%o4 306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec 4,%o2 307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0+4] 308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+12],%g3 311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g2,%g2 312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g2,%o5,%o4 313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project inc 16,%o1 314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0+8] 315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g3,%g3 318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g3,%o5,%o4 319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project inc 16,%o0 320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0-4] 321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project andcc %o2,-4,%g0 323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bnz,a,pt %icc,.L_bn_mul_words_loop 324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%g2 325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brnz,a,pn %o2,.L_bn_mul_words_tail 329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%g2 330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_words_return: 331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov %o5,%o0 333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_words_tail: 335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g2,%g2 336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g2,%o5,%o4 337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec %o2 338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brz,pt %o2,.L_bn_mul_words_return 340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0] 341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+4],%g2 343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g2,%g2 344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g2,%o5,%o4 345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec %o2 346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brz,pt %o2,.L_bn_mul_words_return 348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0+4] 349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+8],%g2 351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %o3,%g2,%g2 352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add %g2,%o5,%o4 353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0+8] 354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o0 356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type bn_mul_words,#function 358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size bn_mul_words,(.-bn_mul_words) 359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 32 361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_sqr_words 362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * void bn_sqr_words(r,a,n) 364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *r,*a; 365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int n; 366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_sqr_words: 368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sra %o2,%g0,%o2 ! signx %o2 369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brgz,a %o2,.L_bn_sqr_words_proceeed 370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%g2 371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr %o0 373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sqr_words_proceeed: 378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project andcc %o2,-4,%g0 379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bz,pn %icc,.L_bn_sqr_words_tail 381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sqr_words_loop: ! wow! 32 aligned! 384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+4],%g3 385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %g2,%g2,%o4 386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0] 387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0+4] 389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+8],%g2 392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %g3,%g3,%o4 393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec 4,%o2 394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0+8] 395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0+12] 397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+12],%g3 399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %g2,%g2,%o4 400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0+16] 402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project inc 16,%o1 403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0+20] 404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %g3,%g3,%o4 406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project inc 32,%o0 407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0-8] 408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project andcc %o2,-4,%g2 410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0-4] 411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bnz,a,pt %icc,.L_bn_sqr_words_loop 412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%g2 413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brnz,a,pn %o2,.L_bn_sqr_words_tail 416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%g2 417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sqr_words_return: 418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr %o0 420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sqr_words_tail: 422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %g2,%g2,%o4 423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec %o2 424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0] 425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brz,pt %o2,.L_bn_sqr_words_return 427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0+4] 428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+4],%g2 430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %g2,%g2,%o4 431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec %o2 432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0+8] 433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brz,pt %o2,.L_bn_sqr_words_return 435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0+12] 436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+8],%g2 438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx %g2,%g2,%o4 439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx %o4,32,%o5 440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o4,[%o0+16] 441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0+20] 442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr %o0 444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type bn_sqr_words,#function 446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size bn_sqr_words,(.-bn_sqr_words) 447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 32 449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_div_words 450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_div_words(h,l,d) 452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG h,l,d; 453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_div_words: 455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sllx %o0,32,%o0 456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or %o0,%o1,%o0 457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project udivx %o0,%o2,%o0 458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srl %o0,%g0,%o0 ! clruw %o0 460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type bn_div_words,#function 462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size bn_div_words,(.-bn_div_words) 463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 32 465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_add_words 467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_add_words(rp,ap,bp,n) 469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *rp,*ap,*bp; 470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int n; 471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_add_words: 473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sra %o3,%g0,%o3 ! signx %o3 474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brgz,a %o3,.L_bn_add_words_proceed 475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%o4 476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr %o0 478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_add_words_proceed: 480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project andcc %o3,-4,%g0 481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bz,pn %icc,.L_bn_add_words_tail 482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc %g0,0,%g0 ! clear carry flag 483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_add_words_loop: ! wow! 32 aligned! 485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec 4,%o3 486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2],%o5 487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+4],%g1 488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2+4],%g2 489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+8],%g3 490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2+8],%g4 491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addccc %o5,%o4,%o5 492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0] 493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+12],%o4 495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2+12],%o5 496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project inc 16,%o1 497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addccc %g1,%g2,%g1 498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %g1,[%o0+4] 499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project inc 16,%o2 501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addccc %g3,%g4,%g3 502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %g3,[%o0+8] 503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project inc 16,%o0 505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addccc %o5,%o4,%o5 506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0-4] 507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and %o3,-4,%g1 508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brnz,a,pt %g1,.L_bn_add_words_loop 509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%o4 510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brnz,a,pn %o3,.L_bn_add_words_tail 512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%o4 513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_add_words_return: 514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr %o0 515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project movcs %icc,1,%o0 517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_add_words_tail: 520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2],%o5 521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec %o3 522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addccc %o5,%o4,%o5 523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brz,pt %o3,.L_bn_add_words_return 524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0] 525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+4],%o4 527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2+4],%o5 528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec %o3 529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addccc %o5,%o4,%o5 530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brz,pt %o3,.L_bn_add_words_return 531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0+4] 532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+8],%o4 534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2+8],%o5 535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addccc %o5,%o4,%o5 536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0+8] 537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr %o0 538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project movcs %icc,1,%o0 540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type bn_add_words,#function 542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size bn_add_words,(.-bn_add_words) 543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_sub_words 545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_sub_words(rp,ap,bp,n) 547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *rp,*ap,*bp; 548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int n; 549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_sub_words: 551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sra %o3,%g0,%o3 ! signx %o3 552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brgz,a %o3,.L_bn_sub_words_proceed 553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%o4 554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr %o0 556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sub_words_proceed: 558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project andcc %o3,-4,%g0 559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bz,pn %icc,.L_bn_sub_words_tail 560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc %g0,0,%g0 ! clear carry flag 561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sub_words_loop: ! wow! 32 aligned! 563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec 4,%o3 564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2],%o5 565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+4],%g1 566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2+4],%g2 567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+8],%g3 568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2+8],%g4 569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subccc %o4,%o5,%o5 570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0] 571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+12],%o4 573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2+12],%o5 574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project inc 16,%o1 575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subccc %g1,%g2,%g2 576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %g2,[%o0+4] 577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project inc 16,%o2 579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subccc %g3,%g4,%g4 580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %g4,[%o0+8] 581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project inc 16,%o0 583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subccc %o4,%o5,%o5 584656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0-4] 585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and %o3,-4,%g1 586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brnz,a,pt %g1,.L_bn_sub_words_loop 587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%o4 588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brnz,a,pn %o3,.L_bn_sub_words_tail 590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1],%o4 591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sub_words_return: 592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr %o0 593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project movcs %icc,1,%o0 595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project nop 596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sub_words_tail: ! wow! 32 aligned! 598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2],%o5 599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec %o3 600656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subccc %o4,%o5,%o5 601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brz,pt %o3,.L_bn_sub_words_return 602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0] 603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+4],%o4 605656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2+4],%o5 606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project dec %o3 607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subccc %o4,%o5,%o5 608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project brz,pt %o3,.L_bn_sub_words_return 609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0+4] 610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o1+8],%o4 612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw [%o2+8],%o5 613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subccc %o4,%o5,%o5 614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw %o5,[%o0+8] 615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr %o0 616656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project retl 617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project movcs %icc,1,%o0 618656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type bn_sub_words,#function 620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size bn_sub_words,(.-bn_sub_words) 621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Code below depends on the fact that upper parts of the %l0-%l7 624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * and %i0-%i7 are zeroed by kernel after context switch. In 625656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * previous versions this comment stated that "the trouble is that 626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * it's not feasible to implement the mumbo-jumbo in less V9 627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * instructions:-(" which apparently isn't true thanks to 628656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 'bcs,a %xcc,.+8; inc %rd' pair. But the performance improvement 629656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * results not from the shorter code, but from elimination of 630656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * multicycle none-pairable 'rd %y,%rd' instructions. 631656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 632656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Andy. 633656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 634656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 635656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 636656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Here is register usage map for *all* routines below. 637656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 638656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define t_1 %o0 639656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define t_2 %o1 640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define c_12 %o2 641656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define c_3 %o3 642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 643656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define ap(I) [%i1+4*I] 644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define bp(I) [%i2+4*I] 645656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define rp(I) [%i0+4*I] 646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define a_0 %l0 648656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define a_1 %l1 649656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define a_2 %l2 650656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define a_3 %l3 651656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define a_4 %l4 652656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define a_5 %l5 653656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define a_6 %l6 654656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define a_7 %l7 655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define b_0 %i3 657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define b_1 %i4 658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define b_2 %i5 659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define b_3 %o4 660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define b_4 %o5 661656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define b_5 %o7 662656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define b_6 %g1 663656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define b_7 %g4 664656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 665656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 32 666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_mul_comba8 667656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 668656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * void bn_mul_comba8(r,a,b) 669656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *r,*a,*b; 670656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 671656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_mul_comba8: 672656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project save %sp,FRAME_SIZE,%sp 673656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov 1,t_2 674656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(0),a_0 675656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sllx t_2,32,t_2 676656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw bp(0),b_0 != 677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw bp(1),b_1 678656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,b_0,t_1 !mul_add_c(a[0],b[0],c1,c2,c3); 679656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 680656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(0) !=!r[0]=c1; 681656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(1),a_1 683656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,b_1,t_1 !mul_add_c(a[0],b[1],c2,c3,c1); 684656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 685656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 != 686656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 687656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 688656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(2),a_2 689656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,b_0,t_1 !=!mul_add_c(a[1],b[0],c2,c3,c1); 690656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 691656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 692656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 693656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 != 694656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(1) !r[1]=c2; 695656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 696656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 697656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,b_0,t_1 !mul_add_c(a[2],b[0],c3,c1,c2); 698656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 != 699656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 700656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 701656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 702656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw bp(2),b_2 != 703656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,b_1,t_1 !mul_add_c(a[1],b[1],c3,c1,c2); 704656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 705656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 706656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 != 707656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw bp(3),b_3 708656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,b_2,t_1 !mul_add_c(a[0],b[2],c3,c1,c2); 709656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 710656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 711656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 712656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 713656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(2) !r[2]=c3; 714656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 != 715656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 716656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,b_3,t_1 !mul_add_c(a[0],b[3],c1,c2,c3); 717656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 718656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 719656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 720656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 721656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,b_2,t_1 !=!mul_add_c(a[1],b[2],c1,c2,c3); 722656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 723656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 724656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 725656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(3),a_3 726656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,b_1,t_1 !mul_add_c(a[2],b[1],c1,c2,c3); 727656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 != 728656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 729656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 730656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(4),a_4 731656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,b_0,t_1 !=!mul_add_c(a[3],b[0],c1,c2,c3);!= 732656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 733656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 734656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 735656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 != 736656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(3) !r[3]=c1; 737656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 738656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 739656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_4,b_0,t_1 !mul_add_c(a[4],b[0],c2,c3,c1); 740656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 != 741656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 742656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 743656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 744656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,b_1,t_1 !=!mul_add_c(a[3],b[1],c2,c3,c1); 745656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 746656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 747656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 748656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,b_2,t_1 !=!mul_add_c(a[2],b[2],c2,c3,c1); 749656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 750656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 751656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 752656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw bp(4),b_4 != 753656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,b_3,t_1 !mul_add_c(a[1],b[3],c2,c3,c1); 754656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 755656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 756656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 != 757656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw bp(5),b_5 758656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,b_4,t_1 !mul_add_c(a[0],b[4],c2,c3,c1); 759656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 760656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 761656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 762656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 763656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(4) !r[4]=c2; 764656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 != 765656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 766656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,b_5,t_1 !mul_add_c(a[0],b[5],c3,c1,c2); 767656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 768656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 769656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 770656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 771656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,b_4,t_1 !mul_add_c(a[1],b[4],c3,c1,c2); 772656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 773656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 774656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,b_3,t_1 !mul_add_c(a[2],b[3],c3,c1,c2); 776656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 778656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 779656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,b_2,t_1 !mul_add_c(a[3],b[2],c3,c1,c2); 780656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 781656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 782656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 783656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(5),a_5 784656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_4,b_1,t_1 !mul_add_c(a[4],b[1],c3,c1,c2); 785656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 != 786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 787656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 788656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(6),a_6 789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_5,b_0,t_1 !=!mul_add_c(a[5],b[0],c3,c1,c2); 790656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 792656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 793656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 != 794656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(5) !r[5]=c3; 795656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 796656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 797656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_6,b_0,t_1 !mul_add_c(a[6],b[0],c1,c2,c3); 798656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 != 799656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 800656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 801656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 802656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_5,b_1,t_1 !=!mul_add_c(a[5],b[1],c1,c2,c3); 803656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 804656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 805656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 806656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_4,b_2,t_1 !=!mul_add_c(a[4],b[2],c1,c2,c3); 807656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 808656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 809656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 810656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,b_3,t_1 !=!mul_add_c(a[3],b[3],c1,c2,c3); 811656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 812656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 813656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 814656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,b_4,t_1 !=!mul_add_c(a[2],b[4],c1,c2,c3); 815656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 816656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 817656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 818656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw bp(6),b_6 != 819656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,b_5,t_1 !mul_add_c(a[1],b[5],c1,c2,c3); 820656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 822656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 != 823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw bp(7),b_7 824656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,b_6,t_1 !mul_add_c(a[0],b[6],c1,c2,c3); 825656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 826656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 827656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 828656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 829656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(6) !r[6]=c1; 830656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 != 831656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 832656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,b_7,t_1 !mul_add_c(a[0],b[7],c2,c3,c1); 833656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 834656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 835656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 836656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 837656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,b_6,t_1 !mul_add_c(a[1],b[6],c2,c3,c1); 838656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 839656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 840656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 841656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,b_5,t_1 !mul_add_c(a[2],b[5],c2,c3,c1); 842656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 843656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 844656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 845656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,b_4,t_1 !mul_add_c(a[3],b[4],c2,c3,c1); 846656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 847656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 848656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 849656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_4,b_3,t_1 !mul_add_c(a[4],b[3],c2,c3,c1); 850656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 851656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 852656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 853656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_5,b_2,t_1 !mul_add_c(a[5],b[2],c2,c3,c1); 854656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 855656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 856656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 857656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(7),a_7 858656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_6,b_1,t_1 !=!mul_add_c(a[6],b[1],c2,c3,c1); 859656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 860656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 861656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 862656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_7,b_0,t_1 !=!mul_add_c(a[7],b[0],c2,c3,c1); 863656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 864656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 865656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 866656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 != 867656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(7) !r[7]=c2; 868656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 869656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 870656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_7,b_1,t_1 !=!mul_add_c(a[7],b[1],c3,c1,c2); 871656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 872656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 873656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 874656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 != 875656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_6,b_2,t_1 !mul_add_c(a[6],b[2],c3,c1,c2); 876656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 877656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 878656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 != 879656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_5,b_3,t_1 !mul_add_c(a[5],b[3],c3,c1,c2); 880656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 881656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 882656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 != 883656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_4,b_4,t_1 !mul_add_c(a[4],b[4],c3,c1,c2); 884656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 885656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 886656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 != 887656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,b_5,t_1 !mul_add_c(a[3],b[5],c3,c1,c2); 888656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 889656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 890656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 != 891656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,b_6,t_1 !mul_add_c(a[2],b[6],c3,c1,c2); 892656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 893656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 894656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 != 895656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,b_7,t_1 !mul_add_c(a[1],b[7],c3,c1,c2); 896656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 897656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 898656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 != 899656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 900656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(8) !r[8]=c3; 901656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 902656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 903656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,b_7,t_1 !=!mul_add_c(a[2],b[7],c1,c2,c3); 904656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 905656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 906656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 907656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 != 908656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,b_6,t_1 !mul_add_c(a[3],b[6],c1,c2,c3); 909656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 910656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 911656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 912656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_4,b_5,t_1 !mul_add_c(a[4],b[5],c1,c2,c3); 913656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 914656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 915656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 916656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_5,b_4,t_1 !mul_add_c(a[5],b[4],c1,c2,c3); 917656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 918656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 919656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 920656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_6,b_3,t_1 !mul_add_c(a[6],b[3],c1,c2,c3); 921656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 922656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 923656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 924656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_7,b_2,t_1 !mul_add_c(a[7],b[2],c1,c2,c3); 925656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 926656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 927656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 928656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 929656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(9) !r[9]=c1; 930656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 != 931656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 932656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_7,b_3,t_1 !mul_add_c(a[7],b[3],c2,c3,c1); 933656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 934656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 935656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 936656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 937656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_6,b_4,t_1 !mul_add_c(a[6],b[4],c2,c3,c1); 938656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 939656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 940656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 941656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_5,b_5,t_1 !mul_add_c(a[5],b[5],c2,c3,c1); 942656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 943656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 944656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 945656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_4,b_6,t_1 !mul_add_c(a[4],b[6],c2,c3,c1); 946656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 947656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 948656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 949656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,b_7,t_1 !mul_add_c(a[3],b[7],c2,c3,c1); 950656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 951656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 952656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 953656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 954656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(10) !r[10]=c2; 955656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 != 956656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 957656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_4,b_7,t_1 !mul_add_c(a[4],b[7],c3,c1,c2); 958656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 959656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 960656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 961656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 962656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_5,b_6,t_1 !mul_add_c(a[5],b[6],c3,c1,c2); 963656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 964656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 965656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 966656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_6,b_5,t_1 !mul_add_c(a[6],b[5],c3,c1,c2); 967656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 968656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 969656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 970656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_7,b_4,t_1 !mul_add_c(a[7],b[4],c3,c1,c2); 971656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 972656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 973656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 974656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 975656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(11) !r[11]=c3; 976656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 != 977656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 978656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_7,b_5,t_1 !mul_add_c(a[7],b[5],c1,c2,c3); 979656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 980656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 981656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 982656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 983656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_6,b_6,t_1 !mul_add_c(a[6],b[6],c1,c2,c3); 984656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 985656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 986656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 987656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_5,b_7,t_1 !mul_add_c(a[5],b[7],c1,c2,c3); 988656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 989656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 990656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 991656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 992656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(12) !r[12]=c1; 993656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 != 994656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 995656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_6,b_7,t_1 !mul_add_c(a[6],b[7],c2,c3,c1); 996656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 997656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 998656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 999656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1000656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_7,b_6,t_1 !mul_add_c(a[7],b[6],c2,c3,c1); 1001656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1002656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 1003656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1004656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1005656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project st t_1,rp(13) !r[13]=c2; 1006656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 != 1007656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1008656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_7,b_7,t_1 !mul_add_c(a[7],b[7],c3,c1,c2); 1009656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1010656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 != 1011656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(14) !r[14]=c3; 1012656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw c_12,rp(15) !r[15]=c1; 1013656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1014656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ret 1015656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project restore %g0,%g0,%o0 != 1016656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1017656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type bn_mul_comba8,#function 1018656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size bn_mul_comba8,(.-bn_mul_comba8) 1019656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1020656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 32 1021656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1022656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_mul_comba4 1023656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 1024656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * void bn_mul_comba4(r,a,b) 1025656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *r,*a,*b; 1026656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 1027656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_mul_comba4: 1028656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project save %sp,FRAME_SIZE,%sp 1029656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(0),a_0 1030656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov 1,t_2 1031656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw bp(0),b_0 1032656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sllx t_2,32,t_2 != 1033656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw bp(1),b_1 1034656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,b_0,t_1 !mul_add_c(a[0],b[0],c1,c2,c3); 1035656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1036656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(0) !=!r[0]=c1; 1037656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1038656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(1),a_1 1039656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,b_1,t_1 !mul_add_c(a[0],b[1],c2,c3,c1); 1040656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1041656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 != 1042656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1043656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1044656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(2),a_2 1045656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,b_0,t_1 !=!mul_add_c(a[1],b[0],c2,c3,c1); 1046656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1047656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1048656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1049656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 != 1050656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(1) !r[1]=c2; 1051656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1052656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1053656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,b_0,t_1 !mul_add_c(a[2],b[0],c3,c1,c2); 1054656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 != 1055656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1056656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1057656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1058656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw bp(2),b_2 != 1059656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,b_1,t_1 !mul_add_c(a[1],b[1],c3,c1,c2); 1060656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1061656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1062656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 != 1063656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw bp(3),b_3 1064656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,b_2,t_1 !mul_add_c(a[0],b[2],c3,c1,c2); 1065656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1066656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 1067656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1068656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1069656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(2) !r[2]=c3; 1070656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 != 1071656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1072656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,b_3,t_1 !mul_add_c(a[0],b[3],c1,c2,c3); 1073656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1074656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1075656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 1076656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1077656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,b_2,t_1 !mul_add_c(a[1],b[2],c1,c2,c3); 1078656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1079656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 != 1080656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1081656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(3),a_3 1082656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,b_1,t_1 !mul_add_c(a[2],b[1],c1,c2,c3); 1083656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 != 1084656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1085656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1086656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,b_0,t_1 !mul_add_c(a[3],b[0],c1,c2,c3);!= 1087656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 != 1088656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1089656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1090656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1091656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(3) !=!r[3]=c1; 1092656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1093656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1094656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,b_1,t_1 !mul_add_c(a[3],b[1],c2,c3,c1); 1095656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1096656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 != 1097656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1098656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1099656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,b_2,t_1 !mul_add_c(a[2],b[2],c2,c3,c1); 1100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 != 1101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,b_3,t_1 !mul_add_c(a[1],b[3],c2,c3,c1); 1104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 != 1105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(4) !=!r[4]=c2; 1109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,b_3,t_1 !mul_add_c(a[2],b[3],c3,c1,c2); 1112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 != 1114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,b_2,t_1 !mul_add_c(a[3],b[2],c3,c1,c2); 1117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 != 1118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(5) !=!r[5]=c3; 1122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,b_3,t_1 !mul_add_c(a[3],b[3],c1,c2,c3); 1125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 != 1127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(6) !r[6]=c1; 1128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw c_12,rp(7) !r[7]=c2; 1129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ret 1131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project restore %g0,%g0,%o0 1132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type bn_mul_comba4,#function 1134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size bn_mul_comba4,(.-bn_mul_comba4) 1135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 32 1137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_sqr_comba8 1139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_sqr_comba8: 1140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project save %sp,FRAME_SIZE,%sp 1141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov 1,t_2 1142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(0),a_0 1143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sllx t_2,32,t_2 1144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(1),a_1 1145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,a_0,t_1 !sqr_add_c(a,0,c1,c2,c3); 1146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(0) !r[0]=c1; 1148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(2),a_2 1150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,a_1,t_1 !=!sqr_add_c2(a,1,0,c2,c3,c1); 1151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(1) !r[1]=c2; 1160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,a_0,t_1 !sqr_add_c2(a,2,0,c3,c1,c2); 1163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(3),a_3 1171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,a_1,t_1 !sqr_add_c(a,1,c3,c1,c2); 1172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(2) !r[2]=c3; 1177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,a_3,t_1 !sqr_add_c2(a,3,0,c1,c2,c3); 1180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(4),a_4 1188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,a_2,t_1 !sqr_add_c2(a,2,1,c1,c2,c3); 1189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project st t_1,rp(3) !r[3]=c1; 1197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_4,a_0,t_1 !sqr_add_c2(a,4,0,c2,c3,c1); 1200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,a_1,t_1 !sqr_add_c2(a,3,1,c2,c3,c1); 1208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(5),a_5 1215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,a_2,t_1 !sqr_add_c(a,2,c2,c3,c1); 1216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(4) !r[4]=c2; 1221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,a_5,t_1 !sqr_add_c2(a,5,0,c3,c1,c2); 1224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,a_4,t_1 !sqr_add_c2(a,4,1,c3,c1,c2); 1232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(6),a_6 1239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,a_3,t_1 !sqr_add_c2(a,3,2,c3,c1,c2); 1240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(5) !r[5]=c3; 1248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_6,a_0,t_1 !sqr_add_c2(a,6,0,c1,c2,c3); 1251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_5,a_1,t_1 !sqr_add_c2(a,5,1,c1,c2,c3); 1259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_4,a_2,t_1 !sqr_add_c2(a,4,2,c1,c2,c3); 1266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(7),a_7 1273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,a_3,t_1 !=!sqr_add_c(a,3,c1,c2,c3); 1274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(6) !r[6]=c1; 1279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,a_7,t_1 !sqr_add_c2(a,7,0,c2,c3,c1); 1282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,a_6,t_1 !sqr_add_c2(a,6,1,c2,c3,c1); 1290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,a_5,t_1 !sqr_add_c2(a,5,2,c2,c3,c1); 1297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,a_4,t_1 !sqr_add_c2(a,4,3,c2,c3,c1); 1304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(7) !r[7]=c2; 1312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_7,a_1,t_1 !sqr_add_c2(a,7,1,c3,c1,c2); 1315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_6,a_2,t_1 !sqr_add_c2(a,6,2,c3,c1,c2); 1323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_5,a_3,t_1 !sqr_add_c2(a,5,3,c3,c1,c2); 1330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_4,a_4,t_1 !sqr_add_c(a,4,c3,c1,c2); 1337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(8) !r[8]=c3; 1342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,a_7,t_1 !sqr_add_c2(a,7,2,c1,c2,c3); 1345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,a_6,t_1 !sqr_add_c2(a,6,3,c1,c2,c3); 1353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_4,a_5,t_1 !sqr_add_c2(a,5,4,c1,c2,c3); 1360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(9) !r[9]=c1; 1368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_7,a_3,t_1 !sqr_add_c2(a,7,3,c2,c3,c1); 1371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_6,a_4,t_1 !sqr_add_c2(a,6,4,c2,c3,c1); 1379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_5,a_5,t_1 !sqr_add_c(a,5,c2,c3,c1); 1386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(10) !r[10]=c2; 1391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_4,a_7,t_1 !sqr_add_c2(a,7,4,c3,c1,c2); 1394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_5,a_6,t_1 !sqr_add_c2(a,6,5,c3,c1,c2); 1402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(11) !r[11]=c3; 1410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_7,a_5,t_1 !sqr_add_c2(a,7,5,c1,c2,c3); 1413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_6,a_6,t_1 !sqr_add_c(a,6,c1,c2,c3); 1421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(12) !r[12]=c1; 1426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_6,a_7,t_1 !sqr_add_c2(a,7,6,c2,c3,c1); 1429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(13) !r[13]=c2; 1438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_7,a_7,t_1 !sqr_add_c(a,7,c3,c1,c2); 1441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(14) !r[14]=c3; 1444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw c_12,rp(15) !r[15]=c1; 1445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ret 1447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project restore %g0,%g0,%o0 1448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type bn_sqr_comba8,#function 1450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size bn_sqr_comba8,(.-bn_sqr_comba8) 1451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 32 1453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_sqr_comba4 1455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 1456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * void bn_sqr_comba4(r,a) 1457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *r,*a; 1458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 1459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_sqr_comba4: 1460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project save %sp,FRAME_SIZE,%sp 1461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov 1,t_2 1462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(0),a_0 1463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sllx t_2,32,t_2 1464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(1),a_1 1465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,a_0,t_1 !sqr_add_c(a,0,c1,c2,c3); 1466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(0) !r[0]=c1; 1468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(2),a_2 1470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,a_1,t_1 !sqr_add_c2(a,1,0,c2,c3,c1); 1471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(1) !r[1]=c2; 1480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,a_0,t_1 !sqr_add_c2(a,2,0,c3,c1,c2); 1483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project lduw ap(3),a_3 1491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,a_1,t_1 !sqr_add_c(a,1,c3,c1,c2); 1492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(2) !r[2]=c3; 1497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_0,a_3,t_1 !sqr_add_c2(a,3,0,c1,c2,c3); 1500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_1,a_2,t_1 !sqr_add_c2(a,2,1,c1,c2,c3); 1508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(3) !r[3]=c1; 1516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,a_1,t_1 !sqr_add_c2(a,3,1,c2,c3,c1); 1519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,a_2,t_1 !sqr_add_c(a,2,c2,c3,c1); 1527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(4) !r[4]=c2; 1532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_2,a_3,t_1 !sqr_add_c2(a,3,2,c3,c1,c2); 1535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,c_12 1536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project clr c_3 1537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bcs,a %xcc,.+8 1541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add c_3,t_2,c_3 1542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(5) !r[5]=c3; 1544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project or c_12,c_3,c_12 1545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mulx a_3,a_3,t_1 !sqr_add_c(a,3,c1,c2,c3); 1547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project addcc c_12,t_1,t_1 1548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project srlx t_1,32,c_12 1549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw t_1,rp(6) !r[6]=c1; 1550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stuw c_12,rp(7) !r[7]=c2; 1551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ret 1553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project restore %g0,%g0,%o0 1554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type bn_sqr_comba4,#function 1556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size bn_sqr_comba4,(.-bn_sqr_comba4) 1557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 32 1559