@@ -47,68 +47,68 @@ There are other options for rounding namely:
4747
4848This proposal proposes to extend the matrix of floating point instructions by combining them with a new dimension called a rounding variant. This results in the following new instructions:
4949
50- | prefix| opcode| opcode binary| name | pretty string |
51- | ------| ------- | -------------- | ----------------------| ---------------------|
52- | 0xFC | 0x20 | 0b00100000 | f32.sqrt_ceil | sqrt_ceil |
53- | 0xFC | 0x21 | 0b00100001 | f32.add_ceil | +_ ceil |
54- | 0xFC | 0x22 | 0b00100010 | f32.sub_ceil | -_ ceil |
55- | 0xFC | 0x23 | 0b00100011 | f32.mul_ceil | * _ ceil |
56- | 0xFC | 0x24 | 0b00100100 | f32.div_ceil | /_ ceil |
57- | 0xFC | 0x25 | 0b00100101 | f64.sqrt_ceil | sqrt_ceil |
58- | 0xFC | 0x26 | 0b00100110 | f64.add_ceil | +_ ceil |
59- | 0xFC | 0x27 | 0b00100111 | f64.sub_ceil | -_ ceil |
60- | 0xFC | 0x28 | 0b00101000 | f64.mul_ceil | * _ ceil |
61- | 0xFC | 0x29 | 0b00101001 | f64.div_ceil | /_ ceil |
62- | 0xFC | 0x32 | 0b00110010 | f32.convert_i32_s_ceil | convert_i32_s_ceil |
63- | 0xFC | 0x33 | 0b00110011 | f32.convert_i32_u_ceil | convert_i32_u_ceil |
64- | 0xFC | 0x34 | 0b00110100 | f32.convert_i64_s_ceil | convert_i64_s_ceil |
65- | 0xFC | 0x35 | 0b00110101 | f32.convert_i64_u_ceil | convert_i64_u_ceil |
66- | 0xFC | 0x36 | 0b00110110 | f32.demote_f64_ceil | demote_f64_ceil |
67- | 0xFC | 0x37 | 0b00110111 | f64.convert_i32_s_ceil | convert_i32_s_ceil |
68- | 0xFC | 0x38 | 0b00111000 | f64.convert_i32_u_ceil | convert_i32_u_ceil |
69- | 0xFC | 0x39 | 0b00111001 | f64.convert_i64_s_ceil | convert_i64_s_ceil |
70- | 0xFC | 0x3A | 0b00111010 | f64.convert_i64_u_ceil | convert_i64_u_ceil |
71- | 0xFC | 0x3B | 0b00111011 | f64.promote_f32_ceil | promote_f32_ceil |
72- | 0xFC | 0x40 | 0b01000000 | f32.sqrt_floor | sqrt_floor |
73- | 0xFC | 0x41 | 0b01000001 | f32.add_floor | +_ floor |
74- | 0xFC | 0x42 | 0b01000010 | f32.sub_floor | -_ floor |
75- | 0xFC | 0x43 | 0b01000011 | f32.mul_floor | * _ floor |
76- | 0xFC | 0x44 | 0b01000100 | f32.div_floor | /_ floor |
77- | 0xFC | 0x45 | 0b01000101 | f64.sqrt_floor | sqrt_floor |
78- | 0xFC | 0x46 | 0b01000110 | f64.add_floor | +_ floor |
79- | 0xFC | 0x47 | 0b01000111 | f64.sub_floor | -_ floor |
80- | 0xFC | 0x48 | 0b01001000 | f64.mul_floor | * _ floor |
81- | 0xFC | 0x49 | 0b01001001 | f64.div_floor | /_ floor |
82- | 0xFC | 0x52 | 0b01010010 | f32.convert_i32_s_floor | convert_i32_s_floor |
83- | 0xFC | 0x53 | 0b01010011 | f32.convert_i32_u_floor | convert_i32_u_floor |
84- | 0xFC | 0x54 | 0b01010100 | f32.convert_i64_s_floor | convert_i64_s_floor |
85- | 0xFC | 0x55 | 0b01010101 | f32.convert_i64_u_floor | convert_i64_u_floor |
86- | 0xFC | 0x56 | 0b01010110 | f32.demote_f64_floor | demote_f64_floor |
87- | 0xFC | 0x57 | 0b01010111 | f64.convert_i32_s_floor | convert_i32_s_floor |
88- | 0xFC | 0x58 | 0b01011000 | f64.convert_i32_u_floor | convert_i32_u_floor |
89- | 0xFC | 0x59 | 0b01011001 | f64.convert_i64_s_floor | convert_i64_s_floor |
90- | 0xFC | 0x5A | 0b01011010 | f64.convert_i64_u_floor | convert_i64_u_floor |
91- | 0xFC | 0x5B | 0b01011011 | f64.promote_f32_floor | promote_f32_floor |
92- | 0xFC | 0x60 | 0b01100000 | f32.sqrt_trunc | sqrt_trunc |
93- | 0xFC | 0x61 | 0b01100001 | f32.add_trunc | +_ trunc |
94- | 0xFC | 0x62 | 0b01100010 | f32.sub_trunc | -_ trunc |
95- | 0xFC | 0x63 | 0b01100011 | f32.mul_trunc | * _ trunc |
96- | 0xFC | 0x64 | 0b01100100 | f32.div_trunc | /_ trunc |
97- | 0xFC | 0x65 | 0b01100101 | f64.sqrt_trunc | sqrt_trunc |
98- | 0xFC | 0x66 | 0b01100110 | f64.add_trunc | +_ trunc |
99- | 0xFC | 0x67 | 0b01100111 | f64.sub_trunc | -_ trunc |
100- | 0xFC | 0x68 | 0b01101000 | f64.mul_trunc | * _ trunc |
101- | 0xFC | 0x69 | 0b01101001 | f64.div_trunc | /_ trunc |
102- | 0xFC | 0x72 | 0b01110010 | f32.convert_i32_s_trunc | convert_i32_s_trunc |
103- | 0xFC | 0x73 | 0b01110011 | f32.convert_i32_u_trunc | convert_i32_u_trunc |
104- | 0xFC | 0x74 | 0b01110100 | f32.convert_i64_s_trunc | convert_i64_s_trunc |
105- | 0xFC | 0x75 | 0b01110101 | f32.convert_i64_u_trunc | convert_i64_u_trunc |
106- | 0xFC | 0x76 | 0b01110110 | f32.demote_f64_trunc | demote_f64_trunc |
107- | 0xFC | 0x77 | 0b01110111 | f64.convert_i32_s_trunc | convert_i32_s_trunc |
108- | 0xFC | 0x78 | 0b01111000 | f64.convert_i32_u_trunc | convert_i32_u_trunc |
109- | 0xFC | 0x79 | 0b01111001 | f64.convert_i64_s_trunc | convert_i64_s_trunc |
110- | 0xFC | 0x7A | 0b01111010 | f64.convert_i64_u_trunc | convert_i64_u_trunc |
111- | 0xFC | 0x7B | 0b01111011 | f64.promote_f32_trunc | promote_f32_trunc |
50+ | prefix| opcode| binary | name | pretty string |
51+ | ------| ------| -------------| --- ----------------------| ---------------------|
52+ | 0xFC | 0x80 | 0b1'0000000 | f32.sqrt_ceil | sqrt_ceil |
53+ | 0xFC | 0x81 | 0b1'0000001 | f32.add_ceil | +_ ceil |
54+ | 0xFC | 0x82 | 0b1'0000010 | f32.sub_ceil | -_ ceil |
55+ | 0xFC | 0x83 | 0b1'0000011 | f32.mul_ceil | * _ ceil |
56+ | 0xFC | 0x84 | 0b1'0000100 | f32.div_ceil | /_ ceil |
57+ | 0xFC | 0x85 | 0b1'0000101 | f64.sqrt_ceil | sqrt_ceil |
58+ | 0xFC | 0x86 | 0b1'0000110 | f64.add_ceil | +_ ceil |
59+ | 0xFC | 0x87 | 0b1'0000111 | f64.sub_ceil | -_ ceil |
60+ | 0xFC | 0x88 | 0b1'0001000 | f64.mul_ceil | * _ ceil |
61+ | 0xFC | 0x89 | 0b1'0001001 | f64.div_ceil | /_ ceil |
62+ | 0xFC | 0x8a | 0b1'0001010 | f32.convert_i32_s_ceil | convert_i32_s_ceil |
63+ | 0xFC | 0x8b | 0b1'0001011 | f32.convert_i32_u_ceil | convert_i32_u_ceil |
64+ | 0xFC | 0x8c | 0b1'0001100 | f32.convert_i64_s_ceil | convert_i64_s_ceil |
65+ | 0xFC | 0x8d | 0b1'0001101 | f32.convert_i64_u_ceil | convert_i64_u_ceil |
66+ | 0xFC | 0x8e | 0b1'0001110 | f32.demote_f64_ceil | demote_f64_ceil |
67+ | 0xFC | 0x8f | 0b1'0001111 | f64.convert_i32_s_ceil | convert_i32_s_ceil |
68+ | 0xFC | 0x90 | 0b1'0010000 | f64.convert_i32_u_ceil | convert_i32_u_ceil |
69+ | 0xFC | 0x91 | 0b1'0010001 | f64.convert_i64_s_ceil | convert_i64_s_ceil |
70+ | 0xFC | 0x92 | 0b1'0010010 | f64.convert_i64_u_ceil | convert_i64_u_ceil |
71+ | 0xFC | 0x93 | 0b1'0010011 | f64.promote_f32_ceil | promote_f32_ceil |
72+ | 0xFC | 0x94 | 0b1'0010100 | f32.sqrt_floor | sqrt_floor |
73+ | 0xFC | 0x95 | 0b1'0010101 | f32.add_floor | +_ floor |
74+ | 0xFC | 0x96 | 0b1'0010110 | f32.sub_floor | -_ floor |
75+ | 0xFC | 0x97 | 0b1'0010111 | f32.mul_floor | * _ floor |
76+ | 0xFC | 0x98 | 0b1'0011000 | f32.div_floor | /_ floor |
77+ | 0xFC | 0x99 | 0b1'0011001 | f64.sqrt_floor | sqrt_floor |
78+ | 0xFC | 0x9a | 0b1'0011010 | f64.add_floor | +_ floor |
79+ | 0xFC | 0x9b | 0b1'0011011 | f64.sub_floor | -_ floor |
80+ | 0xFC | 0x9c | 0b1'0011100 | f64.mul_floor | * _ floor |
81+ | 0xFC | 0x9d | 0b1'0011101 | f64.div_floor | /_ floor |
82+ | 0xFC | 0x9e | 0b1'0011110 | f32.convert_i32_s_floor | convert_i32_s_floor |
83+ | 0xFC | 0x9f | 0b1'0011111 | f32.convert_i32_u_floor | convert_i32_u_floor |
84+ | 0xFC | 0xa0 | 0b1'0100000 | f32.convert_i64_s_floor | convert_i64_s_floor |
85+ | 0xFC | 0xa1 | 0b1'0100001 | f32.convert_i64_u_floor | convert_i64_u_floor |
86+ | 0xFC | 0xa2 | 0b1'0100010 | f32.demote_f64_floor | demote_f64_floor |
87+ | 0xFC | 0xa3 | 0b1'0100011 | f64.convert_i32_s_floor | convert_i32_s_floor |
88+ | 0xFC | 0xa4 | 0b1'0100100 | f64.convert_i32_u_floor | convert_i32_u_floor |
89+ | 0xFC | 0xa5 | 0b1'0100101 | f64.convert_i64_s_floor | convert_i64_s_floor |
90+ | 0xFC | 0xa6 | 0b1'0100110 | f64.convert_i64_u_floor | convert_i64_u_floor |
91+ | 0xFC | 0xa7 | 0b1'0100111 | f64.promote_f32_floor | promote_f32_floor |
92+ | 0xFC | 0xa8 | 0b1'0101000 | f32.sqrt_trunc | sqrt_trunc |
93+ | 0xFC | 0xa9 | 0b1'0101001 | f32.add_trunc | +_ trunc |
94+ | 0xFC | 0xaa | 0b1'0101010 | f32.sub_trunc | -_ trunc |
95+ | 0xFC | 0xab | 0b1'0101011 | f32.mul_trunc | * _ trunc |
96+ | 0xFC | 0xac | 0b1'0101100 | f32.div_trunc | /_ trunc |
97+ | 0xFC | 0xad | 0b1'0101101 | f64.sqrt_trunc | sqrt_trunc |
98+ | 0xFC | 0xae | 0b1'0101110 | f64.add_trunc | +_ trunc |
99+ | 0xFC | 0xaf | 0b1'0101111 | f64.sub_trunc | -_ trunc |
100+ | 0xFC | 0xb0 | 0b1'0110000 | f64.mul_trunc | * _ trunc |
101+ | 0xFC | 0xb1 | 0b1'0110001 | f64.div_trunc | /_ trunc |
102+ | 0xFC | 0xb2 | 0b1'0110010 | f32.convert_i32_s_trunc | convert_i32_s_trunc |
103+ | 0xFC | 0xb3 | 0b1'0110011 | f32.convert_i32_u_trunc | convert_i32_u_trunc |
104+ | 0xFC | 0xb4 | 0b1'0110100 | f32.convert_i64_s_trunc | convert_i64_s_trunc |
105+ | 0xFC | 0xb5 | 0b1'0110101 | f32.convert_i64_u_trunc | convert_i64_u_trunc |
106+ | 0xFC | 0xb6 | 0b1'0110110 | f32.demote_f64_trunc | demote_f64_trunc |
107+ | 0xFC | 0xb7 | 0b1'0110111 | f64.convert_i32_s_trunc | convert_i32_s_trunc |
108+ | 0xFC | 0xb8 | 0b1'0111000 | f64.convert_i32_u_trunc | convert_i32_u_trunc |
109+ | 0xFC | 0xb9 | 0b1'0111001 | f64.convert_i64_s_trunc | convert_i64_s_trunc |
110+ | 0xFC | 0xba | 0b1'0111010 | f64.convert_i64_u_trunc | convert_i64_u_trunc |
111+ | 0xFC | 0xbb | 0b1'0111011 | f64.promote_f32_trunc | promote_f32_trunc |
112112
113113## Semantics
114114
0 commit comments