packed_simd icon indicating copy to clipboard operation
packed_simd copied to clipboard

`vec::bitmask` produces incorrect results for 16-bit, 32-bit, and 64-bit wide vectors on mips, mips64, sparc64, and s390x.

Open gnzlbg opened this issue 6 years ago • 2 comments

vec::bitmask produces incorrect results for 16-bit, 32-bit, and 64-bit wide vectors on mips and mips64 (both big endian), sparc64, and s390x.


Error msg:

---- v16::i8x2_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `2`,
 right: `1`', src/v16.rs:5:1
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
---- v16::m8x2_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `2`,
 right: `1`', src/v16.rs:13:1
---- v16::u8x2_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `2`,
 right: `1`', src/v16.rs:9:1
---- v32::i16x2_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `2`,
 right: `1`', src/v32.rs:18:1
---- v32::i8x4_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `10`,
 right: `5`', src/v32.rs:5:1
---- v32::m16x2_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `2`,
 right: `1`', src/v32.rs:26:1
---- v32::m8x4_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `10`,
 right: `5`', src/v32.rs:13:1
---- v32::u16x2_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `2`,
 right: `1`', src/v32.rs:22:1
---- v32::u8x4_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `10`,
 right: `5`', src/v32.rs:9:1
---- v64::i16x4_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `10`,
 right: `5`', src/v64.rs:18:1
---- v64::i32x2_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `2`,
 right: `1`', src/v64.rs:31:1
---- v64::i8x8_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `170`,
 right: `85`', src/v64.rs:5:1
---- v64::m16x4_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `10`,
 right: `5`', src/v64.rs:26:1
---- v64::m32x2_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `2`,
 right: `1`', src/v64.rs:39:1
---- v64::m8x8_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `170`,
 right: `85`', src/v64.rs:13:1
---- v64::u16x4_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `10`,
 right: `5`', src/v64.rs:22:1
---- v64::u32x2_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `2`,
 right: `1`', src/v64.rs:35:1
---- v64::u8x8_bitmask::bitmask stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `170`,
 right: `85`', src/v64.rs:9:1
failures:
    v16::i8x2_bitmask::bitmask
    v16::m8x2_bitmask::bitmask
    v16::u8x2_bitmask::bitmask
    v32::i16x2_bitmask::bitmask
    v32::i8x4_bitmask::bitmask
    v32::m16x2_bitmask::bitmask
    v32::m8x4_bitmask::bitmask
    v32::u16x2_bitmask::bitmask
    v32::u8x4_bitmask::bitmask
    v64::i16x4_bitmask::bitmask
    v64::i32x2_bitmask::bitmask
    v64::i8x8_bitmask::bitmask
    v64::m16x4_bitmask::bitmask
    v64::m32x2_bitmask::bitmask
    v64::m8x8_bitmask::bitmask
    v64::u16x4_bitmask::bitmask
    v64::u32x2_bitmask::bitmask
    v64::u8x8_bitmask::bitmask

gnzlbg avatar Jan 31 '19 16:01 gnzlbg

Also fails on PPC[0] and ppc64[1], ppc64le passes and fails on PartialOrd.

[0] https://travis-ci.com/mati865/ppv/jobs/180334233 [1] https://travis-ci.com/mati865/ppv/jobs/180334234

mati865 avatar Feb 26 '19 11:02 mati865

I don't have any concrete evidence yet, but I wonder if this may be what caused https://github.com/jonhoo/arrav/issues/1 too. Although I don't use bitmask specifically, so maybe not? Still new to all this SIMD terminology :)

jonhoo avatar Apr 04 '20 23:04 jonhoo