]> gitweb.factorcode.org Git - factor.git/commitdiff
wasm: adding a not-that-useful wasm assembler
authorJohn Benediktsson <mrjbq7@gmail.com>
Tue, 25 Jan 2022 21:21:35 +0000 (13:21 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Tue, 25 Jan 2022 21:21:35 +0000 (13:21 -0800)
extra/wasm/wasm.factor [new file with mode: 0644]

diff --git a/extra/wasm/wasm.factor b/extra/wasm/wasm.factor
new file mode 100644 (file)
index 0000000..79d9920
--- /dev/null
@@ -0,0 +1,512 @@
+USING: make ;
+
+IN: wasm
+
+! WebAssembly 1.1 Assembler
+
+: t.unreachable ( -- ) 0x00 , ;
+: t.nop ( -- ) 0x01 , ;
+: t.block ( -- ) 0x02 , ;
+: t.loop ( -- ) 0x03 , ;
+: t.if ( -- ) 0x04 , ;
+: t.else ( -- ) 0x05 , ;
+! : (reserved) ( -- ) 0x06 , ;
+! : (reserved) ( -- ) 0x07 , ;
+! : (reserved) ( -- ) 0x08 , ;
+! : (reserved) ( -- ) 0x09 , ;
+! : (reserved) ( -- ) 0x0A , ;
+: t.end ( -- ) 0x0B , ;
+: t.br ( -- ) 0x0C , ;
+: t.br_if ( -- ) 0x0D , ;
+: t.br_table ( -- ) 0x0E , ;
+: t.return ( -- ) 0x0F , ;
+: t.call ( -- ) 0x10 , ;
+: t.call_indirect ( -- ) 0x11 , ;
+! : (reserved) ( -- ) 0x12 , ;
+! : (reserved) ( -- ) 0x13 , ;
+! : (reserved) ( -- ) 0x14 , ;
+! : (reserved) ( -- ) 0x15 , ;
+! : (reserved) ( -- ) 0x16 , ;
+! : (reserved) ( -- ) 0x17 , ;
+! : (reserved) ( -- ) 0x18 , ;
+! : (reserved) ( -- ) 0x19 , ;
+: t.drop ( -- ) 0x1A , ;
+: t.select1 ( -- ) 0x1B , ;
+: t.select2 ( -- ) 0x1C , ;
+! : (reserved) ( -- ) 0x1D , ;
+! : (reserved) ( -- ) 0x1E , ;
+! : (reserved) ( -- ) 0x1F , ;
+: local.get ( -- ) 0x20 , ;
+: local.set ( -- ) 0x21 , ;
+: local.tee ( -- ) 0x22 , ;
+: global.get ( -- ) 0x23 , ;
+: global.set ( -- ) 0x24 , ;
+: table.get ( -- ) 0x25 , ;
+: table.set ( -- ) 0x26 , ;
+! : (reserved) ( -- ) 0x27 , ;
+: i32.load ( -- ) 0x28 , ;
+: i64.load ( -- ) 0x29 , ;
+: f32.load ( -- ) 0x2A , ;
+: f64.load ( -- ) 0x2B , ;
+: i32.load8_s ( -- ) 0x2C , ;
+: i32.load8_u ( -- ) 0x2D , ;
+: i32.load16_s ( -- ) 0x2E , ;
+: i32.load16_u ( -- ) 0x2F , ;
+: i64.load8_s ( -- ) 0x30 , ;
+: i64.load8_u ( -- ) 0x31 , ;
+: i64.load16_s ( -- ) 0x32 , ;
+: i64.load16_u ( -- ) 0x33 , ;
+: i64.load32_s ( -- ) 0x34 , ;
+: i64.load32_u ( -- ) 0x35 , ;
+: i32.store ( -- ) 0x36 , ;
+: i64.store ( -- ) 0x37 , ;
+: f32.store ( -- ) 0x38 , ;
+: f64.store ( -- ) 0x39 , ;
+: i32.store8 ( -- ) 0x3A , ;
+: i32.store16 ( -- ) 0x3B , ;
+: i64.store8 ( -- ) 0x3C , ;
+: i64.store16 ( -- ) 0x3D , ;
+: i64.store32 ( -- ) 0x3E , ;
+: memory.size ( -- ) 0x3F , ;
+: memory.grow ( -- ) 0x40 , ;
+: i32.const ( -- ) 0x41 , ;
+: i64.const ( -- ) 0x42 , ;
+: f32.const ( -- ) 0x43 , ;
+: f64.const ( -- ) 0x44 , ;
+: i32.eqz ( -- ) 0x45 , ;
+: i32.eq ( -- ) 0x46 , ;
+: i32.ne ( -- ) 0x47 , ;
+: i32.lt_s ( -- ) 0x48 , ;
+: i32.lt_u ( -- ) 0x49 , ;
+: i32.gt_s ( -- ) 0x4A , ;
+: i32.gt_u ( -- ) 0x4B , ;
+: i32.le_s ( -- ) 0x4C , ;
+: i32.le_u ( -- ) 0x4D , ;
+: i32.ge_s ( -- ) 0x4E , ;
+: i32.ge_u ( -- ) 0x4F , ;
+: i64.eqz ( -- ) 0x50 , ;
+: i64.eq ( -- ) 0x51 , ;
+: i64.ne ( -- ) 0x52 , ;
+: i64.lt_s ( -- ) 0x53 , ;
+: i64.lt_u ( -- ) 0x54 , ;
+: i64.gt_s ( -- ) 0x55 , ;
+: i64.gt_u ( -- ) 0x56 , ;
+: i64.le_s ( -- ) 0x57 , ;
+: i64.le_u ( -- ) 0x58 , ;
+: i64.ge_s ( -- ) 0x59 , ;
+: i64.ge_u ( -- ) 0x5A , ;
+: f32.eq ( -- ) 0x5B , ;
+: f32.ne ( -- ) 0x5C , ;
+: f32.lt ( -- ) 0x5D , ;
+: f32.gt ( -- ) 0x5E , ;
+: f32.le ( -- ) 0x5F , ;
+: f32.ge ( -- ) 0x60 , ;
+: f64.eq ( -- ) 0x61 , ;
+: f64.ne ( -- ) 0x62 , ;
+: f64.lt ( -- ) 0x63 , ;
+: f64.gt ( -- ) 0x64 , ;
+: f64.le ( -- ) 0x65 , ;
+: f64.ge ( -- ) 0x66 , ;
+: i32.clz ( -- ) 0x67 , ;
+: i32.ctz ( -- ) 0x68 , ;
+: i32.popcnt ( -- ) 0x69 , ;
+: i32.add ( -- ) 0x6A , ;
+: i32.sub ( -- ) 0x6B , ;
+: i32.mul ( -- ) 0x6C , ;
+: i32.div_s ( -- ) 0x6D , ;
+: i32.div_u ( -- ) 0x6E , ;
+: i32.rem_s ( -- ) 0x6F , ;
+: i32.rem_u ( -- ) 0x70 , ;
+: i32.and ( -- ) 0x71 , ;
+: i32.or ( -- ) 0x72 , ;
+: i32.xor ( -- ) 0x73 , ;
+: i32.shl ( -- ) 0x74 , ;
+: i32.shr_s ( -- ) 0x75 , ;
+: i32.shr_u ( -- ) 0x76 , ;
+: i32.rotl ( -- ) 0x77 , ;
+: i32.rotr ( -- ) 0x78 , ;
+: i64.clz ( -- ) 0x79 , ;
+: i64.ctz ( -- ) 0x7A , ;
+: i64.popcnt ( -- ) 0x7B , ;
+: i64.add ( -- ) 0x7C , ;
+: i64.sub ( -- ) 0x7D , ;
+: i64.mul ( -- ) 0x7E , ;
+: i64.div_s ( -- ) 0x7F , ;
+: i64.div_u ( -- ) 0x80 , ;
+: i64.rem_s ( -- ) 0x81 , ;
+: i64.rem_u ( -- ) 0x82 , ;
+: i64.and ( -- ) 0x83 , ;
+: i64.or ( -- ) 0x84 , ;
+: i64.xor ( -- ) 0x85 , ;
+: i64.shl ( -- ) 0x86 , ;
+: i64.shr_s ( -- ) 0x87 , ;
+: i64.shr_u ( -- ) 0x88 , ;
+: i64.rotl ( -- ) 0x89 , ;
+: i64.rotr ( -- ) 0x8A , ;
+: f32.abs ( -- ) 0x8B , ;
+: f32.neg ( -- ) 0x8C , ;
+: f32.ceil ( -- ) 0x8D , ;
+: f32.floor ( -- ) 0x8E , ;
+: f32.trunc ( -- ) 0x8F , ;
+: f32.nearest ( -- ) 0x90 , ;
+: f32.sqrt ( -- ) 0x91 , ;
+: f32.add ( -- ) 0x92 , ;
+: f32.sub ( -- ) 0x93 , ;
+: f32.mul ( -- ) 0x94 , ;
+: f32.div ( -- ) 0x95 , ;
+: f32.min ( -- ) 0x96 , ;
+: f32.max ( -- ) 0x97 , ;
+: f32.copysign ( -- ) 0x98 , ;
+: f64.abs ( -- ) 0x99 , ;
+: f64.neg ( -- ) 0x9A , ;
+: f64.ceil ( -- ) 0x9B , ;
+: f64.floor ( -- ) 0x9C , ;
+: f64.trunc ( -- ) 0x9D , ;
+: f64.nearest ( -- ) 0x9E , ;
+: f64.sqrt ( -- ) 0x9F , ;
+: f64.add ( -- ) 0xA0 , ;
+: f64.sub ( -- ) 0xA1 , ;
+: f64.mul ( -- ) 0xA2 , ;
+: f64.div ( -- ) 0xA3 , ;
+: f64.min ( -- ) 0xA4 , ;
+: f64.max ( -- ) 0xA5 , ;
+: f64.copysign ( -- ) 0xA6 , ;
+: i32.wrap_i64 ( -- ) 0xA7 , ;
+: i32.trunc_f32_s ( -- ) 0xA8 , ;
+: i32.trunc_f32_u ( -- ) 0xA9 , ;
+: i32.trunc_f64_s ( -- ) 0xAA , ;
+: i32.trunc_f64_u ( -- ) 0xAB , ;
+: i64.extend_i32_s ( -- ) 0xAC , ;
+: i64.extend_i32_u ( -- ) 0xAD , ;
+: i64.trunc_f32_s ( -- ) 0xAE , ;
+: i64.trunc_f32_u ( -- ) 0xAF , ;
+: i64.trunc_f64_s ( -- ) 0xB0 , ;
+: i64.trunc_f64_u ( -- ) 0xB1 , ;
+: f32.convert_i32_s ( -- ) 0xB2 , ;
+: f32.convert_i32_u ( -- ) 0xB3 , ;
+: f32.convert_i64_s ( -- ) 0xB4 , ;
+: f32.convert_i64_u ( -- ) 0xB5 , ;
+: f32.demote_f64 ( -- ) 0xB6 , ;
+: f64.convert_i32_s ( -- ) 0xB7 , ;
+: f64.convert_i32_u ( -- ) 0xB8 , ;
+: f64.convert_i64_s ( -- ) 0xB9 , ;
+: f64.convert_i64_u ( -- ) 0xBA , ;
+: f64.promote_f32 ( -- ) 0xBB , ;
+: i32.reinterpret_f32 ( -- ) 0xBC , ;
+: i64.reinterpret_f64 ( -- ) 0xBD , ;
+: f32.reinterpret_i32 ( -- ) 0xBE , ;
+: f64.reinterpret_i64 ( -- ) 0xBF , ;
+: i32.extend8_s ( -- ) 0xC0 , ;
+: i32.extend16_s ( -- ) 0xC1 , ;
+: i64.extend8_s ( -- ) 0xC2 , ;
+: i64.extend16_s ( -- ) 0xC3 , ;
+: i64.extend32_s ( -- ) 0xC4 , ;
+! : (reserved) ( -- ) 0xC5 , ;
+! : (reserved) ( -- ) 0xC6 , ;
+! : (reserved) ( -- ) 0xC7 , ;
+! : (reserved) ( -- ) 0xC8 , ;
+! : (reserved) ( -- ) 0xC9 , ;
+! : (reserved) ( -- ) 0xCA , ;
+! : (reserved) ( -- ) 0xCB , ;
+! : (reserved) ( -- ) 0xCC , ;
+! : (reserved) ( -- ) 0xCD , ;
+! : (reserved) ( -- ) 0xCE , ;
+! : (reserved) ( -- ) 0xCF , ;
+: ref.null ( -- ) 0xD0 , ;
+: ref.is_null ( -- ) 0xD1 , ;
+: ref.func ( -- ) 0xD2 , ;
+! : (reserved) ( -- ) 0xD3 , ;
+! : (reserved) ( -- ) 0xD4 , ;
+! : (reserved) ( -- ) 0xD5 , ;
+! : (reserved) ( -- ) 0xD6 , ;
+! : (reserved) ( -- ) 0xD7 , ;
+! : (reserved) ( -- ) 0xD8 , ;
+! : (reserved) ( -- ) 0xD9 , ;
+! : (reserved) ( -- ) 0xDA , ;
+! : (reserved) ( -- ) 0xDB , ;
+! : (reserved) ( -- ) 0xDC , ;
+! : (reserved) ( -- ) 0xDD , ;
+! : (reserved) ( -- ) 0xDE , ;
+! : (reserved) ( -- ) 0xDF , ;
+! : (reserved) ( -- ) 0xE0 , ;
+! : (reserved) ( -- ) 0xE1 , ;
+! : (reserved) ( -- ) 0xE2 , ;
+! : (reserved) ( -- ) 0xE3 , ;
+! : (reserved) ( -- ) 0xE4 , ;
+! : (reserved) ( -- ) 0xE5 , ;
+! : (reserved) ( -- ) 0xE6 , ;
+! : (reserved) ( -- ) 0xE7 , ;
+! : (reserved) ( -- ) 0xE8 , ;
+! : (reserved) ( -- ) 0xE9 , ;
+! : (reserved) ( -- ) 0xEA , ;
+! : (reserved) ( -- ) 0xEB , ;
+! : (reserved) ( -- ) 0xEC , ;
+! : (reserved) ( -- ) 0xED , ;
+! : (reserved) ( -- ) 0xEE , ;
+! : (reserved) ( -- ) 0xEF , ;
+! : (reserved) ( -- ) 0xF0 , ;
+! : (reserved) ( -- ) 0xF1 , ;
+! : (reserved) ( -- ) 0xF2 , ;
+! : (reserved) ( -- ) 0xF3 , ;
+! : (reserved) ( -- ) 0xF4 , ;
+! : (reserved) ( -- ) 0xF5 , ;
+! : (reserved) ( -- ) 0xF6 , ;
+! : (reserved) ( -- ) 0xF7 , ;
+! : (reserved) ( -- ) 0xF8 , ;
+! : (reserved) ( -- ) 0xF9 , ;
+! : (reserved) ( -- ) 0xFA , ;
+! : (reserved) ( -- ) 0xFB , ;
+: i32.trunc_sat_f32_s ( -- ) { 0xFC 0x00 } % ;
+: i32.trunc_sat_f32_u ( -- ) { 0xFC 0x01 } % ;
+: i32.trunc_sat_f64_s ( -- ) { 0xFC 0x02 } % ;
+: i32.trunc_sat_f64_u ( -- ) { 0xFC 0x03 } % ;
+: i64.trunc_sat_f32_s ( -- ) { 0xFC 0x04 } % ;
+: i64.trunc_sat_f32_u ( -- ) { 0xFC 0x05 } % ;
+: i64.trunc_sat_f64_s ( -- ) { 0xFC 0x06 } % ;
+: i64.trunc_sat_f64_u ( -- ) { 0xFC 0x07 } % ;
+: memory.init ( -- ) { 0xFC 0x08 } % ;
+: data.drop ( -- ) { 0xFC 0x09 } % ;
+: memory.copy ( -- ) { 0xFC 0x0A } % ;
+: memory.fill ( -- ) { 0xFC 0x0B } % ;
+: table.init ( -- ) { 0xFC 0x0C } % ;
+: elem.drop ( -- ) { 0xFC 0x0D } % ;
+: table.copy ( -- ) { 0xFC 0x0E } % ;
+: table.grow ( -- ) { 0xFC 0x0F } % ;
+: table.size ( -- ) { 0xFC 0x10 } % ;
+: table.fill ( -- ) { 0xFC 0x11 } % ;
+: v128.load ( -- ) { 0xFD 0x00 } % ;
+: v128.load8x8_s ( -- ) { 0xFD 0x01 } % ;
+: v128.load8x8_u ( -- ) { 0xFD 0x02 } % ;
+: v128.load16x4_s ( -- ) { 0xFD 0x03 } % ;
+: v128.load16x4_u ( -- ) { 0xFD 0x04 } % ;
+: v128.load32x2_s ( -- ) { 0xFD 0x05 } % ;
+: v128.load32x2_u ( -- ) { 0xFD 0x06 } % ;
+: v128.load_splat1 ( -- ) { 0xFD 0x07 } % ;
+: v128.load_splat2 ( -- ) { 0xFD 0x08 } % ;
+: v128.load_splat3 ( -- ) { 0xFD 0x09 } % ;
+: v128.load_splat4 ( -- ) { 0xFD 0x0A } % ;
+: v128.store ( -- ) { 0xFD 0x0B } % ;
+: v128.const ( -- ) { 0xFD 0x0C } % ;
+: i8x16.shuffle ( -- ) { 0xFD 0x0D } % ;
+: i8x16.swizzle ( -- ) { 0xFD 0x0E } % ;
+: i8x16.splat ( -- ) { 0xFD 0x0F } % ;
+: i16x8.splat ( -- ) { 0xFD 0x10 } % ;
+: i32x4.splat ( -- ) { 0xFD 0x11 } % ;
+: i64x2.splat ( -- ) { 0xFD 0x12 } % ;
+: f32x4.splat ( -- ) { 0xFD 0x13 } % ;
+: f64x2.splat ( -- ) { 0xFD 0x14 } % ;
+: i8x16.extract_lane_s ( -- ) { 0xFD 0x15 } % ;
+: i8x16.extract_lane_u ( -- ) { 0xFD 0x16 } % ;
+: i8x16.replace_lane ( -- ) { 0xFD 0x17 } % ;
+: i16x8.extract_lane_s ( -- ) { 0xFD 0x18 } % ;
+: i16x8.extract_lane_u ( -- ) { 0xFD 0x19 } % ;
+: i16x8.replace_lane ( -- ) { 0xFD 0x1A } % ;
+: i32x4.extract_lane ( -- ) { 0xFD 0x1B } % ;
+: i32x4.replace_lane ( -- ) { 0xFD 0x1C } % ;
+: i64x2.extract_lane ( -- ) { 0xFD 0x1D } % ;
+: i64x2.replace_lane ( -- ) { 0xFD 0x1E } % ;
+: f32x4.extract_lane ( -- ) { 0xFD 0x1F } % ;
+: f32x4.replace_lane ( -- ) { 0xFD 0x20 } % ;
+: f64x2.extract_lane ( -- ) { 0xFD 0x21 } % ;
+: f64x2.replace_lane ( -- ) { 0xFD 0x22 } % ;
+: i8x16.eq ( -- ) { 0xFD 0x23 } % ;
+: i8x16.ne ( -- ) { 0xFD 0x24 } % ;
+: i8x16.lt_s ( -- ) { 0xFD 0x25 } % ;
+: i8x16.lt_u ( -- ) { 0xFD 0x26 } % ;
+: i8x16.gt_s ( -- ) { 0xFD 0x27 } % ;
+: i8x16.gt_u ( -- ) { 0xFD 0x28 } % ;
+: i8x16.le_s ( -- ) { 0xFD 0x29 } % ;
+: i8x16.le_u ( -- ) { 0xFD 0x2A } % ;
+: i8x16.ge_s ( -- ) { 0xFD 0x2B } % ;
+: i8x16.ge_u ( -- ) { 0xFD 0x2C } % ;
+: i16x8.eq ( -- ) { 0xFD 0x2D } % ;
+: i16x8.ne ( -- ) { 0xFD 0x2E } % ;
+: i16x8.lt_s ( -- ) { 0xFD 0x2F } % ;
+: i16x8.lt_u ( -- ) { 0xFD 0x30 } % ;
+: i16x8.gt_s ( -- ) { 0xFD 0x31 } % ;
+: i16x8.gt_u ( -- ) { 0xFD 0x32 } % ;
+: i16x8.le_s ( -- ) { 0xFD 0x33 } % ;
+: i16x8.le_u ( -- ) { 0xFD 0x34 } % ;
+: i16x8.ge_s ( -- ) { 0xFD 0x35 } % ;
+: i16x8.ge_u ( -- ) { 0xFD 0x36 } % ;
+: i32x4.eq ( -- ) { 0xFD 0x37 } % ;
+: i32x4.ne ( -- ) { 0xFD 0x38 } % ;
+: i32x4.lt_s ( -- ) { 0xFD 0x39 } % ;
+: i32x4.lt_u ( -- ) { 0xFD 0x3A } % ;
+: i32x4.gt_s ( -- ) { 0xFD 0x3B } % ;
+: i32x4.gt_u ( -- ) { 0xFD 0x3C } % ;
+: i32x4.le_s ( -- ) { 0xFD 0x3D } % ;
+: i32x4.le_u ( -- ) { 0xFD 0x3E } % ;
+: i32x4.ge_s ( -- ) { 0xFD 0x3F } % ;
+: i32x4.ge_u ( -- ) { 0xFD 0x40 } % ;
+: f32x4.eq ( -- ) { 0xFD 0x41 } % ;
+: f32x4.ne ( -- ) { 0xFD 0x42 } % ;
+: f32x4.lt ( -- ) { 0xFD 0x43 } % ;
+: f32x4.gt ( -- ) { 0xFD 0x44 } % ;
+: f32x4.le ( -- ) { 0xFD 0x45 } % ;
+: f32x4.ge ( -- ) { 0xFD 0x46 } % ;
+: f64x2.eq ( -- ) { 0xFD 0x47 } % ;
+: f64x2.ne ( -- ) { 0xFD 0x48 } % ;
+: f64x2.lt ( -- ) { 0xFD 0x49 } % ;
+: f64x2.gt ( -- ) { 0xFD 0x4A } % ;
+: f64x2.le ( -- ) { 0xFD 0x4B } % ;
+: f64x2.ge ( -- ) { 0xFD 0x4C } % ;
+: v128.not ( -- ) { 0xFD 0x4D } % ;
+: v128.and ( -- ) { 0xFD 0x4E } % ;
+: v128.andnot ( -- ) { 0xFD 0x4F } % ;
+: v128.or ( -- ) { 0xFD 0x50 } % ;
+: v128.xor ( -- ) { 0xFD 0x51 } % ;
+: v128.bitselect ( -- ) { 0xFD 0x52 } % ;
+: v128.any_true ( -- ) { 0xFD 0x53 } % ;
+: v128.load8_lane ( -- ) { 0xFD 0x54 } % ;
+: v128.load16_lane ( -- ) { 0xFD 0x55 } % ;
+: v128.load32_lane ( -- ) { 0xFD 0x56 } % ;
+: v128.load64_lane ( -- ) { 0xFD 0x57 } % ;
+: v128.store8_lane ( -- ) { 0xFD 0x58 } % ;
+: v128.store16_lane ( -- ) { 0xFD 0x59 } % ;
+: v128.store32_lane ( -- ) { 0xFD 0x5A } % ;
+: v128.store64_lane ( -- ) { 0xFD 0x5B } % ;
+: v128.load32_zero ( -- ) { 0xFD 0x5C } % ;
+: v128.load64_zero ( -- ) { 0xFD 0x5D } % ;
+: f32x4.demote_f64x2_zero ( -- ) { 0xFD 0x5E } % ;
+: f64x2.promote_low_f32x4 ( -- ) { 0xFD 0x5F } % ;
+: i8x16.abs ( -- ) { 0xFD 0x60 } % ;
+: i8x16.neg ( -- ) { 0xFD 0x61 } % ;
+: i8x16.popcnt ( -- ) { 0xFD 0x62 } % ;
+: i8x16.all_true ( -- ) { 0xFD 0x63 } % ;
+: i8x16.bitmask ( -- ) { 0xFD 0x64 } % ;
+: i8x16.narrow_i16x8_s ( -- ) { 0xFD 0x65 } % ;
+: i8x16.narrow_i16x8_u ( -- ) { 0xFD 0x66 } % ;
+: f32x4.ceil ( -- ) { 0xFD 0x67 } % ;
+: f32x4.floor ( -- ) { 0xFD 0x68 } % ;
+: f32x4.trunc ( -- ) { 0xFD 0x69 } % ;
+: f32x4.nearest ( -- ) { 0xFD 0x6A } % ;
+: i8x16.shl ( -- ) { 0xFD 0x6B } % ;
+: i8x16.shr_s ( -- ) { 0xFD 0x6C } % ;
+: i8x16.shr_u ( -- ) { 0xFD 0x6D } % ;
+: i8x16.add ( -- ) { 0xFD 0x6E } % ;
+: i8x16.add_sat_s ( -- ) { 0xFD 0x6F } % ;
+: i8x16.add_sat_u ( -- ) { 0xFD 0x70 } % ;
+: i8x16.sub ( -- ) { 0xFD 0x71 } % ;
+: i8x16.sub_sat_s ( -- ) { 0xFD 0x72 } % ;
+: i8x16.sub_sat_u ( -- ) { 0xFD 0x73 } % ;
+: f64x2.ceil ( -- ) { 0xFD 0x74 } % ;
+: f64x2.floor ( -- ) { 0xFD 0x75 } % ;
+: i8x16.min_s ( -- ) { 0xFD 0x76 } % ;
+: i8x16.min_u ( -- ) { 0xFD 0x77 } % ;
+: i8x16.max_s ( -- ) { 0xFD 0x78 } % ;
+: i8x16.max_u ( -- ) { 0xFD 0x79 } % ;
+: f64x2.trunc ( -- ) { 0xFD 0x7A } % ;
+: i8x16.avgr_u ( -- ) { 0xFD 0x7B } % ;
+: i16x8.extadd_pairwise_i8x16_s ( -- ) { 0xFD 0x7C } % ;
+: i16x8.extadd_pairwise_i8x16_u ( -- ) { 0xFD 0x7D } % ;
+: i32x4.extadd_pairwise_i16x8_s ( -- ) { 0xFD 0x7E } % ;
+: i32x4.extadd_pairwise_i16x8_u ( -- ) { 0xFD 0x7F } % ;
+: i16x8.abs ( -- ) { 0xFD 0x80 } % ;
+: i16x8.neg ( -- ) { 0xFD 0x81 } % ;
+: i16x8.q15mulr_sat_s ( -- ) { 0xFD 0x82 } % ;
+: i16x8.all_true ( -- ) { 0xFD 0x83 } % ;
+: i16x8.bitmask ( -- ) { 0xFD 0x84 } % ;
+: i16x8.narrow_i32x4_s ( -- ) { 0xFD 0x85 } % ;
+: i16x8.narrow_i32x4_u ( -- ) { 0xFD 0x86 } % ;
+: i16x8.extend_low_i8x16_s ( -- ) { 0xFD 0x87 } % ;
+: i16x8.extend_high_i8x16_s ( -- ) { 0xFD 0x88 } % ;
+: i16x8.extend_low_i8x16_u ( -- ) { 0xFD 0x89 } % ;
+: i16x8.extend_high_i8x16_u ( -- ) { 0xFD 0x8A } % ;
+: i16x8.shl ( -- ) { 0xFD 0x8B } % ;
+: i16x8.shr_s ( -- ) { 0xFD 0x8C } % ;
+: i16x8.shr_u ( -- ) { 0xFD 0x8D } % ;
+: i16x8.add ( -- ) { 0xFD 0x8E } % ;
+: i16x8.add_sat_s ( -- ) { 0xFD 0x8F } % ;
+: i16x8.add_sat_u ( -- ) { 0xFD 0x90 } % ;
+: i16x8.sub ( -- ) { 0xFD 0x91 } % ;
+: i16x8.sub_sat_s ( -- ) { 0xFD 0x92 } % ;
+: i16x8.sub_sat_u ( -- ) { 0xFD 0x93 } % ;
+: f64x2.nearest ( -- ) { 0xFD 0x94 } % ;
+: i16x8.mul ( -- ) { 0xFD 0x95 } % ;
+: i16x8.min_s ( -- ) { 0xFD 0x96 } % ;
+: i16x8.min_u ( -- ) { 0xFD 0x97 } % ;
+: i16x8.max_s ( -- ) { 0xFD 0x98 } % ;
+: i16x8.max_u ( -- ) { 0xFD 0x99 } % ;
+: i16x8.avgr_u ( -- ) { 0xFD 0x9B } % ;
+: i16x8.extmul_low_i8x16_s ( -- ) { 0xFD 0x9C } % ;
+: i16x8.extmul_high_i8x16_s ( -- ) { 0xFD 0x9D } % ;
+: i16x8.extmul_low_i8x16_u ( -- ) { 0xFD 0x9E } % ;
+: i16x8.extmul_high_i8x16_u ( -- ) { 0xFD 0x9F } % ;
+: i32x4.abs ( -- ) { 0xFD 0xA0 } % ;
+: i32x4.neg ( -- ) { 0xFD 0xA1 } % ;
+: i32x4.all_true ( -- ) { 0xFD 0xA3 } % ;
+: i32x4.bitmask ( -- ) { 0xFD 0xA4 } % ;
+: i32x4.extend_low_i16x8_s ( -- ) { 0xFD 0xA7 } % ;
+: i32x4.extend_high_i16x8_s ( -- ) { 0xFD 0xA8 } % ;
+: i32x4.extend_low_i16x8_u ( -- ) { 0xFD 0xA9 } % ;
+: i32x4.extend_high_i16x8_u ( -- ) { 0xFD 0xAA } % ;
+: i32x4.shl ( -- ) { 0xFD 0xAB } % ;
+: i32x4.shr_s ( -- ) { 0xFD 0xAC } % ;
+: i32x4.shr_u ( -- ) { 0xFD 0xAD } % ;
+: i32x4.add ( -- ) { 0xFD 0xAE } % ;
+: i32x4.sub ( -- ) { 0xFD 0xB1 } % ;
+: i32x4.mul ( -- ) { 0xFD 0xB5 } % ;
+: i32x4.min_s ( -- ) { 0xFD 0xB6 } % ;
+: i32x4.min_u ( -- ) { 0xFD 0xB7 } % ;
+: i32x4.max_s ( -- ) { 0xFD 0xB8 } % ;
+: i32x4.max_u ( -- ) { 0xFD 0xB9 } % ;
+: i32x4.dot_i16x8_s ( -- ) { 0xFD 0xBA } % ;
+: i32x4.extmul_low_i16x8_s ( -- ) { 0xFD 0xBC } % ;
+: i32x4.extmul_high_i16x8_s ( -- ) { 0xFD 0xBD } % ;
+: i32x4.extmul_low_i16x8_u ( -- ) { 0xFD 0xBE } % ;
+: i32x4.extmul_high_i16x8_u ( -- ) { 0xFD 0xBF } % ;
+: i64x2.abs ( -- ) { 0xFD 0xC0 } % ;
+: i64x2.neg ( -- ) { 0xFD 0xC1 } % ;
+: i64x2.all_true ( -- ) { 0xFD 0xC3 } % ;
+: i64x2.bitmask ( -- ) { 0xFD 0xC4 } % ;
+: i64x2.extend_low_i32x4_s ( -- ) { 0xFD 0xC7 } % ;
+: i64x2.extend_high_i32x4_s ( -- ) { 0xFD 0xC8 } % ;
+: i64x2.extend_low_i32x4_u ( -- ) { 0xFD 0xC9 } % ;
+: i64x2.extend_high_i32x4_u ( -- ) { 0xFD 0xCA } % ;
+: i64x2.shl ( -- ) { 0xFD 0xCB } % ;
+: i64x2.shr_s ( -- ) { 0xFD 0xCC } % ;
+: i64x2.shr_u ( -- ) { 0xFD 0xCD } % ;
+: i64x2.add ( -- ) { 0xFD 0xCE } % ;
+: i64x2.sub ( -- ) { 0xFD 0xD1 } % ;
+: i64x2.mul ( -- ) { 0xFD 0xD5 } % ;
+: i64x2.eq ( -- ) { 0xFD 0xD6 } % ;
+: i64x2.ne ( -- ) { 0xFD 0xD7 } % ;
+: i64x2.lt_s ( -- ) { 0xFD 0xD8 } % ;
+: i64x2.gt_s ( -- ) { 0xFD 0xD9 } % ;
+: i64x2.le_s ( -- ) { 0xFD 0xDA } % ;
+: i64x2.ge_s ( -- ) { 0xFD 0xDB } % ;
+: i64x2.extmul_low_i32x4_s ( -- ) { 0xFD 0xDC } % ;
+: i64x2.extmul_high_i32x4_s ( -- ) { 0xFD 0xDD } % ;
+: i64x2.extmul_low_i32x4_u ( -- ) { 0xFD 0xDE } % ;
+: i64x2.extmul_high_i32x4_u ( -- ) { 0xFD 0xDF } % ;
+: f32x4.abs ( -- ) { 0xFD 0xE0 } % ;
+: f32x4.neg ( -- ) { 0xFD 0xE1 } % ;
+: f32x4.sqrt ( -- ) { 0xFD 0xE3 } % ;
+: f32x4.add ( -- ) { 0xFD 0xE4 } % ;
+: f32x4.sub ( -- ) { 0xFD 0xE5 } % ;
+: f32x4.mul ( -- ) { 0xFD 0xE6 } % ;
+: f32x4.div ( -- ) { 0xFD 0xE7 } % ;
+: f32x4.min ( -- ) { 0xFD 0xE8 } % ;
+: f32x4.max ( -- ) { 0xFD 0xE9 } % ;
+: f32x4.pmin ( -- ) { 0xFD 0xEA } % ;
+: f32x4.pmax ( -- ) { 0xFD 0xEB } % ;
+: f64x2.abs ( -- ) { 0xFD 0xEC } % ;
+: f64x2.neg ( -- ) { 0xFD 0xED } % ;
+: f64x2.sqrt ( -- ) { 0xFD 0xEF } % ;
+: f64x2.add ( -- ) { 0xFD 0xF0 } % ;
+: f64x2.sub ( -- ) { 0xFD 0xF1 } % ;
+: f64x2.mul ( -- ) { 0xFD 0xF2 } % ;
+: f64x2.div ( -- ) { 0xFD 0xF3 } % ;
+: f64x2.min ( -- ) { 0xFD 0xF4 } % ;
+: f64x2.max ( -- ) { 0xFD 0xF5 } % ;
+: f64x2.pmin ( -- ) { 0xFD 0xF6 } % ;
+: f64x2.pmax ( -- ) { 0xFD 0xF7 } % ;
+: i32x4.trunc_sat_f32x4_s ( -- ) { 0xFD 0xF8 } % ;
+: i32x4.trunc_sat_f32x4_u ( -- ) { 0xFD 0xF9 } % ;
+: f32x4.convert_i32x4_s ( -- ) { 0xFD 0xFA } % ;
+: f32x4.convert_i32x4_u ( -- ) { 0xFD 0xFB } % ;
+: i32x4.trunc_sat_f64x2_s_zero ( -- ) { 0xFD 0xFC } % ;
+: i32x4.trunc_sat_f64x2_u_zero ( -- ) { 0xFD 0xFD } % ;
+: f64x2.convert_low_i32x4_s ( -- ) { 0xFD 0xFE } % ;
+: f64x2.convert_low_i32x4_u ( -- ) { 0xFD 0xFF } % ;