Closed
Description
I have some code using ndarray
dot products, which in turn calls matrixmultiply::sgemm
or dgemm
, and these trap when built with cranelift. Here's a reproducer:
cargo-features = ["codegen-backend"]
[package]
name = "dot"
edition = "2021"
[dependencies]
ndarray = "0.15.6"
[profile.dev]
codegen-backend = "cranelift"
#[test]
fn dot_f32() {
let matrix = ndarray::Array2::<f32>::eye(10);
let _ = matrix.dot(&matrix);
}
#[test]
fn dot_f64() {
let matrix = ndarray::Array2::<f64>::eye(10);
let _ = matrix.dot(&matrix);
}
$ cargo test
...
running 2 tests
trap at Instance { def: Item(DefId(2:14266 ~ core[53bd]::core_arch::x86::avx::_mm256_permute2f128_pd)), args: [3_i32] } (_ZN4core9core_arch3x863avx22_mm256_permute2f128_pd17h1ce919b2c8bdf956E): llvm.x86.avx.vperm2f128.pd.256
trap at Instance { def: Item(DefId(2:14264 ~ core[53bd]::core_arch::x86::avx::_mm256_permute2f128_ps)), args: [3_i32] } (_ZN4core9core_arch3x863avx22_mm256_permute2f128_ps17h5d0d25c7962691b9E): llvm.x86.avx.vperm2f128.ps.256