diff options
author | Dominik Montada <dominik.montada@hightec-rt.com> | 2020-03-23 12:30:55 +0100 |
---|---|---|
committer | Dominik Montada <dominik.montada@hightec-rt.com> | 2020-04-08 11:00:07 +0200 |
commit | 35950fea8d4f175d04aa27e5e0350e28bef36429 (patch) | |
tree | bcf93058a77ef282fc1ef6ab149f10532ac48288 /llvm/tools/llvm-objdump/llvm-objdump.cpp | |
parent | 2a6eedbb51fd612d3386b0379938036b17511ae0 (diff) | |
download | llvm-35950fea8d4f175d04aa27e5e0350e28bef36429.zip llvm-35950fea8d4f175d04aa27e5e0350e28bef36429.tar.gz llvm-35950fea8d4f175d04aa27e5e0350e28bef36429.tar.bz2 |
[GlobalISel] support narrow G_IMPLICIT_DEF for DstSize % NarrowSize != 0
Summary:
When narrowing G_IMPLICIT_DEF where the original size is not a multiple
of the narrow size, emit a smaller G_IMPLICIT_DEF and use G_ANYEXT.
To prevent a potential endless loop in the legalizer, the condition
to combine G_ANYEXT(G_IMPLICIT_DEF) is changed from isInstUnsupported
to !isInstLegal, since in this case the combine is only valid if
consequent legalization of the newly combined G_IMPLICIT_DEF does not
introduce G_ANYEXT due to narrowing.
Although this legalization for G_IMPLICIT_DEF would also be valid for
the general case, it actually caused a lot of code regressions when
tried due to superfluous COPYs and combines not getting hit anymore.
Reviewers: dsanders, aemerson, volkan, arsenm, aditya_nandakumar
Reviewed By: arsenm
Subscribers: jvesely, nhaehnle, kerbowa, wdng, rovka, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D76598
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
0 files changed, 0 insertions, 0 deletions