Esempio n. 1
0
def invert_double_cell(expr):
    """forth wants low | hi, but wasm is little endian (i.e. the
    reverse). Cells are already stored in little-endian, so we can get
    a proper 64 bit number by rotating by 32 bits.

    """
    return lib.BinaryenBinary(module, lib.BinaryenRotRInt64(), expr, lib.BinaryenConst(module, lib.BinaryenLiteralInt64(32)))
Esempio n. 2
0
def div_64_32_32(expr1, expr2):
    return s_64_to_32(
        lib.BinaryenBinary(module, lib.BinaryenDivSInt64(), expr1,
                           s_32_to_64(expr2)))
Esempio n. 3
0
def rem(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenRemSInt32(), expr1, expr2)
Esempio n. 4
0
def div(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenDivSInt32(), expr1, expr2)
Esempio n. 5
0
def umul_32_32_64(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenMulInt64(),
                              u_32_to_64(expr1), u_32_to_64(expr2))
Esempio n. 6
0
def eq(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenEqInt32(), expr1, expr2)
Esempio n. 7
0
def bit_and(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenAndInt32(), expr1, expr2)
Esempio n. 8
0
def urem_64_32_32(expr1, expr2):
    return u_64_to_32(
        lib.BinaryenBinary(module, lib.BinaryenRemUInt64(), expr1,
                           u_32_to_64(expr2)))
Esempio n. 9
0
def add_64(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenAddInt64(), expr1, expr2)
Esempio n. 10
0
def add(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenAddInt32(), expr1, expr2)
Esempio n. 11
0
def l_s(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenLtSInt32(), expr1, expr2)
Esempio n. 12
0
def le_u(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenLeUInt32(), expr1, expr2)
Esempio n. 13
0
def ge_s(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenGeSInt32(), expr1, expr2)
Esempio n. 14
0
def ne(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenNeInt32(), expr1, expr2)
Esempio n. 15
0
def udiv_64_32_64(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenDivUInt64(), expr1,
                              u_32_to_64(expr2))
Esempio n. 16
0
def rem_64_32_32(expr1, expr2):
    return s_64_to_32(
        lib.BinaryenBinary(module, lib.BinaryenRemSInt64(), expr1,
                           s_32_to_64(expr2)))
Esempio n. 17
0
def sub(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenSubInt32(), expr1, expr2)
Esempio n. 18
0
def l_rs(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenShrUInt32(), expr1, expr2)
Esempio n. 19
0
def mul(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenMulInt32(), expr1, expr2)
Esempio n. 20
0
def bit_xor(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenXorInt32(), expr1, expr2)
Esempio n. 21
0
def mul_64(expr1, expr2):
    return lib.BinaryenBinary(module, lib.BinaryenMulInt64(), expr1, expr2)