[PATCH] D76023: [ARM] Sink splats to vector float instructions
Dave Green via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 11 13:35:30 PDT 2020
dmgreen created this revision.
dmgreen added reviewers: SjoerdMeijer, simon_tatham, samparker, ostannard.
Herald added subscribers: hiraditya, kristof.beyls.
Herald added a project: LLVM.
Some MVE floating point instruction have gpr register variants that take the scalar gpr value and splat them to all lanes. In order to accept them in loops, the shuffle_vector and insert need to be sunk down into the loop, next to the instruction so that ISel can see the whole pattern.
This does that sinking for FAdd, FSub, FMul and FCmp. The patterns for mul are slightly more constrained as there are no fms variants taking register arguments.
This on it's own can leave extra MOV instructions in the loops as they are not pulled out by MachineLICM. This will be addressed in a followup.
https://reviews.llvm.org/D76023
Files:
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/test/CodeGen/Thumb2/mve-floatregloops.ll
llvm/test/CodeGen/Thumb2/mve-pred-threshold.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D76023.249738.patch
Type: text/x-patch
Size: 20196 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200311/47a5293b/attachment.bin>
More information about the llvm-commits
mailing list