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