--- nono/m88xx0/m88100acc.h 2026/04/29 17:04:34 1.1.1.1 +++ nono/m88xx0/m88100acc.h 2026/04/29 17:05:47 1.1.1.4 @@ -19,21 +19,25 @@ #define m88100opf_O5(x) m88100opf_S2(x) #define m88100opf_IMM16(x) ((x) & 0x0000ffffU) #define m88100opf_VEC9(x) ((x) & 0x000001ffU) +// FP フィールド +#define m88100opf_FP_T1(x) (((x) >> 9) & 3) +#define m88100opf_FP_T2(x) (((x) >> 7) & 3) +#define m88100opf_FP_TD(x) (((x) >> 5) & 3) // cmp のやつ static inline uint32 acc_cmp(uint32 a, uint32 b) { uint32 rv = 0; - if (a >= b) rv |= (1 << 11); - if (a < b) rv |= (1 << 10); - if (a <= b) rv |= (1 << 9); - if (a > b) rv |= (1 << 8); - if ((int32)a >= (int32)b) rv |= (1 << 7); - if ((int32)a < (int32)b) rv |= (1 << 6); - if ((int32)a <= (int32)b) rv |= (1 << 5); - if ((int32)a > (int32)b) rv |= (1 << 4); - if ((int32)a != (int32)b) rv |= (1 << 3); - if ((int32)a == (int32)b) rv |= (1 << 2); + if (a >= b) rv |= (1U << 11); + if (a < b) rv |= (1U << 10); + if (a <= b) rv |= (1U << 9); + if (a > b) rv |= (1U << 8); + if ((int32)a >= (int32)b) rv |= (1U << 7); + if ((int32)a < (int32)b) rv |= (1U << 6); + if ((int32)a <= (int32)b) rv |= (1U << 5); + if ((int32)a > (int32)b) rv |= (1U << 4); + if ((int32)a != (int32)b) rv |= (1U << 3); + if ((int32)a == (int32)b) rv |= (1U << 2); return rv; }