Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/BLAKE2/BLAKE2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Neves <sneves@dei.uc.pt>2016-06-12 18:37:10 +0300
committerSamuel Neves <sneves@dei.uc.pt>2016-06-12 18:37:10 +0300
commit369aa70c0cd68933cfb5c1d253bf10f0aa36f68d (patch)
tree6ac4ff44a351ab948341092cb96130e602b37863
parent88df903283b721e5dfcb488331fd90c45f940d25 (diff)
bench portability
-rw-r--r--bench/amd64cpuinfo.c22
-rw-r--r--bench/bench.c21
-rw-r--r--bench/makefile4
-rw-r--r--bench/x86cpuinfo.c21
4 files changed, 23 insertions, 45 deletions
diff --git a/bench/amd64cpuinfo.c b/bench/amd64cpuinfo.c
deleted file mode 100644
index 70ed361..0000000
--- a/bench/amd64cpuinfo.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- BLAKE2 reference source code package - benchmark tool
-
- Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the
- terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
- your option. The terms of these licenses can be found at:
-
- - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
- - OpenSSL license : https://www.openssl.org/source/license.html
- - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0
-
- More information about the BLAKE2 hash function can be found at
- https://blake2.net.
-*/
-
-unsigned long long cpucycles( void )
-{
- unsigned long long result;
- asm volatile( ".byte 15;.byte 49;shlq $32,%%rdx;orq %%rdx,%%rax"
- : "=a" ( result ) :: "%rdx" );
- return result;
-}
diff --git a/bench/bench.c b/bench/bench.c
index bc30703..09ae88a 100644
--- a/bench/bench.c
+++ b/bench/bench.c
@@ -26,7 +26,26 @@ static int bench_cmp( const void *x, const void *y )
return *ix - *iy;
}
-unsigned long long cpucycles( void );
+#if defined(__amd64__) || defined(__x86_64__)
+static unsigned long long cpucycles( void ) {
+ unsigned long long result;
+ __asm__ __volatile__(
+ ".byte 15;.byte 49\n"
+ "shlq $32,%%rdx\n"
+ "orq %%rdx,%%rax\n"
+ : "=a" ( result ) :: "%rdx"
+ );
+ return result;
+}
+#elif defined(__i386__)
+static unsigned long long cpucycles( void ) {
+ unsigned long long result;
+ __asm__ __volatile__( ".byte 15;.byte 49;" : "=A" ( result ) );
+ return result;
+}
+#else
+#error "Don't know how to count cycles on this platform!"
+#endif
void bench()
{
diff --git a/bench/makefile b/bench/makefile
index 183f298..559e3d3 100644
--- a/bench/makefile
+++ b/bench/makefile
@@ -1,12 +1,14 @@
CC=gcc
# std to gnu99 to support inline asm
CFLAGS=-std=gnu99 -O3 -march=native -DSUPERCOP # -DHAVE_XOP # uncomment on XOP-enabled CPUs
-FILES=amd64cpuinfo.c bench.c
+FILES=bench.c
all:
$(CC) $(FILES) $(CFLAGS) ../sse/blake2b.c -o blake2b
$(CC) $(FILES) $(CFLAGS) ../sse/blake2s.c -o blake2s
$(CC) $(FILES) $(CFLAGS) md5.c -o md5 -lcrypto -lz
+
+plot:
./blake2b > blake2b.data
./blake2s > blake2s.data
./md5 > md5.data
diff --git a/bench/x86cpuinfo.c b/bench/x86cpuinfo.c
deleted file mode 100644
index ccc55cc..0000000
--- a/bench/x86cpuinfo.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- BLAKE2 reference source code package - benchmark tool
-
- Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the
- terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
- your option. The terms of these licenses can be found at:
-
- - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
- - OpenSSL license : https://www.openssl.org/source/license.html
- - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0
-
- More information about the BLAKE2 hash function can be found at
- https://blake2.net.
-*/
-
-unsigned long long cpucycles( void )
-{
- unsigned long long result;
- asm volatile( ".byte 15;.byte 49" : "=A" ( result ) );
- return result;
-}