@@ -20,8 +20,9 @@ The mapping of numeric instructions to their underlying operators is expressed b
20
20
21
21
.. math ::
22
22
\begin {array}{lll@{\qquad }l}
23
- \X {op}_{\K {i}N}(n_1 ,\dots ,n_k) &=& \F {i}\X {op}_N(n_1 ,\dots ,n_k) \\
24
- \X {op}_{\K {f}N}(z_1 ,\dots ,z_k) &=& \F {f}\X {op}_N(z_1 ,\dots ,z_k) \\
23
+ \X {op}_{\IN }(i_1 ,\dots ,i_k) &=& \F {i}\X {op}_N(i_1 ,\dots ,i_k) \\
24
+ \X {op}_{\FN }(z_1 ,\dots ,z_k) &=& \F {f}\X {op}_N(z_1 ,\dots ,z_k) \\
25
+ \X {op}_{\VN }(i_1 ,\dots ,i_k) &=& \F {i}\X {op}_N(i_1 ,\dots ,i_k) \\
25
26
\end {array}
26
27
27
28
And for :ref: `conversion operators <exec-cvtop >`:
@@ -292,14 +293,14 @@ Most vector instructions are defined in terms of generic numeric operators appli
292
293
293
294
2. Pop the value :math: `\V128 .\VCONST ~c_1 ` from the stack.
294
295
295
- 3. Let :math: `c` be the result of computing :math: `\vvunop _{\I 128 }(c_1 )`.
296
+ 3. Let :math: `c` be the result of computing :math: `\vvunop _{\V 128 }(c_1 )`.
296
297
297
298
4. Push the value :math: `\V128 .\VCONST ~c` to the stack.
298
299
299
300
.. math ::
300
301
\begin {array}{lcl@{\qquad }l}
301
302
(\V128 \K {.}\VCONST ~c_1 )~\V128 \K {.}\vvunop &\stepto & (\V128 \K {.}\VCONST ~c)
302
- & (\iff c = \vvunop _{\I 128 }(c_1 )) \\
303
+ & (\iff c = \vvunop _{\V 128 }(c_1 )) \\
303
304
\end {array}
304
305
305
306
@@ -314,14 +315,14 @@ Most vector instructions are defined in terms of generic numeric operators appli
314
315
315
316
3. Pop the value :math: `\V128 .\VCONST ~c_1 ` from the stack.
316
317
317
- 4. Let :math: `c` be the result of computing :math: `\vvbinop _{\I 128 }(c_1 , c_2 )`.
318
+ 4. Let :math: `c` be the result of computing :math: `\vvbinop _{\V 128 }(c_1 , c_2 )`.
318
319
319
320
5. Push the value :math: `\V128 .\VCONST ~c` to the stack.
320
321
321
322
.. math ::
322
323
\begin {array}{lcl@{\qquad }l}
323
324
(\V128 \K {.}\VCONST ~c_1 )~(\V128 \K {.}\VCONST ~c_2 )~\V128 \K {.}\vvbinop &\stepto & (\V128 \K {.}\VCONST ~c)
324
- & (\iff c = \vvbinop _{\I 128 }(c_1 , c_2 )) \\
325
+ & (\iff c = \vvbinop _{\V 128 }(c_1 , c_2 )) \\
325
326
\end {array}
326
327
327
328
@@ -338,14 +339,14 @@ Most vector instructions are defined in terms of generic numeric operators appli
338
339
339
340
4. Pop the value :math: `\V128 .\VCONST ~c_1 ` from the stack.
340
341
341
- 5. Let :math: `c` be the result of computing :math: `\vvternop _{\I 128 }(c_1 , c_2 , c_3 )`.
342
+ 5. Let :math: `c` be the result of computing :math: `\vvternop _{\V 128 }(c_1 , c_2 , c_3 )`.
342
343
343
344
6. Push the value :math: `\V128 .\VCONST ~c` to the stack.
344
345
345
346
.. math ::
346
347
\begin {array}{lcl@{\qquad }l}
347
348
(\V128 \K {.}\VCONST ~c_1 )~(\V128 \K {.}\VCONST ~c_2 )~(\V128 \K {.}\VCONST ~c_3 )~\V128 \K {.}\vvternop &\stepto & (\V128 \K {.}\VCONST ~c)
348
- & (\iff c = \vvternop _{\I 128 }(c_1 , c_2 , c_3 )) \\
349
+ & (\iff c = \vvternop _{\V 128 }(c_1 , c_2 , c_3 )) \\
349
350
\end {array}
350
351
351
352
@@ -379,15 +380,15 @@ Most vector instructions are defined in terms of generic numeric operators appli
379
380
380
381
2. Pop the value :math: `\V128 .\VCONST ~c_2 ` from the stack.
381
382
382
- 3. Let :math: `i^\ast ` be the result of computing :math: `\lanes _{i 8 x 16 }(c_2 )`.
383
+ 3. Let :math: `i^\ast ` be the result of computing :math: `\lanes _{\I 8 X 16 }(c_2 )`.
383
384
384
385
4. Pop the value :math: `\V128 .\VCONST ~c_1 ` from the stack.
385
386
386
- 5. Let :math: `j^\ast ` be the result of computing :math: `\lanes _{i 8 x 16 }(c_1 )`.
387
+ 5. Let :math: `j^\ast ` be the result of computing :math: `\lanes _{\I 8 X 16 }(c_1 )`.
387
388
388
389
6. Let :math: `c^\ast ` be the concatenation of the two sequences :math: `j^\ast ` and :math: `0 ^{240 }`.
389
390
390
- 7. Let :math: `c'` be the result of computing :math: `\lanes ^{-1 }_{i 8 x 16 }(c^\ast [ i^\ast [0 ] ] \dots c^\ast [ i^\ast [15 ] ])`.
391
+ 7. Let :math: `c'` be the result of computing :math: `\lanes ^{-1 }_{\I 8 X 16 }(c^\ast [ i^\ast [0 ] ] \dots c^\ast [ i^\ast [15 ] ])`.
391
392
392
393
8. Push the value :math: `\V128 .\VCONST ~c'` onto the stack.
393
394
@@ -398,9 +399,9 @@ Most vector instructions are defined in terms of generic numeric operators appli
398
399
\end {array}
399
400
\\ \qquad
400
401
\begin {array}[t]{@{}r@{~}l@{}}
401
- (\iff & i^\ast = \lanes _{i 8 x 16 }(c_2 ) \\
402
- \wedge & c^\ast = \lanes _{i 8 x 16 }(c_1 )~0 ^{240 } \\
403
- \wedge & c' = \lanes ^{-1 }_{i 8 x 16 }(c^\ast [ i^\ast [0 ] ] \dots c^\ast [ i^\ast [15 ] ]))
402
+ (\iff & i^\ast = \lanes _{\I 8 X 16 }(c_2 ) \\
403
+ \wedge & c^\ast = \lanes _{\I 8 X 16 }(c_1 )~0 ^{240 } \\
404
+ \wedge & c' = \lanes ^{-1 }_{\I 8 X 16 }(c^\ast [ i^\ast [0 ] ] \dots c^\ast [ i^\ast [15 ] ]))
404
405
\end {array}
405
406
\end {array}
406
407
@@ -416,15 +417,15 @@ Most vector instructions are defined in terms of generic numeric operators appli
416
417
417
418
3. Pop the value :math: `\V128 .\VCONST ~c_2 ` from the stack.
418
419
419
- 4. Let :math: `i_2 ^\ast ` be the result of computing :math: `\lanes _{i 8 x 16 }(c_2 )`.
420
+ 4. Let :math: `i_2 ^\ast ` be the result of computing :math: `\lanes _{\I 8 X 16 }(c_2 )`.
420
421
421
422
5. Pop the value :math: `\V128 .\VCONST ~c_1 ` from the stack.
422
423
423
- 6. Let :math: `i_1 ^\ast ` be the result of computing :math: `\lanes _{i 8 x 16 }(c_1 )`.
424
+ 6. Let :math: `i_1 ^\ast ` be the result of computing :math: `\lanes _{\I 8 X 16 }(c_1 )`.
424
425
425
426
7. Let :math: `i^\ast ` be the concatenation of the two sequences :math: `i_1 ^\ast ` and :math: `i_2 ^\ast `.
426
427
427
- 8. Let :math: `c` be the result of computing :math: `\lanes ^{-1 }_{i 8 x 16 }(i^\ast [x^\ast [0 ]] \dots i^\ast [x^\ast [15 ]])`.
428
+ 8. Let :math: `c` be the result of computing :math: `\lanes ^{-1 }_{\I 8 X 16 }(i^\ast [x^\ast [0 ]] \dots i^\ast [x^\ast [15 ]])`.
428
429
429
430
9. Push the value :math: `\V128 .\VCONST ~c` onto the stack.
430
431
@@ -435,8 +436,8 @@ Most vector instructions are defined in terms of generic numeric operators appli
435
436
\end {array}
436
437
\\ \qquad
437
438
\begin {array}[t]{@{}r@{~}l@{}}
438
- (\iff & i^\ast = \lanes _{i 8 x 16 }(c_1 )~\lanes _{i 8 x 16 }(c_2 ) \\
439
- \wedge & c = \lanes ^{-1 }_{i 8 x 16 }(i^\ast [x^\ast [0 ]] \dots i^\ast [x^\ast [15 ]]))
439
+ (\iff & i^\ast = \lanes _{\I 8 X 16 }(c_1 )~\lanes _{\I 8 X 16 }(c_2 ) \\
440
+ \wedge & c = \lanes ^{-1 }_{\I 8 X 16 }(i^\ast [x^\ast [0 ]] \dots i^\ast [x^\ast [15 ]]))
440
441
\end {array}
441
442
\end {array}
442
443
@@ -1820,7 +1821,7 @@ Memory Instructions
1820
1821
1821
1822
13. Let :math: `n_k` be the result of computing :math: `\extend ^{\sx }_{M,W}(m_k)`.
1822
1823
1823
- 14. Let :math: `c` be the result of computing :math: `\lanes ^{-1 }_{\X {i}W\K {x}N}(n_0 \dots n_{N-1 })`.
1824
+ 14. Let :math: `c` be the result of computing :math: `\lanes ^{-1 }_{\K {i}W\K {x}N}(n_0 \dots n_{N-1 })`.
1824
1825
1825
1826
15. Push the value :math: `\V128 .\CONST ~c` to the stack.
1826
1827
@@ -1837,7 +1838,7 @@ Memory Instructions
1837
1838
\wedge & \X {ea} + M \cdot N / 8 \leq |S.\SMEMS [F.\AMODULE .\MIMEMS [0 ]].\MIDATA | \\
1838
1839
\wedge & \bytes _{\iM }(m_k) = S.\SMEMS [F.\AMODULE .\MIMEMS [0 ]].\MIDATA [\X {ea} + k \cdot M/8 \slice M/8 ] \\
1839
1840
\wedge & W = M \cdot 2 \\
1840
- \wedge & c = \lanes ^{-1 }_{\X {i}W\K {x}N}(\extend ^{\sx }_{M,W}(m_0 ) \dots \extend ^{\sx }_{M,W}(m_{N-1 })))
1841
+ \wedge & c = \lanes ^{-1 }_{\K {i}W\K {x}N}(\extend ^{\sx }_{M,W}(m_0 ) \dots \extend ^{\sx }_{M,W}(m_{N-1 })))
1841
1842
\end {array}
1842
1843
\\[ 1 ex]
1843
1844
\begin {array}{lcl@{\qquad }l}
@@ -1879,7 +1880,7 @@ Memory Instructions
1879
1880
1880
1881
12. Let :math: `L` be the integer :math: `128 / N`.
1881
1882
1882
- 13. Let :math: `c` be the result of computing :math: `\lanes ^{-1 }_{\iN \K {x}L}(n^L)`.
1883
+ 13. Let :math: `c` be the result of computing :math: `\lanes ^{-1 }_{\IN \K {x}L}(n^L)`.
1883
1884
1884
1885
14. Push the value :math: `\V128 .\CONST ~c` to the stack.
1885
1886
@@ -1894,7 +1895,7 @@ Memory Instructions
1894
1895
(\iff & \X {ea} = i + \memarg .\OFFSET \\
1895
1896
\wedge & \X {ea} + N/8 \leq |S.\SMEMS [F.\AMODULE .\MIMEMS [0 ]].\MIDATA | \\
1896
1897
\wedge & \bytes _{\iN }(n) = S.\SMEMS [F.\AMODULE .\MIMEMS [0 ]].\MIDATA [\X {ea} \slice N/8 ] \\
1897
- \wedge & c = \lanes ^{-1 }_{\iN \K {x}L}(n^L))
1898
+ \wedge & c = \lanes ^{-1 }_{\IN \K {x}L}(n^L))
1898
1899
\end {array}
1899
1900
\\[ 1 ex]
1900
1901
\begin {array}{lcl@{\qquad }l}
@@ -1995,9 +1996,9 @@ Memory Instructions
1995
1996
1996
1997
14. Let :math: `L` be :math: `128 / N`.
1997
1998
1998
- 15. Let :math: `j^\ast ` be the result of computing :math: `\lanes _{\K {i}N \K {x}L}(v)`.
1999
+ 15. Let :math: `j^\ast ` be the result of computing :math: `\lanes _{\IN \K {x}L}(v)`.
1999
2000
2000
- 16. Let :math: `c` be the result of computing :math: `\lanes ^{-1 }_{\K {i}N \K {x}L}(j^\ast \with [x] = r)`.
2001
+ 16. Let :math: `c` be the result of computing :math: `\lanes ^{-1 }_{\IN \K {x}L}(j^\ast \with [x] = r)`.
2001
2002
2002
2003
17. Push the value :math: `\V128 .\CONST ~c` to the stack.
2003
2004
@@ -2013,7 +2014,7 @@ Memory Instructions
2013
2014
\wedge & \X {ea} + N/8 \leq |S.\SMEMS [F.\AMODULE .\MIMEMS [0 ]].\MIDATA | \\
2014
2015
\wedge & \bytes _{\iN }(r) = S.\SMEMS [F.\AMODULE .\MIMEMS [0 ]].\MIDATA [\X {ea} \slice N/8 ] \\
2015
2016
\wedge & L = 128 /N \\
2016
- \wedge & c = \lanes ^{-1 }_{\K {i}N \K {x}L}(\lanes _{\K {i}N \K {x}L}(v) \with [x] = r))
2017
+ \wedge & c = \lanes ^{-1 }_{\IN \K {x}L}(\lanes _{\IN \K {x}L}(v) \with [x] = r))
2017
2018
\end {array}
2018
2019
\\[ 1 ex]
2019
2020
\begin {array}{lcl@{\qquad }l}
@@ -2132,7 +2133,7 @@ Memory Instructions
2132
2133
2133
2134
12. Let :math: `L` be :math: `128 /N`.
2134
2135
2135
- 13. Let :math: `j^\ast ` be the result of computing :math: `\lanes _{\K {i}N \K {x}L}(c)`.
2136
+ 13. Let :math: `j^\ast ` be the result of computing :math: `\lanes _{\IN \K {x}L}(c)`.
2136
2137
2137
2138
14. Let :math: `b^\ast ` be the result of computing :math: `\bytes _{\iN }(j^\ast [x])`.
2138
2139
@@ -2149,7 +2150,7 @@ Memory Instructions
2149
2150
(\iff & \X {ea} = i + \memarg .\OFFSET \\
2150
2151
\wedge & \X {ea} + N \leq |S.\SMEMS [F.\AMODULE .\MIMEMS [0 ]].\MIDATA | \\
2151
2152
\wedge & L = 128 /N \\
2152
- \wedge & S' = S \with \SMEMS [F.\AMODULE .\MIMEMS [0 ]].\MIDATA [\X {ea} \slice N/8 ] = \bytes _{\iN }(\lanes _{\K {i}N \K {x}L}(c)[x]))
2153
+ \wedge & S' = S \with \SMEMS [F.\AMODULE .\MIMEMS [0 ]].\MIDATA [\X {ea} \slice N/8 ] = \bytes _{\iN }(\lanes _{\IN \K {x}L}(c)[x]))
2153
2154
\end {array}
2154
2155
\\[ 1 ex]
2155
2156
\begin {array}{lcl@{\qquad }l}
0 commit comments