Defines |
| #define | I4ASHR(v1, v2) IOR(ISHFT(IAND('80000000'X, v1), -31)*ISHFT(-1, 32-v2), ISHFT(v1, -v2)) |
| #define | I8ASHR(v1, v2) IOR(ISHFT(IAND('8000000000000000'X, v1), -63_8)*ISHFT(-1, 64-v2), ISHFT(v1, -v2)) |
| #define | U4ASHR(v1, v2) I4ASHR(v1, v2) |
| #define | U8ASHR(v1, v2) I8ASHR(v1, v2) |
| #define | _I4SIGN(y) (2 * I4ASHR(y, 31) + 1) |
| #define | _I4MASK(x, y, v) IAND(I4ASHR(IEOR(x,y), 31), v) |
| #define | _I8SIGN(y) (2_8 * I8ASHR(y, 63) + 1_8) |
| #define | _I8MASK(x, y, v) IAND(I8ASHR(IEOR(x,y), 63), v) |
| #define | INTRN_I4DIVFLOOR(v1, v2) ((v1) + _I4MASK(v1, v2, _I4SIGN(v2) - (v2))) / (v2) |
| #define | INTRN_I8DIVFLOOR(v1, v2) ((v1) + _I8MASK(v1, v2, _I8SIGN(v2) - (v2))) / (v2) |
| #define | INTRN_U4DIVFLOOR(v1, v2) I4DIVFLOOR(v1, v2) |
| #define | INTRN_U8DIVFLOOR(v1, v2) I8DIVFLOOR(v1, v2) |
| #define | INTRN_I4DIVCEIL(v1, v2) -I4DIVFLOOR(-(v1), v2) |
| #define | INTRN_I8DIVCEIL(v1, v2) -I8DIVFLOOR(-(v1), v2) |
| #define | INTRN_U4DIVCEIL(v1, v2) ((v1)+(v2)-1)/(v2) |
| #define | INTRN_U8DIVCEIL(v1, v2) ((v1)+(v2)-1)/(v2) |
| #define | INTRN_I4MODFLOOR(v1, v2) (v1 - v2*I4DIVFLOOR(v1, v2)) |
| #define | INTRN_I8MODFLOOR(v1, v2) (v1 - v2*I8DIVFLOOR(v1, v2)) |
| #define | INTRN_U4MODFLOOR(v1, v2) (v1 - v2*(v1/v2)) |
| #define | INTRN_U8MODFLOOR(v1, v2) (v1 - v2*(v1/v2)) |
| #define | INTRN_I4MODCEIL(v1, v2) (v1 - v2*I4DIVCEIL(v1, v2)) |
| #define | INTRN_I8MODCEIL(v1, v2) (v1 - v2*I8DIVCEIL(v1, v2)) |
| #define | INTRN_U4MODCEIL(v1, v2) (v1 - v2*U4DIVCEIL(v1, v2)) |
| #define | INTRN_U8MODCEIL(v1, v2) (v1 - v2*U8DIVCEIL(v1, v2)) |
| #define | CEIL(v) '?????TODO(CEIL)???^#define FLOOR(v) '?????TODO(FLOOR)???^ |