[X86] Improve llvm.get.active.lane.mask codegen
- Dominant language
- LLVM
- Stars
- 40.5k
- Forks
- 18.7k
- PR merge metrics
- PR metrics pending
Description
As discussed here: https://github.com/llvm/llvm-project/pull/212710#discussion_r3955969096
Current x86 codegen here: #221978 + https://github.com/llvm/llvm-project/blob/main/llvm/test/CodeGen/X86/active_lane_mask.ll
X86 currently always expands Intrinsic::get_active_lane_mask into a SPLAT/UADDSAT/SETCC sequence in SelectionDAGBuilder::visitIntrinsicCall.
But as its little endian and only ever deals with fixed vector types, there's potential to expand as a (vXi1 (bitcast iX (shl))) sequence instead - combineToExtendBoolVectorInReg is pretty good at handling this.
This might be worth performing in TargetLowering to allow other targets to use it in the future - and help keep it as generic as possible.
Contributor guide
Assessment
This issue has not been assessed yet.