Skip to content

Commit 1ab7239

Browse files
committed
[spectext] Add {f32x4,f64x2}.{pmin,pmax}
We added these instructions to the syntax in WebAssembly#353, this adds them to the other sections, numerics, text, binary.
1 parent 7c43e09 commit 1ab7239

File tree

6 files changed

+56
-4
lines changed

6 files changed

+56
-4
lines changed

document/core/appendix/gen-index-instructions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,8 @@ def Instruction(name, opcode, type=None, validation=None, execution=None, operat
510510
Instruction(r'\F32X4.\VDIV', r'\hex{FD}~~231', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-fdiv'),
511511
Instruction(r'\F32X4.\VMIN', r'\hex{FD}~~232', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-fmin'),
512512
Instruction(r'\F32X4.\VMAX', r'\hex{FD}~~233', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-fmax'),
513+
Instruction(r'\F32X4.\VPMIN', r'\hex{FD}~~234', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-fpmin'),
514+
Instruction(r'\F32X4.\VPMAX', r'\hex{FD}~~235', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-fpmax'),
513515
Instruction(r'\F64X2.\VABS', r'\hex{FD}~~236', r'[\V128] \to [\V128]', r'valid-vunop', r'exec-vunop', r'op-fabs'),
514516
Instruction(r'\F64X2.\VNEG', r'\hex{FD}~~237', r'[\V128] \to [\V128]', r'valid-vunop', r'exec-vunop', r'op-fneg'),
515517
Instruction(r'\F64X2.\VSQRT', r'\hex{FD}~~239', r'[\V128] \to [\I32]', r'valid-vunop', r'exec-vunop', r'op-fsqrt'),
@@ -518,6 +520,8 @@ def Instruction(name, opcode, type=None, validation=None, execution=None, operat
518520
Instruction(r'\F64X2.\VMUL', r'\hex{FD}~~242', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-fmul'),
519521
Instruction(r'\F64X2.\VDIV', r'\hex{FD}~~243', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-fdiv'),
520522
Instruction(r'\F64X2.\VMIN', r'\hex{FD}~~244', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-fmin'),
523+
Instruction(r'\F64X2.\VPMIN', r'\hex{FD}~~245', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-fpmin'),
524+
Instruction(r'\F64X2.\VPMAX', r'\hex{FD}~~246', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-fpmax'),
521525
Instruction(r'\F64X2.\VMAX', r'\hex{FD}~~245', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-fmax'),
522526
Instruction(r'\I32X4.\TRUNC\K{\_sat\_f32x4\_s}', r'\hex{FD}~~248', r'[\V128] \to [\V128]', r'valid-vunop', r'exec-vunop', r'op-trunc_sat_s'),
523527
Instruction(r'\I32X4.\TRUNC\K{\_sat\_f32x4\_u}', r'\hex{FD}~~249', r'[\V128] \to [\V128]', r'valid-vunop', r'exec-vunop', r'op-trunc_sat_u'),

document/core/appendix/index-instructions.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,8 @@ Instruction Binary Opcode Type
458458
:math:`\F32X4.\VDIV` :math:`\hex{FD}~~231` :math:`[\V128~\V128] \to [\V128]` :ref:`validation <valid-vbinop>` :ref:`execution <exec-vbinop>`, :ref:`operator <op-fdiv>`
459459
:math:`\F32X4.\VMIN` :math:`\hex{FD}~~232` :math:`[\V128~\V128] \to [\V128]` :ref:`validation <valid-vbinop>` :ref:`execution <exec-vbinop>`, :ref:`operator <op-fmin>`
460460
:math:`\F32X4.\VMAX` :math:`\hex{FD}~~233` :math:`[\V128~\V128] \to [\V128]` :ref:`validation <valid-vbinop>` :ref:`execution <exec-vbinop>`, :ref:`operator <op-fmax>`
461+
:math:`\F32X4.\VPMIN` :math:`\hex{FD}~~234` :math:`[\V128~\V128] \to [\V128]` :ref:`validation <valid-vbinop>` :ref:`execution <exec-vbinop>`, :ref:`operator <op-fpmin>`
462+
:math:`\F32X4.\VPMAX` :math:`\hex{FD}~~235` :math:`[\V128~\V128] \to [\V128]` :ref:`validation <valid-vbinop>` :ref:`execution <exec-vbinop>`, :ref:`operator <op-fpmax>`
461463
:math:`\F64X2.\VABS` :math:`\hex{FD}~~236` :math:`[\V128] \to [\V128]` :ref:`validation <valid-vunop>` :ref:`execution <exec-vunop>`, :ref:`operator <op-fabs>`
462464
:math:`\F64X2.\VNEG` :math:`\hex{FD}~~237` :math:`[\V128] \to [\V128]` :ref:`validation <valid-vunop>` :ref:`execution <exec-vunop>`, :ref:`operator <op-fneg>`
463465
:math:`\F64X2.\VSQRT` :math:`\hex{FD}~~239` :math:`[\V128] \to [\I32]` :ref:`validation <valid-vunop>` :ref:`execution <exec-vunop>`, :ref:`operator <op-fsqrt>`
@@ -466,6 +468,8 @@ Instruction Binary Opcode Type
466468
:math:`\F64X2.\VMUL` :math:`\hex{FD}~~242` :math:`[\V128~\V128] \to [\V128]` :ref:`validation <valid-vbinop>` :ref:`execution <exec-vbinop>`, :ref:`operator <op-fmul>`
467469
:math:`\F64X2.\VDIV` :math:`\hex{FD}~~243` :math:`[\V128~\V128] \to [\V128]` :ref:`validation <valid-vbinop>` :ref:`execution <exec-vbinop>`, :ref:`operator <op-fdiv>`
468470
:math:`\F64X2.\VMIN` :math:`\hex{FD}~~244` :math:`[\V128~\V128] \to [\V128]` :ref:`validation <valid-vbinop>` :ref:`execution <exec-vbinop>`, :ref:`operator <op-fmin>`
471+
:math:`\F64X2.\VPMIN` :math:`\hex{FD}~~245` :math:`[\V128~\V128] \to [\V128]` :ref:`validation <valid-vbinop>` :ref:`execution <exec-vbinop>`, :ref:`operator <op-fpmin>`
472+
:math:`\F64X2.\VPMAX` :math:`\hex{FD}~~246` :math:`[\V128~\V128] \to [\V128]` :ref:`validation <valid-vbinop>` :ref:`execution <exec-vbinop>`, :ref:`operator <op-fpmax>`
469473
:math:`\F64X2.\VMAX` :math:`\hex{FD}~~245` :math:`[\V128~\V128] \to [\V128]` :ref:`validation <valid-vbinop>` :ref:`execution <exec-vbinop>`, :ref:`operator <op-fmax>`
470474
:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_s}` :math:`\hex{FD}~~248` :math:`[\V128] \to [\V128]` :ref:`validation <valid-vunop>` :ref:`execution <exec-vunop>`, :ref:`operator <op-trunc_sat_s>`
471475
:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_u}` :math:`\hex{FD}~~249` :math:`[\V128] \to [\V128]` :ref:`validation <valid-vunop>` :ref:`execution <exec-vunop>`, :ref:`operator <op-trunc_sat_u>`

document/core/binary/instructions.rst

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -720,7 +720,9 @@ All other SIMD instructions are plain opcodes without any immediates.
720720
\hex{FD}~~230{:}\Bu32 &\Rightarrow& \F32X4.\VMUL \\ &&|&
721721
\hex{FD}~~231{:}\Bu32 &\Rightarrow& \F32X4.\VDIV \\ &&|&
722722
\hex{FD}~~232{:}\Bu32 &\Rightarrow& \F32X4.\VMIN \\ &&|&
723-
\hex{FD}~~233{:}\Bu32 &\Rightarrow& \F32X4.\VMAX \\
723+
\hex{FD}~~233{:}\Bu32 &\Rightarrow& \F32X4.\VMAX \\ &&|&
724+
\hex{FD}~~234{:}\Bu32 &\Rightarrow& \F32X4.\VPMIN \\ &&|&
725+
\hex{FD}~~235{:}\Bu32 &\Rightarrow& \F32X4.\VPMAX \\
724726
\end{array}
725727
726728
.. math::
@@ -734,7 +736,9 @@ All other SIMD instructions are plain opcodes without any immediates.
734736
\hex{FD}~~242{:}\Bu32 &\Rightarrow& \F64X2.\VMUL \\ &&|&
735737
\hex{FD}~~243{:}\Bu32 &\Rightarrow& \F64X2.\VDIV \\ &&|&
736738
\hex{FD}~~244{:}\Bu32 &\Rightarrow& \F64X2.\VMIN \\ &&|&
737-
\hex{FD}~~245{:}\Bu32 &\Rightarrow& \F64X2.\VMAX \\
739+
\hex{FD}~~245{:}\Bu32 &\Rightarrow& \F64X2.\VMAX \\ &&|&
740+
\hex{FD}~~245{:}\Bu32 &\Rightarrow& \F64X2.\VPMIN \\ &&|&
741+
\hex{FD}~~246{:}\Bu32 &\Rightarrow& \F64X2.\VPMAX \\
738742
\end{array}
739743
740744
.. math::

document/core/exec/numerics.rst

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1664,6 +1664,38 @@ This non-deterministic result is expressed by the following auxiliary function p
16641664
\end{array}
16651665
16661666
1667+
.. _op-fpmin:
1668+
1669+
:math:`\fpmin_N(z_1, z_2)`
1670+
..........................
1671+
1672+
* If :math:`z_2` is less than :math:`z_1` then return :math:`z_2`.
1673+
1674+
* Else return :math:`z_1`.
1675+
1676+
.. math::
1677+
\begin{array}{@{}lcll}
1678+
\fpmin_N(z_1, z_2) &=& z_2 & (\iff \flt_N(z_2, z_1) = 1) \\
1679+
\fpmin_N(z_1, z_2) &=& z_1 & (\otherwise)
1680+
\end{array}
1681+
1682+
1683+
.. _op-fpmax:
1684+
1685+
:math:`\fpmax_N(z_1, z_2)`
1686+
..........................
1687+
1688+
* If :math:`z_1` is less than :math:`z_2` then return :math:`z_2`.
1689+
1690+
* Else return :math:`z_1`.
1691+
1692+
.. math::
1693+
\begin{array}{@{}lcll}
1694+
\fpmax_N(z_1, z_2) &=& z_2 & (\iff \flt_N(z_1, z_2) = 1) \\
1695+
\fpmax_N(z_1, z_2) &=& z_1 & (\otherwise)
1696+
\end{array}
1697+
1698+
16671699
.. _convert-ops:
16681700

16691701
Conversions

document/core/text/instructions.rst

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,9 @@ SIMD const instructions have a mandatory :ref:`shape <syntax-simd-shape>` descri
754754
\text{f32x4.mul} &\Rightarrow& \F32X4.\VMUL\\ &&|&
755755
\text{f32x4.div} &\Rightarrow& \F32X4.\VDIV\\ &&|&
756756
\text{f32x4.min} &\Rightarrow& \F32X4.\VMIN\\ &&|&
757-
\text{f32x4.max} &\Rightarrow& \F32X4.\VMAX\\
757+
\text{f32x4.max} &\Rightarrow& \F32X4.\VMAX\\ &&|&
758+
\text{f32x4.pmin} &\Rightarrow& \F32X4.\VPMIN\\ &&|&
759+
\text{f32x4.pmax} &\Rightarrow& \F32X4.\VPMAX\\
758760
\end{array}
759761
760762
.. math::
@@ -768,7 +770,9 @@ SIMD const instructions have a mandatory :ref:`shape <syntax-simd-shape>` descri
768770
\text{f64x2.mul} &\Rightarrow& \F64X2.\VMUL\\ &&|&
769771
\text{f64x2.div} &\Rightarrow& \F64X2.\VDIV\\ &&|&
770772
\text{f64x2.min} &\Rightarrow& \F64X2.\VMIN\\ &&|&
771-
\text{f64x2.max} &\Rightarrow& \F64X2.\VMAX\\
773+
\text{f64x2.max} &\Rightarrow& \F64X2.\VMAX\\ &&|&
774+
\text{f64x2.pmin} &\Rightarrow& \F64X2.\VPMIN\\ &&|&
775+
\text{f64x2.pmax} &\Rightarrow& \F64X2.\VPMAX\\
772776
\end{array}
773777
774778
.. math::

document/core/util/macros.def

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,8 @@
420420
.. |VDIV| mathdef:: \xref{syntax/instructions}{syntax-instr-simd}{\K{div}}
421421
.. |VMIN| mathdef:: \xref{syntax/instructions}{syntax-instr-simd}{\K{min}}
422422
.. |VMAX| mathdef:: \xref{syntax/instructions}{syntax-instr-simd}{\K{max}}
423+
.. |VPMIN| mathdef:: \xref{syntax/instructions}{syntax-instr-simd}{\K{pmin}}
424+
.. |VPMAX| mathdef:: \xref{syntax/instructions}{syntax-instr-simd}{\K{pmax}}
423425
.. |NARROW| mathdef:: \xref{syntax/instructions}{syntax-instr-simd}{\K{narrow}}
424426
.. |WIDEN| mathdef:: \xref{syntax/instructions}{syntax-instr-simd}{\K{widen}}
425427
.. |AVGR| mathdef:: \xref{syntax/instructions}{syntax-instr-simd}{\K{avgr}}
@@ -1054,6 +1056,8 @@
10541056
.. |fgt| mathdef:: \xref{exec/numerics}{op-fgt}{\F{fgt}}
10551057
.. |fle| mathdef:: \xref{exec/numerics}{op-fle}{\F{fle}}
10561058
.. |fge| mathdef:: \xref{exec/numerics}{op-fge}{\F{fge}}
1059+
.. |fpmin| mathdef:: \xref{exec/numerics}{op-fpmin}{\F{fpmin}}
1060+
.. |fpmax| mathdef:: \xref{exec/numerics}{op-fpmax}{\F{fpmax}}
10571061

10581062
.. |extend| mathdef:: \xref{exec/numerics}{op-extend_u}{\F{extend}}
10591063
.. |extendu| mathdef:: \xref{exec/numerics}{op-extend_u}{\F{extend}^{\K{u}}}

0 commit comments

Comments
 (0)