aboutsummaryrefslogtreecommitdiffstats
path: root/src/math/bigint/mp_asm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/math/bigint/mp_asm.cpp')
-rw-r--r--src/math/bigint/mp_asm.cpp183
1 files changed, 0 insertions, 183 deletions
diff --git a/src/math/bigint/mp_asm.cpp b/src/math/bigint/mp_asm.cpp
deleted file mode 100644
index 4fcdee7a4..000000000
--- a/src/math/bigint/mp_asm.cpp
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
-* Lowest Level MPI Algorithms
-* (C) 1999-2010 Jack Lloyd
-* 2006 Luca Piccarreta
-*
-* Distributed under the terms of the Botan license
-*/
-
-#include <botan/internal/mp_asm.h>
-#include <botan/internal/mp_asmi.h>
-#include <botan/internal/mp_core.h>
-#include <botan/exceptn.h>
-#include <botan/mem_ops.h>
-
-namespace Botan {
-
-extern "C" {
-
-/*
-* Two Operand Addition, No Carry
-*/
-word bigint_add2_nc(word x[], u32bit x_size, const word y[], u32bit y_size)
- {
- word carry = 0;
-
- const u32bit blocks = y_size - (y_size % 8);
-
- for(u32bit i = 0; i != blocks; i += 8)
- carry = word8_add2(x + i, y + i, carry);
-
- for(u32bit i = blocks; i != y_size; ++i)
- x[i] = word_add(x[i], y[i], &carry);
-
- for(u32bit i = y_size; i != x_size; ++i)
- x[i] = word_add(x[i], 0, &carry);
-
- return carry;
- }
-
-/*
-* Three Operand Addition, No Carry
-*/
-word bigint_add3_nc(word z[], const word x[], u32bit x_size,
- const word y[], u32bit y_size)
- {
- if(x_size < y_size)
- { return bigint_add3_nc(z, y, y_size, x, x_size); }
-
- word carry = 0;
-
- const u32bit blocks = y_size - (y_size % 8);
-
- for(u32bit i = 0; i != blocks; i += 8)
- carry = word8_add3(z + i, x + i, y + i, carry);
-
- for(u32bit i = blocks; i != y_size; ++i)
- z[i] = word_add(x[i], y[i], &carry);
-
- for(u32bit i = y_size; i != x_size; ++i)
- z[i] = word_add(x[i], 0, &carry);
-
- return carry;
- }
-
-/*
-* Two Operand Addition
-*/
-void bigint_add2(word x[], u32bit x_size, const word y[], u32bit y_size)
- {
- x[x_size] += bigint_add2_nc(x, x_size, y, y_size);
- }
-
-/*
-* Three Operand Addition
-*/
-void bigint_add3(word z[], const word x[], u32bit x_size,
- const word y[], u32bit y_size)
- {
- z[(x_size > y_size ? x_size : y_size)] +=
- bigint_add3_nc(z, x, x_size, y, y_size);
- }
-
-/*
-* Two Operand Subtraction
-*/
-word bigint_sub2(word x[], u32bit x_size, const word y[], u32bit y_size)
- {
- word borrow = 0;
-
- const u32bit blocks = y_size - (y_size % 8);
-
- for(u32bit i = 0; i != blocks; i += 8)
- borrow = word8_sub2(x + i, y + i, borrow);
-
- for(u32bit i = blocks; i != y_size; ++i)
- x[i] = word_sub(x[i], y[i], &borrow);
-
- for(u32bit i = y_size; i != x_size; ++i)
- x[i] = word_sub(x[i], 0, &borrow);
-
- return borrow;
- }
-
-/*
-* Two Operand Subtraction x = y - x
-*/
-void bigint_sub2_rev(word x[], const word y[], u32bit y_size)
- {
- word borrow = 0;
-
- const u32bit blocks = y_size - (y_size % 8);
-
- for(u32bit i = 0; i != blocks; i += 8)
- borrow = word8_sub2_rev(x + i, y + i, borrow);
-
- for(u32bit i = blocks; i != y_size; ++i)
- x[i] = word_sub(y[i], x[i], &borrow);
-
- if(borrow)
- throw Internal_Error("bigint_sub2_rev: x >= y");
- }
-
-/*
-* Three Operand Subtraction
-*/
-word bigint_sub3(word z[], const word x[], u32bit x_size,
- const word y[], u32bit y_size)
- {
- word borrow = 0;
-
- const u32bit blocks = y_size - (y_size % 8);
-
- for(u32bit i = 0; i != blocks; i += 8)
- borrow = word8_sub3(z + i, x + i, y + i, borrow);
-
- for(u32bit i = blocks; i != y_size; ++i)
- z[i] = word_sub(x[i], y[i], &borrow);
-
- for(u32bit i = y_size; i != x_size; ++i)
- z[i] = word_sub(x[i], 0, &borrow);
-
- return borrow;
- }
-
-/*
-* Two Operand Linear Multiply
-*/
-void bigint_linmul2(word x[], u32bit x_size, word y)
- {
- const u32bit blocks = x_size - (x_size % 8);
-
- word carry = 0;
-
- for(u32bit i = 0; i != blocks; i += 8)
- carry = word8_linmul2(x + i, y, carry);
-
- for(u32bit i = blocks; i != x_size; ++i)
- x[i] = word_madd2(x[i], y, &carry);
-
- x[x_size] = carry;
- }
-
-/*
-* Three Operand Linear Multiply
-*/
-void bigint_linmul3(word z[], const word x[], u32bit x_size, word y)
- {
- const u32bit blocks = x_size - (x_size % 8);
-
- word carry = 0;
-
- for(u32bit i = 0; i != blocks; i += 8)
- carry = word8_linmul3(z + i, x + i, y, carry);
-
- for(u32bit i = blocks; i != x_size; ++i)
- z[i] = word_madd2(x[i], y, &carry);
-
- z[x_size] = carry;
- }
-
-}
-
-}