HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /proc/self/root/usr/share/nodejs/webassemblyjs/lib/interpreter/kernel/instruction/
Upload File :
Current File : //proc/self/root/usr/share/nodejs/webassemblyjs/lib/interpreter/kernel/instruction/binop.js
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.binopf32 = binopf32;
exports.binopf64 = binopf64;
exports.binopi32 = binopi32;
exports.binopi64 = binopi64;

var i32 = require("../../runtime/values/i32");

var i64 = require("../../runtime/values/i64");

var f32 = require("../../runtime/values/f32");

var f64 = require("../../runtime/values/f64");

function binop(_ref, _ref2, sign, createValue) {
  var value1 = _ref.value;
  var value2 = _ref2.value;

  switch (sign) {
    case "add":
      return createValue(value1.add(value2));

    case "sub":
      return createValue(value1.sub(value2));

    case "mul":
      return createValue(value1.mul(value2));

    case "div_s":
      return createValue(value1.div_s(value2));

    case "div_u":
      return createValue(value1.div_u(value2));

    case "rem_s":
      return createValue(value1.rem_s(value2));

    case "rem_u":
      return createValue(value1.rem_u(value2));

    case "shl":
      return createValue(value1.shl(value2));

    case "shr_s":
      return createValue(value1.shr_s(value2));

    case "shr_u":
      return createValue(value1.shr_u(value2));

    case "rotl":
      return createValue(value1.rotl(value2));

    case "rotr":
      return createValue(value1.rotr(value2));

    case "div":
      return createValue(value1.div(value2));

    case "and":
      return createValue(value1.and(value2));

    case "or":
      return createValue(value1.or(value2));

    case "xor":
      return createValue(value1.xor(value2));

    case "min":
      return createValue(value1.min(value2));

    case "max":
      return createValue(value1.max(value2));

    case "copysign":
      return createValue(value1.copysign(value2));
  }

  throw new Error("Unsupported binop: " + sign);
}

function binopi32(value1, value2, sign) {
  return binop(value1, value2, sign, i32.createValue);
}

function binopi64(value1, value2, sign) {
  return binop(value1, value2, sign, i64.createValue);
}

function binopf32(value1, value2, sign) {
  return binop(value1, value2, sign, f32.createValue);
}

function binopf64(value1, value2, sign) {
  return binop(value1, value2, sign, f64.createValue);
}