2017-12-03 23:04:33 +01:00
|
|
|
let b: bool;
|
|
|
|
|
|
|
|
let i: i32;
|
|
|
|
|
|
|
|
clz<i32>(1);
|
|
|
|
ctz<i32>(1);
|
|
|
|
popcnt<i32>(1);
|
|
|
|
rotl<i32>(1, 1);
|
|
|
|
rotr<i32>(1, 1);
|
|
|
|
|
|
|
|
i = clz<i32>(1);
|
|
|
|
i = ctz<i32>(1);
|
|
|
|
i = popcnt<i32>(1);
|
|
|
|
i = rotl<i32>(1, 1);
|
|
|
|
i = rotr<i32>(1, 1);
|
|
|
|
|
|
|
|
let I: i64;
|
|
|
|
|
|
|
|
clz<i64>(1);
|
|
|
|
ctz<i64>(1);
|
|
|
|
popcnt<i64>(1);
|
|
|
|
rotl<i64>(1, 1);
|
|
|
|
rotr<i64>(1, 1);
|
|
|
|
|
|
|
|
I = clz<i64>(1);
|
|
|
|
I = ctz<i64>(1);
|
|
|
|
I = popcnt<i64>(1);
|
|
|
|
I = rotl<i64>(1, 1);
|
|
|
|
I = rotr<i64>(1, 1);
|
|
|
|
|
|
|
|
let f: f32;
|
|
|
|
|
|
|
|
<f32>NaN;
|
|
|
|
<f32>Infinity;
|
|
|
|
abs<f32>(1.25);
|
|
|
|
ceil<f32>(1.25);
|
|
|
|
copysign<f32>(1.25, 2.5);
|
|
|
|
floor<f32>(1.25);
|
|
|
|
max<f32>(1.25, 2.5);
|
|
|
|
min<f32>(1.25, 2.5);
|
|
|
|
nearest<f32>(1.25);
|
|
|
|
// reinterpret
|
|
|
|
sqrt<f32>(1.25);
|
|
|
|
trunc<f32>(1.25);
|
|
|
|
isNaN<f32>(1.25);
|
|
|
|
isFinite<f32>(1.25);
|
|
|
|
|
|
|
|
f = NaN;
|
|
|
|
f = Infinity;
|
|
|
|
f = abs<f32>(1.25);
|
|
|
|
f = ceil<f32>(1.25);
|
|
|
|
f = copysign<f32>(1.25, 2.5);
|
|
|
|
f = floor<f32>(1.25);
|
|
|
|
f = max<f32>(1.25, 2.5);
|
|
|
|
f = min<f32>(1.25, 2.5);
|
|
|
|
f = nearest<f32>(1.25);
|
|
|
|
// reinterpret
|
|
|
|
f = sqrt<f32>(1.25);
|
|
|
|
f = trunc<f32>(1.25);
|
|
|
|
b = isNaN<f32>(1.25);
|
|
|
|
b = isFinite<f32>(1.25);
|
|
|
|
|
|
|
|
let F: f64;
|
|
|
|
|
|
|
|
<f64>NaN;
|
|
|
|
<f64>Infinity;
|
|
|
|
NaN;
|
|
|
|
Infinity;
|
|
|
|
abs<f64>(1.25);
|
|
|
|
ceil<f64>(1.25);
|
|
|
|
copysign<f64>(1.25, 2.5);
|
|
|
|
floor<f64>(1.25);
|
|
|
|
max<f64>(1.25, 2.5);
|
|
|
|
min<f64>(1.25, 2.5);
|
|
|
|
nearest<f64>(1.25);
|
|
|
|
// reinterpret
|
|
|
|
sqrt<f64>(1.25);
|
|
|
|
trunc<f64>(1.25);
|
|
|
|
isNaN<f64>(1.25);
|
|
|
|
isFinite<f64>(1.25);
|
|
|
|
|
|
|
|
F = NaN;
|
|
|
|
F = Infinity;
|
|
|
|
F = abs<f64>(1.25);
|
|
|
|
F = ceil<f64>(1.25);
|
|
|
|
F = copysign<f64>(1.25, 2.5);
|
|
|
|
F = floor<f64>(1.25);
|
|
|
|
F = max<f64>(1.25, 2.5);
|
|
|
|
F = min<f64>(1.25, 2.5);
|
|
|
|
F = nearest<f64>(1.25);
|
|
|
|
// reinterpret
|
|
|
|
F = sqrt<f64>(1.25);
|
|
|
|
F = trunc<f64>(1.25);
|
|
|
|
b = isNaN<f64>(1.25);
|
|
|
|
b = isFinite<f64>(1.25);
|
|
|
|
|
|
|
|
let s: usize;
|
|
|
|
|
|
|
|
current_memory();
|
|
|
|
grow_memory(1);
|
|
|
|
|
|
|
|
s = current_memory();
|
|
|
|
s = grow_memory(1);
|
|
|
|
if (0) unreachable();
|
|
|
|
|
|
|
|
assert(true);
|
2017-12-04 02:00:48 +01:00
|
|
|
|
|
|
|
sizeof<u8>();
|
|
|
|
sizeof<u16>();
|
|
|
|
sizeof<u32>();
|
|
|
|
sizeof<u64>();
|
|
|
|
sizeof<usize>();
|
|
|
|
sizeof<bool>();
|
|
|
|
sizeof<i8>();
|
|
|
|
sizeof<i16>();
|
|
|
|
sizeof<i32>();
|
|
|
|
sizeof<i64>();
|
|
|
|
sizeof<isize>();
|
|
|
|
sizeof<f32>();
|
|
|
|
sizeof<f64>();
|
|
|
|
|
2017-12-04 19:26:50 +01:00
|
|
|
i = load<i32>(8);
|
|
|
|
store<i32>(8, i);
|
|
|
|
I = load<i64>(8);
|
|
|
|
store<i64>(8, I);
|
|
|
|
f = load<f32>(8);
|
|
|
|
store<f32>(8, f);
|
|
|
|
F = load<f64>(8);
|
|
|
|
store<f64>(8, F);
|
2017-12-04 14:49:24 +01:00
|
|
|
|
|
|
|
if (NaN == NaN)
|
|
|
|
unreachable();
|
|
|
|
if (!isNaN<f32>(NaN))
|
|
|
|
unreachable();
|
|
|
|
if (isFinite<f32>(NaN))
|
|
|
|
unreachable();
|
|
|
|
if (isFinite<f32>(Infinity))
|
|
|
|
unreachable();
|
|
|
|
if (!isFinite<f64>(0))
|
|
|
|
unreachable();
|