]> git.lizzy.rs Git - rust.git/blob - src/test/ui/asm/x86_64/const.rs
Merge commit 'dc5423ad448877e33cca28db2f1445c9c4473c75' into clippyup
[rust.git] / src / test / ui / asm / x86_64 / const.rs
1 // only-x86_64
2 // run-pass
3 // revisions: mirunsafeck thirunsafeck
4 // [thirunsafeck]compile-flags: -Z thir-unsafeck
5
6 #![feature(asm_const)]
7
8 use std::arch::{asm, global_asm};
9
10 fn const_generic<const X: usize>() -> usize {
11     unsafe {
12         let a: usize;
13         asm!("mov {}, {}", out(reg) a, const X);
14         a
15     }
16 }
17
18 const fn constfn(x: usize) -> usize {
19     x
20 }
21
22 fn main() {
23     unsafe {
24         let a: usize;
25         asm!("mov {}, {}", out(reg) a, const 5);
26         assert_eq!(a, 5);
27
28         let b: usize;
29         asm!("mov {}, {}", out(reg) b, const constfn(5));
30         assert_eq!(b, 5);
31
32         let c: usize;
33         asm!("mov {}, {}", out(reg) c, const constfn(5) + constfn(5));
34         assert_eq!(c, 10);
35     }
36
37     let d = const_generic::<5>();
38     assert_eq!(d, 5);
39 }
40
41 global_asm!("mov eax, {}", const 5);
42 global_asm!("mov eax, {}", const constfn(5));
43 global_asm!("mov eax, {}", const constfn(5) + constfn(5));