diff options
author | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2012-02-21 14:33:39 +0100 |
---|---|---|
committer | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2012-02-21 14:33:39 +0100 |
commit | 732e508f9191828d81e71f42eae239358bb0eb5a (patch) | |
tree | 50a383f2efc0afed092b524f26dbb34dc7267d0a /mpz/xor.c | |
parent | 42bc08b8ce08559b0994c2cc7d6d974e580a3b69 (diff) | |
download | gmp-732e508f9191828d81e71f42eae239358bb0eb5a.tar.gz |
mpz/?or.c: Use mpn_ logic everywhere.
Diffstat (limited to 'mpz/xor.c')
-rw-r--r-- | mpz/xor.c | 25 |
1 files changed, 11 insertions, 14 deletions
@@ -1,7 +1,7 @@ /* mpz_xor -- Logical xor. -Copyright 1991, 1993, 1994, 1996, 1997, 2000, 2001, 2005 Free Software -Foundation, Inc. +Copyright 1991, 1993, 1994, 1996, 1997, 2000, 2001, 2005, 2012 Free +Software Foundation, Inc. This file is part of the GNU MP Library. @@ -56,8 +56,8 @@ mpz_xor (mpz_ptr res, mpz_srcptr op1, mpz_srcptr op2) if (res_ptr != op1_ptr) MPN_COPY (res_ptr + op2_size, op1_ptr + op2_size, op1_size - op2_size); - for (i = op2_size - 1; i >= 0; i--) - res_ptr[i] = op1_ptr[i] ^ op2_ptr[i]; + if (LIKELY (op2_size != 0)) + mpn_xor_n (res_ptr, op1_ptr, op2_ptr, op2_size); res_size = op1_size; } else @@ -73,8 +73,8 @@ mpz_xor (mpz_ptr res, mpz_srcptr op1, mpz_srcptr op2) if (res_ptr != op2_ptr) MPN_COPY (res_ptr + op1_size, op2_ptr + op1_size, op2_size - op1_size); - for (i = op1_size - 1; i >= 0; i--) - res_ptr[i] = op1_ptr[i] ^ op2_ptr[i]; + if (LIKELY (op1_size != 0)) + mpn_xor_n (res_ptr, op1_ptr, op2_ptr, op1_size); res_size = op2_size; } @@ -123,16 +123,14 @@ mpz_xor (mpz_ptr res, mpz_srcptr op1, mpz_srcptr op2) { MPN_COPY (res_ptr + op2_size, op1_ptr + op2_size, op1_size - op2_size); - for (i = op2_size - 1; i >= 0; i--) - res_ptr[i] = op1_ptr[i] ^ op2_ptr[i]; + mpn_xor_n (res_ptr, op1_ptr, op2_ptr, op2_size); res_size = op1_size; } else { MPN_COPY (res_ptr + op1_size, op2_ptr + op1_size, op2_size - op1_size); - for (i = op1_size - 1; i >= 0; i--) - res_ptr[i] = op1_ptr[i] ^ op2_ptr[i]; + mpn_xor_n (res_ptr, op1_ptr, op2_ptr, op1_size); res_size = op2_size; } @@ -177,15 +175,14 @@ mpz_xor (mpz_ptr res, mpz_srcptr op1, mpz_srcptr op2) if (op1_size > op2_size) { MPN_COPY (res_ptr + op2_size, op1_ptr + op2_size, op1_size - op2_size); - for (i = op2_size - 1; i >= 0; i--) - res_ptr[i] = op1_ptr[i] ^ op2_ptr[i]; + mpn_xor_n (res_ptr, op1_ptr, op2_ptr, op2_size); res_size = op1_size; } else { MPN_COPY (res_ptr + op1_size, op2_ptr + op1_size, op2_size - op1_size); - for (i = op1_size - 1; i >= 0; i--) - res_ptr[i] = op1_ptr[i] ^ op2_ptr[i]; + if (LIKELY (op1_size != 0)) + mpn_xor_n (res_ptr, op1_ptr, op2_ptr, op1_size); res_size = op2_size; } |