summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/2007-10-29-ExtendSetCC.ll
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2007-10-29 19:58:20 +0000
committerEvan Cheng <evan.cheng@apple.com>2007-10-29 19:58:20 +0000
commit3c3ddb3a856e44c603cb8cf8f52ff9c0f06ff14a (patch)
tree8fedeb7b8afa2e96c2ae0e0ab86f5bb8d9c11e4c /test/CodeGen/X86/2007-10-29-ExtendSetCC.ll
parent9962054775455c43402bf176da4a28c68197feef (diff)
downloadllvm-3c3ddb3a856e44c603cb8cf8f52ff9c0f06ff14a.tar.gz
llvm-3c3ddb3a856e44c603cb8cf8f52ff9c0f06ff14a.tar.bz2
llvm-3c3ddb3a856e44c603cb8cf8f52ff9c0f06ff14a.tar.xz
Enable more fold (sext (load x)) -> (sext (truncate (sextload x)))
transformation. Previously, it's restricted by ensuring the number of load uses is one. Now the restriction is loosened up by allowing setcc uses to be "extended" (e.g. setcc x, c, eq -> setcc sext(x), sext(c), eq). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43465 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/2007-10-29-ExtendSetCC.ll')
-rw-r--r--test/CodeGen/X86/2007-10-29-ExtendSetCC.ll17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/CodeGen/X86/2007-10-29-ExtendSetCC.ll b/test/CodeGen/X86/2007-10-29-ExtendSetCC.ll
new file mode 100644
index 0000000000..9013e9020e
--- /dev/null
+++ b/test/CodeGen/X86/2007-10-29-ExtendSetCC.ll
@@ -0,0 +1,17 @@
+; RUN: llvm-as < %s | llc -march=x86 | grep mov | count 1
+
+define i16 @t() signext {
+entry:
+ %tmp180 = load i16* null, align 2 ; <i16> [#uses=3]
+ %tmp180181 = sext i16 %tmp180 to i32 ; <i32> [#uses=1]
+ %tmp185 = icmp slt i16 %tmp180, 0 ; <i1> [#uses=1]
+ br i1 %tmp185, label %cond_true188, label %cond_next245
+
+cond_true188: ; preds = %entry
+ %tmp195196 = trunc i16 %tmp180 to i8 ; <i8> [#uses=0]
+ ret i16 0
+
+cond_next245: ; preds = %entry
+ %tmp256 = and i32 %tmp180181, 15 ; <i32> [#uses=0]
+ ret i16 0
+}