[llvm-bugs] [Bug 41433] New: Some 2-vector vector select identity shuffles may be better represented as moves
via llvm-bugs
llvm-bugs at lists.llvm.org
Mon Apr 8 13:41:12 PDT 2019
https://bugs.llvm.org/show_bug.cgi?id=41433
Bug ID: 41433
Summary: Some 2-vector vector select identity shuffles may be
better represented as moves
Product: libraries
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: Common Code Generator Code
Assignee: unassignedbugs at nondot.org
Reporter: lebedev.ri at gmail.com
CC: llvm-bugs at lists.llvm.org
Split off from https://bugs.llvm.org/show_bug.cgi?id=41429
https://godbolt.org/z/_n1ggH
void example(__m256i * __restrict__ dest, const __m256i * __restrict__ a) {
(*dest)[2] = (*a)[2];
(*dest)[3] = (*a)[3];
}
Here we do not ever touch the low half of dest, and replace the high part
of dest with high part of `a`.
The naive asm could be:
vmovaps ymm0, ymmword ptr [rdi]
vblendps ymm0, ymm0, ymmword ptr [rsi], 240 # ymm0 =
ymm0[0,1,2,3],mem[4,5,6,7]
vmovaps ymmword ptr [rdi], ymm0
vzeroupper
But we can also produce:
vmovaps xmm0, xmmword ptr [rsi + 16]
vmovaps xmmword ptr [rdi + 16], xmm0
I'm not quite sure what are the exact criteria when that is profitable to do
though.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20190408/e81d6223/attachment.html>
More information about the llvm-bugs
mailing list