15#include <freerdp/config.h>
17#include <winpr/sysinfo.h>
20#define TEST_BUFFER_SIZE 65535
23static BOOL test_sign16s_func(
void)
26 INT16 src[TEST_BUFFER_SIZE + 16] = WINPR_C_ARRAY_INIT;
27 INT16 d1[TEST_BUFFER_SIZE + 16] = WINPR_C_ARRAY_INIT;
28 INT16 d2[TEST_BUFFER_SIZE + 16] = WINPR_C_ARRAY_INIT;
29 if (winpr_RAND(src,
sizeof(src)) < 0)
31 status =
generic->sign_16s(src + 1, d1 + 1, TEST_BUFFER_SIZE);
33 if (status != PRIMITIVES_SUCCESS)
36 status = optimized->sign_16s(src + 1, d2 + 1, TEST_BUFFER_SIZE);
38 if (status != PRIMITIVES_SUCCESS)
41 if (memcmp(d1, d2,
sizeof(d1)) != 0)
44 status =
generic->sign_16s(src + 1, d1 + 2, TEST_BUFFER_SIZE);
46 if (status != PRIMITIVES_SUCCESS)
49 status = optimized->sign_16s(src + 1, d2 + 2, TEST_BUFFER_SIZE);
51 if (status != PRIMITIVES_SUCCESS)
54 if (memcmp(d1, d2,
sizeof(d1)) != 0)
60static int test_sign16s_speed(
void)
62 INT16 src[MAX_TEST_SIZE + 3] = WINPR_C_ARRAY_INIT;
63 INT16 dst[MAX_TEST_SIZE + 3] = WINPR_C_ARRAY_INIT;
64 if (winpr_RAND(src,
sizeof(src)) < 0)
67 if (!speed_test(
"sign16s",
"aligned", g_Iterations, (speed_test_fkt)generic->sign_16s,
68 (speed_test_fkt)optimized->sign_16s, src + 1, dst + 1, MAX_TEST_SIZE))
71 if (!speed_test(
"sign16s",
"unaligned", g_Iterations, (speed_test_fkt)generic->sign_16s,
72 (speed_test_fkt)optimized->sign_16s, src + 1, dst + 2, MAX_TEST_SIZE))
78int TestPrimitivesSign(
int argc,
char* argv[])
83 prim_test_setup(FALSE);
85 if (!test_sign16s_func())
88 if (g_TestPrimitivesPerformance)
90 if (!test_sign16s_speed())