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; }