File: memory.c

package info (click to toggle)
libxsmm 1.17-4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 14,976 kB
  • sloc: ansic: 119,587; cpp: 27,680; fortran: 9,179; sh: 5,765; makefile: 5,040; pascal: 2,312; python: 1,812; f90: 1,773
file content (50 lines) | stat: -rw-r--r-- 1,745 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/******************************************************************************
* Copyright (c) Intel Corporation - All rights reserved.                      *
* This file is part of the LIBXSMM library.                                   *
*                                                                             *
* For information on the license, see the LICENSE file.                       *
* Further information: https://github.com/hfp/libxsmm/                        *
* SPDX-License-Identifier: BSD-3-Clause                                       *
******************************************************************************/
/* Hans Pabst (Intel Corp.)
******************************************************************************/
#include <libxsmm_source.h>


int main(/*int argc, char* argv[]*/)
{
  char item[LIBXSMM_DESCRIPTOR_MAXSIZE];
  const libxsmm_blasint isize = sizeof(item);
  const libxsmm_blasint size = 1000, ntests = 1000;
  char *const data = (char*)malloc((size_t)isize * size);
  libxsmm_blasint i, j, k, s;

  if (NULL == data) return EXIT_FAILURE;
  libxsmm_rng_seq(data, isize * size);

  for (i = 0; i < ntests; ++i) {
    j = (libxsmm_blasint)libxsmm_rng_u32(size);
    s = libxsmm_rng_u32(isize) + 1;
    libxsmm_rng_seq(item, s);
    for (k = s; k < isize; ++k) item[k] = 0;
    LIBXSMM_MEMCPY127(data + (j * isize), item, isize);
    k = libxsmm_diff_n(item, data,
      (unsigned char)s, (unsigned char)isize,
      0, size);
    while (k < j) {
      k = libxsmm_diff_n(item, data,
        (unsigned char)s, (unsigned char)isize,
        k + 1, size);
    }
    if (k == j) {
      continue;
    }
    else {
      free(data); return EXIT_FAILURE;
    }
  }
  free(data);

  return EXIT_SUCCESS;
}