// ASM stream Phase 2 — `-> @place` write-through output. An asm result can be // STORED through a place (a local / struct field) instead of returned: the // place output does NOT join the result tuple. Here one value output is // returned (into `main_val`) while a second is written through `@other`. The // two are combined to 42. Read-write (`+`) and indirect (`*`) place outputs are // not yet implemented (rejected at lowering). aarch64-pinned; ir-only elsewhere. compute :: () -> i64 { other : i64 = 0; main_val := asm volatile { #string ASM mov %[m], #5 mov %[o], #37 ASM, [m] "=r" -> i64, // value output → returned [o] "=r" -> @other, // place output → stored through @other }; return main_val + other; // 5 + 37 = 42 } main :: () -> i64 { return compute(); }