15#include <freerdp/config.h> 
   26#include <winpr/sysinfo.h> 
   27#include <winpr/platform.h> 
   28#include <winpr/crypto.h> 
   32BOOL g_TestPrimitivesPerformance = FALSE;
 
   33UINT32 g_Iterations = 1000;
 
   35int test_sizes[] = { 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 };
 
   39float measure_delta_time(UINT64 t0, UINT64 t1)
 
   41  INT64 diff = (INT64)(t1 - t0);
 
   42  double retval = ((double)diff / 1000000000.0);
 
   43  return (retval < 0.0) ? 0.0f : (float)retval;
 
   47void measure_floatprint(
float t, 
char* output, 
size_t len)
 
   57  i = ((int)(t / f + 0.5f)) * (
int)f;
 
   60    (void)_snprintf(output, len, 
"%f", t);
 
   62    (void)_snprintf(output, len, 
"%d", (
int)(t + 0.5f));
 
   64    (void)_snprintf(output, len, 
"%3d", i);
 
   66    (void)_snprintf(output, len, 
"%3d,%03d", i / 1000, i % 1000);
 
   68    (void)_snprintf(output, len, 
"%3d,%03d,000", i / 1000000, (i % 1000000) / 1000);
 
   70    (void)_snprintf(output, len, 
"%3d,%03d,000,000", i / 1000000000,
 
   71                    (i % 1000000000) / 1000000);
 
   73    (
void)_snprintf(output, len, 
"%f", t);
 
   76void prim_test_setup(BOOL performance)
 
   78  generic = primitives_get_generic();
 
   79  optimized = primitives_get();
 
   80  g_TestPrimitivesPerformance = performance;
 
   83BOOL speed_test(
const char* name, 
const char* dsc, UINT32 iterations, speed_test_fkt generic,
 
   84                speed_test_fkt optimized, ...)
 
   86  if (!name || !generic || !optimized || (iterations == 0))
 
   89  for (UINT32 i = 0; i < iterations; i++)