|
@ -35,6 +35,17 @@ |
|
|
|
|
|
|
|
|
////////////////////////////////////////
|
|
|
////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#define RELEASE(NEXT_CODE, FILTER) \ |
|
|
|
|
|
cache_t next_case = { \ |
|
|
|
|
|
.code = NEXT_CODE, \ |
|
|
|
|
|
.mask = F_1x1 << next_addr, \ |
|
|
|
|
|
.filter = FILTER, \ |
|
|
|
|
|
.addr = next_addr \ |
|
|
|
|
|
}; \ |
|
|
|
|
|
cache_insert(next_case); |
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////
|
|
|
|
|
|
|
|
|
#define BFS_INIT \ |
|
|
#define BFS_INIT \ |
|
|
int next_addr; \ |
|
|
int next_addr; \ |
|
|
int current = 0; \ |
|
|
int current = 0; \ |
|
@ -49,17 +60,6 @@ int filter = cache[current++].filter; |
|
|
|
|
|
|
|
|
////////////////////////////////////////
|
|
|
////////////////////////////////////////
|
|
|
|
|
|
|
|
|
#define RELEASE(NEXT_CODE, FILTER) \ |
|
|
|
|
|
cache_t next_case = { \ |
|
|
|
|
|
.code = NEXT_CODE, \ |
|
|
|
|
|
.mask = F_1x1 << next_addr, \ |
|
|
|
|
|
.filter = FILTER, \ |
|
|
|
|
|
.addr = next_addr \ |
|
|
|
|
|
}; \ |
|
|
|
|
|
cache_insert(next_case); |
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
inline void Core::cache_insert(Core::cache_t &next_case) { // try to insert into cache
|
|
|
inline void Core::cache_insert(Core::cache_t &next_case) { // try to insert into cache
|
|
|
auto *cache_ptr = cache; |
|
|
auto *cache_ptr = cache; |
|
|
for (; cache_ptr < cache + cache_size; ++cache_ptr) { |
|
|
for (; cache_ptr < cache + cache_size; ++cache_ptr) { |
|
|