162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2015 Anshuman Khandual, IBM Corporation.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci#define GPR_1	1
662306a36Sopenharmony_ci#define GPR_2	2
762306a36Sopenharmony_ci#define GPR_3	3
862306a36Sopenharmony_ci#define GPR_4	4
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#define FPR_1	0.001
1162306a36Sopenharmony_ci#define FPR_2	0.002
1262306a36Sopenharmony_ci#define FPR_3	0.003
1362306a36Sopenharmony_ci#define FPR_4	0.004
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#define FPR_1_REP 0x3f50624dd2f1a9fcull
1662306a36Sopenharmony_ci#define FPR_2_REP 0x3f60624dd2f1a9fcull
1762306a36Sopenharmony_ci#define FPR_3_REP 0x3f689374bc6a7efaull
1862306a36Sopenharmony_ci#define FPR_4_REP 0x3f70624dd2f1a9fcull
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci/* Buffer must have 18 elements */
2162306a36Sopenharmony_ciint validate_gpr(unsigned long *gpr, unsigned long val)
2262306a36Sopenharmony_ci{
2362306a36Sopenharmony_ci	int i, found = 1;
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci	for (i = 0; i < 18; i++) {
2662306a36Sopenharmony_ci		if (gpr[i] != val) {
2762306a36Sopenharmony_ci			printf("GPR[%d]: %lx Expected: %lx\n",
2862306a36Sopenharmony_ci				i+14, gpr[i], val);
2962306a36Sopenharmony_ci			found = 0;
3062306a36Sopenharmony_ci		}
3162306a36Sopenharmony_ci	}
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	if (!found)
3462306a36Sopenharmony_ci		return TEST_FAIL;
3562306a36Sopenharmony_ci	return TEST_PASS;
3662306a36Sopenharmony_ci}
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci/* Buffer must have 32 elements */
3962306a36Sopenharmony_ciint validate_fpr(__u64 *fpr, __u64 val)
4062306a36Sopenharmony_ci{
4162306a36Sopenharmony_ci	int i, found = 1;
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci	for (i = 0; i < 32; i++) {
4462306a36Sopenharmony_ci		if (fpr[i] != val) {
4562306a36Sopenharmony_ci			printf("FPR[%d]: %llx Expected: %llx\n", i, fpr[i], val);
4662306a36Sopenharmony_ci			found = 0;
4762306a36Sopenharmony_ci		}
4862306a36Sopenharmony_ci	}
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci	if (!found)
5162306a36Sopenharmony_ci		return TEST_FAIL;
5262306a36Sopenharmony_ci	return TEST_PASS;
5362306a36Sopenharmony_ci}
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci/* Buffer must have 32 elements */
5662306a36Sopenharmony_ciint validate_fpr_double(double *fpr, double val)
5762306a36Sopenharmony_ci{
5862306a36Sopenharmony_ci	int i, found = 1;
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci	for (i = 0; i < 32; i++) {
6162306a36Sopenharmony_ci		if (fpr[i] != val) {
6262306a36Sopenharmony_ci			printf("FPR[%d]: %f Expected: %f\n", i, fpr[i], val);
6362306a36Sopenharmony_ci			found = 0;
6462306a36Sopenharmony_ci		}
6562306a36Sopenharmony_ci	}
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci	if (!found)
6862306a36Sopenharmony_ci		return TEST_FAIL;
6962306a36Sopenharmony_ci	return TEST_PASS;
7062306a36Sopenharmony_ci}
71