diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-10-29 19:58:20 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-10-29 19:58:20 +0000 |
commit | 3c3ddb3a856e44c603cb8cf8f52ff9c0f06ff14a (patch) | |
tree | 8fedeb7b8afa2e96c2ae0e0ab86f5bb8d9c11e4c /test/CodeGen/X86/2007-10-29-ExtendSetCC.ll | |
parent | 9962054775455c43402bf176da4a28c68197feef (diff) | |
download | llvm-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.ll | 17 |
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 +} |