Closed
Description
#![crate_type = "lib"]
use std::arch::x86_64::*;
pub unsafe fn f(a: __m256i) -> u32 {
_mm256_movemask_epi8(a).trailing_zeros()
}
$ rustc a.rs -Zmir-opt-level=2 -C target-cpu=generic
SplitVectorOperand Op #1: t7: i32 = llvm.x86.avx2.pmovmskb TargetConstant:i64<6950>, t6
LLVM ERROR: Do not know how to split this operator's operand!
This looks like an interaction between MIR inliner and #[target_feature(...)]
.
Most likely inlining shouldn't take place in-between functions with incompatible target features.