Closed
Description
Full repro here:
https://github.com/danielrh/simd_playground run with cargo test --release
failing test is here:
#![feature(stdsimd)]
mod test {
#[test]
fn baseline() {
use std::simd::*;
let symbol = 2i16;
let inc = 1i16;
let data = i16x16::new(4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64);
let one_to_16 = i16x16::new(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
let increment_v = i16x16::splat(inc);
let mask_v = unsafe {
::std::arch::x86_64::_mm256_cmpgt_epi16(::std::arch::x86_64::__m256i::from_bits(one_to_16),
::std::arch::x86_64::__m256i::from_bits(i16x16::splat(i16::from(symbol))))
};
let output = data + (increment_v & i16x16::from_bits(mask_v));
let mut xfinal = [0i16; 16];
output.store_unaligned(&mut xfinal);
assert_eq!(xfinal, [4, 8, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65]);
}
}
using:
binary: rustc
commit-hash: ac3c2288f9f9d977acb46406ba60033d65165a7b
commit-date: 2018-04-18
host: x86_64-apple-darwin
release: 1.27.0-nightly
LLVM version: 6.0
on OSX 10.12.6 (16G1314)
and also on linux
rustc --verbose --version
rustc 1.27.0-nightly (ac3c2288f 2018-04-18)
binary: rustc
commit-hash: ac3c2288f9f9d977acb46406ba60033d65165a7b
commit-date: 2018-04-18
host: x86_64-unknown-linux-gnu
release: 1.27.0-nightly
LLVM version: 6.0
I was unable to reproduce the above problem by making a simple main with the above function, so it could be something to do with the build options.
One more note: the same exact test and code have been working for months with stdsimd 0.0.3 and 0.0.4 crate. I couldn't get that crate to build with nightly 1.27.0, so I couldn't see if it still worked.