[PATCH] D74336: [ARM,MVE] Add the vmovlbq,vmovltq intrinsic family.
Simon Tatham via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 10 08:56:08 PST 2020
simon_tatham created this revision.
simon_tatham added reviewers: dmgreen, miyuki, MarkMurrayARM, ostannard.
Herald added subscribers: llvm-commits, cfe-commits, hiraditya, kristof.beyls.
Herald added projects: clang, LLVM.
These intrinsics take a vector of 2n elements, and return a vector of
n wider elements obtained by sign- or zero-extending every other
element of the input vector. They're represented in IR as a
shufflevector that extracts the odd or even elements of the input,
followed by a sext or zext.
Existing LLVM codegen already matches this pattern and generates the
VMOVLB instruction (which widens the even-index input lanes). But no
existing isel rule was generating VMOVLT, so I've added some. However,
the new rules currently only work in little-endian MVE, because the
pattern they expect from isel lowering includes a bitconvert which
doesn't have the right semantics in big-endian.
The output of one existing codegen test is improved by those new
rules.
This commit adds the unpredicated forms only.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D74336
Files:
clang/include/clang/Basic/arm_mve.td
clang/include/clang/Basic/arm_mve_defs.td
clang/lib/CodeGen/CGBuiltin.cpp
clang/test/CodeGen/arm-mve-intrinsics/vmovl.c
llvm/lib/Target/ARM/ARMInstrMVE.td
llvm/test/CodeGen/Thumb2/mve-intrinsics/vmovl.ll
llvm/test/CodeGen/Thumb2/mve-shuffleext.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D74336.243585.patch
Type: text/x-patch
Size: 13139 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200210/c0875b03/attachment.bin>
More information about the llvm-commits
mailing list