On pre-AVX512 targets we can use MOVMSK to extract reduced boolean results. This is properly optimized, annoyingly AVX512 isn't and produces code that is almost as bad as the (unchanged) costs suggest......
Details
Details
Diff Detail
Diff Detail
- Repository
- rL LLVM
Event Timeline
lib/Target/X86/X86TargetTransformInfo.cpp | ||
---|---|---|
2493 ↗ | (On Diff #194121) | Add a code comment here with the expected lowering? vpmovmskb %xmm, %eax cmpb $IMM, %al |
2502 ↗ | (On Diff #194121) | Similarly: vextractf128 %ymm0, %xmm1, 1 vpand %xmm1, %xmm0, %xmm0 vpmovmskb %xmm0, %eax cmpb $IMM, %al |
2523 ↗ | (On Diff #194121) | Better to make this 'isIntegerTy(1)'? We should not have a vector type here? |
Comment Actions
Use Type::getVectorElementType()->isIntegerTy(1) - reduction types should always be vectors