diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2011-05-04 22:10:36 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2011-05-04 22:10:36 +0000 |
commit | baf717a08a0bc8cb0a7931ea3ce51d063a8fe6f0 (patch) | |
tree | a783b0a34d6af1c5765489ade3449320ebbec85f /test/CodeGen | |
parent | b90584ae78a7acc4ac92e3ad52121a10c520b980 (diff) | |
download | external_llvm-baf717a08a0bc8cb0a7931ea3ce51d063a8fe6f0.zip external_llvm-baf717a08a0bc8cb0a7931ea3ce51d063a8fe6f0.tar.gz external_llvm-baf717a08a0bc8cb0a7931ea3ce51d063a8fe6f0.tar.bz2 |
Re-commit r130862 with a minor change to avoid an iterator running off the edge in some cases.
Original message:
Teach MachineCSE how to do simple cross-block CSE involving physregs. This allows, for example, eliminating duplicate cmpl's on x86. Part of rdar://problem/8259436 .
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130877 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen')
-rw-r--r-- | test/CodeGen/Thumb2/thumb2-cbnz.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/X86/cmp-redundant.ll | 22 |
2 files changed, 24 insertions, 2 deletions
diff --git a/test/CodeGen/Thumb2/thumb2-cbnz.ll b/test/CodeGen/Thumb2/thumb2-cbnz.ll index 10a4985..0ca9764 100644 --- a/test/CodeGen/Thumb2/thumb2-cbnz.ll +++ b/test/CodeGen/Thumb2/thumb2-cbnz.ll @@ -21,8 +21,8 @@ bb7: ; preds = %bb3 bb9: ; preds = %bb7 ; CHECK: cmp r0, #0 -; CHECK: cmp r0, #0 -; CHECK-NEXT: cbnz +; CHECK-NOT: cmp +; CHECK: cbnz %0 = tail call double @floor(double %b) nounwind readnone ; <double> [#uses=0] br label %bb11 diff --git a/test/CodeGen/X86/cmp-redundant.ll b/test/CodeGen/X86/cmp-redundant.ll new file mode 100644 index 0000000..d30ea3e --- /dev/null +++ b/test/CodeGen/X86/cmp-redundant.ll @@ -0,0 +1,22 @@ +; RUN: llc < %s -mtriple=x86_64-apple-darwin10 | FileCheck %s + +define i32 @cmp(i32* %aa, i32* %bb) nounwind readnone ssp { +entry: + %a = load i32* %aa + %b = load i32* %bb + %cmp = icmp sgt i32 %a, %b + br i1 %cmp, label %return, label %if.end +; CHECK: cmp: +; CHECK: cmpl +; CHECK: jg +if.end: ; preds = %entry +; CHECK-NOT: cmpl +; CHECK: cmov + %cmp4 = icmp slt i32 %a, %b + %. = select i1 %cmp4, i32 2, i32 111 + br label %return + +return: ; preds = %if.end, %entry + %retval.0 = phi i32 [ 1, %entry ], [ %., %if.end ] + ret i32 %retval.0 +} |