llvm-project
1034bb57 - [AArch64] Use SVE to materialise some 128-bit vector constants (#159101)

Commit
14 hours ago
[AArch64] Use SVE to materialise some 128-bit vector constants (#159101) There is no easy way to materialise some fixed-width vector constants with 64-bit elements. This is because NEON's movi instruction is restricted to setting all bits in a byte to the same value, i.e. 0xFF can be encoded as an immediate but not 0x1F. However, if SVE is available we can use the dup instruction to cover more cases. Rather than lower the immediate directly using the dup instruction, I've instead used the generic SPLAT_VECTOR node in combination with an EXTRACT_SUBVECTOR. This is because we already have SVE splat_vector patterns that can match directly to dup.
Author
Parents
Loading