1 //! This module contains constants that are shared between the codegen and the meta crate, so they
2 //! are kept in sync.
3 
4 // Numbering scheme for value types:
5 //
6 // 0: Void
7 // 0x01-0x6f: Special types
8 // 0x70-0x7d: Lane types
9 // 0x7e-0x7f: Reference types
10 // 0x80-0xff: Vector types
11 // 0x100-0x17f: Dynamic Vector types
12 //
13 // Vector types are encoded with the lane type in the low 4 bits and log2(lanes)
14 // in the next highest 4 bits, giving a range of 2-256 lanes.
15 
16 // Dynamic vector types are encoded similarly.
17 
18 /// Start of the lane types.
19 pub const LANE_BASE: u16 = 0x70;
20 
21 /// Base for reference types.
22 pub const REFERENCE_BASE: u16 = 0x7E;
23 
24 /// Start of the 2-lane vector types.
25 pub const VECTOR_BASE: u16 = 0x80;
26 
27 /// Start of the dynamic vector types.
28 pub const DYNAMIC_VECTOR_BASE: u16 = 0x100;
29