Given that some instructions generate wider result elements than their inputs, flag them as being able to generate non zeros in the false lanes.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
A few irrelevant nits inlined, but also one question about the test.
llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp | ||
---|---|---|
530 | nit: this is absolutely fine of course, but you do have a little helper function just below this function for the similar RetainsPreviousHalfElement MI description. Perhaps a bit more consistent to add this as a helper too, and that would nicely cluster these helpers. | |
539 | Nit: probably better to just remove these commented out cases, and mention these opcodes in the FIXME, so that also the FIXME becomes a bit more descriptive. | |
541 | Nit: now that we have more classes of instructions that don't respect the lane values, the double width instructions added above, can you comment what's "wrong" with the opcodes below. | |
llvm/test/CodeGen/Thumb2/LowOverheadLoops/vaddv.mir | ||
754 | Do we need to test some other opcodes too that have been marked as DoubleWidth? Like MVE_VSHLL, VMOVL, VQDMULL? Or is this perhaps already tested elsewhere? |
Cheers, with some nits addressed this looks good.
llvm/test/CodeGen/Thumb2/LowOverheadLoops/vaddv.mir | ||
---|---|---|
754 | Ah yeah, somehow I keep forgetting these unit tests. |
nit: this is absolutely fine of course, but you do have a little helper function just below this function for the similar RetainsPreviousHalfElement MI description. Perhaps a bit more consistent to add this as a helper too, and that would nicely cluster these helpers.