summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorSimon Tatham <simon.tatham@arm.com>2019-12-11 12:07:16 +0000
committerSimon Tatham <simon.tatham@arm.com>2019-12-11 12:07:26 +0000
commitd290424731ede31fd5fd75b929df8fe0adb547c7 (patch)
treee330c03a8673f9884918574a7213e4373ac89cea /clang/lib/CodeGen/CodeGenModule.cpp
parent9a5c849991fd4088b90c56cb402e6e9fa6e9141d (diff)
downloadbcm5719-llvm-d290424731ede31fd5fd75b929df8fe0adb547c7.tar.gz
bcm5719-llvm-d290424731ede31fd5fd75b929df8fe0adb547c7.zip
[ARM][MVE] Factor out an IntrinsicMX multiclass.
Summary: The ACLE intrinsics for MVE contain a lot of pairs of functions with `_m` and `_x` in the name, wrapping a predicated MVE instruction which only partially overwrites its output register. They have the common pattern that the `_m` variant takes an initial argument called 'inactive', of the same type as the return value, supplying the input value of the output register, so that lanes disabled by the predication will be taken from that parameter; the `_x` variant omits that initial argument, and simply sets it to undef. That common pattern is simple enough to wrap into a multiclass, which should save a lot of effort in setting up all the rest of the `_x` variants. In this commit I introduce `multiclass IntrinsicMX` in `arm_mve_defs.td`, and convert existing generation of m/x pairs to use it. This allows me to remove the `PredicatedImmediateVectorShift` multiclass (from D71065) completely, because the new multiclass makes it so much simpler that it's not worth bothering to define it at all. Reviewers: MarkMurrayARM, miyuki Reviewed By: MarkMurrayARM, miyuki Subscribers: kristof.beyls, dmgreen, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D71335
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud