]>
git.proxmox.com Git - rustc.git/blob - src/test/assembly/asm/wasm-types.rs
2 // assembly-output: emit-asm
3 // compile-flags: --target wasm32-unknown-unknown
4 // compile-flags: --crate-type cdylib
5 // needs-llvm-components: webassembly
7 #![feature(no_core, lang_items, rustc_attrs)]
10 #[rustc_builtin_macro]
14 #[rustc_builtin_macro]
36 static extern_static
: u8;
39 // CHECK-LABEL: sym_fn:
41 // CHECK: call extern_func
44 pub unsafe fn sym_fn() {
45 asm
!("call {}", sym extern_func
);
48 // CHECK-LABEL: sym_static
50 // CHECK: i32.const 42
51 // CHECK: i32.store extern_static
54 pub unsafe fn sym_static() {
58 ", sym extern_static
);
62 ($func
:ident $ty
:ident $instr
:literal
) => {
64 pub unsafe fn $
func(x
: $ty
) -> $ty
{
66 asm
!(concat
!("local.get {}\n", $instr
, "\nlocal.set {}"), in(local
) x
, out(local
) y
);
72 // CHECK-LABEL: i8_i32:
74 // CHECK: local.get {{[0-9]}}
76 // CHECK: local.set {{[0-9]}}
78 check
!(i8_i32
i8 "i32.clz");
80 // CHECK-LABEL: i16_i32:
82 // CHECK: local.get {{[0-9]}}
84 // CHECK: local.set {{[0-9]}}
86 check
!(i16_i32
i16 "i32.clz");
88 // CHECK-LABEL: i32_i32:
90 // CHECK: local.get {{[0-9]}}
92 // CHECK: local.set {{[0-9]}}
94 check
!(i32_i32
i32 "i32.clz");
96 // CHECK-LABEL: i8_i64
98 // CHECK: local.get {{[0-9]}}
100 // CHECK: local.set {{[0-9]}}
102 check
!(i8_i64
i8 "i64.clz");
104 // CHECK-LABEL: i16_i64
106 // CHECK: local.get {{[0-9]}}
108 // CHECK: local.set {{[0-9]}}
110 check
!(i16_i64
i16 "i64.clz");
112 // CHECK-LABEL: i32_i64
114 // CHECK: local.get {{[0-9]}}
116 // CHECK: local.set {{[0-9]}}
118 check
!(i32_i64
i32 "i64.clz");
120 // CHECK-LABEL: i64_i64
122 // CHECK: local.get {{[0-9]}}
124 // CHECK: local.set {{[0-9]}}
126 check
!(i64_i64
i64 "i64.clz");
128 // CHECK-LABEL: f32_f32
130 // CHECK: local.get {{[0-9]}}
132 // CHECK: local.set {{[0-9]}}
134 check
!(f32_f32
f32 "f32.abs");
136 // CHECK-LABEL: f64_f64
138 // CHECK: local.get {{[0-9]}}
140 // CHECK: local.set {{[0-9]}}
142 check
!(f64_f64
f64 "f64.abs");
144 // CHECK-LABEL: i32_ptr
146 // CHECK: local.get {{[0-9]}}
148 // CHECK: local.set {{[0-9]}}
150 check
!(i32_ptr ptr
"i32.eqz");