aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/rust/compile/inline_asm_parse_operand.rs
blob: c7bc152c7ced2b7aa10bec37fbd93644535533fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#![feature(rustc_attrs)]

#[rustc_builtin_macro]
macro_rules! asm {
    () => {};
}

fn main() -> i32 {
    unsafe {
        asm!(
            "add {}, 1",
            in(reg) 0
        );
    }

    // This adds two numbers num1 and num2 into num1, giving us 30
    // {0} stands for num1
    // {1} stands for num2
    let mut _num1: i32 = 10;
    let _num2: i32 = 20;
    unsafe {
        asm!(
            "add {}, {}",
            in(reg) _num2,
            out(reg) _num1,
        );
    }

    let mut _output_testing: u32 = 0;
    unsafe {
        asm!(
            "add {}, 1",
            in(reg) _num1,
            //out(reg) _,
        );
    }

    0
}