llvm-project
57c40b76 - [SelectionDAG] Soft promote the element operand of INSERT_VECTOR_ELT (#223612)

Commit
4 days ago
[SelectionDAG] Soft promote the element operand of INSERT_VECTOR_ELT (#223612) When f16/bf16 is soft promoted but a vector of that type is legal, INSERT_VECTOR_ELT is left with a soft promoted i16 element operand. SoftPromoteHalfOperand had no case for it and failed with "Do not know how to soft promote this operator's operand!". Legalize it like BUILD_VECTOR and the inverse EXTRACT_VECTOR_ELT: bitcast the vector to its integer counterpart, insert the promoted element there and bitcast the result back. This also covers scalable vectors. This is reachable on MIPS MSA and on RISC-V with Zvfhmin/Zvfbfmin but without Zfhmin/Zfbfmin. X86, Hexagon and WebAssembly avoid it by custom lowering INSERT_VECTOR_ELT on the scalar type; that still takes precedence and can be removed separately. Fixes https://github.com/llvm/llvm-project/issues/198104. Assisted-by: Claude Code
Author
Parents
Loading