diff options
| author | Piotr Sobczak <piotr.sobczak@amd.com> | 2019-04-05 07:44:09 +0000 |
|---|---|---|
| committer | Piotr Sobczak <piotr.sobczak@amd.com> | 2019-04-05 07:44:09 +0000 |
| commit | 0376ac1d946466eb346c2055554153e11b0fc3cf (patch) | |
| tree | a9e134c70ee7634941c786dd42ef32e5d0fb12c6 /llvm/test/CodeGen/PowerPC | |
| parent | 94cd06676349f034f005b3284fc161d96baadbea (diff) | |
| download | bcm5719-llvm-0376ac1d946466eb346c2055554153e11b0fc3cf.tar.gz bcm5719-llvm-0376ac1d946466eb346c2055554153e11b0fc3cf.zip | |
[SelectionDAG] Compute known bits of CopyFromReg
Summary:
Teach SelectionDAG how to compute known bits of ISD::CopyFromReg if
the virtual reg used has one def only.
This can be particularly useful when calling isBaseWithConstantOffset()
with the ISD::CopyFromReg argument, as more optimizations may get enabled
in the result.
Also add a missing truncation on X86, found by testing of this patch.
Change-Id: Id1c9fceec862d118c54a5b53adf72ada5d6daefa
Reviewers: bogner, craig.topper, RKSimon
Reviewed By: RKSimon
Subscribers: lebedev.ri, nemanjai, jvesely, nhaehnle, javed.absar, jsji, jdoerfert, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D59535
llvm-svn: 357745
Diffstat (limited to 'llvm/test/CodeGen/PowerPC')
| -rw-r--r-- | llvm/test/CodeGen/PowerPC/pr35688.ll | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/llvm/test/CodeGen/PowerPC/pr35688.ll b/llvm/test/CodeGen/PowerPC/pr35688.ll index 098573ec1b0..7573e871ef4 100644 --- a/llvm/test/CodeGen/PowerPC/pr35688.ll +++ b/llvm/test/CodeGen/PowerPC/pr35688.ll @@ -6,16 +6,14 @@ ; Function Attrs: nounwind define void @ec_GFp_nistp256_points_mul() { ; CHECK-LABEL: ec_GFp_nistp256_points_mul: -; CHECK: ld 5, 0(3) -; CHECK: li 3, 127 -; CHECK: li 4, 0 -; CHECK: subfic 6, 5, 0 -; CHECK: subfze 6, 4 -; CHECK: sradi 7, 6, 63 -; CHECK: srad 6, 6, 3 -; CHECK: subfc 5, 5, 7 -; CHECK: subfe 5, 4, 6 +; CHECK: ld 4, 0(3) +; CHECK: li 3, 0 +; CHECK: subfic 5, 4, 0 +; CHECK: subfze 5, 3 ; CHECK: sradi 5, 5, 63 +; CHECK: subfc 4, 4, 5 +; CHECK: subfe 4, 3, 5 +; CHECK: sradi 4, 4, 63 ; With MemorySSA, everything is taken out of the loop by licm. ; Loads and stores to undef are treated as non-aliasing. |

