xref: /isa-l/igzip/adler32_perf.c (revision 7ebc65baa79386152107511e3ec2452f5d82a77a)
18f06ac69SGreg Tucker /**********************************************************************
28f06ac69SGreg Tucker   Copyright(c) 2011-2019 Intel Corporation All rights reserved.
38f06ac69SGreg Tucker 
48f06ac69SGreg Tucker   Redistribution and use in source and binary forms, with or without
58f06ac69SGreg Tucker   modification, are permitted provided that the following conditions
68f06ac69SGreg Tucker   are met:
78f06ac69SGreg Tucker     * Redistributions of source code must retain the above copyright
88f06ac69SGreg Tucker       notice, this list of conditions and the following disclaimer.
98f06ac69SGreg Tucker     * Redistributions in binary form must reproduce the above copyright
108f06ac69SGreg Tucker       notice, this list of conditions and the following disclaimer in
118f06ac69SGreg Tucker       the documentation and/or other materials provided with the
128f06ac69SGreg Tucker       distribution.
138f06ac69SGreg Tucker     * Neither the name of Intel Corporation nor the names of its
148f06ac69SGreg Tucker       contributors may be used to endorse or promote products derived
158f06ac69SGreg Tucker       from this software without specific prior written permission.
168f06ac69SGreg Tucker 
178f06ac69SGreg Tucker   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
188f06ac69SGreg Tucker   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
198f06ac69SGreg Tucker   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
208f06ac69SGreg Tucker   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
218f06ac69SGreg Tucker   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
228f06ac69SGreg Tucker   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
238f06ac69SGreg Tucker   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
248f06ac69SGreg Tucker   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
258f06ac69SGreg Tucker   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
268f06ac69SGreg Tucker   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
278f06ac69SGreg Tucker   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
288f06ac69SGreg Tucker **********************************************************************/
298f06ac69SGreg Tucker 
308f06ac69SGreg Tucker #include <stdio.h>
318f06ac69SGreg Tucker #include <stdlib.h>
328f06ac69SGreg Tucker #include <string.h>
338f06ac69SGreg Tucker #include <stdint.h>
348f06ac69SGreg Tucker #include "igzip_lib.h"
358f06ac69SGreg Tucker #include "test.h"
368f06ac69SGreg Tucker 
379c7e3b9fSGreg Tucker #ifndef GT_L3_CACHE
389c7e3b9fSGreg Tucker #define GT_L3_CACHE 32 * 1024 * 1024 /* some number > last level cache */
399c7e3b9fSGreg Tucker #endif
409c7e3b9fSGreg Tucker 
419c7e3b9fSGreg Tucker #if !defined(COLD_TEST) && !defined(TEST_CUSTOM)
428f06ac69SGreg Tucker // Cached test, loop many times over small dataset
438f06ac69SGreg Tucker #define TEST_LEN      8 * 1024
448f06ac69SGreg Tucker #define TEST_TYPE_STR "_warm"
459c7e3b9fSGreg Tucker #elif defined(COLD_TEST)
468f06ac69SGreg Tucker // Uncached test.  Pull from large mem base.
478f06ac69SGreg Tucker #define TEST_LEN      (2 * GT_L3_CACHE)
488f06ac69SGreg Tucker #define TEST_TYPE_STR "_cold"
498f06ac69SGreg Tucker #endif
508f06ac69SGreg Tucker 
518f06ac69SGreg Tucker #ifndef TEST_SEED
528f06ac69SGreg Tucker #define TEST_SEED 0x1234
538f06ac69SGreg Tucker #endif
548f06ac69SGreg Tucker 
5555fbfabfSMarcel Cornu int
main(int argc,char * argv[])5655fbfabfSMarcel Cornu main(int argc, char *argv[])
578f06ac69SGreg Tucker {
588f06ac69SGreg Tucker         void *buf;
598f06ac69SGreg Tucker         struct perf start;
608f06ac69SGreg Tucker 
618f06ac69SGreg Tucker         printf("adler32_perf:\n");
628f06ac69SGreg Tucker 
638f06ac69SGreg Tucker         if (posix_memalign(&buf, 1024, TEST_LEN)) {
648f06ac69SGreg Tucker                 printf("alloc error: Fail");
658f06ac69SGreg Tucker                 return -1;
668f06ac69SGreg Tucker         }
678f06ac69SGreg Tucker         memset(buf, 0, TEST_LEN);
688f06ac69SGreg Tucker 
69*7ebc65baSPablo de Lara         BENCHMARK(&start, BENCHMARK_TIME, isal_adler32(TEST_SEED, buf, TEST_LEN));
708f06ac69SGreg Tucker         printf("adler32" TEST_TYPE_STR ": ");
718f06ac69SGreg Tucker         perf_print(start, (long long) TEST_LEN);
728f06ac69SGreg Tucker 
738f06ac69SGreg Tucker         return 0;
748f06ac69SGreg Tucker }
75