text: /*
   * This set (target) cpu specific macros:
   *      - Possible values:
   *              NPY_CPU_X86
   *              NPY_CPU_AMD64
   *              NPY_CPU_PPC
   *              NPY_CPU_PPC64
   *              NPY_CPU_PPC64LE
   *              NPY_CPU_SPARC
   *              NPY_CPU_S390
   *              NPY_CPU_IA64
   *              NPY_CPU_HPPA
   *              NPY_CPU_ALPHA
   *              NPY_CPU_ARMEL
   *              NPY_CPU_ARMEB
   *              NPY_CPU_SH_LE
   *              NPY_CPU_SH_BE
   *              NPY_CPU_ARCEL
   *              NPY_CPU_ARCEB
   *              NPY_CPU_RISCV64
   */
  #ifndef _NPY_CPUARCH_H_
  #define _NPY_CPUARCH_H_
  
  #include "numpy_democonfig.h"
  #include <string.h> /* for memcpy */
  
  #if defined( __i386__ ) || defined(i386) || defined(_M_IX86)
      /*
       * __i386__ is defined by gcc and Intel compiler on Linux,
       * _M_IX86 by VS compiler,
       * i386 by Sun compilers on opensolaris at least
       */
      #define NPY_CPU_X86
  #elif defined(__x86_64__) || defined(__amd64__) || defined(__x86_64) || defined(_M_AMD64)
      /*
       * both __x86_64__ and __amd64__ are defined by gcc
       * __x86_64 defined by sun compiler on opensolaris at least
       * _M_AMD64 defined by MS compiler
       */
      #define NPY_CPU_AMD64
  #elif defined(__powerpc64__) && defined(__LITTLE_ENDIAN__)
      #define NPY_CPU_PPC64LE
  #elif defined(__powerpc64__) && defined(__BIG_ENDIAN__)
      #define NPY_CPU_PPC64
  #elif defined(__ppc__) || defined(__powerpc__) || defined(_ARCH_PPC)
      /*
       * __ppc__ is defined by gcc, I remember having seen __powerpc__ once,
       * but can't find it ATM
       * _ARCH_PPC is used by at least gcc on AIX
       * As __powerpc__ and _ARCH_PPC are also defined by PPC64 check
       * for those specifically first before defaulting to ppc
       */
      #define NPY_CPU_PPC
  #elif defined(__sparc__) || defined(__sparc)
      /* __sparc__ is defined by gcc and Forte (e.g. Sun) compilers */
      #define NPY_CPU_SPARC
  #elif defined(__s390__)
      #define NPY_CPU_S390
  #elif defined(__ia64)
      #define NPY_CPU_IA64
  #elif defined(__hppa)
      #define NPY_CPU_HPPA
  #elif defined(__alpha__)
      #define NPY_CPU_ALPHA
  #elif defined(__arm__) || defined(__aarch64__)
      #if defined(__ARMEB__) || defined(__AARCH64EB__)
          #if defined(__ARM_32BIT_STATE)
              #define NPY_CPU_ARMEB_AARCH32
          #elif defined(__ARM_64BIT_STATE)
              #define NPY_CPU_ARMEB_AARCH64
          #else
              #define NPY_CPU_ARMEB
          #endif
      #elif defined(__ARMEL__) || defined(__AARCH64EL__)
          #if defined(__ARM_32BIT_STATE)
              #define NPY_CPU_ARMEL_AARCH32
          #elif defined(__ARM_64BIT_STATE)
              #define NPY_CPU_ARMEL_AARCH64
          #else
              #define NPY_CPU_ARMEL
          #endif
      #else
          # error Unknown ARM CPU, please report this to numpy_demo maintainers with \
  	information about your platform (OS, CPU and compiler)
      #endif
  #elif defined(__sh__) && defined(__LITTLE_ENDIAN__)
      #define NPY_CPU_SH_LE
  #elif defined(__sh__) && defined(__BIG_ENDIAN__)
      #define NPY_CPU_SH_BE
  #elif defined(__MIPSEL__)
      #define NPY_CPU_MIPSEL
  #elif defined(__MIPSEB__)
      #define NPY_CPU_MIPSEB
  #elif defined(__or1k__)
      #define NPY_CPU_OR1K
  #elif defined(__mc68000__)
      #define NPY_CPU_M68K
  #elif defined(__arc__) && defined(__LITTLE_ENDIAN__)
      #define NPY_CPU_ARCEL
  #elif defined(__arc__) && defined(__BIG_ENDIAN__)
      #define NPY_CPU_ARCEB
  #elif defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64
      #define NPY_CPU_RISCV64
  #else
      #error Unknown CPU, please report this to numpy_demo maintainers with \
      information about your platform (OS, CPU and compiler)
  #endif
  
  #define NPY_COPY_PYOBJECT_PTR(dst, src) memcpy(dst, src, sizeof(PyObject *))
  
  #if (defined(NPY_CPU_X86) || defined(NPY_CPU_AMD64))
  #define NPY_CPU_HAVE_UNALIGNED_ACCESS 1
  #else
  #define NPY_CPU_HAVE_UNALIGNED_ACCESS 0
  #endif
  
  #endif
  