/*
 * Copyright (c) 2020 Stephanos Ioannidis <root@stephanos.io>
 * Copyright (C) 2010-2020 ARM Limited or its affiliates. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <ztest.h>
#include <zephyr/zephyr.h>
#include <stdlib.h>
#include <arm_math.h>
#include "../../common/benchmark_common.h"

#define PATTERN_LENGTH	(256)

static const q7_t input1[PATTERN_LENGTH] = {
	0x17, 0xCC, 0x33, 0xF2, 0x14, 0x01, 0x2A, 0xF2,
	0xEC, 0x22, 0x01, 0xF7, 0x2A, 0xB5, 0xCF, 0xED,
	0x2F, 0xE8, 0xCB, 0xE8, 0xF2, 0x08, 0xC6, 0xF2,
	0x34, 0x2F, 0xE1, 0xEF, 0xE8, 0xF1, 0xC1, 0xEF,
	0x3B, 0x23, 0x07, 0x01, 0xFE, 0x07, 0x03, 0xF7,
	0x45, 0xF5, 0xE9, 0xF5, 0x0F, 0x13, 0xF5, 0xF2,
	0x06, 0x1C, 0xF4, 0xFB, 0x12, 0xAF, 0x09, 0x0C,
	0xE8, 0x03, 0xF2, 0x10, 0x2D, 0xD3, 0x16, 0xF5,
	0x32, 0x0C, 0x59, 0xDA, 0x0C, 0x1C, 0xB5, 0x49,
	0x23, 0x05, 0xA1, 0x21, 0x1B, 0x1E, 0xCE, 0xC1,
	0xE0, 0x58, 0x22, 0x01, 0xDB, 0x05, 0x06, 0x30,
	0xCF, 0xCC, 0x0D, 0xA1, 0x38, 0x35, 0xFE, 0x19,
	0xD5, 0x01, 0x15, 0x37, 0x10, 0xDC, 0xF4, 0xD0,
	0x09, 0x0F, 0x1C, 0xA3, 0xCA, 0xF7, 0x29, 0x19,
	0x10, 0xF5, 0xFB, 0xD8, 0x0A, 0xA4, 0xD3, 0x08,
	0x44, 0xDF, 0x2F, 0x5E, 0xFA, 0xFC, 0x48, 0x0B,
	0xFA, 0xB9, 0x43, 0xF3, 0xCC, 0x6A, 0x51, 0x0B,
	0xF8, 0xC6, 0xD2, 0xE0, 0xD6, 0xFA, 0xE0, 0x1B,
	0xCC, 0x31, 0x03, 0xE1, 0x18, 0x11, 0x04, 0xCC,
	0xFA, 0xF6, 0xFE, 0x25, 0x0E, 0x34, 0x15, 0xE7,
	0xDD, 0xE3, 0xFE, 0xDE, 0x12, 0xCD, 0xE0, 0xF6,
	0xD6, 0xF5, 0xDE, 0x0D, 0x28, 0x09, 0xF2, 0xC2,
	0x1A, 0x54, 0xBB, 0xEB, 0xB7, 0xDB, 0x12, 0x05,
	0x0F, 0xEE, 0x48, 0x00, 0x02, 0x11, 0xCA, 0xA9,
	0x0C, 0x7F, 0x1D, 0x34, 0x13, 0xC8, 0x15, 0xFA,
	0xDE, 0x39, 0xFE, 0x02, 0x09, 0x07, 0x2C, 0xF4,
	0xEE, 0xE9, 0x11, 0x22, 0xE2, 0xAB, 0x37, 0xC1,
	0xEA, 0x00, 0x3E, 0xEC, 0x23, 0x03, 0xEE, 0xBB,
	0xE2, 0x6D, 0x17, 0x00, 0xEF, 0x2F, 0x19, 0x31,
	0x05, 0xCB, 0xFF, 0x0A, 0x29, 0xA6, 0xD9, 0x42,
	0x1A, 0xDE, 0x21, 0x31, 0x3E, 0x34, 0xFB, 0x11,
	0xE3, 0x8F, 0xF1, 0xC6, 0xEF, 0x51, 0x01, 0xE0
	};

static const q7_t input2[PATTERN_LENGTH] = {
	0x0F, 0x06, 0xDE, 0x12, 0xE8, 0x03, 0xF2, 0xEC,
	0x2C, 0xC7, 0x0C, 0xF3, 0xF6, 0xE2, 0xFB, 0x14,
	0xC0, 0xDD, 0xE5, 0xDB, 0xD6, 0xCE, 0x19, 0xEB,
	0xF7, 0x0D, 0x20, 0x0C, 0x1B, 0xB9, 0xF4, 0xF2,
	0x02, 0xE9, 0x21, 0x3F, 0xE4, 0x02, 0x75, 0x0D,
	0x31, 0x0F, 0x38, 0x16, 0xEA, 0x14, 0x7F, 0xEC,
	0x06, 0x20, 0xE7, 0x0C, 0x27, 0xDA, 0x02, 0xF2,
	0xF8, 0xF4, 0xFE, 0x36, 0xCC, 0xCC, 0x0B, 0xCF,
	0xFD, 0x01, 0xDD, 0xF7, 0x30, 0x18, 0xED, 0x34,
	0xE7, 0xFF, 0x05, 0xE5, 0x1E, 0xE7, 0xDB, 0xE1,
	0xDC, 0x17, 0xE1, 0x0B, 0x1D, 0xD6, 0x01, 0xF2,
	0x17, 0x24, 0x45, 0xD8, 0xD8, 0xF2, 0xE9, 0xE1,
	0xD1, 0xEF, 0x07, 0x2D, 0x07, 0xF8, 0x07, 0xB7,
	0x13, 0x3C, 0xCA, 0xDB, 0x00, 0xC8, 0x2B, 0xFC,
	0xE4, 0xFF, 0x33, 0x0B, 0x1A, 0x2C, 0xE3, 0x05,
	0x1D, 0x16, 0xED, 0xB3, 0x10, 0xFF, 0xD4, 0x09,
	0x11, 0xFD, 0x01, 0x4A, 0xF8, 0xF4, 0x45, 0x15,
	0x4F, 0x08, 0x17, 0x13, 0x0B, 0xCE, 0xE9, 0xB4,
	0x07, 0x0B, 0xD5, 0x15, 0xF3, 0xE9, 0x0E, 0xE7,
	0xF5, 0xFA, 0x10, 0x01, 0xAD, 0xE5, 0xF3, 0xFC,
	0xE6, 0xFE, 0xCE, 0xDE, 0x40, 0xE7, 0x1F, 0x3D,
	0x0E, 0x20, 0x19, 0xFC, 0xF9, 0xF7, 0xC1, 0xDE,
	0x48, 0xFB, 0x07, 0x09, 0x20, 0x13, 0x23, 0xEA,
	0xED, 0xF3, 0x0F, 0x2C, 0xE1, 0x22, 0xD5, 0xD6,
	0xB7, 0x69, 0x05, 0x58, 0x23, 0xD1, 0xF5, 0xA0,
	0xE3, 0x10, 0x26, 0xFE, 0x19, 0x3B, 0x1D, 0xF6,
	0xFE, 0x2E, 0x0D, 0xF5, 0x38, 0xF4, 0xCB, 0xE3,
	0x4D, 0xFE, 0xE6, 0x6B, 0xF5, 0xCC, 0xCA, 0xDA,
	0xD5, 0xEA, 0x1D, 0x35, 0x06, 0x0B, 0x1E, 0x17,
	0xC5, 0xD4, 0x04, 0xF0, 0x03, 0xFE, 0x04, 0xD3,
	0x1E, 0xD2, 0x0B, 0x08, 0xCD, 0xC1, 0xDF, 0xFE,
	0xF7, 0xDB, 0xD0, 0x03, 0x4F, 0xE7, 0x0D, 0x1A
	};

void test_benchmark_vec_add_q7(void)
{
	uint32_t irq_key, timestamp, timespan;
	q7_t *output;

	/* Allocate output buffer */
	output = malloc(PATTERN_LENGTH * sizeof(q7_t));
	zassert_not_null(output, "output buffer allocation failed");

	/* Begin benchmark */
	benchmark_begin(&irq_key, &timestamp);

	/* Execute function */
	arm_add_q7(input1, input2, output, PATTERN_LENGTH);

	/* End benchmark */
	timespan = benchmark_end(irq_key, timestamp);

	/* Free output buffer */
	free(output);

	/* Print result */
	TC_PRINT(BENCHMARK_TYPE " = %u\n", timespan);
}

void test_benchmark_vec_sub_q7(void)
{
	uint32_t irq_key, timestamp, timespan;
	q7_t *output;

	/* Allocate output buffer */
	output = malloc(PATTERN_LENGTH * sizeof(q7_t));
	zassert_not_null(output, "output buffer allocation failed");

	/* Begin benchmark */
	benchmark_begin(&irq_key, &timestamp);

	/* Execute function */
	arm_sub_q7(input1, input2, output, PATTERN_LENGTH);

	/* End benchmark */
	timespan = benchmark_end(irq_key, timestamp);

	/* Free output buffer */
	free(output);

	/* Print result */
	TC_PRINT(BENCHMARK_TYPE " = %u\n", timespan);
}

void test_benchmark_vec_mult_q7(void)
{
	uint32_t irq_key, timestamp, timespan;
	q7_t *output;

	/* Allocate output buffer */
	output = malloc(PATTERN_LENGTH * sizeof(q7_t));
	zassert_not_null(output, "output buffer allocation failed");

	/* Begin benchmark */
	benchmark_begin(&irq_key, &timestamp);

	/* Execute function */
	arm_mult_q7(input1, input2, output, PATTERN_LENGTH);

	/* End benchmark */
	timespan = benchmark_end(irq_key, timestamp);

	/* Free output buffer */
	free(output);

	/* Print result */
	TC_PRINT(BENCHMARK_TYPE " = %u\n", timespan);
}

void test_benchmark_vec_abs_q7(void)
{
	uint32_t irq_key, timestamp, timespan;
	q7_t *output;

	/* Allocate output buffer */
	output = malloc(PATTERN_LENGTH * sizeof(q7_t));
	zassert_not_null(output, "output buffer allocation failed");

	/* Begin benchmark */
	benchmark_begin(&irq_key, &timestamp);

	/* Execute function */
	arm_abs_q7(input1, output, PATTERN_LENGTH);

	/* End benchmark */
	timespan = benchmark_end(irq_key, timestamp);

	/* Free output buffer */
	free(output);

	/* Print result */
	TC_PRINT(BENCHMARK_TYPE " = %u\n", timespan);
}

void test_benchmark_vec_negate_q7(void)
{
	uint32_t irq_key, timestamp, timespan;
	q7_t *output;

	/* Allocate output buffer */
	output = malloc(PATTERN_LENGTH * sizeof(q7_t));
	zassert_not_null(output, "output buffer allocation failed");

	/* Begin benchmark */
	benchmark_begin(&irq_key, &timestamp);

	/* Execute function */
	arm_negate_q7(input1, output, PATTERN_LENGTH);

	/* End benchmark */
	timespan = benchmark_end(irq_key, timestamp);

	/* Free output buffer */
	free(output);

	/* Print result */
	TC_PRINT(BENCHMARK_TYPE " = %u\n", timespan);
}

void test_benchmark_vec_offset_q7(void)
{
	uint32_t irq_key, timestamp, timespan;
	q7_t *output;

	/* Allocate output buffer */
	output = malloc(PATTERN_LENGTH * sizeof(q7_t));
	zassert_not_null(output, "output buffer allocation failed");

	/* Begin benchmark */
	benchmark_begin(&irq_key, &timestamp);

	/* Execute function */
	arm_offset_q7(input1, 1.0, output, PATTERN_LENGTH);

	/* End benchmark */
	timespan = benchmark_end(irq_key, timestamp);

	/* Free output buffer */
	free(output);

	/* Print result */
	TC_PRINT(BENCHMARK_TYPE " = %u\n", timespan);
}

void test_benchmark_vec_scale_q7(void)
{
	uint32_t irq_key, timestamp, timespan;
	q7_t *output;

	/* Allocate output buffer */
	output = malloc(PATTERN_LENGTH * sizeof(q7_t));
	zassert_not_null(output, "output buffer allocation failed");

	/* Begin benchmark */
	benchmark_begin(&irq_key, &timestamp);

	/* Execute function */
	arm_scale_q7(input1, 0x45, 1, output, PATTERN_LENGTH);

	/* End benchmark */
	timespan = benchmark_end(irq_key, timestamp);

	/* Free output buffer */
	free(output);

	/* Print result */
	TC_PRINT(BENCHMARK_TYPE " = %u\n", timespan);
}

void test_benchmark_vec_dot_prod_q7(void)
{
	uint32_t irq_key, timestamp, timespan;
	q31_t output;

	/* Begin benchmark */
	benchmark_begin(&irq_key, &timestamp);

	/* Execute function */
	arm_dot_prod_q7(input1, input2, PATTERN_LENGTH, &output);

	/* End benchmark */
	timespan = benchmark_end(irq_key, timestamp);

	/* Print result */
	TC_PRINT(BENCHMARK_TYPE " = %u\n", timespan);
}

ztest_register_test_suite(basicmath_q7_benchmark, NULL,
			  ztest_unit_test(test_benchmark_vec_add_q7),
			  ztest_unit_test(test_benchmark_vec_sub_q7),
			  ztest_unit_test(test_benchmark_vec_mult_q7),
			  ztest_unit_test(test_benchmark_vec_abs_q7),
			  ztest_unit_test(test_benchmark_vec_negate_q7),
			  ztest_unit_test(test_benchmark_vec_offset_q7),
			  ztest_unit_test(test_benchmark_vec_scale_q7),
			  ztest_unit_test(test_benchmark_vec_dot_prod_q7));
