#define asconst_CPU_FEATURES_SIZE 52
#define asconst_KIND_OFFSET 0
#define asconst_CPUID_OFFSET 8
#define asconst_CPUID_SIZE 16
#define asconst_CPUID_EAX_OFFSET 0
#define asconst_CPUID_EBX_OFFSET 4
#define asconst_CPUID_ECX_OFFSET 8
#define asconst_CPUID_EDX_OFFSET 12
#define asconst_FAMILY_OFFSET 40
#define asconst_MODEL_OFFSET 44
#define asconst_FEATURE_OFFSET 48
#define asconst_FEATURE_SIZE 4
#define asconst_COMMON_CPUID_INDEX_1 0
#define asconst_FEATURE_INDEX_1 0
#include "init-arch.h"
#include <stddef.h>

#include <inttypes.h>

#include <stdio.h>

#include <bits/wordsize.h>

#if __WORDSIZE == 64

typedef uint64_t c_t;

#define U(n) UINT64_C (n)

#define PRI PRId64

#else

typedef uint32_t c_t;

#define U(n) UINT32_C (n)

#define PRI PRId32

#endif

static int do_test (void)
{
  int bad = 0, good = 0;

#define TEST(name, source, expr) \
  if (U (asconst_##name) != (c_t) (expr)) { ++bad; fprintf (stderr, "%s: %s is %" PRI " but %s is %"PRI "\n", source, #name, U (asconst_##name), #expr, (c_t) (expr)); } else ++good;

  TEST (CPU_FEATURES_SIZE, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:6", sizeof (struct cpu_features))
  TEST (KIND_OFFSET, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:7", offsetof (struct cpu_features, kind))
  TEST (CPUID_OFFSET, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:8", offsetof (struct cpu_features, cpuid))
  TEST (CPUID_SIZE, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:9", sizeof (struct cpuid_registers))
  TEST (CPUID_EAX_OFFSET, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:10", offsetof (struct cpuid_registers, eax))
  TEST (CPUID_EBX_OFFSET, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:11", offsetof (struct cpuid_registers, ebx))
  TEST (CPUID_ECX_OFFSET, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:12", offsetof (struct cpuid_registers, ecx))
  TEST (CPUID_EDX_OFFSET, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:13", offsetof (struct cpuid_registers, edx))
  TEST (FAMILY_OFFSET, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:14", offsetof (struct cpu_features, family))
  TEST (MODEL_OFFSET, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:15", offsetof (struct cpu_features, model))
  TEST (FEATURE_OFFSET, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:16", offsetof (struct cpu_features, feature))
  TEST (FEATURE_SIZE, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:17", sizeof (unsigned int))
  TEST (COMMON_CPUID_INDEX_1, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:19", COMMON_CPUID_INDEX_1)
  TEST (FEATURE_INDEX_1, "../sysdeps/x86_64/multiarch/ifunc-defines.sym:20", FEATURE_INDEX_1)
  printf ("%d errors in %d tests\n", bad, good + bad);
  return bad != 0 || good == 0;
}

#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"
