From dfda5c86b24284aca09da6055ef721ff7a18cd7b Mon Sep 17 00:00:00 2001 From: lemon Date: Sun, 16 Nov 2025 09:19:14 +0100 Subject: factor type stuff into type.h --- ir/ir.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'ir/ir.h') diff --git a/ir/ir.h b/ir/ir.h index f453c51..613ef2a 100644 --- a/ir/ir.h +++ b/ir/ir.h @@ -1,4 +1,5 @@ #include "../common.h" +#include "../type.h" enum irclass { KXXX, @@ -137,6 +138,19 @@ enum { USERJUMP = 0xFFFF }; struct use { struct block *blk; ushort u; }; enum { MAXREGS = 64 }; +/** register set **/ +typedef uvlong regset; +#define rsset(pS, r) (*(pS) |= 1ull << (r)) +#define rsclr(pS, r) (*(pS) &=~ (1ull << (r))) +#define rstest(S, r) ((S) >> (r) & 1) +static inline bool +rsiter(int *i, uvlong rs) +{ + uvlong mask = -(1ull << *i); + if ((rs & mask) == 0) return 0; + *i = lowestsetbit(rs & mask); + return 1; +} struct function { struct arena **arena; -- cgit v1.2.3