↑ arvau

MDN / ctz: Wasm numeric instruction

The ctz numeric instruction, short for count trailing zeros, is used to count the amount of zeros at the end of the numbers binary representation.

(module

  (func (export "trailing0") (param $num i32) (result i32)
    ;; load  number onto the stack
    local.get $num

    ;; check how many trailing zeros and return the result
    i32.ctz
  )

)
const url = "{%wasm-url%}";
await WebAssembly.instantiateStreaming(fetch(url), { console }).then(
  (result) => {
    const trailing0 = result.instance.exports.trailing0;

    console.log(
      `Trailing zeros: ${trailing0(0b00000000_10000000_00000000_00000000)}`,
    );
    // Expected output: "Trailing zeros: 23"
  },
);

Syntax

;; load a number onto the stack
i32.const 8388608 ;; 00000000_10000000_00000000_00000000

;; count trailing zeros
i32.ctz

;; the top item on the stack will now be 23

InstructionBinary opcodei32.ctz0x68i64.ctz0x7a

Specifications

Browser compatibility