From b2f7a4c9a63ac179fa3e87cfb5987ed66bcfcd94 Mon Sep 17 00:00:00 2001 From: Marat Dukhan Date: Tue, 10 Sep 2019 10:31:18 -0700 Subject: [PATCH] ANDNOT operation --- proposals/simd/BinarySIMD.md | 1 + proposals/simd/ImplementationStatus.md | 1 + proposals/simd/SIMD.md | 6 ++++++ 3 files changed, 8 insertions(+) diff --git a/proposals/simd/BinarySIMD.md b/proposals/simd/BinarySIMD.md index bf973cf21..19766a5ac 100644 --- a/proposals/simd/BinarySIMD.md +++ b/proposals/simd/BinarySIMD.md @@ -189,3 +189,4 @@ The `v8x16.shuffle` instruction has 16 bytes after `simdop`. | `i32x4.load16x4_u` | `0xd5`| m:memarg | | `i64x2.load32x2_s` | `0xd6`| m:memarg | | `i64x2.load32x2_u` | `0xd7`| m:memarg | +| `v128.andnot` | `0xd8`| - | diff --git a/proposals/simd/ImplementationStatus.md b/proposals/simd/ImplementationStatus.md index 12be744f5..eecc5292a 100644 --- a/proposals/simd/ImplementationStatus.md +++ b/proposals/simd/ImplementationStatus.md @@ -71,6 +71,7 @@ | `f64x2.ge` | `-munimplemented-simd128` | | :heavy_check_mark: | :heavy_check_mark: | | `v128.not` | `-msimd128` | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | `v128.and` | `-msimd128` | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| `v128.andnot` | | | | | | `v128.or` | `-msimd128` | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | `v128.xor` | `-msimd128` | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | `v128.bitselect` | `-msimd128` | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | diff --git a/proposals/simd/SIMD.md b/proposals/simd/SIMD.md index 35984004c..6768aba8b 100644 --- a/proposals/simd/SIMD.md +++ b/proposals/simd/SIMD.md @@ -521,6 +521,12 @@ The logical operations defined on the scalar integer types are also available on the `v128` type where they operate bitwise the same way C's `&`, `|`, `^`, and `~` operators work on an `unsigned` type. +### Bitwise AND-NOT + +* `v128.andnot(a: v128, b: v128) -> v128` + +Bitwise AND of bits of `a` and the logical inverse of bits of `b`. This operation is equivalent to `v128.and(a, v128.not(b))`. + ### Bitwise select * `v128.bitselect(v1: v128, v2: v128, c: v128) -> v128`