diff options
author | Daniel Sanders <daniel_l_sanders@apple.com> | 2019-12-18 12:26:31 +0000 |
---|---|---|
committer | Daniel Sanders <daniel_l_sanders@apple.com> | 2019-12-18 12:27:29 +0000 |
commit | 55c57408b0e70b188b0505e011172f13ec3b15fc (patch) | |
tree | 137b85ff4e965e637afecf416b4f5a07d37eb6e3 /llvm/lib/Target | |
parent | 1f3dd83cc1f2b8f72b9d59e2b4221b12fb7f9a95 (diff) | |
download | bcm5719-llvm-55c57408b0e70b188b0505e011172f13ec3b15fc.tar.gz bcm5719-llvm-55c57408b0e70b188b0505e011172f13ec3b15fc.zip |
[gicombiner] Add support for arbitrary match data being passed from match to apply
Summary:
This is used by the extending_loads combine to tell the apply step which
use is the preferred one to fold and the other uses should be re-written
to consume.
Depends on D69117
Reviewers: volkan, bogner
Reviewed By: volkan
Subscribers: hiraditya, Petar.Avramovic, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69147
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64PreLegalizerCombiner.cpp | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64PreLegalizerCombiner.cpp b/llvm/lib/Target/AArch64/AArch64PreLegalizerCombiner.cpp index d30ea120bae..0956930e2e8 100644 --- a/llvm/lib/Target/AArch64/AArch64PreLegalizerCombiner.cpp +++ b/llvm/lib/Target/AArch64/AArch64PreLegalizerCombiner.cpp @@ -62,20 +62,6 @@ bool AArch64PreLegalizerCombinerInfo::combine(GISelChangeObserver &Observer, CombinerHelper Helper(Observer, B, KB, MDT); switch (MI.getOpcode()) { - case TargetOpcode::G_CONCAT_VECTORS: - return Helper.tryCombineConcatVectors(MI); - case TargetOpcode::G_SHUFFLE_VECTOR: - return Helper.tryCombineShuffleVector(MI); - case TargetOpcode::G_LOAD: - case TargetOpcode::G_SEXTLOAD: - case TargetOpcode::G_ZEXTLOAD: { - bool Changed = false; - Changed |= Helper.tryCombineExtendingLoads(MI); - Changed |= Helper.tryCombineIndexedLoadStore(MI); - return Changed; - } - case TargetOpcode::G_STORE: - return Helper.tryCombineIndexedLoadStore(MI); case TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS: switch (MI.getIntrinsicID()) { case Intrinsic::memcpy: @@ -96,6 +82,18 @@ bool AArch64PreLegalizerCombinerInfo::combine(GISelChangeObserver &Observer, if (Generated.tryCombineAll(Observer, MI, B)) return true; + switch (MI.getOpcode()) { + case TargetOpcode::G_CONCAT_VECTORS: + return Helper.tryCombineConcatVectors(MI); + case TargetOpcode::G_SHUFFLE_VECTOR: + return Helper.tryCombineShuffleVector(MI); + case TargetOpcode::G_LOAD: + case TargetOpcode::G_SEXTLOAD: + case TargetOpcode::G_ZEXTLOAD: + case TargetOpcode::G_STORE: + return Helper.tryCombineIndexedLoadStore(MI); + } + return false; } |