import * as i32 from "../../runtime/values/i32";
import * as i64 from "../../runtime/values/i64";
import * as f32 from "../../runtime/values/f32";
import * as f64 from "../../runtime/values/f64"; // https://webassembly.github.io/spec/core/exec/instructions.html#exec-binop
function unop(_ref, operation, createValue) {
var value = _ref.value;
switch (operation) {
case "abs":
return createValue(value.abs());
case "neg":
return createValue(value.neg());
case "clz":
return createValue(value.clz());
case "ctz":
return createValue(value.ctz());
case "popcnt":
return createValue(value.popcnt());
case "eqz":
return i32.createValue(value.eqz());
case "reinterpret/f32":
return i32.createValue(value.reinterpret());
case "reinterpret/f64":
return i64.createValue(value.reinterpret());
}
throw new Error("Unsupported unop: " + operation);
}
export function unopi32(c, operation) {
return unop(c, operation, i32.createValue);
}
export function unopi64(c, operation) {
return unop(c, operation, i64.createValue);
}
export function unopf32(c, operation) {
return unop(c, operation, f32.createValue);
}
export function unopf64(c, operation) {
return unop(c, operation, f64.createValue);
} |