[all-commits] [llvm/llvm-project] 3122c6: [AArch64][SVE] Remove chains of unnecessary SVE re...
Joe Ellis via All-commits
all-commits at lists.llvm.org
Wed Jan 13 01:49:47 PST 2021
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 3122c66aee7b709046753873c4e94db73742b3de
https://github.com/llvm/llvm-project/commit/3122c66aee7b709046753873c4e94db73742b3de
Author: Joe Ellis <joe.ellis at arm.com>
Date: 2021-01-13 (Wed, 13 Jan 2021)
Changed paths:
M llvm/lib/Target/AArch64/SVEIntrinsicOpts.cpp
M llvm/test/CodeGen/AArch64/sve-intrinsic-opts-reinterpret.ll
Log Message:
-----------
[AArch64][SVE] Remove chains of unnecessary SVE reinterpret intrinsics
This commit extends SVEIntrinsicOpts::optimizeConvertFromSVBool to
identify and remove longer chains of redundant SVE reintepret
intrinsics. For example, the following chain of redundant SVE
reinterprets is now recognised as redundant:
%a = <vscale x 2 x i1>
%1 = <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool(<vscale x 2 x i1> %a)
%2 = <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool(<vscale x 16 x i1> %1)
%3 = <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool(<vscale x 4 x i1> %2)
%4 = <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool(<vscale x 16 x i1> %3)
%5 = <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool(<vscale x 4 x i1> %4)
%6 = <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool(<vscale x 16 x i1> %5)
ret <vscale x 2 x i1> %6
and will be replaced with:
ret <vscale x 2 x i1> %a
Eliminating these can sometimes mean emitting fewer unnecessary
loads/stores when lowering to assembly.
Differential Revision: https://reviews.llvm.org/D94074
More information about the All-commits
mailing list