kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

20_cg_api_inline_asm_full.toy (1056B)


      1 fn __user_main(): i64 {
      2   let slot: i64 = 31;
      3 
      4   var imm: i64 = @asm<isize>(
      5     "",
      6     outputs(inout("+r", 7 as isize)),
      7     inputs(in("i", 7)),
      8     clobbers(),
      9     flags(.volatile)
     10   );
     11   var mem: i64 = slot;
     12   @asm<void>(
     13     "",
     14     outputs(),
     15     inputs(in("m", slot)),
     16     clobbers(),
     17     flags(.volatile)
     18   );
     19   var inout: i64 = @asm<isize>(
     20     "",
     21     outputs(inout("+r", 9 as isize)),
     22     inputs(),
     23     clobbers(),
     24     flags(.volatile)
     25   );
     26   let early_probe: isize = @asm<isize>(
     27     "",
     28     outputs(out("=&r", value: isize)),
     29     inputs(in("r", 8), in("r", 9)),
     30     clobbers(),
     31     flags(.volatile)
     32   );
     33   var early: i64 = 17;
     34   @asm<void>("", outputs(), inputs(in("r", early_probe)));
     35   @asm<void>(
     36     "",
     37     outputs(),
     38     inputs(),
     39     clobbers("memory"),
     40     flags(.volatile)
     41   );
     42   var memory: i64 = 6;
     43   @asm<void>(
     44     "",
     45     outputs(),
     46     inputs(),
     47     clobbers("memory"),
     48     flags(.volatile)
     49   );
     50   var clobber: i64 = 11;
     51 
     52   return imm + mem + inout + early + memory + clobber;
     53 }
     54 
     55 fn main(): i32 { return __user_main() as i32; }