diff options
| author | Craig Topper <craig.topper@intel.com> | 2017-09-09 05:57:20 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2017-09-09 05:57:20 +0000 |
| commit | 6bed9de3d538d63b7df39807e14782fd297a1e7e (patch) | |
| tree | 9877d8e9ec301ed7aa34e4e41f94f0b7111c5ab3 /llvm/lib/Target/PowerPC/PPCTargetObjectFile.h | |
| parent | 63c5047a4ecbd03c23356978d6f85e26e81fe07b (diff) | |
| download | bcm5719-llvm-6bed9de3d538d63b7df39807e14782fd297a1e7e.tar.gz bcm5719-llvm-6bed9de3d538d63b7df39807e14782fd297a1e7e.zip | |
[X86] Call removeDeadNode when we're done doing custom isel for mul, div and test
Summary:
Once we've done our custom isel for these nodes, I think we should be calling removeDeadNode to prune them out of the DAG. Table driven isel ultimately either calls morphNodeTo which modifies a node and doesn't leave dead nodes. Or it emits new nodes and then calls removeDeadNode as part of Opc_CompleteMatch.
If you run a simple multiply test case like this through llc with -debug you'll see a umul_lohi node get printed as part of the dump for Instruction Selection ends.
```
define i64 @foo(i64 %a, i64 %b) local_unnamed_addr #0 {
entry:
%conv = zext i64 %a to i128
%conv1 = zext i64 %b to i128
%mul = mul nuw nsw i128 %conv1, %conv
%shr = lshr i128 %mul, 64
%conv2 = trunc i128 %shr to i64
ret i64 %conv2
}
```
Reviewers: RKSimon, spatel, zvi, guyblank, niravd
Reviewed By: niravd
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D37547
llvm-svn: 312857
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCTargetObjectFile.h')
0 files changed, 0 insertions, 0 deletions

