Utils

em.bench.coremark/Utils.em
import em from '@$$emscript'
export const $U = em.$declare('MODULE')

export const NUM_SEEDS = 5

export enum Kind {
    FINAL, LIST, MATRIX, STATE, ZZZ_
}

export type seed_t = em.u16
export type sum_t = em.u16

var crc_tab = $table<sum_t>('rw')
const seed_tab = $table<seed_t>('ro')

export namespace em$meta {

    export function em$init() {
        for (let i = Kind.FINAL; i < Kind.ZZZ_; i++) crc_tab.$add(0)
        for (let i = 0; i < NUM_SEEDS; i++) seed_tab.$add(0)
    }

    export function bindSeed(idx: u8, val: seed_t) {
        seed_tab[idx - 1] = val
    }
}

export function bindCrc(kind: Kind, crc: sum_t) {
    if (crc_tab[kind] == 0) crc_tab[kind] = crc
}

export function getCrc(kind: Kind): sum_t {
    return crc_tab[kind]
}

export function getSeed(idx: u8): seed_t {
    let seed: volatile_t<seed_t> = seed_tab[idx - 1]
    return seed
}

export function setCrc(kind: Kind, crc: sum_t) {
    crc_tab[kind] = crc
}