;;; TOOL: run-opcodecnt
(module
  (memory 1)
  (func
    ;; constants
    i32.const 1
    i64.const 2
    f32.const 3.125
    f64.const 4.5
    v128.const i32x4 0 1 2 3

    ;; load
    i32.const 0
    i32.load offset=1 align=4
    i32.const 0
    v128.load offset=1 align=4
    i32.const 0
    v128.load8x8_s offset=1 align=4
    i32.const 0
    v128.load8_splat offset=1 align=1
    i32.const 0
    v128.const i32x4 0 1 2 3
    v128.load8_lane offset=3 2
    i32.const 0
    v128.const i32x4 0 1 2 3
    v128.store16_lane offset=3 2

    ;; store
    i32.const 0
    i32.const 0
    i32.store offset=3 align=4

    ;; bare block
    block
    end

    ;; block with signature
    block (result i64)
      unreachable
    end

    ;; br
    br 0

    ;; br_table
    i32.const 0
    br_table 0 0 0 0 0 0

    ;; simd extract/replace lane
    v128.const i32x4 0 1 2 3
    i32x4.extract_lane 3

    return))
(;; STDOUT ;;;
Total opcodes: 34

Opcode counts:
i32.const: 10
v128.const: 4
end: 3
block: 2
unreachable: 1
br: 1
br_table: 1
return: 1
i32.load: 1
i32.store: 1
i64.const: 1
f32.const: 1
f64.const: 1
v128.load: 1
v128.load8x8_s: 1
v128.load8_splat: 1
i32x4.extract_lane: 1
v128.load8_lane: 1
v128.store16_lane: 1

Opcode counts with immediates:
i32.const 0 (0x0): 9
v128.const 0 1 2 3 (0x0 0x1 0x2 0x3): 4
end: 3
unreachable: 1
block: 1
block i64: 1
br 0: 1
br_table 0, 0, 0, 0, 0, 0: 1
return: 1
i32.load 2, 1: 1
i32.store 2, 3: 1
i32.const 1 (0x1): 1
i64.const 2 (0x2): 1
f32.const 3.125 (0x1.9p+1): 1
f64.const 4.5 (0x1.2p+2): 1
v128.load 2, 1: 1
v128.load8x8_s 2, 1: 1
v128.load8_splat 0, 1: 1
i32x4.extract_lane 3 (0x3): 1
v128.load8_lane 0, 3, 2: 1
v128.store16_lane 1, 3, 2: 1
;;; STDOUT ;;)
