mirror of
https://github.com/kmackay/micro-ecc.git
synced 2026-08-25 19:30:03 +00:00
Made square asm better.
This commit is contained in:
@@ -2414,13 +2414,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r2, r5 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r3, r4 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -2433,13 +2430,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r2, r6 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r3, r5 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -2456,13 +2450,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r2, r7 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r3, r6 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -2479,13 +2470,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r2, r8 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r3, r7 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -2506,13 +2494,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r2, r9 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r3, r8 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -2533,13 +2518,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r2, r10 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r3, r9 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -2564,13 +2546,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r2, r11 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r3, r10 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -2595,13 +2574,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r2, r12 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r3, r11 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -2630,13 +2606,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r2, r13 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r3, r12 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -2665,13 +2638,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r2, r14 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r3, r13 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -2704,13 +2674,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r2, r15 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r3, r14 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -2743,13 +2710,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r2, r16 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r3, r15 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -2786,13 +2750,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r2, r17 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r3, r16 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -2829,13 +2790,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r2, r18 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r3, r17 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -2876,13 +2834,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r2, r19 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r3, r18 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -2923,13 +2878,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r2, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r3, r19 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -2974,13 +2926,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r2, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r3, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -3025,13 +2974,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r3, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r4, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -3076,13 +3022,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r4, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r5, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -3123,13 +3066,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r5, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r6, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -3170,13 +3110,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r6, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r7, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -3213,13 +3150,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r7, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r8, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -3256,13 +3190,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r8, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r9, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -3295,13 +3226,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r9, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r10, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -3334,13 +3262,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r10, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r11, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -3369,13 +3294,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r11, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r12, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -3404,13 +3326,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r12, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r13, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -3435,13 +3354,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r13, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r14, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -3466,13 +3382,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r14, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r15, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -3493,13 +3406,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r15, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r16, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -3520,13 +3430,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r16, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r17, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
@@ -3543,13 +3450,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r26, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r24, 0 \n\t"
|
||||
"ldi r22, 0 \n\t"
|
||||
"mul r17, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
"adc r22, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r24, r1 \n\t"
|
||||
"mul r18, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r24, r1 \n\t"
|
||||
@@ -3566,13 +3470,10 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
"adc r22, r27 \n\t"
|
||||
"st z+, r23 \n\t"
|
||||
|
||||
"ldi r23, 0 \n\t"
|
||||
"ldi r25, 0 \n\t"
|
||||
"ldi r26, 0 \n\t"
|
||||
"mul r18, r21 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
"adc r26, r27 \n\t"
|
||||
"mov r23, r0 \n\t"
|
||||
"mov r25, r1 \n\t"
|
||||
"mul r19, r20 \n\t"
|
||||
"add r23, r0 \n\t"
|
||||
"adc r25, r1 \n\t"
|
||||
|
||||
@@ -48,8 +48,6 @@ print ""
|
||||
acc = [23, 24, 22]
|
||||
old_acc = [25, 26]
|
||||
for i in xrange(3, 20):
|
||||
emit("ldi r%s, 0", acc[0])
|
||||
emit("ldi r%s, 0", old_acc[0])
|
||||
emit("ldi r%s, 0", old_acc[1])
|
||||
tmp = [acc[1], acc[2]]
|
||||
acc = [acc[0], old_acc[0], old_acc[1]]
|
||||
@@ -58,9 +56,13 @@ for i in xrange(3, 20):
|
||||
# gather non-equal words
|
||||
for j in xrange(0, (i+1)//2):
|
||||
emit("mul r%s, r%s", r(j), r(i-j))
|
||||
emit("add r%s, r0", acc[0])
|
||||
emit("adc r%s, r1", acc[1])
|
||||
emit("adc r%s, r27", acc[2])
|
||||
if j == 0:
|
||||
emit("mov r%s, r0", acc[0])
|
||||
emit("mov r%s, r1", acc[1])
|
||||
else:
|
||||
emit("add r%s, r0", acc[0])
|
||||
emit("adc r%s, r1", acc[1])
|
||||
emit("adc r%s, r27", acc[2])
|
||||
# multiply by 2
|
||||
emit("lsl r%s", acc[0])
|
||||
emit("rol r%s", acc[1])
|
||||
@@ -83,8 +85,6 @@ for i in xrange(3, 20):
|
||||
print ""
|
||||
|
||||
for i in xrange(1, 17):
|
||||
emit("ldi r%s, 0", acc[0])
|
||||
emit("ldi r%s, 0", old_acc[0])
|
||||
emit("ldi r%s, 0", old_acc[1])
|
||||
tmp = [acc[1], acc[2]]
|
||||
acc = [acc[0], old_acc[0], old_acc[1]]
|
||||
@@ -93,9 +93,13 @@ for i in xrange(1, 17):
|
||||
# gather non-equal words
|
||||
for j in xrange(0, (20-i)//2):
|
||||
emit("mul r%s, r%s", r(i+j), r(19-j))
|
||||
emit("add r%s, r0", acc[0])
|
||||
emit("adc r%s, r1", acc[1])
|
||||
emit("adc r%s, r27", acc[2])
|
||||
if j == 0:
|
||||
emit("mov r%s, r0", acc[0])
|
||||
emit("mov r%s, r1", acc[1])
|
||||
else:
|
||||
emit("add r%s, r0", acc[0])
|
||||
emit("adc r%s, r1", acc[1])
|
||||
emit("adc r%s, r27", acc[2])
|
||||
# multiply by 2
|
||||
emit("lsl r%s", acc[0])
|
||||
emit("rol r%s", acc[1])
|
||||
|
||||
Reference in New Issue
Block a user