From 7ae800607fe7c7b72e14040da2aec813d79a84d3 Mon Sep 17 00:00:00 2001 From: Marat Dukhan Date: Mon, 21 Oct 2019 11:17:37 -0700 Subject: [PATCH] Pseudo-Minimum and Pseudo-Maximum instructions --- proposals/simd/BinarySIMD.md | 4 ++++ proposals/simd/SIMD.md | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/proposals/simd/BinarySIMD.md b/proposals/simd/BinarySIMD.md index 6699e7c61..3031eac20 100644 --- a/proposals/simd/BinarySIMD.md +++ b/proposals/simd/BinarySIMD.md @@ -197,6 +197,8 @@ For example, `ImmLaneIdx16` is a byte with values in the range 0-15 (inclusive). | `f32x4.div` | `0xe7`| - | | `f32x4.min` | `0xe8`| - | | `f32x4.max` | `0xe9`| - | +| `f32x4.pmin` | `0xea`| - | +| `f32x4.pmax` | `0xeb`| - | | `f64x2.abs` | `0xec`| - | | `f64x2.neg` | `0xed`| - | | `f64x2.sqrt` | `0xef`| - | @@ -206,6 +208,8 @@ For example, `ImmLaneIdx16` is a byte with values in the range 0-15 (inclusive). | `f64x2.div` | `0xf3`| - | | `f64x2.min` | `0xf4`| - | | `f64x2.max` | `0xf5`| - | +| `f64x2.pmin` | `0xf6`| - | +| `f64x2.pmax` | `0xf7`| - | | `i32x4.trunc_sat_f32x4_s` | `0xf8`| - | | `i32x4.trunc_sat_f32x4_u` | `0xf9`| - | | `f32x4.convert_i32x4_s` | `0xfa`| - | diff --git a/proposals/simd/SIMD.md b/proposals/simd/SIMD.md index 27cbb2eaa..84a1e338e 100644 --- a/proposals/simd/SIMD.md +++ b/proposals/simd/SIMD.md @@ -867,6 +867,18 @@ Lane-wise minimum value, propagating NaNs. Lane-wise maximum value, propagating NaNs. +### Pseudo-minimum +* `f32x4.pmin(a: v128, b: v128) -> v128` +* `f64x2.pmin(a: v128, b: v128) -> v128` + +Lane-wise minimum value, defined as `b < a ? b : a`. + +### Pseudo-maximum +* `f32x4.pmax(a: v128, b: v128) -> v128` +* `f64x2.pmax(a: v128, b: v128) -> v128` + +Lane-wise maximum value, defined as `a < b ? b : a`. + ## Floating-point arithmetic The floating-point arithmetic operations are all lane-wise versions of the