Skip to content

Commit 670ae7e

Browse files
committed
[spec] Tweak format of changes list
1 parent 04a39c5 commit 670ae7e

File tree

1 file changed

+170
-37
lines changed

1 file changed

+170
-37
lines changed

document/core/appendix/changes.rst

Lines changed: 170 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ Sign extension instructions
1717

1818
Added new numeric instructions for performing sign extension within integer representations [#proposal-signext]_.
1919

20-
* New :ref:`numeric instructions <syntax-instr-numeric>`: :math:`\K{i}\X{nn}\K{.}\EXTEND\X{N}\K{\_s}`
20+
* New :ref:`numeric instructions <syntax-instr-numeric>`:
21+
22+
- :math:`\K{i}\X{nn}\K{.}\EXTEND\X{N}\K{\_s}`
2123

2224

2325
.. index:: instruction, trap, floating-point, integer
@@ -27,7 +29,9 @@ Non-trapping float-to-int conversions
2729

2830
Added new conversion instructions that avoid trapping when converting a floating-point number to an integer [#proposal-cvtsat]_.
2931

30-
* New :ref:`numeric instructions <syntax-instr-numeric>`: :math:`\K{i}\X{nn}\K{.}\TRUNC\K{\_sat\_f}\X{mm}\K{\_}\sx`
32+
* New :ref:`numeric instructions <syntax-instr-numeric>`:
33+
34+
- :math:`\K{i}\X{nn}\K{.}\TRUNC\K{\_sat\_f}\X{mm}\K{\_}\sx`
3135

3236

3337
.. index:: block, function, value type, result type
@@ -49,11 +53,20 @@ Reference types
4953

5054
Added |FUNCREF| and |EXTERNREF| as new value types and respective instructions [#proposal-reftype]_.
5155

52-
* New :ref:`value types <syntax-valtype>`: :ref:`reference types <syntax-reftype>` |FUNCREF| and |EXTERNREF|
56+
* New :ref:`reference <syntax-reftype>` :ref:`value types <syntax-valtype>`:
57+
58+
- |FUNCREF|
59+
- |EXTERNREF|
5360

54-
* New :ref:`reference instructions <syntax-instr-ref>`: |REFNULL|, |REFFUNC|, |REFISNULL|
61+
* New :ref:`reference instructions <syntax-instr-ref>`:
5562

56-
* Enrich :ref:`parametric instruction <syntax-instr-parametric>`: |SELECT| with optional type immediate
63+
- |REFNULL|
64+
- |REFFUNC|
65+
- |REFISNULL|
66+
67+
* Enrich :ref:`parametric instruction <syntax-instr-parametric>`:
68+
69+
- |SELECT| with optional type immediate
5770

5871
* New :ref:`declarative <syntax-elemmode>` form of :ref:`element segment <syntax-elem>`
5972

@@ -67,7 +80,12 @@ Added instructions to directly access and modify tables [#proposal-reftype]_.
6780

6881
* :ref:`Table types <syntax-tabletype>` allow any :ref:`reference type <syntax-reftype>` as element type
6982

70-
* New :ref:`table instructions <syntax-instr-table>`: |TABLEGET|, |TABLESET|, |TABLESIZE|, |TABLEGROW|
83+
* New :ref:`table instructions <syntax-instr-table>`:
84+
85+
- |TABLEGET|
86+
- |TABLESET|
87+
- |TABLESIZE|
88+
- |TABLEGROW|
7189

7290

7391
.. index:: table, instruction, table index, element segment
@@ -77,9 +95,19 @@ Multiple tables
7795

7896
Added the ability to use multiple tables per module [#proposal-reftype]_.
7997

80-
* :ref:`Modules <syntax-module>` may :ref:`define <syntax-table>`, :ref:`import <syntax-import>`, and :ref:`export <syntax-export>` multiple tables
98+
* :ref:`Modules <syntax-module>` may
8199

82-
* :ref:`Table instructions <syntax-instr-table>` take a :ref:`table index <syntax-tableidx>` immediate: |TABLEGET|, |TABLESET|, |TABLESIZE|, |TABLEGROW|, |CALLINDIRECT|
100+
- :ref:`define <syntax-table>` multiple tables
101+
- :ref:`import <syntax-import>` multiple tables
102+
- :ref:`export <syntax-export>` multiple tables
103+
104+
* :ref:`Table instructions <syntax-instr-table>` take a :ref:`table index <syntax-tableidx>` immediate:
105+
106+
- |TABLEGET|
107+
- |TABLESET|
108+
- |TABLESIZE|
109+
- |TABLEGROW|
110+
- |CALLINDIRECT|
83111

84112
* :ref:`Element segments <syntax-elem>` take a :ref:`table index <syntax-tableidx>`
85113

@@ -91,9 +119,19 @@ Bulk memory and table instructions
91119

92120
Added instructions that modify ranges of memory or table entries [#proposal-reftype]_ [#proposal-bulk]_
93121

94-
* New :ref:`memory instructions <syntax-instr-memory>`: |MEMORYFILL|, |MEMORYINIT|, |MEMORYCOPY|, |DATADROP|
122+
* New :ref:`memory instructions <syntax-instr-memory>`:
123+
124+
- |MEMORYFILL|
125+
- |MEMORYINIT|
126+
- |MEMORYCOPY|
127+
- |DATADROP|
95128

96-
* New :ref:`table instructions <syntax-instr-table>`: |TABLEFILL|, |TABLEINIT|, |TABLECOPY|, |ELEMDROP|
129+
* New :ref:`table instructions <syntax-instr-table>`:
130+
131+
- |TABLEFILL|
132+
- |TABLEINIT|
133+
- |TABLECOPY|
134+
- |ELEMDROP|
97135

98136
* New :ref:`passive <syntax-datamode>` form of :ref:`data segment <syntax-data>`
99137

@@ -109,33 +147,128 @@ Added instructions that modify ranges of memory or table entries [#proposal-reft
109147
Vector instructions
110148
...................
111149

112-
Added vector type and instructions that manipulate multiple numeric values in parallel (also known as *SIMD*, single instruction multiple data) [#proposal-vectype]_
113-
114-
* New :ref:`value type <syntax-valtype>`: |V128|
115-
116-
* New :ref:`memory instructions <syntax-instr-memory>`: :math:`\K{v128.}\LOAD`, :math:`\K{v128.}\LOAD{}\!N\!\K{x}\!M\!\K{\_}\sx`, :math:`\K{v128.}\LOAD{}N\K{\_zero}`, :math:`\K{v128.}\LOAD{}N\K{\_splat}`, :math:`\K{v128.}\LOAD{}N\K{\_lane}`, :math:`\K{v128.}\STORE`, :math:`\K{v128.}\STORE{}N\K{\_lane}`
117-
118-
* New constant :ref:`vector instruction <syntax-instr-vec>`: :math:`\K{v128.}\VCONST`
119-
120-
* New unary :ref:`vector instructions <syntax-instr-vec>`: :math:`\K{v128.not}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.abs}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.neg}`, :math:`\K{i8x16.popcnt}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.abs}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.neg}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.sqrt}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.ceil}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.floor}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.trunc}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.nearest}`
121-
122-
* New binary :ref:`vector instructions <syntax-instr-vec>`: :math:`\K{v128.and}`, :math:`\K{v128.andnot}`, :math:`\K{v128.or}`, :math:`\K{v128.xor}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.add}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.sub}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.mul}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.add\_sat\_}\sx`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.sub\_sat\_}\sx`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.min\_}\sx`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.max\_}\sx`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.shl}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.shr\_}\sx`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.add}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.extmul\_}\half\K{\_i}\!N'\!\K{x}\!M'\!\K{\_}\sx`, :math:`\K{i16x8.q15mulr\_sat\_s}`, :math:`\K{i32x4.dot\_i16x8\_s}`, :math:`\K{i16x8.extadd\_pairwise\_i8x16\_}\sx`, :math:`\K{i32x4.extadd\_pairwise\_i16x8\_}\sx`, :math:`\K{i8x16.avgr\_u}`, :math:`\K{i16x8.avgr\_u}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.sub}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.mul}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.div}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.min}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.max}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.pmin}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.pmax}`
123-
124-
* New ternary :ref:`vector instruction <syntax-instr-vec>`: :math:`\K{v128.bitselect}`
125-
126-
* New test :ref:`vector instructions <syntax-instr-vec>`: :math:`\K{v128.any\_true}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.all\_true}`
127-
128-
* New relational :ref:`vector instructions <syntax-instr-vec>`: :math:`\K{i}\!N\!\K{x}\!M\!\K{.eq}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.ne}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.lt\_}\sx`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.gt\_}\sx`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.le\_}\sx`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.ge\_}\sx`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.eq}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.ne}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.lt}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.gt}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.le}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.ge}`
129-
130-
* New conversion :ref:`vector instructions <syntax-instr-vec>`::math:`\K{i32x4.trunc\_sat\_f32x4\_}\sx`, :math:`\K{i32x4.trunc\_sat\_f64x2\_}\sx\K{\_zero}`, :math:`\K{f32x4.convert\_i32x4\_}\sx`, :math:`\K{f32x4.demote\_f64x2\_zero}`, :math:`\K{f64x2.convert\_low\_i32x4\_}\sx`, :math:`\K{f64x2.promote\_low\_f32x4}`
131-
132-
* New lane access :ref:`vector instructions <syntax-instr-vec>`: :math:`\K{i}\!N\!\K{x}\!M\!\K{.extract\_lane\_}\sx^?`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.replace\_lane}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.extract\_lane}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.replace\_lane}`
133-
134-
* New lane splitting/combining :ref:`vector instructions <syntax-instr-vec>`: :math:`\K{i}\!N\!\K{x}\!M\!\K{.extend\_}\half\K{\_i}\!N'\!\K{x}\!M'\!\K{\_}\sx`, :math:`\K{i8x16.narrow\_i16x8\_}\sx`, :math:`\K{i16x8.narrow\_i32x4\_}\sx`
135-
136-
* New byte reordering :ref:`vector instructions <syntax-instr-vec>`: :math:`\K{i8x16.shuffle}`, :math:`\K{i8x16.swizzle}`
137-
138-
* New injection/projection :ref:`vector instructions <syntax-instr-vec>`: :math:`\K{i}\!N\!\K{x}\!M\!\K{.splat}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.splat}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.bitmask}`
150+
Added vector type and instructions that manipulate multiple numeric values in parallel
151+
(also known as *SIMD*, single instruction multiple data) [#proposal-vectype]_
152+
153+
* New :ref:`value type <syntax-valtype>`:
154+
155+
- |V128|
156+
157+
* New :ref:`memory instructions <syntax-instr-memory>`:
158+
159+
- :math:`\K{v128.}\LOAD`
160+
- :math:`\K{v128.}\LOAD{}\!N\!\K{x}\!M\!\K{\_}\sx`
161+
- :math:`\K{v128.}\LOAD{}N\K{\_zero}`
162+
- :math:`\K{v128.}\LOAD{}N\K{\_splat}`
163+
- :math:`\K{v128.}\LOAD{}N\K{\_lane}`
164+
- :math:`\K{v128.}\STORE`
165+
- :math:`\K{v128.}\STORE{}N\K{\_lane}`
166+
167+
* New constant :ref:`vector instruction <syntax-instr-vec>`:
168+
169+
- :math:`\K{v128.}\VCONST`
170+
171+
* New unary :ref:`vector instructions <syntax-instr-vec>`:
172+
173+
- :math:`\K{v128.not}`
174+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.abs}`
175+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.neg}`
176+
- :math:`\K{i8x16.popcnt}`
177+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.abs}`
178+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.neg}`
179+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.sqrt}`
180+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.ceil}`
181+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.floor}`
182+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.trunc}`
183+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.nearest}`
184+
185+
* New binary :ref:`vector instructions <syntax-instr-vec>`:
186+
187+
- :math:`\K{v128.and}`
188+
- :math:`\K{v128.andnot}`
189+
- :math:`\K{v128.or}`
190+
- :math:`\K{v128.xor}`
191+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.add}`
192+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.sub}`
193+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.mul}`
194+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.add\_sat\_}\sx`
195+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.sub\_sat\_}\sx`
196+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.min\_}\sx`
197+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.max\_}\sx`
198+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.shl}`
199+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.shr\_}\sx`
200+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.add}`
201+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.sub}`
202+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.mul}`
203+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.div}`
204+
- :math:`\K{i16x8.extadd\_pairwise\_i8x16\_}\sx`
205+
- :math:`\K{i32x4.extadd\_pairwise\_i16x8\_}\sx`
206+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.extmul\_}\half\K{\_i}\!N'\!\K{x}\!M'\!\K{\_}\sx`
207+
- :math:`\K{i16x8.q15mulr\_sat\_s}`
208+
- :math:`\K{i32x4.dot\_i16x8\_s}`
209+
- :math:`\K{i8x16.avgr\_u}`
210+
- :math:`\K{i16x8.avgr\_u}`
211+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.min}`
212+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.max}`
213+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.pmin}`
214+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.pmax}`
215+
216+
* New ternary :ref:`vector instruction <syntax-instr-vec>`:
217+
218+
- :math:`\K{v128.bitselect}`
219+
220+
* New test :ref:`vector instructions <syntax-instr-vec>`:
221+
222+
- :math:`\K{v128.any\_true}`
223+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.all\_true}`
224+
225+
* New relational :ref:`vector instructions <syntax-instr-vec>`:
226+
227+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.eq}`
228+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.ne}`
229+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.lt\_}\sx`
230+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.gt\_}\sx`
231+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.le\_}\sx`
232+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.ge\_}\sx`
233+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.eq}`
234+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.ne}`
235+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.lt}`
236+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.gt}`
237+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.le}`
238+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.ge}`
239+
240+
* New conversion :ref:`vector instructions <syntax-instr-vec>`:
241+
242+
- :math:`\K{i32x4.trunc\_sat\_f32x4\_}\sx`
243+
- :math:`\K{i32x4.trunc\_sat\_f64x2\_}\sx\K{\_zero}`
244+
- :math:`\K{f32x4.convert\_i32x4\_}\sx`
245+
- :math:`\K{f32x4.demote\_f64x2\_zero}`
246+
- :math:`\K{f64x2.convert\_low\_i32x4\_}\sx`
247+
- :math:`\K{f64x2.promote\_low\_f32x4}`
248+
249+
* New lane access :ref:`vector instructions <syntax-instr-vec>`:
250+
251+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.extract\_lane\_}\sx^?`
252+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.replace\_lane}`
253+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.extract\_lane}`
254+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.replace\_lane}`
255+
256+
* New lane splitting/combining :ref:`vector instructions <syntax-instr-vec>`:
257+
258+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.extend\_}\half\K{\_i}\!N'\!\K{x}\!M'\!\K{\_}\sx`
259+
- :math:`\K{i8x16.narrow\_i16x8\_}\sx`
260+
- :math:`\K{i16x8.narrow\_i32x4\_}\sx`
261+
262+
* New byte reordering :ref:`vector instructions <syntax-instr-vec>`:
263+
264+
- :math:`\K{i8x16.shuffle}`
265+
- :math:`\K{i8x16.swizzle}`
266+
267+
* New injection/projection :ref:`vector instructions <syntax-instr-vec>`:
268+
269+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.splat}`
270+
- :math:`\K{f}\!N\!\K{x}\!M\!\K{.splat}`
271+
- :math:`\K{i}\!N\!\K{x}\!M\!\K{.bitmask}`
139272

140273

141274
.. [#proposal-signext]

0 commit comments

Comments
 (0)