summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorDaniel Sanders <daniel_l_sanders@apple.com>2017-04-04 13:25:23 +0000
committerDaniel Sanders <daniel_l_sanders@apple.com>2017-04-04 13:25:23 +0000
commitbee5739a7c76b4a9f993e83f95edc61614fab446 (patch)
tree69adf5b907d2b136cdce797f257346177cc9e0ff /clang/lib/Frontend/CompilerInvocation.cpp
parentbcbfdade4115f47511f60c029b9010d5959f6781 (diff)
downloadbcm5719-llvm-bee5739a7c76b4a9f993e83f95edc61614fab446.tar.gz
bcm5719-llvm-bee5739a7c76b4a9f993e83f95edc61614fab446.zip
[tablegen][globalisel] Add support for nested instruction matching.
Summary: Lift the restrictions that prevented the tree walking introduced in the previous change and add support for patterns like: (G_ADD (G_MUL (G_SEXT $src1), (G_SEXT $src2)), $src3) -> SMADDWrrr $dst, $src1, $src2, $src3 Also adds support for G_SEXT and G_ZEXT to support these cases. One particular aspect of this that I should draw attention to is that I've tried to be overly conservative in determining the safety of matches that involve non-adjacent instructions and multiple basic blocks. This is intended to be used as a cheap initial check and we may add a more expensive check in the future. The current rules are: * Reject if any instruction may load/store (we'd need to check for intervening memory operations. * Reject if any instruction has implicit operands. * Reject if any instruction has unmodelled side-effects. See isObviouslySafeToFold(). Reviewers: t.p.northover, javed.absar, qcolombet, aditya_nandakumar, ab, rovka Reviewed By: ab Subscribers: igorb, dberris, llvm-commits, kristof.beyls Differential Revision: https://reviews.llvm.org/D30539 llvm-svn: 299430
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud