// ASM stream — indirect-memory (`=*m`) place output. The place address is passed // to the asm as a pointer and the asm writes THROUGH it (no return slot): here // `str x9, %[out]` stores 42 into `x`'s storage directly. Distinct from a // write-through `=` output (which returns a value that is then stored). Mixes a // value output and an input below to exercise operand ordering. aarch64-pinned; // ir-only elsewhere (the `.ir` locks the `=*m` constraint + `elementtype` attr). poke :: () -> i64 { x : i64 = 0; asm volatile { #string ASM mov x9, #42 str x9, %[out] ASM, [out] "=*m" -> @x, clobbers(.x9), }; return x; // 42 — written through the pointer } main :: () -> i64 { return poke(); }