i64 Instructions
i64.add
Section titled “i64.add”Add two i64 values.
Signature: (param i64 i64) (result i64)
Example:
(i64.add (i64.const 5000000000) (i64.const 3000000000))i64.sub
Section titled “i64.sub”Subtract two i64 values.
Signature: (param i64 i64) (result i64)
Example:
(i64.sub (i64.const 10) (i64.const 3))i64.mul
Section titled “i64.mul”Multiply two i64 values.
Signature: (param i64 i64) (result i64)
Example:
(i64.mul (i64.const 1000) (i64.const 1000))i64.const
Section titled “i64.const”Create a constant i64 value.
Signature: (result i64)
Example:
(i64.const 9223372036854775807) ;; Max i64(i64.const -1)i64.eqz
Section titled “i64.eqz”Check if i64 value equals zero.
Signature: (param i64) (result i32)
Example:
(i64.eqz (i64.const 0)) ;; Returns 1i64.div_s
Section titled “i64.div_s”Signed division of two i64 values. Traps if divisor is zero.
Signature: (param i64 i64) (result i64)
Example:
(i64.div_s (i64.const -10) (i64.const 3)) ;; Returns -3i64.div_u
Section titled “i64.div_u”Unsigned division of two i64 values. Traps if divisor is zero.
Signature: (param i64 i64) (result i64)
Example:
(i64.div_u (i64.const 10) (i64.const 3)) ;; Returns 3i64.rem_s
Section titled “i64.rem_s”Signed remainder of division.
Signature: (param i64 i64) (result i64)
Example:
(i64.rem_s (i64.const 10) (i64.const 3)) ;; Returns 1i64.rem_u
Section titled “i64.rem_u”Unsigned remainder of division.
Signature: (param i64 i64) (result i64)
Example:
(i64.rem_u (i64.const 10) (i64.const 3)) ;; Returns 1i64.and
Section titled “i64.and”Bitwise AND of two i64 values.
Signature: (param i64 i64) (result i64)
Example:
(i64.and (i64.const 0b1100) (i64.const 0b1010)) ;; Returns 0b1000 (8)i64.or
Section titled “i64.or”Bitwise OR of two i64 values.
Signature: (param i64 i64) (result i64)
Example:
(i64.or (i64.const 0b1100) (i64.const 0b1010)) ;; Returns 0b1110 (14)i64.xor
Section titled “i64.xor”Bitwise XOR of two i64 values.
Signature: (param i64 i64) (result i64)
Example:
(i64.xor (i64.const 0b1100) (i64.const 0b1010)) ;; Returns 0b0110 (6)i64.shl
Section titled “i64.shl”Shift left.
Signature: (param i64 i64) (result i64)
Example:
(i64.shl (i64.const 5) (i64.const 2)) ;; Returns 20 (5 << 2)i64.shr_s
Section titled “i64.shr_s”Signed shift right (arithmetic shift).
Signature: (param i64 i64) (result i64)
Example:
(i64.shr_s (i64.const -8) (i64.const 2)) ;; Returns -2 (preserves sign)i64.shr_u
Section titled “i64.shr_u”Unsigned shift right (logical shift).
Signature: (param i64 i64) (result i64)
Example:
(i64.shr_u (i64.const 20) (i64.const 2)) ;; Returns 5i64.rotl
Section titled “i64.rotl”Rotate left.
Signature: (param i64 i64) (result i64)
Example:
(i64.rotl (i64.const 0x123456789ABCDEF0) (i64.const 4))i64.rotr
Section titled “i64.rotr”Rotate right.
Signature: (param i64 i64) (result i64)
Example:
(i64.rotr (i64.const 0x123456789ABCDEF0) (i64.const 4))i64.clz
Section titled “i64.clz”Count leading zeros.
Signature: (param i64) (result i64)
Example:
(i64.clz (i64.const 0x00FF000000000000)) ;; Returns 8i64.ctz
Section titled “i64.ctz”Count trailing zeros.
Signature: (param i64) (result i64)
Example:
(i64.ctz (i64.const 0xFF00000000000000)) ;; Returns 56i64.popcnt
Section titled “i64.popcnt”Count number of 1 bits (population count).
Signature: (param i64) (result i64)
Example:
(i64.popcnt (i64.const 0b1101)) ;; Returns 3i64.eq
Section titled “i64.eq”Check if two i64 values are equal.
Signature: (param i64 i64) (result i32)
Example:
(i64.eq (i64.const 5) (i64.const 5)) ;; Returns 1 (true)i64.ne
Section titled “i64.ne”Check if two i64 values are not equal.
Signature: (param i64 i64) (result i32)
Example:
(i64.ne (i64.const 5) (i64.const 3)) ;; Returns 1 (true)i64.lt_s
Section titled “i64.lt_s”Signed less than comparison.
Signature: (param i64 i64) (result i32)
Example:
(i64.lt_s (i64.const -5) (i64.const 3)) ;; Returns 1 (true)i64.lt_u
Section titled “i64.lt_u”Unsigned less than comparison.
Signature: (param i64 i64) (result i32)
Example:
(i64.lt_u (i64.const 3) (i64.const 5)) ;; Returns 1 (true)i64.gt_s
Section titled “i64.gt_s”Signed greater than comparison.
Signature: (param i64 i64) (result i32)
Example:
(i64.gt_s (i64.const 5) (i64.const 3)) ;; Returns 1 (true)i64.gt_u
Section titled “i64.gt_u”Unsigned greater than comparison.
Signature: (param i64 i64) (result i32)
Example:
(i64.gt_u (i64.const 5) (i64.const 3)) ;; Returns 1 (true)i64.le_s
Section titled “i64.le_s”Signed less than or equal comparison.
Signature: (param i64 i64) (result i32)
Example:
(i64.le_s (i64.const 5) (i64.const 5)) ;; Returns 1 (true)i64.le_u
Section titled “i64.le_u”Unsigned less than or equal comparison.
Signature: (param i64 i64) (result i32)
Example:
(i64.le_u (i64.const 5) (i64.const 5)) ;; Returns 1 (true)i64.ge_s
Section titled “i64.ge_s”Signed greater than or equal comparison.
Signature: (param i64 i64) (result i32)
Example:
(i64.ge_s (i64.const 5) (i64.const 5)) ;; Returns 1 (true)i64.ge_u
Section titled “i64.ge_u”Unsigned greater than or equal comparison.
Signature: (param i64 i64) (result i32)
Example:
(i64.ge_u (i64.const 5) (i64.const 3)) ;; Returns 1 (true)i64.load
Section titled “i64.load”Load i64 from memory at the given address.
Signature: (param i32) (result i64)
Example:
(i64.load (i32.const 0))(i64.load offset=8 align=8 (i32.const 0))i64.load8_s
Section titled “i64.load8_s”Load signed 8-bit value from memory and sign-extend to i64.
Signature: (param i32) (result i64)
Example:
(i64.load8_s (i32.const 100))i64.load8_u
Section titled “i64.load8_u”Load unsigned 8-bit value from memory and zero-extend to i64.
Signature: (param i32) (result i64)
Example:
(i64.load8_u (i32.const 100))i64.load16_s
Section titled “i64.load16_s”Load signed 16-bit value from memory and sign-extend to i64.
Signature: (param i32) (result i64)
Example:
(i64.load16_s (i32.const 100))i64.load16_u
Section titled “i64.load16_u”Load unsigned 16-bit value from memory and zero-extend to i64.
Signature: (param i32) (result i64)
Example:
(i64.load16_u (i32.const 100))i64.load32_s
Section titled “i64.load32_s”Load signed 32-bit value from memory and sign-extend to i64.
Signature: (param i32) (result i64)
Example:
(i64.load32_s (i32.const 100))i64.load32_u
Section titled “i64.load32_u”Load unsigned 32-bit value from memory and zero-extend to i64.
Signature: (param i32) (result i64)
Example:
(i64.load32_u (i32.const 100))i64.store
Section titled “i64.store”Store i64 value to memory.
Signature: (param i32 i64)
Example:
(i64.store (i32.const 0) (i64.const 42))(i64.store offset=8 (i32.const 0) (i64.const 100))i64.store8
Section titled “i64.store8”Store low 8 bits of i64 to memory.
Signature: (param i32 i64)
Example:
(i64.store8 (i32.const 100) (i64.const 0xFF))i64.store16
Section titled “i64.store16”Store low 16 bits of i64 to memory.
Signature: (param i32 i64)
Example:
(i64.store16 (i32.const 100) (i64.const 0xFFFF))i64.store32
Section titled “i64.store32”Store low 32 bits of i64 to memory.
Signature: (param i32 i64)
Example:
(i64.store32 (i32.const 100) (i64.const 0xFFFFFFFF))i64.extend_i32_s
Section titled “i64.extend_i32_s”Sign-extend i32 to i64.
Signature: (param i32) (result i64)
Example:
(i64.extend_i32_s (i32.const -1)) ;; Returns -1 (as i64)i64.extend_i32_u
Section titled “i64.extend_i32_u”Zero-extend i32 to i64.
Signature: (param i32) (result i64)
Example:
(i64.extend_i32_u (i32.const -1)) ;; Returns 0xFFFFFFFFi64.trunc_f32_s
Section titled “i64.trunc_f32_s”Truncate f32 to signed i64. Traps on overflow or NaN.
Signature: (param f32) (result i64)
Example:
(i64.trunc_f32_s (f32.const -3.7)) ;; Returns -3i64.trunc_f32_u
Section titled “i64.trunc_f32_u”Truncate f32 to unsigned i64. Traps on overflow or NaN.
Signature: (param f32) (result i64)
Example:
(i64.trunc_f32_u (f32.const 3.7)) ;; Returns 3i64.trunc_f64_s
Section titled “i64.trunc_f64_s”Truncate f64 to signed i64. Traps on overflow or NaN.
Signature: (param f64) (result i64)
Example:
(i64.trunc_f64_s (f64.const -3.7)) ;; Returns -3i64.trunc_f64_u
Section titled “i64.trunc_f64_u”Truncate f64 to unsigned i64. Traps on overflow or NaN.
Signature: (param f64) (result i64)
Example:
(i64.trunc_f64_u (f64.const 3.7)) ;; Returns 3i64.trunc_sat_f32_s
Section titled “i64.trunc_sat_f32_s”Saturating truncate f32 to signed i64 (no trap).
Signature: (param f32) (result i64)
Example:
(i64.trunc_sat_f32_s (f32.const inf)) ;; Returns i64.maxi64.trunc_sat_f32_u
Section titled “i64.trunc_sat_f32_u”Saturating truncate f32 to unsigned i64 (no trap).
Signature: (param f32) (result i64)
Example:
(i64.trunc_sat_f32_u (f32.const -1.0)) ;; Returns 0i64.trunc_sat_f64_s
Section titled “i64.trunc_sat_f64_s”Saturating truncate f64 to signed i64 (no trap).
Signature: (param f64) (result i64)
Example:
(i64.trunc_sat_f64_s (f64.const inf)) ;; Returns i64.maxi64.trunc_sat_f64_u
Section titled “i64.trunc_sat_f64_u”Saturating truncate f64 to unsigned i64 (no trap).
Signature: (param f64) (result i64)
Example:
(i64.trunc_sat_f64_u (f64.const -1.0)) ;; Returns 0i64.extend8_s
Section titled “i64.extend8_s”Sign-extend 8-bit value to i64.
Signature: (param i64) (result i64)
Example:
(i64.extend8_s (i64.const 0x80)) ;; Returns -128i64.extend16_s
Section titled “i64.extend16_s”Sign-extend 16-bit value to i64.
Signature: (param i64) (result i64)
Example:
(i64.extend16_s (i64.const 0x8000)) ;; Returns -32768i64.extend32_s
Section titled “i64.extend32_s”Sign-extend 32-bit value to i64.
Signature: (param i64) (result i64)
Example:
(i64.extend32_s (i64.const 0x80000000)) ;; Returns -2147483648i64.reinterpret_f64
Section titled “i64.reinterpret_f64”Reinterpret f64 bits as i64.
Signature: (param f64) (result i64)
Example:
(i64.reinterpret_f64 (f64.const 1.0)) ;; Returns 0x3FF0000000000000