Initial commit: GKERN glyph kernel

This commit is contained in:
gyt
2026-07-09 13:28:07 -04:00
commit 0807c58eae
43 changed files with 6006 additions and 0 deletions
+15
View File
@@ -0,0 +1,15 @@
#include "hal.h"
#include "../substrate/substrate_engine.h"
#include <stdio.h>
#include <string.h>
void hal_init(HAL_Context *ctx) { memset(ctx, 0, sizeof(HAL_Context)); hal_register(ctx, hal_cpu_backend()); ctx->active = ctx->backends[0]; }
int hal_register(HAL_Context *ctx, HAL_Backend *backend) { if (ctx->backend_count >= HAL_MAX_BACKENDS) return -1; ctx->backends[ctx->backend_count++] = backend; return 0; }
void hal_select_best(HAL_Context *ctx, uint32_t required_caps) { HAL_Backend *best = NULL; int best_priority = -1; for (uint32_t i = 0; i < ctx->backend_count; i++) { HAL_Backend *b = ctx->backends[i]; if ((b->capabilities & required_caps) == required_caps) { if (b->priority > best_priority) { best = b; best_priority = b->priority; } } } if (best) ctx->active = best; }
int hal_select_by_name(HAL_Context *ctx, const char *name) { for (uint32_t i = 0; i < ctx->backend_count; i++) { if (strcmp(ctx->backends[i]->name, name) == 0) { ctx->active = ctx->backends[i]; return 0; } } return -1; }
uint32_t hal_query_caps(HAL_Context *ctx) { if (ctx->active) return ctx->active->capabilities; return 0; }
uint32_t hal_query_arch(HAL_Context *ctx) { if (ctx->active) return ctx->active->arch_id; return HAL_ARCH_NATIVE; }
int hal_dispatch(HAL_Context *ctx, struct VM_s *vm, GlyphInstr *ins) { return -1; }
float hal_resonance(HAL_Context *ctx, uint32_t similarity) { if (ctx->active && ctx->active->resonance) return ctx->active->resonance(similarity); return substrate_resonance(similarity); }
float hal_stability(HAL_Context *ctx, float t) { if (ctx->active && ctx->active->stability) return ctx->active->stability(t); return substrate_stability(t); }
TraitMask hal_traits_propagate(HAL_Context *ctx, TraitMask a, TraitMask b) { if (ctx->active && ctx->active->traits_propagate) return ctx->active->traits_propagate(a, b); return substrate_traits_propagate(a, b); }
float hal_neural_energy(HAL_Context *ctx, const uint8_t *a, const uint8_t *b, size_t len) { if (ctx->active && ctx->active->neural_energy) return ctx->active->neural_energy(a, b, len); return substrate_neural_energy(a, b, len); }