// SPDX-License-Identifier: GPL-2.0-only

#include "../../kselftest.h"
#define MAX_VSIZE	(8192 * 32)

void dump(char *ptr, int size)
{
	int i = 0;

	for (i = 0; i < size; i++) {
		if (i != 0) {
			if (i % 16 == 0)
				printf("\n");
			else if (i % 8 == 0)
				printf("  ");
		}
		printf("%02x ", ptr[i]);
	}
	printf("\n");
}

int main(void)
{
	int i;
	unsigned long vl;
	char *datap, *tmp;

	datap = malloc(MAX_VSIZE);
	if (!datap) {
		ksft_test_result_fail("fail to allocate memory for size = %d\n", MAX_VSIZE);
		exit(-1);
	}

	tmp = datap;
	asm volatile (
		".option push\n\t"
		".option arch, +v\n\t"
		"vsetvli	%0, x0, e8, m8, ta, ma\n\t"
		"vse8.v		v0, (%2)\n\t"
		"add		%1, %2, %0\n\t"
		"vse8.v		v8, (%1)\n\t"
		"add		%1, %1, %0\n\t"
		"vse8.v		v16, (%1)\n\t"
		"add		%1, %1, %0\n\t"
		"vse8.v		v24, (%1)\n\t"
		".option pop\n\t"
		: "=&r" (vl), "=r" (tmp) : "r" (datap) : "memory");

	ksft_print_msg("vl = %lu\n", vl);

	if (datap[0] != 0x00 && datap[0] != 0xff) {
		ksft_test_result_fail("v-regesters are not properly initialized\n");
		dump(datap, vl * 4);
		exit(-1);
	}

	for (i = 1; i < vl * 4; i++) {
		if (datap[i] != datap[0]) {
			ksft_test_result_fail("detect stale values on v-regesters\n");
			dump(datap, vl * 4);
			exit(-2);
		}
	}

	free(datap);
	ksft_exit_pass();
	return 0;
}
