[all-commits] [llvm/llvm-project] ce9633: [GlobalISel][AArch64] Fix contract cross-bank copi...
Shu-Chun Weng via All-commits
all-commits at lists.llvm.org
Wed Feb 5 10:45:42 PST 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: ce9633633c07045068d202cc225dbf2deb7e4e8b
https://github.com/llvm/llvm-project/commit/ce9633633c07045068d202cc225dbf2deb7e4e8b
Author: Shu-Chun Weng <scw at google.com>
Date: 2020-02-05 (Wed, 05 Feb 2020)
Changed paths:
M llvm/include/llvm/CodeGen/GlobalISel/Utils.h
M llvm/lib/CodeGen/GlobalISel/Utils.cpp
M llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp
M llvm/test/CodeGen/AArch64/GlobalISel/contract-store.mir
Log Message:
-----------
[GlobalISel][AArch64] Fix contract cross-bank copies with SIMD instructions
contractCrossBankCopyIntoStore() finds the instruction defines the
source register and uses its output to replace the register. There are,
however, instructions that have multiple outputs, e.g. G_UNMERGE_VALUES.
Current implementation hardcodes to operand 0 and has no way of knowing
which output should be used.
This change adds another function to directly return the register that
is the source of the register and use that for folding.
This fixes https://bugs.llvm.org/show_bug.cgi?id=44783
Differential Revision: https://reviews.llvm.org/D74005
More information about the All-commits
mailing list