Tensix backend doesn't lower string literals yet. E110 refusal fires on any device-side "..." until this lands.
Two paths to do, in increasing pain order:
Metalium (--tensix): emit each byte-init global as static const char .strN[len] = { ... }; at file scope in the generated compute C++, lower BIR_GLOBAL_REF to a reference. Should be a Sunday-afternoon job.
Native RV32IM (--rv-elf): same shape as AMD #93, the bytes go into the ELF read-only segment and BIR_GLOBAL_REF becomes a lui+addi of the symbol's PC-relative address. More involved.
bir_global_is_bytes(M, gi) tells you which globals to materialise; bytes are at M->strings[c->d.bytes.off].
Tensix backend doesn't lower string literals yet. E110 refusal fires on any device-side
"..."until this lands.Two paths to do, in increasing pain order:
Metalium (
--tensix): emit each byte-init global asstatic const char .strN[len] = { ... };at file scope in the generated compute C++, lowerBIR_GLOBAL_REFto a reference. Should be a Sunday-afternoon job.Native RV32IM (
--rv-elf): same shape as AMD #93, the bytes go into the ELF read-only segment andBIR_GLOBAL_REFbecomes alui+addiof the symbol's PC-relative address. More involved.bir_global_is_bytes(M, gi)tells you which globals to materialise; bytes are atM->strings[c->d.bytes.off].