#ifndef BLIS_SYSTEM_H
#define BLIS_SYSTEM_H
#ifndef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 200809L
#endif
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <stdarg.h>
#include <float.h>
#include <errno.h>
#include <ctype.h>
#if defined(__ICC) || defined(__INTEL_COMPILER)
#define BLIS_ICC
#elif defined(__clang__)
#define BLIS_CLANG
#elif defined(__GNUC__)
#define BLIS_GCC
#endif
#if defined(_M_X64) || defined(__x86_64) || defined(__aarch64__) || \
defined(_ARCH_PPC64) || defined(__s390x__) || defined(_LP64)
#define BLIS_ARCH_64
#else
#define BLIS_ARCH_32
#endif
#if defined(BLIS_ENABLE_SYSTEM)
#if defined(_WIN32) || defined(__CYGWIN__)
#define BLIS_OS_WINDOWS 1
#elif defined(__gnu_hurd__)
#define BLIS_OS_GNU 1
#elif defined(__APPLE__) || defined(__MACH__)
#define BLIS_OS_OSX 1
#elif defined(__ANDROID__)
#define BLIS_OS_ANDROID 1
#elif defined(__linux__)
#define BLIS_OS_LINUX 1
#elif defined(__bgq__)
#define BLIS_OS_BGQ 1
#elif defined(__bg__)
#define BLIS_OS_BGP 1
#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || \
defined(__bsdi__) || defined(__DragonFly__) || \
defined(__FreeBSD_kernel__) || defined(__HAIKU__)
#define BLIS_OS_BSD 1
#elif defined(EMSCRIPTEN)
#define BLIS_OS_EMSCRIPTEN
#else
#error "Cannot determine operating system"
#endif
#else
#define BLIS_OS_NONE
#endif
#if BLIS_OS_WINDOWS
#define WIN32_LEAN_AND_MEAN
#define VC_EXTRALEAN
#include <windows.h>
#if !defined(__clang__) && !defined(__GNUC__)
#define __attribute__(x)
#define restrict
#endif
#endif
#if BLIS_OS_WINDOWS
#include <time.h>
#elif BLIS_OS_OSX
#include <mach/mach_time.h>
#else
#include <time.h>
#endif
#endif