New ACC version.

committer: mfx <mfx> 1126029264 +0000
This commit is contained in:
Markus F.X.J. Oberhumer
2005-09-06 17:54:24 +00:00
parent 7373e1dd8b
commit 06ceb2f2a1
+411 -127
View File
@@ -36,7 +36,7 @@
#ifndef __ACC_H_INCLUDED
#define __ACC_H_INCLUDED 1
#define ACC_VERSION 20050726L
#define ACC_VERSION 20050906L
#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
# define __CYGWIN__ __CYGWIN32__
#endif
@@ -686,6 +686,9 @@
#elif defined(__ia64__) || defined(__ia64) || defined(_M_IA64)
# define ACC_ARCH_IA64 1
# define ACC_INFO_ARCH "ia64"
#elif (UINT_MAX == ACC_0xffffL) && defined(__m32c__)
# define ACC_ARCH_M16C 1
# define ACC_INFO_ARCH "m16c"
#elif defined(__m32r__)
# define ACC_ARCH_M32R 1
# define ACC_INFO_ARCH "m32r"
@@ -1065,6 +1068,9 @@ extern "C" {
# undef ACC_SIZEOF_LONG_LONG
# endif
#endif
#if defined(__NO_LONG_LONG)
# undef ACC_SIZEOF_LONG_LONG
#endif
#if !defined(ACC_SIZEOF_VOID_P)
#if (ACC_ARCH_I086)
# if (ACC_MM_TINY || ACC_MM_SMALL || ACC_MM_MEDIUM)
@@ -1088,6 +1094,12 @@ extern "C" {
# define ACC_SIZEOF_SIZE_T ACC_SIZEOF_INT
# define ACC_SIZEOF_PTRDIFF_T ACC_SIZEOF_INT
# endif
#elif (ACC_ARCH_M16C)
# if defined(__m32c_cpu__) || defined(__m32cm_cpu__)
# define ACC_SIZEOF_VOID_P 4
# else
# define ACC_SIZEOF_VOID_P 2
# endif
#elif (ACC_OS_CONSOLE_PS2)
# define ACC_SIZEOF_VOID_P 4
#elif (ACC_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
@@ -1111,7 +1123,7 @@ extern "C" {
#endif
#endif
#if !defined(ACC_SIZEOF_SIZE_T)
#if (ACC_ARCH_I086)
#if (ACC_ARCH_I086 || ACC_ARCH_M16C)
# define ACC_SIZEOF_SIZE_T 2
#else
# define ACC_SIZEOF_SIZE_T ACC_SIZEOF_VOID_P
@@ -1135,7 +1147,7 @@ extern "C" {
#endif
#endif
#if !defined(ACC_ABI_BIG_ENDIAN) && !defined(ACC_ABI_LITTLE_ENDIAN) && !defined(ACC_ABI_NEUTRAL_ENDIAN)
#if (ACC_ARCH_AMD64 || ACC_ARCH_I086 || ACC_ARCH_I386 || ACC_ARCH_MSP430)
#if (ACC_ARCH_AMD64 || ACC_ARCH_CRIS || ACC_ARCH_I086 || ACC_ARCH_I386 || ACC_ARCH_MSP430)
# define ACC_ABI_LITTLE_ENDIAN 1
#elif (ACC_ARCH_M68K || ACC_ARCH_S390)
# define ACC_ABI_BIG_ENDIAN 1
@@ -1467,6 +1479,9 @@ extern "C" {
#elif (ACC_ARCH_ARM)
# define ACC_OPT_AVOID_SHORT 1
# define ACC_OPT_AVOID_USHORT 1
#elif (ACC_ARCH_CRIS)
# define ACC_OPT_UNALIGNED16 1
# define ACC_OPT_UNALIGNED32 1
#elif (ACC_ARCH_I386)
# define ACC_OPT_UNALIGNED16 1
# define ACC_OPT_UNALIGNED32 1
@@ -1625,9 +1640,11 @@ extern "C" {
#undef HAVE_STDINT_H
#undef HAVE_STRINGS_H
#undef HAVE_SYS_UTIME_H
#undef HAVE_SYS_WAIT_H
#if (ACC_OS_POSIX)
# if (ACC_LIBC_DIETLIBC || ACC_LIBC_GLIBC || ACC_LIBC_UCLIBC)
# define HAVE_STRINGS_H 1
# define HAVE_SYS_WAIT_H 1
# elif (ACC_OS_POSIX_FREEBSD || ACC_OS_POSIX_MACOSX || ACC_OS_POSIX_NETBSD || ACC_OS_POSIX_OPENBSD)
# define HAVE_STRINGS_H 1
# endif
@@ -2380,6 +2397,105 @@ typedef RETSIGTYPE (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
#else
typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
#endif
#if (ACC_CC_GNUC && (ACC_CC_GNUC < 0x020700ul))
#elif (ACC_CC_GNUC && (ACC_CC_GNUC < 0x020800ul)) && defined(__cplusplus)
#elif (ACC_CC_INTELC && (__INTEL_COMPILER < 700))
#elif (ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE)
#if !defined(__acc_ua16_t) && (ACC_OPT_UNALIGNED16) && defined(acc_int16e_t)
typedef struct { acc_uint16e_t v __attribute__((__packed__)); } __acc_ua16_t;
# define __acc_ua16_t __acc_ua16_t
#endif
#if !defined(__acc_ua32_t) && (ACC_OPT_UNALIGNED32) && defined(acc_int32e_t)
typedef struct { acc_uint32e_t v __attribute__((__packed__)); } __acc_ua32_t;
# define __acc_ua32_t __acc_ua32_t
#endif
#if !defined(__acc_ua64_t) && (ACC_OPT_UNALIGNED64) && defined(acc_int64l_t)
typedef struct { acc_uint64l_t v __attribute__((__packed__)); } __acc_ua64_t;
# define __acc_ua64_t __acc_ua64_t
#endif
#endif
#if (ACC_OPT_UNALIGNED16) && defined(acc_int16e_t)
#define ACC_UA_GET16(p) (* (const acc_uint16e_t*) (const void*) (p))
#define ACC_UA_SET16(p,v) (* (acc_uint16e_t*) (void*) (p) = (acc_uint16e_t) (v))
#if (ACC_ABI_BIG_ENDIAN)
# define ACC_UA_GET_BE16(p) ACC_UA_GET16(p)
# define ACC_UA_SET_BE16(p,v) ACC_UA_SET16(p,v)
#elif (ACC_ABI_LITTLE_ENDIAN)
# define ACC_UA_GET_LE16(p) ACC_UA_GET16(p)
# define ACC_UA_SET_LE16(p,v) ACC_UA_SET16(p,v)
#endif
#if !defined(ACC_CFG_NO_INLINE_ASM) && defined(__acc_forceinline)
#if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC)
#if !defined(ACC_UA_GET_LE16)
extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(const void* pp) {
const acc_uint16e_t* p = (const acc_uint16e_t*) pp;
unsigned long v;
__asm__ __volatile__("lhbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p));
return v;
}
#define ACC_UA_GET_LE16(p) __ACC_UA_GET_LE16(p)
#endif
#if !defined(ACC_UA_SET_LE16)
extern __acc_forceinline void __ACC_UA_SET_LE16(void* pp, unsigned long v) {
acc_uint16e_t* p = (acc_uint16e_t*) pp;
__asm__ __volatile__("sthbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v));
}
#define ACC_UA_SET_LE16(p,v) __ACC_UA_SET_LE16(p,v)
#endif
#endif
#endif
#if !defined(ACC_UA_COPY16)
# define ACC_UA_COPY16(d,s) ACC_UA_SET16(d, ACC_UA_GET16(s))
#endif
#endif
#if (ACC_OPT_UNALIGNED32) && defined(acc_int32e_t)
#define ACC_UA_GET32(p) (* (const acc_uint32e_t*) (const void*) (p))
#define ACC_UA_SET32(p,v) (* (acc_uint32e_t*) (void*) (p) = (acc_uint32e_t) (v))
#if (ACC_ABI_BIG_ENDIAN)
# define ACC_UA_GET_BE32(p) ACC_UA_GET32(p)
# define ACC_UA_SET_BE32(p,v) ACC_UA_SET32(p,v)
#elif (ACC_ABI_LITTLE_ENDIAN)
# define ACC_UA_GET_LE32(p) ACC_UA_GET32(p)
# define ACC_UA_SET_LE32(p,v) ACC_UA_SET32(p,v)
#endif
#if !defined(ACC_CFG_NO_INLINE_ASM) && defined(__acc_forceinline)
#if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC)
#if !defined(ACC_UA_GET_LE32)
extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(const void* pp) {
const acc_uint32e_t* p = (const acc_uint32e_t*) pp;
unsigned long v;
__asm__ __volatile__("lwbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p));
return v;
}
#define ACC_UA_GET_LE32(p) __ACC_UA_GET_LE32(p)
#endif
#if !defined(ACC_UA_SET_LE32)
extern __acc_forceinline void __ACC_UA_SET_LE32(void* pp, unsigned long v) {
acc_uint32e_t* p = (acc_uint32e_t*) pp;
__asm__ __volatile__("stwbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v));
}
#define ACC_UA_SET_LE32(p,v) __ACC_UA_SET_LE32(p,v)
#endif
#endif
#endif
#if !defined(ACC_UA_COPY32)
# define ACC_UA_COPY32(d,s) ACC_UA_SET32(d, ACC_UA_GET32(s))
#endif
#endif
#if (ACC_OPT_UNALIGNED64) && defined(acc_int64l_t)
#define ACC_UA_GET64(p) (* (const acc_uint64l_t*) (const void*) (p))
#define ACC_UA_SET64(p,v) (* (acc_uint64l_t*) (void*) (p) = (acc_uint64l_t) (v))
#if (ACC_ABI_BIG_ENDIAN)
# define ACC_UA_GET_BE64(p) ACC_UA_GET64(p)
# define ACC_UA_SET_BE64(p,v) ACC_UA_SET64(p,v)
#elif (ACC_ABI_LITTLE_ENDIAN)
# define ACC_UA_GET_LE64(p) ACC_UA_GET64(p)
# define ACC_UA_SET_LE64(p,v) ACC_UA_SET64(p,v)
#endif
#if !defined(ACC_UA_COPY64)
# define ACC_UA_COPY64(d,s) ACC_UA_SET64(d, ACC_UA_GET64(s))
#endif
#endif
#endif
#endif
#if defined(ACC_WANT_ACC_TYPE_H)
@@ -2638,6 +2754,105 @@ typedef RETSIGTYPE (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
#else
typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);
#endif
#if (ACC_CC_GNUC && (ACC_CC_GNUC < 0x020700ul))
#elif (ACC_CC_GNUC && (ACC_CC_GNUC < 0x020800ul)) && defined(__cplusplus)
#elif (ACC_CC_INTELC && (__INTEL_COMPILER < 700))
#elif (ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE)
#if !defined(__acc_ua16_t) && (ACC_OPT_UNALIGNED16) && defined(acc_int16e_t)
typedef struct { acc_uint16e_t v __attribute__((__packed__)); } __acc_ua16_t;
# define __acc_ua16_t __acc_ua16_t
#endif
#if !defined(__acc_ua32_t) && (ACC_OPT_UNALIGNED32) && defined(acc_int32e_t)
typedef struct { acc_uint32e_t v __attribute__((__packed__)); } __acc_ua32_t;
# define __acc_ua32_t __acc_ua32_t
#endif
#if !defined(__acc_ua64_t) && (ACC_OPT_UNALIGNED64) && defined(acc_int64l_t)
typedef struct { acc_uint64l_t v __attribute__((__packed__)); } __acc_ua64_t;
# define __acc_ua64_t __acc_ua64_t
#endif
#endif
#if (ACC_OPT_UNALIGNED16) && defined(acc_int16e_t)
#define ACC_UA_GET16(p) (* (const acc_uint16e_t*) (const void*) (p))
#define ACC_UA_SET16(p,v) (* (acc_uint16e_t*) (void*) (p) = (acc_uint16e_t) (v))
#if (ACC_ABI_BIG_ENDIAN)
# define ACC_UA_GET_BE16(p) ACC_UA_GET16(p)
# define ACC_UA_SET_BE16(p,v) ACC_UA_SET16(p,v)
#elif (ACC_ABI_LITTLE_ENDIAN)
# define ACC_UA_GET_LE16(p) ACC_UA_GET16(p)
# define ACC_UA_SET_LE16(p,v) ACC_UA_SET16(p,v)
#endif
#if !defined(ACC_CFG_NO_INLINE_ASM) && defined(__acc_forceinline)
#if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC)
#if !defined(ACC_UA_GET_LE16)
extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(const void* pp) {
const acc_uint16e_t* p = (const acc_uint16e_t*) pp;
unsigned long v;
__asm__ __volatile__("lhbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p));
return v;
}
#define ACC_UA_GET_LE16(p) __ACC_UA_GET_LE16(p)
#endif
#if !defined(ACC_UA_SET_LE16)
extern __acc_forceinline void __ACC_UA_SET_LE16(void* pp, unsigned long v) {
acc_uint16e_t* p = (acc_uint16e_t*) pp;
__asm__ __volatile__("sthbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v));
}
#define ACC_UA_SET_LE16(p,v) __ACC_UA_SET_LE16(p,v)
#endif
#endif
#endif
#if !defined(ACC_UA_COPY16)
# define ACC_UA_COPY16(d,s) ACC_UA_SET16(d, ACC_UA_GET16(s))
#endif
#endif
#if (ACC_OPT_UNALIGNED32) && defined(acc_int32e_t)
#define ACC_UA_GET32(p) (* (const acc_uint32e_t*) (const void*) (p))
#define ACC_UA_SET32(p,v) (* (acc_uint32e_t*) (void*) (p) = (acc_uint32e_t) (v))
#if (ACC_ABI_BIG_ENDIAN)
# define ACC_UA_GET_BE32(p) ACC_UA_GET32(p)
# define ACC_UA_SET_BE32(p,v) ACC_UA_SET32(p,v)
#elif (ACC_ABI_LITTLE_ENDIAN)
# define ACC_UA_GET_LE32(p) ACC_UA_GET32(p)
# define ACC_UA_SET_LE32(p,v) ACC_UA_SET32(p,v)
#endif
#if !defined(ACC_CFG_NO_INLINE_ASM) && defined(__acc_forceinline)
#if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC)
#if !defined(ACC_UA_GET_LE32)
extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(const void* pp) {
const acc_uint32e_t* p = (const acc_uint32e_t*) pp;
unsigned long v;
__asm__ __volatile__("lwbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p));
return v;
}
#define ACC_UA_GET_LE32(p) __ACC_UA_GET_LE32(p)
#endif
#if !defined(ACC_UA_SET_LE32)
extern __acc_forceinline void __ACC_UA_SET_LE32(void* pp, unsigned long v) {
acc_uint32e_t* p = (acc_uint32e_t*) pp;
__asm__ __volatile__("stwbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v));
}
#define ACC_UA_SET_LE32(p,v) __ACC_UA_SET_LE32(p,v)
#endif
#endif
#endif
#if !defined(ACC_UA_COPY32)
# define ACC_UA_COPY32(d,s) ACC_UA_SET32(d, ACC_UA_GET32(s))
#endif
#endif
#if (ACC_OPT_UNALIGNED64) && defined(acc_int64l_t)
#define ACC_UA_GET64(p) (* (const acc_uint64l_t*) (const void*) (p))
#define ACC_UA_SET64(p,v) (* (acc_uint64l_t*) (void*) (p) = (acc_uint64l_t) (v))
#if (ACC_ABI_BIG_ENDIAN)
# define ACC_UA_GET_BE64(p) ACC_UA_GET64(p)
# define ACC_UA_SET_BE64(p,v) ACC_UA_SET64(p,v)
#elif (ACC_ABI_LITTLE_ENDIAN)
# define ACC_UA_GET_LE64(p) ACC_UA_GET64(p)
# define ACC_UA_SET_LE64(p,v) ACC_UA_SET64(p,v)
#endif
#if !defined(ACC_UA_COPY64)
# define ACC_UA_COPY64(d,s) ACC_UA_SET64(d, ACC_UA_GET64(s))
#endif
#endif
#endif
#if defined(ACC_WANT_ACC_INCD_H)
# undef ACC_WANT_ACC_INCD_H
@@ -2901,7 +3116,14 @@ typedef unsigned short wchar_t;
# define __ACCLIB_FUNCNAME(f) f
#endif
#if !defined(ACCLIB_EXTERN)
# define ACCLIB_EXTERN(r,f) extern r __ACCLIB_FUNCNAME(f)
# define ACCLIB_EXTERN(r,f) extern r __ACCLIB_FUNCNAME(f)
#endif
#if !defined(ACCLIB_EXTERN_NOINLINE)
# if defined(__acc_noinline)
# define ACCLIB_EXTERN_NOINLINE(r,f) extern __acc_noinline r __ACCLIB_FUNCNAME(f)
# else
# define ACCLIB_EXTERN_NOINLINE(r,f) extern r __ACCLIB_FUNCNAME(f)
# endif
#endif
#if !defined(__ACCLIB_CONST_CAST_RETURN)
#if 1 && (ACC_CC_GNUC || ACC_CC_LLVM || ACC_CC_PATHSCALE)
@@ -2943,22 +3165,19 @@ ACCLIB_EXTERN(int, acc_ascii_utoupper) (int);
#define acc_ascii_utoupper(c) acc_ascii_toupper((unsigned char)(c))
#ifndef acc_hsize_t
#if (ACC_HAVE_MM_HUGE_PTR)
# define acc_hsize_t unsigned long
# define acc_hvoid_p void __huge *
# define acc_hchar_p char __huge *
# define acc_hchar_pp char __huge * __huge *
# define acc_hbyte_p unsigned char __huge *
# define acc_hsize_t unsigned long
# define acc_hvoid_p void __huge *
# define acc_hchar_p char __huge *
# define acc_hchar_pp char __huge * __huge *
# define acc_hbyte_p unsigned char __huge *
#else
# define acc_hsize_t size_t
# define acc_hvoid_p void *
# define acc_hchar_p char *
# define acc_hchar_pp char **
# define acc_hbyte_p unsigned char *
# define acc_hsize_t size_t
# define acc_hvoid_p void *
# define acc_hchar_p char *
# define acc_hchar_pp char **
# define acc_hbyte_p unsigned char *
#endif
#endif
#ifndef ACC_FILE_P
#define ACC_FILE_P FILE *
#endif
ACCLIB_EXTERN(acc_hvoid_p, acc_halloc) (acc_hsize_t);
ACCLIB_EXTERN(void, acc_hfree) (acc_hvoid_p);
#if (ACC_OS_DOS16 || ACC_OS_OS216)
@@ -3007,8 +3226,8 @@ ACCLIB_EXTERN(acc_hchar_p, acc_ascii_hstrlwr) (acc_hchar_p);
ACCLIB_EXTERN(acc_hchar_p, acc_ascii_hstrupr) (acc_hchar_p);
ACCLIB_EXTERN(acc_hvoid_p, acc_ascii_hmemlwr) (acc_hvoid_p, acc_hsize_t);
ACCLIB_EXTERN(acc_hvoid_p, acc_ascii_hmemupr) (acc_hvoid_p, acc_hsize_t);
ACCLIB_EXTERN(acc_hsize_t, acc_hfread) (ACC_FILE_P, acc_hvoid_p, acc_hsize_t);
ACCLIB_EXTERN(acc_hsize_t, acc_hfwrite) (ACC_FILE_P, const acc_hvoid_p, acc_hsize_t);
ACCLIB_EXTERN(acc_hsize_t, acc_hfread) (void *, acc_hvoid_p, acc_hsize_t);
ACCLIB_EXTERN(acc_hsize_t, acc_hfwrite) (void *, const acc_hvoid_p, acc_hsize_t);
#if (ACC_HAVE_MM_HUGE_PTR)
ACCLIB_EXTERN(long, acc_hread) (int, acc_hvoid_p, long);
ACCLIB_EXTERN(long, acc_hwrite) (int, const acc_hvoid_p, long);
@@ -3135,10 +3354,11 @@ ACCLIB_EXTERN(int, acc_set_binmode) (int, int);
ACCLIB_EXTERN(acc_int32l_t, acc_muldiv32) (acc_int32l_t, acc_int32l_t, acc_int32l_t);
ACCLIB_EXTERN(acc_uint32l_t, acc_umuldiv32) (acc_uint32l_t, acc_uint32l_t, acc_uint32l_t);
ACCLIB_EXTERN(void, acc_wildargv) (int*, char***);
ACCLIB_EXTERN(void, acc_debug_break) (void);
ACCLIB_EXTERN(void, acc_debug_nop) (void);
ACCLIB_EXTERN(int, acc_debug_align_check_query) (void);
ACCLIB_EXTERN(int, acc_debug_align_check_enable) (int);
ACCLIB_EXTERN_NOINLINE(void, acc_debug_break) (void);
ACCLIB_EXTERN_NOINLINE(void, acc_debug_nop) (void);
ACCLIB_EXTERN_NOINLINE(int, acc_debug_align_check_query) (void);
ACCLIB_EXTERN_NOINLINE(int, acc_debug_align_check_enable) (int);
ACCLIB_EXTERN_NOINLINE(int, acc_debug_running_on_valgrind) (void);
#if defined(acc_int64l_t)
typedef struct {
void* h;
@@ -3166,6 +3386,7 @@ ACCLIB_EXTERN(int, acc_perfctr_close) (acc_perfctr_handle_p);
ACCLIB_EXTERN(void, acc_perfctr_read) (acc_perfctr_handle_p, acc_perfctr_clock_p);
ACCLIB_EXTERN(double, acc_perfctr_get_elapsed) (acc_perfctr_handle_p, const acc_perfctr_clock_p, const acc_perfctr_clock_p);
ACCLIB_EXTERN(double, acc_perfctr_get_elapsed_tsc) (acc_perfctr_handle_p, acc_uint64l_t);
ACCLIB_EXTERN(int, acc_perfctr_flush_cpu_cache) (acc_perfctr_handle_p, unsigned);
#else
# undef __ACCLIB_UCLOCK_USE_RDTSC
# undef __ACCLIB_UCLOCK_USE_PERFCTR
@@ -3220,47 +3441,24 @@ ACCLIB_EXTERN(int, acc_uclock_open) (acc_uclock_handle_p);
ACCLIB_EXTERN(int, acc_uclock_close) (acc_uclock_handle_p);
ACCLIB_EXTERN(void, acc_uclock_read) (acc_uclock_handle_p, acc_uclock_p);
ACCLIB_EXTERN(double, acc_uclock_get_elapsed) (acc_uclock_handle_p, const acc_uclock_p, const acc_uclock_p);
ACCLIB_EXTERN(unsigned, acc_get_be16) (const acc_hvoid_p);
ACCLIB_EXTERN(acc_uint32l_t, acc_get_be24) (const acc_hvoid_p);
ACCLIB_EXTERN(acc_uint32l_t, acc_get_be32) (const acc_hvoid_p);
ACCLIB_EXTERN(void, acc_set_be16) (acc_hvoid_p, unsigned);
ACCLIB_EXTERN(void, acc_set_be24) (acc_hvoid_p, acc_uint32l_t);
ACCLIB_EXTERN(void, acc_set_be32) (acc_hvoid_p, acc_uint32l_t);
ACCLIB_EXTERN(unsigned, acc_get_le16) (const acc_hvoid_p);
ACCLIB_EXTERN(acc_uint32l_t, acc_get_le24) (const acc_hvoid_p);
ACCLIB_EXTERN(acc_uint32l_t, acc_get_le32) (const acc_hvoid_p);
ACCLIB_EXTERN(void, acc_set_le16) (acc_hvoid_p, unsigned);
ACCLIB_EXTERN(void, acc_set_le24) (acc_hvoid_p, acc_uint32l_t);
ACCLIB_EXTERN(void, acc_set_le32) (acc_hvoid_p, acc_uint32l_t);
ACCLIB_EXTERN(int, acc_uclock_flush_cpu_cache) (acc_uclock_handle_p, unsigned);
ACCLIB_EXTERN(unsigned, acc_ua_get_be16) (const acc_hvoid_p);
ACCLIB_EXTERN(acc_uint32l_t, acc_ua_get_be24) (const acc_hvoid_p);
ACCLIB_EXTERN(acc_uint32l_t, acc_ua_get_be32) (const acc_hvoid_p);
ACCLIB_EXTERN(void, acc_ua_set_be16) (acc_hvoid_p, unsigned);
ACCLIB_EXTERN(void, acc_ua_set_be24) (acc_hvoid_p, acc_uint32l_t);
ACCLIB_EXTERN(void, acc_ua_set_be32) (acc_hvoid_p, acc_uint32l_t);
ACCLIB_EXTERN(unsigned, acc_ua_get_le16) (const acc_hvoid_p);
ACCLIB_EXTERN(acc_uint32l_t, acc_ua_get_le24) (const acc_hvoid_p);
ACCLIB_EXTERN(acc_uint32l_t, acc_ua_get_le32) (const acc_hvoid_p);
ACCLIB_EXTERN(void, acc_ua_set_le16) (acc_hvoid_p, unsigned);
ACCLIB_EXTERN(void, acc_ua_set_le24) (acc_hvoid_p, acc_uint32l_t);
ACCLIB_EXTERN(void, acc_ua_set_le32) (acc_hvoid_p, acc_uint32l_t);
#if defined(acc_int64l_t)
ACCLIB_EXTERN(acc_uint64l_t, acc_get_be64) (const acc_hvoid_p);
ACCLIB_EXTERN(void, acc_set_be64) (acc_hvoid_p, acc_uint64l_t);
ACCLIB_EXTERN(acc_uint64l_t, acc_get_le64) (const acc_hvoid_p);
ACCLIB_EXTERN(void, acc_set_le64) (acc_hvoid_p, acc_uint64l_t);
#endif
#if (ACC_ABI_BIG_ENDIAN && ACC_OPT_UNALIGNED16) && defined(acc_int16e_t)
# define ACC_GET_BE16(p) (* (const acc_uint16e_t *) (const void*) (p))
# define ACC_SET_BE16(p,v) (* (acc_uint16e_t *) (void*) (p) = (acc_uint16e_t) (v))
#endif
#if (ACC_ABI_BIG_ENDIAN && ACC_OPT_UNALIGNED32) && defined(acc_int32e_t)
# define ACC_GET_BE32(p) (* (const acc_uint32e_t *) (const void*) (p))
# define ACC_SET_BE32(p,v) (* (acc_uint32e_t *) (void*) (p) = (acc_uint32e_t) (v))
#endif
#if (ACC_ABI_BIG_ENDIAN && ACC_OPT_UNALIGNED64) && defined(acc_int64l_t)
# define ACC_GET_BE64(p) (* (const acc_uint64l_t *) (const void*) (p))
# define ACC_SET_BE64(p,v) (* (acc_uint64l_t *) (void*) (p) = (acc_uint64l_t) (v))
#endif
#if (ACC_ABI_LITTLE_ENDIAN && ACC_OPT_UNALIGNED16) && defined(acc_int16e_t)
# define ACC_GET_LE16(p) (* (const acc_uint16e_t *) (const void*) (p))
# define ACC_SET_LE16(p,v) (* (acc_uint16e_t *) (void*) (p) = (acc_uint16e_t) (v))
#endif
#if (ACC_ABI_LITTLE_ENDIAN && ACC_OPT_UNALIGNED32) && defined(acc_int32e_t)
# define ACC_GET_LE32(p) (* (const acc_uint32e_t *) (const void*) (p))
# define ACC_SET_LE32(p,v) (* (acc_uint32e_t *) (void*) (p) = (acc_uint32e_t) (v))
#endif
#if (ACC_ABI_LITTLE_ENDIAN && ACC_OPT_UNALIGNED64) && defined(acc_int64l_t)
# define ACC_GET_LE64(p) (* (const acc_uint64l_t *) (const void*) (p))
# define ACC_SET_LE64(p,v) (* (acc_uint64l_t *) (void*) (p) = (acc_uint64l_t) (v))
ACCLIB_EXTERN(acc_uint64l_t, acc_ua_get_be64) (const acc_hvoid_p);
ACCLIB_EXTERN(void, acc_ua_set_be64) (acc_hvoid_p, acc_uint64l_t);
ACCLIB_EXTERN(acc_uint64l_t, acc_ua_get_le64) (const acc_hvoid_p);
ACCLIB_EXTERN(void, acc_ua_set_le64) (acc_hvoid_p, acc_uint64l_t);
#endif
typedef struct {
const char* name;
@@ -3328,6 +3526,22 @@ typedef struct {
ACCLIB_EXTERN(void, acc_srandmt) (acc_randmt_p, acc_uint32l_t);
ACCLIB_EXTERN(acc_uint32l_t, acc_randmt) (acc_randmt_p);
ACCLIB_EXTERN(acc_uint32l_t, acc_randmt_r32) (acc_randmt_p);
#if defined(acc_int64l_t)
typedef struct {
unsigned n;
acc_uint64l_t s[312];
} acc_randmt64_t;
#ifndef acc_randmt64_p
#define acc_randmt64_p acc_randmt64_t *
#endif
ACCLIB_EXTERN(void, acc_srandmt64) (acc_randmt64_p, acc_uint64l_t);
ACCLIB_EXTERN(acc_uint64l_t, acc_randmt64_r64) (acc_randmt64_p);
#endif
#define ACC_SPAWN_P_WAIT 0
#define ACC_SPAWN_P_NOWAIT 1
ACCLIB_EXTERN(int, acc_spawnv) (int mode, const char* fn, const char* const * argv);
ACCLIB_EXTERN(int, acc_spawnvp) (int mode, const char* fn, const char* const * argv);
ACCLIB_EXTERN(int, acc_spawnve) (int mode, const char* fn, const char* const * argv, const char * const envp);
#endif
#endif
#if defined(ACC_WANT_ACC_CXX_H)
@@ -3815,56 +4029,56 @@ ACCLIB_EXTERN(acc_uint32l_t, acc_randmt_r32) (acc_randmt_p);
# pragma option pop
#endif
#endif
#if defined(ACC_WANT_ACCLIB_BELE)
# undef ACC_WANT_ACCLIB_BELE
#define __ACCLIB_BELE_CH_INCLUDED 1
#if defined(ACC_WANT_ACCLIB_UA)
# undef ACC_WANT_ACCLIB_UA
#define __ACCLIB_UA_CH_INCLUDED 1
#if !defined(ACCLIB_PUBLIC)
# define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
#endif
ACCLIB_PUBLIC(unsigned, acc_get_be16) (const acc_hvoid_p p)
ACCLIB_PUBLIC(unsigned, acc_ua_get_be16) (const acc_hvoid_p p)
{
#if defined(ACC_GET_BE16)
return ACC_GET_BE16(p);
#if defined(ACC_UA_GET_BE16)
return ACC_UA_GET_BE16(p);
#else
const acc_hbyte_p b = (const acc_hbyte_p) p;
return ((unsigned)b[1]) | ((unsigned)b[0] << 8);
#endif
}
ACCLIB_PUBLIC(acc_uint32l_t, acc_get_be24) (const acc_hvoid_p p)
ACCLIB_PUBLIC(acc_uint32l_t, acc_ua_get_be24) (const acc_hvoid_p p)
{
const acc_hbyte_p b = (const acc_hbyte_p) p;
return ((acc_uint32l_t)b[2]) | ((acc_uint32l_t)b[1] << 8) | ((acc_uint32l_t)b[0] << 16);
}
ACCLIB_PUBLIC(acc_uint32l_t, acc_get_be32) (const acc_hvoid_p p)
ACCLIB_PUBLIC(acc_uint32l_t, acc_ua_get_be32) (const acc_hvoid_p p)
{
#if defined(ACC_GET_BE32)
return ACC_GET_BE32(p);
#if defined(ACC_UA_GET_BE32)
return ACC_UA_GET_BE32(p);
#else
const acc_hbyte_p b = (const acc_hbyte_p) p;
return ((acc_uint32l_t)b[3]) | ((acc_uint32l_t)b[2] << 8) | ((acc_uint32l_t)b[1] << 16) | ((acc_uint32l_t)b[0] << 24);
#endif
}
ACCLIB_PUBLIC(void, acc_set_be16) (acc_hvoid_p p, unsigned v)
ACCLIB_PUBLIC(void, acc_ua_set_be16) (acc_hvoid_p p, unsigned v)
{
#if defined(ACC_SET_BE16)
ACC_SET_BE16(p, v);
#if defined(ACC_UA_SET_BE16)
ACC_UA_SET_BE16(p, v);
#else
acc_hbyte_p b = (acc_hbyte_p) p;
b[1] = (unsigned char) ((v >> 0) & 0xff);
b[0] = (unsigned char) ((v >> 8) & 0xff);
#endif
}
ACCLIB_PUBLIC(void, acc_set_be24) (acc_hvoid_p p, acc_uint32l_t v)
ACCLIB_PUBLIC(void, acc_ua_set_be24) (acc_hvoid_p p, acc_uint32l_t v)
{
acc_hbyte_p b = (acc_hbyte_p) p;
b[2] = (unsigned char) ((v >> 0) & 0xff);
b[1] = (unsigned char) ((v >> 8) & 0xff);
b[0] = (unsigned char) ((v >> 16) & 0xff);
}
ACCLIB_PUBLIC(void, acc_set_be32) (acc_hvoid_p p, acc_uint32l_t v)
ACCLIB_PUBLIC(void, acc_ua_set_be32) (acc_hvoid_p p, acc_uint32l_t v)
{
#if defined(ACC_SET_BE32)
ACC_SET_BE32(p, v);
#if defined(ACC_UA_SET_BE32)
ACC_UA_SET_BE32(p, v);
#else
acc_hbyte_p b = (acc_hbyte_p) p;
b[3] = (unsigned char) ((v >> 0) & 0xff);
@@ -3873,50 +4087,50 @@ ACCLIB_PUBLIC(void, acc_set_be32) (acc_hvoid_p p, acc_uint32l_t v)
b[0] = (unsigned char) ((v >> 24) & 0xff);
#endif
}
ACCLIB_PUBLIC(unsigned, acc_get_le16) (const acc_hvoid_p p)
ACCLIB_PUBLIC(unsigned, acc_ua_get_le16) (const acc_hvoid_p p)
{
#if defined(ACC_GET_LE16)
return ACC_GET_LE16(p);
#if defined(ACC_UA_GET_LE16)
return ACC_UA_GET_LE16(p);
#else
const acc_hbyte_p b = (const acc_hbyte_p) p;
return ((unsigned)b[0]) | ((unsigned)b[1] << 8);
#endif
}
ACCLIB_PUBLIC(acc_uint32l_t, acc_get_le24) (const acc_hvoid_p p)
ACCLIB_PUBLIC(acc_uint32l_t, acc_ua_get_le24) (const acc_hvoid_p p)
{
const acc_hbyte_p b = (const acc_hbyte_p) p;
return ((acc_uint32l_t)b[0]) | ((acc_uint32l_t)b[1] << 8) | ((acc_uint32l_t)b[2] << 16);
}
ACCLIB_PUBLIC(acc_uint32l_t, acc_get_le32) (const acc_hvoid_p p)
ACCLIB_PUBLIC(acc_uint32l_t, acc_ua_get_le32) (const acc_hvoid_p p)
{
#if defined(ACC_GET_LE32)
return ACC_GET_LE32(p);
#if defined(ACC_UA_GET_LE32)
return ACC_UA_GET_LE32(p);
#else
const acc_hbyte_p b = (const acc_hbyte_p) p;
return ((acc_uint32l_t)b[0]) | ((acc_uint32l_t)b[1] << 8) | ((acc_uint32l_t)b[2] << 16) | ((acc_uint32l_t)b[3] << 24);
#endif
}
ACCLIB_PUBLIC(void, acc_set_le16) (acc_hvoid_p p, unsigned v)
ACCLIB_PUBLIC(void, acc_ua_set_le16) (acc_hvoid_p p, unsigned v)
{
#if defined(ACC_SET_LE16)
ACC_SET_LE16(p, v);
#if defined(ACC_UA_SET_LE16)
ACC_UA_SET_LE16(p, v);
#else
acc_hbyte_p b = (acc_hbyte_p) p;
b[0] = (unsigned char) ((v >> 0) & 0xff);
b[1] = (unsigned char) ((v >> 8) & 0xff);
#endif
}
ACCLIB_PUBLIC(void, acc_set_le24) (acc_hvoid_p p, acc_uint32l_t v)
ACCLIB_PUBLIC(void, acc_ua_set_le24) (acc_hvoid_p p, acc_uint32l_t v)
{
acc_hbyte_p b = (acc_hbyte_p) p;
b[0] = (unsigned char) ((v >> 0) & 0xff);
b[1] = (unsigned char) ((v >> 8) & 0xff);
b[2] = (unsigned char) ((v >> 16) & 0xff);
}
ACCLIB_PUBLIC(void, acc_set_le32) (acc_hvoid_p p, acc_uint32l_t v)
ACCLIB_PUBLIC(void, acc_ua_set_le32) (acc_hvoid_p p, acc_uint32l_t v)
{
#if defined(ACC_SET_LE32)
ACC_SET_LE32(p, v);
#if defined(ACC_UA_SET_LE32)
ACC_UA_SET_LE32(p, v);
#else
acc_hbyte_p b = (acc_hbyte_p) p;
b[0] = (unsigned char) ((v >> 0) & 0xff);
@@ -3926,15 +4140,15 @@ ACCLIB_PUBLIC(void, acc_set_le32) (acc_hvoid_p p, acc_uint32l_t v)
#endif
}
#if defined(acc_int64l_t)
ACCLIB_PUBLIC(acc_uint64l_t, acc_get_be64) (const acc_hvoid_p p)
ACCLIB_PUBLIC(acc_uint64l_t, acc_ua_get_be64) (const acc_hvoid_p p)
{
#if defined(ACC_GET_BE64)
return ACC_GET_BE64(p);
#elif defined(ACC_GET_BE32)
#if defined(ACC_UA_GET_BE64)
return ACC_UA_GET_BE64(p);
#elif defined(ACC_UA_GET_BE32)
const acc_hbyte_p b = (const acc_hbyte_p) p;
acc_uint32e_t v0, v1;
v1 = ACC_GET_BE32(b + 0);
v0 = ACC_GET_BE32(b + 4);
v1 = ACC_UA_GET_BE32(b + 0);
v0 = ACC_UA_GET_BE32(b + 4);
return ((acc_uint64l_t)v0) | ((acc_uint64l_t)v1 << 32);
#elif (ACC_SIZEOF_LONG >= 8) || (ACC_SIZEOF_SIZE_T >= 8)
const acc_hbyte_p b = (const acc_hbyte_p) p;
@@ -3948,14 +4162,14 @@ ACCLIB_PUBLIC(acc_uint64l_t, acc_get_be64) (const acc_hvoid_p p)
return ((acc_uint64l_t)v0) | ((acc_uint64l_t)v1 << 32);
#endif
}
ACCLIB_PUBLIC(void, acc_set_be64) (acc_hvoid_p p, acc_uint64l_t v)
ACCLIB_PUBLIC(void, acc_ua_set_be64) (acc_hvoid_p p, acc_uint64l_t v)
{
#if defined(ACC_SET_BE64)
ACC_SET_BE64(p, v);
#elif defined(ACC_SET_BE32)
#if defined(ACC_UA_SET_BE64)
ACC_UA_SET_BE64(p, v);
#elif defined(ACC_UA_SET_BE32)
acc_hbyte_p b = (acc_hbyte_p) p;
ACC_SET_BE32(b + 4, (v >> 0));
ACC_SET_BE32(b + 0, (v >> 32));
ACC_UA_SET_BE32(b + 4, (v >> 0));
ACC_UA_SET_BE32(b + 0, (v >> 32));
#elif (ACC_SIZEOF_LONG >= 8) || (ACC_SIZEOF_SIZE_T >= 8)
acc_hbyte_p b = (acc_hbyte_p) p;
b[7] = (unsigned char) ((v >> 0) & 0xff);
@@ -3983,15 +4197,15 @@ ACCLIB_PUBLIC(void, acc_set_be64) (acc_hvoid_p p, acc_uint64l_t v)
}
#endif
#if defined(acc_int64l_t)
ACCLIB_PUBLIC(acc_uint64l_t, acc_get_le64) (const acc_hvoid_p p)
ACCLIB_PUBLIC(acc_uint64l_t, acc_ua_get_le64) (const acc_hvoid_p p)
{
#if defined(ACC_GET_LE64)
return ACC_GET_LE64(p);
#elif defined(ACC_GET_LE32)
#if defined(ACC_UA_GET_LE64)
return ACC_UA_GET_LE64(p);
#elif defined(ACC_UA_GET_LE32)
const acc_hbyte_p b = (const acc_hbyte_p) p;
acc_uint32e_t v0, v1;
v0 = ACC_GET_LE32(b + 0);
v1 = ACC_GET_LE32(b + 4);
v0 = ACC_UA_GET_LE32(b + 0);
v1 = ACC_UA_GET_LE32(b + 4);
return ((acc_uint64l_t)v0) | ((acc_uint64l_t)v1 << 32);
#elif (ACC_SIZEOF_LONG >= 8) || (ACC_SIZEOF_SIZE_T >= 8)
const acc_hbyte_p b = (const acc_hbyte_p) p;
@@ -4005,14 +4219,14 @@ ACCLIB_PUBLIC(acc_uint64l_t, acc_get_le64) (const acc_hvoid_p p)
return ((acc_uint64l_t)v0) | ((acc_uint64l_t)v1 << 32);
#endif
}
ACCLIB_PUBLIC(void, acc_set_le64) (acc_hvoid_p p, acc_uint64l_t v)
ACCLIB_PUBLIC(void, acc_ua_set_le64) (acc_hvoid_p p, acc_uint64l_t v)
{
#if defined(ACC_SET_LE64)
ACC_SET_LE64(p, v);
#elif defined(ACC_SET_LE32)
#if defined(ACC_UA_SET_LE64)
ACC_UA_SET_LE64(p, v);
#elif defined(ACC_UA_SET_LE32)
acc_hbyte_p b = (acc_hbyte_p) p;
ACC_SET_LE32(b + 0, (v >> 0));
ACC_SET_LE32(b + 4, (v >> 32));
ACC_UA_SET_LE32(b + 0, (v >> 0));
ACC_UA_SET_LE32(b + 4, (v >> 32));
#elif (ACC_SIZEOF_LONG >= 8) || (ACC_SIZEOF_SIZE_T >= 8)
acc_hbyte_p b = (acc_hbyte_p) p;
b[0] = (unsigned char) ((v >> 0) & 0xff);
@@ -4207,6 +4421,46 @@ ACCLIB_PUBLIC(acc_uint32l_t, acc_randmt_r32) (acc_randmt_p r)
v ^= (v & ACC_UINT32_C(0x0001df8c)) << 15; v ^= v >> 18;
return v;
}
#if defined(acc_int64l_t)
ACCLIB_PUBLIC(void, acc_srandmt64) (acc_randmt64_p r, acc_uint64l_t seed)
{
unsigned i = 0;
do {
r->s[i++] = (seed &= ACC_UINT64_C(0xffffffffffffffff));
seed ^= seed >> 62;
seed = seed * ACC_UINT64_C(0x5851f42d4c957f2d) + i;
} while (i != 312);
r->n = i;
}
#if 0
ACCLIB_PUBLIC(acc_uint32l_t, acc_randmt64) (acc_randmt64_p r)
{
acc_uint64l_t v;
v = (__ACCLIB_FUNCNAME(acc_randmt64_r64)(r)) >> 33;
return (acc_uint32l_t) v;
}
#endif
ACCLIB_PUBLIC(acc_uint64l_t, acc_randmt64_r64) (acc_randmt64_p r)
{
acc_uint64l_t v;
if (r->n == 312) {
int i = 0, j;
r->n = 0;
do {
j = i - 311; if (j < 0) j += 312;
v = (r->s[i] & ACC_UINT64_C(0xffffffff80000000)) ^ (r->s[j] & ACC_UINT64_C(0x7fffffff));
j = i - 156; if (j < 0) j += 312;
r->s[i] = r->s[j] ^ (v >> 1);
if (v & 1) r->s[i] ^= ACC_UINT64_C(0xb5026f5aa96619e9);
} while (++i != 312);
}
v = r->s[r->n++];
v ^= (v & ACC_UINT64_C(0xaaaaaaaaa0000000)) >> 29;
v ^= (v & ACC_UINT64_C(0x38eb3ffff6d3)) << 17;
v ^= (v & ACC_UINT64_C(0x7ffbf77)) << 37;
return v ^ (v >> 43);
}
#endif
#endif
#if defined(ACC_WANT_ACCLIB_RDTSC)
# undef ACC_WANT_ACCLIB_RDTSC
@@ -4466,8 +4720,9 @@ ACCLIB_PUBLIC(void, acc_hfree) (acc_hvoid_p p)
#if !defined(ACCLIB_PUBLIC)
# define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
#endif
ACCLIB_PUBLIC(acc_hsize_t, acc_hfread) (ACC_FILE_P fp, acc_hvoid_p buf, acc_hsize_t size)
ACCLIB_PUBLIC(acc_hsize_t, acc_hfread) (void* vfp, acc_hvoid_p buf, acc_hsize_t size)
{
FILE* fp = (FILE *) vfp;
#if (ACC_HAVE_MM_HUGE_PTR)
#if (ACC_MM_TINY || ACC_MM_SMALL || ACC_MM_MEDIUM)
#define __ACCLIB_REQUIRE_HMEMCPY_CH 1
@@ -4505,8 +4760,9 @@ ACCLIB_PUBLIC(acc_hsize_t, acc_hfread) (ACC_FILE_P fp, acc_hvoid_p buf, acc_hsiz
return fread(buf, 1, size, fp);
#endif
}
ACCLIB_PUBLIC(acc_hsize_t, acc_hfwrite) (ACC_FILE_P fp, const acc_hvoid_p buf, acc_hsize_t size)
ACCLIB_PUBLIC(acc_hsize_t, acc_hfwrite) (void* vfp, const acc_hvoid_p buf, acc_hsize_t size)
{
FILE* fp = (FILE *) vfp;
#if (ACC_HAVE_MM_HUGE_PTR)
#if (ACC_MM_TINY || ACC_MM_SMALL || ACC_MM_MEDIUM)
#define __ACCLIB_REQUIRE_HMEMCPY_CH 1
@@ -4681,7 +4937,7 @@ ACCLIB_PUBLIC(int, acc_uclock_open) (acc_uclock_handle_p h)
#if (__ACCLIB_UCLOCK_USE_QPC)
LARGE_INTEGER li;
#endif
h->h = 1;
h->h = (acclib_handle_t) 1;
h->mode = 0;
#if (__ACCLIB_UCLOCK_USE_PERFCTR)
h->pch.h = 0;
@@ -4706,7 +4962,7 @@ ACCLIB_PUBLIC(int, acc_uclock_open) (acc_uclock_handle_p h)
}
ACCLIB_PUBLIC(int, acc_uclock_close) (acc_uclock_handle_p h)
{
h->h = 0;
h->h = (acclib_handle_t) 0;
h->mode = -1;
#if (__ACCLIB_UCLOCK_USE_PERFCTR)
acc_perfctr_close(&h->pch);
@@ -4820,6 +5076,16 @@ ACCLIB_PUBLIC(double, acc_uclock_get_elapsed) (acc_uclock_handle_p h, const acc_
#endif
return d;
}
ACCLIB_PUBLIC(int, acc_uclock_flush_cpu_cache) (acc_uclock_handle_p h, unsigned flags)
{
if (h->h) {
#if (__ACCLIB_UCLOCK_USE_PERFCTR)
return acc_perfctr_flush_cpu_cache(&h->pch, flags);
#endif
}
ACC_UNUSED(h); ACC_UNUSED(flags);
return -1;
}
#if defined(__ACCLIB_UCLOCK_NEED_WARN_POP)
# if (ACC_CC_MSC && (_MSC_VER >= 1200))
# pragma warning(pop)
@@ -4833,7 +5099,14 @@ ACCLIB_PUBLIC(double, acc_uclock_get_elapsed) (acc_uclock_handle_p h, const acc_
# undef ACC_WANT_ACCLIB_MISC
#define __ACCLIB_MISC_CH_INCLUDED 1
#if !defined(ACCLIB_PUBLIC)
# define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
# define ACCLIB_PUBLIC(r,f) r __ACCLIB_FUNCNAME(f)
#endif
#if !defined(ACCLIB_PUBLIC_NOINLINE)
# if defined(__acc_noinline)
# define ACCLIB_PUBLIC_NOINLINE(r,f) __acc_noinline r __ACCLIB_FUNCNAME(f)
# else
# define ACCLIB_PUBLIC_NOINLINE(r,f) r __ACCLIB_FUNCNAME(f)
# endif
#endif
ACCLIB_PUBLIC(acclib_handle_t, acc_get_osfhandle) (int fd)
{
@@ -4997,7 +5270,7 @@ ACCLIB_PUBLIC(acc_uint32l_t, acc_umuldiv32) (acc_uint32l_t a, acc_uint32l_t b, a
#if (ACC_OS_WIN16)
ACC_EXTERN_C void __far __pascal DebugBreak(void);
#endif
ACCLIB_PUBLIC(void, acc_debug_break) (void)
ACCLIB_PUBLIC_NOINLINE(void, acc_debug_break) (void)
{
#if (ACC_OS_WIN16)
DebugBreak();
@@ -5016,10 +5289,10 @@ ACCLIB_PUBLIC(void, acc_debug_break) (void)
* (int *) 0x1 = -1;
#endif
}
ACCLIB_PUBLIC(void, acc_debug_nop) (void)
ACCLIB_PUBLIC_NOINLINE(void, acc_debug_nop) (void)
{
}
ACCLIB_PUBLIC(int, acc_debug_align_check_query) (void)
ACCLIB_PUBLIC_NOINLINE(int, acc_debug_align_check_query) (void)
{
#if (ACC_ARCH_AMD64 || ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
long r;
@@ -5037,7 +5310,7 @@ ACCLIB_PUBLIC(int, acc_debug_align_check_query) (void)
return -1;
#endif
}
ACCLIB_PUBLIC(int, acc_debug_align_check_enable) (int v)
ACCLIB_PUBLIC_NOINLINE(int, acc_debug_align_check_enable) (int v)
{
int r;
#if (ACC_ARCH_AMD64) && (ACC_ASM_SYNTAX_GNUC)
@@ -5070,6 +5343,17 @@ ACCLIB_PUBLIC(int, acc_debug_align_check_enable) (int v)
#endif
ACC_UNUSED(v); return r;
}
ACCLIB_PUBLIC_NOINLINE(int, acc_debug_running_on_valgrind) (void)
{
#if (ACC_ARCH_AMD64 || ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
volatile unsigned long args[5] = { 0x1001, 0, 0, 0, 0 };
long r = 0;
__asm__ __volatile__(".byte 0xc1,0xc0,0x1d,0xc1,0xc0,0x03,0xc1,0xc8,0x1b,0xc1,0xc8,0x05,0xc1,0xc0,0x0d,0xc1,0xc0,0x13\n" : "=d" (r) : "a" (&args[0]), "d" (r) : __ACC_ASM_CLOBBER);
return (int) r;
#else
return 0;
#endif
}
#if (ACC_OS_WIN32 && ACC_CC_PELLESC && (__POCC__ >= 290))
# pragma warn(pop)
#endif