[GlobalISel] Support for inlining memcpy, memset and memmove calls.
authorAmara Emerson <aemerson@apple.com>
Wed, 24 Jul 2019 22:17:31 +0000 (22:17 +0000)
committerAmara Emerson <aemerson@apple.com>
Wed, 24 Jul 2019 22:17:31 +0000 (22:17 +0000)
commit13af1ed8e37c3f53b4dbd03f7c40b069d4895087
tree2b005088e9b02aa4743ac52ce5b94cf34a99c6ab
parenteb6782758a54f200a1a5e531bef28192833d2584
[GlobalISel] Support for inlining memcpy, memset and memmove calls.

This introduces a new family of combiner helper routines that re-use the
target specific cost model from SelectionDAG, and generate inline implementations
of the memcpy family of intrinsics.

The combines are only enabled at optimization levels higher than -O0, and give
very substantial performance improvements.

Differential Revision: https://reviews.llvm.org/D65167

llvm-svn: 366951
llvm/include/llvm/CodeGen/GlobalISel/CombinerHelper.h
llvm/include/llvm/CodeGen/GlobalISel/CombinerInfo.h
llvm/include/llvm/CodeGen/TargetLowering.h
llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.h
llvm/lib/Target/AArch64/AArch64PreLegalizerCombiner.cpp
llvm/lib/Target/Mips/MipsPreLegalizerCombiner.cpp
llvm/test/CodeGen/AArch64/GlobalISel/inline-memcpy.mir [new file with mode: 0644]
llvm/test/CodeGen/AArch64/GlobalISel/inline-memmove.mir [new file with mode: 0644]
llvm/test/CodeGen/AArch64/GlobalISel/inline-memset.mir [new file with mode: 0644]