diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-26 19:47:30 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-26 19:47:30 -0400 |
commit | 5d268f0acf7ecc320423b0c9bff18e125015b4c3 (patch) | |
tree | 52ce08a521e03a38a2474c029d3222e4dfe45328 /include/gba/macro.h | |
parent | 4fedd5183be7de5d5e0fa59c269b28c49d88ef88 (diff) |
Make Ruby compile with gcc-8
Diffstat (limited to 'include/gba/macro.h')
-rw-r--r-- | include/gba/macro.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/include/gba/macro.h b/include/gba/macro.h index ab42c9da3..109e4e003 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -220,4 +220,29 @@ #define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16) #define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32) +#if MODERN +#define FLOAT_UNS(x, bit) ({ \ + s##bit sx = x; \ + float fx = (float)sx; \ + if (sx < 0) fx += (1 << (bit - 1)) * 2.0f; \ + fx; \ +}) +#define DOUBLE_UNS(x, bit) ({ \ + s##bit sx = x; \ + double dx = (double)sx; \ + if (sx < 0) dx += (1 << (bit - 1)) * 2.0; \ + dx; \ +}) +#else +#define FLOAT_UNS(x, bit) ((float)(x)) +#define DOUBLE_UNS(x, bit) ((double)(x)) +#endif //MODERN + +#define FLOAT_U8(x) FLOAT_UNS(x, 8) +#define FLOAT_U16(x) FLOAT_UNS(x, 16) +#define FLOAT_U32(x) FLOAT_UNS(x, 32) +#define DOUBLE_U8(x) DOUBLE_UNS(x, 8) +#define DOUBLE_U16(x) DOUBLE_UNS(x, 16) +#define DOUBLE_U32(x) DOUBLE_UNS(x, 32) + #endif // GUARD_GBA_MACRO_H |