From 4cb98b7beb83278e33a5577b9e83239eca403187 Mon Sep 17 00:00:00 2001 From: eunhhu Date: Tue, 6 Oct 2026 11:09:18 +0100 Subject: Batch: a count's loop whose block begins if slot >= L.count { break } (L only grown in it) batches to L's count as each batch opens (PLAN_GUARD; fewer than LEAST rounds left there: the executor's, then batches again); a walk in a batch's block (its slice per lane, no where's range) runs each lane's items, its work counted as each opens: together round by round (BREAK as a nested loop's), or spread into lanes in the rounds' order a chunk of up to 1024 at a time when its items' rounds may run apart (PLAN_SPREAD: no break, the locals it sets reductions or its items' own: an outer lane's value read by each item's outer lane, a reduction added into its outer lane's in the items' order, an own local left as the last item that set it); rows in four bytes read and checked by loops of their own. A frontier walk of the suite's graph (each node's edges' to summed) PURE_JIT=0 55.2 to 10.4 ms (the compiled code 6.24). module_tier makes guarded loops with a walk in each (seeds 1, 2, 3, 5, 23 alike: 8,819 spread and 7,651 together in seed 23's); FRONT_SOURCE --- core/module-run.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'core/module-run.h') diff --git a/core/module-run.h b/core/module-run.h index 8945115..46494e4 100644 --- a/core/module-run.h +++ b/core/module-run.h @@ -55,8 +55,10 @@ static inline bool number_op(uint8_t op, double a, double b, double *out) { } /* An item's or a key's op->plan: its cell a text; a FIND joined to the ITEM_GET after it; a FIND whose row an ITEM_SET - * takes; a LOOP whose block a batch may run (module-batch.c); a LOCAL_STORE ending x = e of a recurrence in such a block. */ -enum { PLAN_TEXT = 1, PLAN_JOINED = 2, PLAN_ROW = 4, PLAN_BATCH = 8, PLAN_RECUR = 16 }; + * takes; a LOOP whose block a batch may run (module-batch.c); a LOCAL_STORE ending x = e of a recurrence in such a block; + * such a LOOP whose block begins if slot >= L.count { break } (L only grows in it: a batch runs to L's count as it opens); + * an EACH in a batch's block whose items' rounds may run apart (spread: no break, its locals its items' own or reductions). */ +enum { PLAN_TEXT = 1, PLAN_JOINED = 2, PLAN_ROW = 4, PLAN_BATCH = 8, PLAN_RECUR = 16, PLAN_GUARD = 32, PLAN_SPREAD = 64 }; /* An item instruction's argument: its list and its field. */ static inline uint32_t list_of(uint32_t arg) { return arg & 0xFFFF; } -- cgit v1.2.3