15#include <freerdp/config.h>
17#include <winpr/sysinfo.h>
20#define FUNC_TEST_SIZE 65536
22static BOOL test_add16s_func(
void)
26 INT16 src1[FUNC_TEST_SIZE + 3] = WINPR_C_ARRAY_INIT;
27 INT16 src2[FUNC_TEST_SIZE + 3] = WINPR_C_ARRAY_INIT;
28 INT16 d1[FUNC_TEST_SIZE + 3] = WINPR_C_ARRAY_INIT;
29 INT16 d2[FUNC_TEST_SIZE + 3] = WINPR_C_ARRAY_INIT;
31 if (winpr_RAND(src1,
sizeof(src1)) < 0)
33 if (winpr_RAND(src2,
sizeof(src2)) < 0)
35 status =
generic->add_16s(src1 + 1, src2 + 1, d1 + 1, FUNC_TEST_SIZE);
36 if (status != PRIMITIVES_SUCCESS)
40 status = optimized->add_16s(src1 + 1, src2 + 1, d2 + 2, FUNC_TEST_SIZE);
41 return (status == PRIMITIVES_SUCCESS);
45static BOOL test_add16s_speed(
void)
47 BYTE src1[MAX_TEST_SIZE + 3] = WINPR_C_ARRAY_INIT;
48 BYTE src2[MAX_TEST_SIZE + 3] = WINPR_C_ARRAY_INIT;
49 BYTE dst[MAX_TEST_SIZE + 3] = WINPR_C_ARRAY_INIT;
51 if (!g_TestPrimitivesPerformance)
54 if (winpr_RAND(src1,
sizeof(src1)) < 0)
56 if (winpr_RAND(src2,
sizeof(src2)) < 0)
59 return (speed_test(
"add16s",
"aligned", g_Iterations, (speed_test_fkt)generic->add_16s,
60 (speed_test_fkt)optimized->add_16s, src1, src2, dst, FUNC_TEST_SIZE));
63int TestPrimitivesAdd(
int argc,
char* argv[])
69 prim_test_setup(FALSE);
70 if (!test_add16s_func())
73 if (g_TestPrimitivesPerformance)
75 if (!test_add16s_speed())