diff --git a/polymer/eduke32/build/include/pragmas.h b/polymer/eduke32/build/include/pragmas.h index ce8ad5668..341d0ba73 100644 --- a/polymer/eduke32/build/include/pragmas.h +++ b/polymer/eduke32/build/include/pragmas.h @@ -11,14 +11,15 @@ extern "C" { #include -#define EDUKE32_GENERATE_PRAGMAS EDUKE32_SCALER_PRAGMA(1) EDUKE32_SCALER_PRAGMA(2) EDUKE32_SCALER_PRAGMA(3) EDUKE32_SCALER_PRAGMA(4)\ -EDUKE32_SCALER_PRAGMA(5) EDUKE32_SCALER_PRAGMA(6) EDUKE32_SCALER_PRAGMA(7) EDUKE32_SCALER_PRAGMA(8)\ -EDUKE32_SCALER_PRAGMA(9) EDUKE32_SCALER_PRAGMA(10) EDUKE32_SCALER_PRAGMA(11) EDUKE32_SCALER_PRAGMA(12)\ -EDUKE32_SCALER_PRAGMA(13) EDUKE32_SCALER_PRAGMA(14) EDUKE32_SCALER_PRAGMA(15) EDUKE32_SCALER_PRAGMA(16)\ -EDUKE32_SCALER_PRAGMA(17) EDUKE32_SCALER_PRAGMA(18) EDUKE32_SCALER_PRAGMA(19) EDUKE32_SCALER_PRAGMA(20)\ -EDUKE32_SCALER_PRAGMA(21) EDUKE32_SCALER_PRAGMA(22) EDUKE32_SCALER_PRAGMA(23) EDUKE32_SCALER_PRAGMA(24)\ -EDUKE32_SCALER_PRAGMA(25) EDUKE32_SCALER_PRAGMA(26) EDUKE32_SCALER_PRAGMA(27) EDUKE32_SCALER_PRAGMA(28)\ -EDUKE32_SCALER_PRAGMA(29) EDUKE32_SCALER_PRAGMA(30) EDUKE32_SCALER_PRAGMA(31) +#define EDUKE32_GENERATE_PRAGMAS \ + EDUKE32_SCALER_PRAGMA(1) EDUKE32_SCALER_PRAGMA(2) EDUKE32_SCALER_PRAGMA(3) EDUKE32_SCALER_PRAGMA(4) \ + EDUKE32_SCALER_PRAGMA(5) EDUKE32_SCALER_PRAGMA(6) EDUKE32_SCALER_PRAGMA(7) EDUKE32_SCALER_PRAGMA(8) \ + EDUKE32_SCALER_PRAGMA(9) EDUKE32_SCALER_PRAGMA(10) EDUKE32_SCALER_PRAGMA(11) EDUKE32_SCALER_PRAGMA(12) \ + EDUKE32_SCALER_PRAGMA(13) EDUKE32_SCALER_PRAGMA(14) EDUKE32_SCALER_PRAGMA(15) EDUKE32_SCALER_PRAGMA(16) \ + EDUKE32_SCALER_PRAGMA(17) EDUKE32_SCALER_PRAGMA(18) EDUKE32_SCALER_PRAGMA(19) EDUKE32_SCALER_PRAGMA(20) \ + EDUKE32_SCALER_PRAGMA(21) EDUKE32_SCALER_PRAGMA(22) EDUKE32_SCALER_PRAGMA(23) EDUKE32_SCALER_PRAGMA(24) \ + EDUKE32_SCALER_PRAGMA(25) EDUKE32_SCALER_PRAGMA(26) EDUKE32_SCALER_PRAGMA(27) EDUKE32_SCALER_PRAGMA(28) \ + EDUKE32_SCALER_PRAGMA(29) EDUKE32_SCALER_PRAGMA(30) EDUKE32_SCALER_PRAGMA(31) extern int32_t dmval; #if !defined(NOASM) && defined __cplusplus @@ -32,10 +33,10 @@ extern int32_t reciptable[2048], fpuasm; // break the C version of divscale out from the others // because asm version overflows in drawmapview() -#define qw(x) ((int64_t)(x)) // quadword cast -#define dw(x) ((int32_t)(x)) // doubleword cast -#define wo(x) ((int16_t)(x)) // word cast -#define by(x) ((uint8_t)(x)) // byte cast +#define qw(x) ((int64_t)(x)) // quadword cast +#define dw(x) ((int32_t)(x)) // doubleword cast +#define wo(x) ((int16_t)(x)) // word cast +#define by(x) ((uint8_t)(x)) // byte cast #define LIBDIVIDE_ALWAYS #define DIVTABLESIZE 16384 @@ -62,7 +63,7 @@ static inline int32_t tabledivide64(int64_t n, int32_t d) { static libdivide_s64_t sdiv; static int32_t lastd; - libdivide_s64_t *dptr = ((unsigned) d < DIVTABLESIZE) ? (libdivide_s64_t *)&divtable64[d] : &sdiv; + libdivide_s64_t *dptr = ((unsigned)d < DIVTABLESIZE) ? (libdivide_s64_t *)&divtable64[d] : &sdiv; if (d == lastd || dptr != &sdiv) goto skip; @@ -77,7 +78,7 @@ static inline int32_t tabledivide32(int32_t n, int32_t d) { static libdivide_s32_t sdiv; static int32_t lastd; - libdivide_s32_t *dptr = ((unsigned) d < DIVTABLESIZE) ? (libdivide_s32_t *)&divtable32[d] : &sdiv; + libdivide_s32_t *dptr = ((unsigned)d < DIVTABLESIZE) ? (libdivide_s32_t *)&divtable32[d] : &sdiv; if (d == lastd || dptr != &sdiv) goto skip; @@ -90,11 +91,15 @@ skip: #else static inline uint32_t divideu32(uint32_t n, uint32_t d) { return n / d; } -static inline int32_t tabledivide64(int64_t n, int32_t d) { return ((unsigned) d < DIVTABLESIZE) ? - libdivide_s64_do(n, (libdivide_s64_t *) &divtable64[d]) : n / d; } +static inline int32_t tabledivide64(int64_t n, int32_t d) +{ + return ((unsigned)d < DIVTABLESIZE) ? libdivide_s64_do(n, (libdivide_s64_t *)&divtable64[d]) : n / d; +} -static inline int32_t tabledivide32(int32_t n, int32_t d) { return ((unsigned) d < DIVTABLESIZE) ? - libdivide_s32_do(n, (libdivide_s32_t *) &divtable32[d]) : n / d; } +static inline int32_t tabledivide32(int32_t n, int32_t d) +{ + return ((unsigned)d < DIVTABLESIZE) ? libdivide_s32_do(n, (libdivide_s32_t *)&divtable32[d]) : n / d; +} #endif extern uint32_t divideu32_noinline(uint32_t n, uint32_t d); @@ -103,10 +108,7 @@ extern int32_t tabledivide64_noinline(int64_t n, int32_t d); #ifdef GEKKO #include -static inline int32_t divscale(int32_t eax, int32_t ebx, int32_t ecx) -{ - return tabledivide64(ldexp(eax, ecx), ebx); -} +static inline int32_t divscale(int32_t eax, int32_t ebx, int32_t ecx) { return tabledivide64(ldexp(eax, ecx), ebx); } #else static inline int32_t divscale(int32_t eax, int32_t ebx, int32_t ecx) { @@ -115,7 +117,8 @@ static inline int32_t divscale(int32_t eax, int32_t ebx, int32_t ecx) } #endif -# define EDUKE32_SCALER_PRAGMA(a) static inline int32_t divscale##a(int32_t eax, int32_t ebx) { return divscale(eax, ebx, a); } +#define EDUKE32_SCALER_PRAGMA(a) \ + static inline int32_t divscale##a(int32_t eax, int32_t ebx) { return divscale(eax, ebx, a); } EDUKE32_GENERATE_PRAGMAS EDUKE32_SCALER_PRAGMA(32) #undef EDUKE32_SCALER_PRAGMA @@ -135,12 +138,12 @@ static inline int32_t scale(int32_t eax, int32_t edx, int32_t ecx) // GCC Inline Assembler version (x86) #include "pragmas_x86_gcc.h" -#elif defined(_MSC_VER) && !defined(NOASM) // __GNUC__ +#elif defined(_MSC_VER) && !defined(NOASM) // __GNUC__ // Microsoft C inline assembler #include "pragmas_x86_msvc.h" -#elif defined(__arm__) // _MSC_VER +#elif defined(__arm__) // _MSC_VER // GCC Inline Assembler version (ARM) #include "pragmas_arm.h" @@ -151,44 +154,77 @@ static inline int32_t scale(int32_t eax, int32_t edx, int32_t ecx) // Generic C // -#define EDUKE32_SCALER_PRAGMA(a) \ -static inline int32_t mulscale##a(int32_t eax, int32_t edx) \ -{ \ - return dw((qw(eax) * qw(edx)) >> by(a)); \ -} \ -\ -static inline int32_t dmulscale##a(int32_t eax, int32_t edx, int32_t esi, int32_t edi) \ -{ \ - return dw(((qw(eax) * qw(edx)) + (qw(esi) * qw(edi))) >> by(a)); \ -} \ -\ +#define EDUKE32_SCALER_PRAGMA(a) \ + static inline int32_t mulscale##a(int32_t eax, int32_t edx) { return dw((qw(eax) * qw(edx)) >> by(a)); } \ + \ + static inline int32_t dmulscale##a(int32_t eax, int32_t edx, int32_t esi, int32_t edi) \ + { \ + return dw(((qw(eax) * qw(edx)) + (qw(esi) * qw(edi))) >> by(a)); \ + } + EDUKE32_GENERATE_PRAGMAS EDUKE32_SCALER_PRAGMA(32) #undef EDUKE32_SCALER_PRAGMA -static inline void swapchar(void* a, void* b) { char t = *((char*)b); *((char*)b) = *((char*)a); *((char*)a) = t; } -static inline void swapchar2(void* a, void* b, int32_t s) { swapchar(a,b); swapchar((char*)a+1,(char*)b+s); } -static inline void swapshort(void* a, void* b) { int16_t t = *((int16_t*)b); *((int16_t*)b) = *((int16_t*)a); *((int16_t*)a) = t; } -static inline void swaplong(void* a, void* b) { int32_t t = *((int32_t*)b); *((int32_t*)b) = *((int32_t*)a); *((int32_t*)a) = t; } -static inline void swapfloat(void* a, void* b) { float t = *((float*)b); *((float*)b) = *((float*)a); *((float*)a) = t; } -static inline void swap64bit(void* a, void* b) { int64_t t = *((int64_t*)b); *((int64_t*)b) = *((int64_t*)a); *((int64_t*)a) = t; } +static inline void swapchar(void *a, void *b) +{ + char t = *((char *)b); + *((char *)b) = *((char *)a); + *((char *)a) = t; +} +static inline void swapchar2(void *a, void *b, int32_t s) +{ + swapchar(a, b); + swapchar((char *)a + 1, (char *)b + s); +} +static inline void swapshort(void *a, void *b) +{ + int16_t t = *((int16_t *)b); + *((int16_t *)b) = *((int16_t *)a); + *((int16_t *)a) = t; +} +static inline void swaplong(void *a, void *b) +{ + int32_t t = *((int32_t *)b); + *((int32_t *)b) = *((int32_t *)a); + *((int32_t *)a) = t; +} +static inline void swapfloat(void *a, void *b) +{ + float t = *((float *)b); + *((float *)b) = *((float *)a); + *((float *)a) = t; +} +static inline void swap64bit(void *a, void *b) +{ + int64_t t = *((int64_t *)b); + *((int64_t *)b) = *((int64_t *)a); + *((int64_t *)a) = t; +} -static inline char readpixel(void* s) { return (*((char*)(s))); } -static inline void drawpixel(void* s, char a) { *((char*)(s)) = a; } +static inline char readpixel(void *s) { return (*((char *)(s))); } +static inline void drawpixel(void *s, char a) { *((char *)(s)) = a; } -static inline int32_t klabs(int32_t a) { const uint32_t m = a >> (sizeof(int) * CHAR_BIT - 1); return (a ^ m) - m; } -static inline int32_t ksgn(int32_t a) { return (a>0)-(a<0); } +static inline int32_t klabs(int32_t a) +{ + const uint32_t m = a >> (sizeof(int) * CHAR_BIT - 1); + return (a ^ m) - m; +} +static inline int32_t ksgn(int32_t a) { return (a > 0) - (a < 0); } static inline int32_t mulscale(int32_t eax, int32_t edx, int32_t ecx) { return dw((qw(eax) * edx) >> by(ecx)); } -static inline int32_t dmulscale(int32_t eax, int32_t edx, int32_t esi, int32_t edi, int32_t ecx) { return dw(((qw(eax) * edx) + (qw(esi) * edi)) >> by(ecx)); } +static inline int32_t dmulscale(int32_t eax, int32_t edx, int32_t esi, int32_t edi, int32_t ecx) +{ + return dw(((qw(eax) * edx) + (qw(esi) * edi)) >> by(ecx)); +} -void qinterpolatedown16 (intptr_t bufptr, int32_t num, int32_t val, int32_t add); -void qinterpolatedown16short (intptr_t bufptr, int32_t num, int32_t val, int32_t add); +void qinterpolatedown16(intptr_t bufptr, int32_t num, int32_t val, int32_t add); +void qinterpolatedown16short(intptr_t bufptr, int32_t num, int32_t val, int32_t add); -void clearbuf(void* d, int32_t c, int32_t a); -void copybuf(const void* s, void* d, int32_t c); -void swapbuf4(void* a, void* b, int32_t c); +void clearbuf(void *d, int32_t c, int32_t a); +void copybuf(const void *s, void *d, int32_t c); +void swapbuf4(void *a, void *b, int32_t c); void clearbufbyte(void *D, int32_t c, int32_t a); void copybufbyte(const void *S, void *D, int32_t c); @@ -197,8 +233,9 @@ void copybufreverse(const void *S, void *D, int32_t c); static inline int32_t krecipasm(int32_t i) { // Ken did this - float f = (float) i; i = *(int32_t *) &f; - return((reciptable[(i>>12)&2047]>>(((i-0x3f800000)>>23)&31))^(i>>31)); + float f = (float)i; + i = *(int32_t *)&f; + return ((reciptable[(i >> 12) & 2047] >> (((i - 0x3f800000) >> 23) & 31)) ^ (i >> 31)); } #endif @@ -210,13 +247,13 @@ static inline int32_t krecipasm(int32_t i) static inline void swapbufreverse(void *s, void *d, int32_t c) { - uint8_t *src = (uint8_t*)s, *dst = (uint8_t*)d; + uint8_t *src = (uint8_t *)s, *dst = (uint8_t *)d; do { swapchar(dst, src); - swapchar(dst+1, src-1); - swapchar(dst+2, src-2); - swapchar(dst+3, src-3); + swapchar(dst + 1, src - 1); + swapchar(dst + 2, src - 2); + swapchar(dst + 3, src - 3); dst += 4, src -= 4; } while (--c > 4); while (c--) swapchar(dst++, src--); @@ -226,5 +263,4 @@ static inline void swapbufreverse(void *s, void *d, int32_t c) } #endif -#endif // __pragmas_h__ - +#endif // __pragmas_h__ diff --git a/polymer/eduke32/build/include/pragmas_arm.h b/polymer/eduke32/build/include/pragmas_arm.h index 7e67cc563..f24e2d4b5 100644 --- a/polymer/eduke32/build/include/pragmas_arm.h +++ b/polymer/eduke32/build/include/pragmas_arm.h @@ -5,39 +5,76 @@ #ifndef __pragmas_arm_h__ #define __pragmas_arm_h__ -#define EDUKE32_SCALER_PRAGMA(a) \ -static inline int32_t mulscale##a(int32_t eax, int32_t edx) \ -{ return dw((qw(eax) * edx) >> by(a)); } \ -\ -static inline int32_t dmulscale##a(int32_t eax, int32_t edx, int32_t esi, int32_t edi) \ -{ return dw(((qw(eax) * edx) + (qw(esi) * edi)) >> by(a)); } \ +#define EDUKE32_SCALER_PRAGMA(a) \ + static inline int32_t mulscale##a(int32_t eax, int32_t edx) { return dw((qw(eax) * edx) >> by(a)); } \ + \ + static inline int32_t dmulscale##a(int32_t eax, int32_t edx, int32_t esi, int32_t edi) \ + { \ + return dw(((qw(eax) * edx) + (qw(esi) * edi)) >> by(a)); \ + } EDUKE32_GENERATE_PRAGMAS EDUKE32_SCALER_PRAGMA(32) #undef EDUKE32_SCALER_PRAGMA -static inline void swapchar(void* a, void* b) { char t = *((char*) b); *((char*) b) = *((char*) a); *((char*) a) = t; } -static inline void swapchar2(void* a, void* b, int32_t s) { swapchar(a, b); swapchar((char*) a+1, (char*) b+s); } -static inline void swapshort(void* a, void* b) { int16_t t = *((int16_t*) b); *((int16_t*) b) = *((int16_t*) a); *((int16_t*) a) = t; } -static inline void swaplong(void* a, void* b) { int32_t t = *((int32_t*) b); *((int32_t*) b) = *((int32_t*) a); *((int32_t*) a) = t; } -static inline void swapfloat(void* a, void* b) { float t = *((float*) b); *((float*) b) = *((float*) a); *((float*) a) = t; } -static inline void swap64bit(void* a, void* b) { int64_t t = *((int64_t*) b); *((int64_t*) b) = *((int64_t*) a); *((int64_t*) a) = t; } +static inline void swapchar(void *a, void *b) +{ + char t = *((char *)b); + *((char *)b) = *((char *)a); + *((char *)a) = t; +} +static inline void swapchar2(void *a, void *b, int32_t s) +{ + swapchar(a, b); + swapchar((char *)a + 1, (char *)b + s); +} +static inline void swapshort(void *a, void *b) +{ + int16_t t = *((int16_t *)b); + *((int16_t *)b) = *((int16_t *)a); + *((int16_t *)a) = t; +} +static inline void swaplong(void *a, void *b) +{ + int32_t t = *((int32_t *)b); + *((int32_t *)b) = *((int32_t *)a); + *((int32_t *)a) = t; +} +static inline void swapfloat(void *a, void *b) +{ + float t = *((float *)b); + *((float *)b) = *((float *)a); + *((float *)a) = t; +} +static inline void swap64bit(void *a, void *b) +{ + int64_t t = *((int64_t *)b); + *((int64_t *)b) = *((int64_t *)a); + *((int64_t *)a) = t; +} -static inline char readpixel(void* s) { return (*((char*) (s))); } -static inline void drawpixel(void* s, char a) { *((char*) (s)) = a; } +static inline char readpixel(void *s) { return (*((char *)(s))); } +static inline void drawpixel(void *s, char a) { *((char *)(s)) = a; } -static inline int32_t klabs(int32_t a) { const uint32_t m = a >> (sizeof(int) * CHAR_BIT - 1); return (a ^ m) - m; } -static inline int32_t ksgn(int32_t a) { return (a>0)-(a<0); } +static inline int32_t klabs(int32_t a) +{ + const uint32_t m = a >> (sizeof(int32_t) * CHAR_BIT - 1); + return (a ^ m) - m; +} +static inline int32_t ksgn(int32_t a) { return (a > 0) - (a < 0); } static inline int32_t mulscale(int32_t eax, int32_t edx, int32_t ecx) { return dw((qw(eax) * qw(edx)) >> by(ecx)); } -static inline int32_t dmulscale(int32_t eax, int32_t edx, int32_t esi, int32_t edi, int32_t ecx) { return dw(((qw(eax) * qw(edx)) + (qw(esi) * qw(edi))) >> by(ecx)); } +static inline int32_t dmulscale(int32_t eax, int32_t edx, int32_t esi, int32_t edi, int32_t ecx) +{ + return dw(((qw(eax) * qw(edx)) + (qw(esi) * qw(edi))) >> by(ecx)); +} void qinterpolatedown16(intptr_t bufptr, int32_t num, int32_t val, int32_t add); void qinterpolatedown16short(intptr_t bufptr, int32_t num, int32_t val, int32_t add); -void clearbuf(void* d, int32_t c, int32_t a); -void copybuf(const void* s, void* d, int32_t c); -void swapbuf4(void* a, void* b, int32_t c); +void clearbuf(void *d, int32_t c, int32_t a); +void copybuf(const void *s, void *d, int32_t c); +void swapbuf4(void *a, void *b, int32_t c); void clearbufbyte(void *D, int32_t c, int32_t a); void copybufbyte(const void *S, void *D, int32_t c); @@ -46,7 +83,8 @@ void copybufreverse(const void *S, void *D, int32_t c); static inline int32_t krecipasm(int32_t i) { // Ken did this - float f = (float) i; i = *(int32_t *) &f; - return((reciptable[(i>>12)&2047]>>(((i-0x3f800000)>>23)&31))^(i>>31)); + float f = (float)i; + i = *(int32_t *)&f; + return ((reciptable[(i >> 12) & 2047] >> (((i - 0x3f800000) >> 23) & 31)) ^ (i >> 31)); } #endif