An array processing DSL for generating straight-line SIMD instructions to embed in larger applications
- Vector language with binary/unary/postfix ops
- "Complete" language that is guaranteed to terminate
- No functions or control flow
- Generate object file and C header for embedding
- Runtime dispatch for choosing best available SIMD instructions
- RISC-V and x86-64 code generation
- * / %
& | ^ ~
<< >>
'
comment ::= ? #. $ ?
literal ::= ? [0-9_] ? | ? 0x[0-9A-z_] ? | ? 0b[0-1_] ?
type ::= ? [iuf]\d ?
prefix ::= ( ' ' | '-' | "'" | '~' ) <expr>
infix ::= <expr> ( ' ' | '-' | '*' | '/' | '%' | '&' | '|' | '^' ) ( <expr> | <literal> )
expr ::= <prefix> | <infix> | ( <type> '[' <literal> ']' )