diff options
author | Chris Lattner <sabre@nondot.org> | 2007-12-29 08:19:39 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-12-29 08:19:39 +0000 |
commit | a9ffc5d964afe379e6946fb77d95ee05fda9382d (patch) | |
tree | c545bd18ac9aca523d18116b85feea7f26904d68 | |
parent | 2c175390310d56aa4cd4c54250f4c93bb952d453 (diff) | |
download | external_llvm-a9ffc5d964afe379e6946fb77d95ee05fda9382d.zip external_llvm-a9ffc5d964afe379e6946fb77d95ee05fda9382d.tar.gz external_llvm-a9ffc5d964afe379e6946fb77d95ee05fda9382d.tar.bz2 |
this xform is implemented.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45404 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/README.txt | 22 | ||||
-rw-r--r-- | test/CodeGen/X86/sext-load.ll | 9 |
2 files changed, 9 insertions, 22 deletions
diff --git a/lib/Target/X86/README.txt b/lib/Target/X86/README.txt index 46f3116..08b5875 100644 --- a/lib/Target/X86/README.txt +++ b/lib/Target/X86/README.txt @@ -702,28 +702,6 @@ The add\sub pair is really unneeded here. //===---------------------------------------------------------------------===// -We currently compile sign_extend_inreg into two shifts: - -long foo(long X) { - return (long)(signed char)X; -} - -becomes: - -_foo: - movl 4(%esp), %eax - shll $24, %eax - sarl $24, %eax - ret - -This could be: - -_foo: - movsbl 4(%esp),%eax - ret - -//===---------------------------------------------------------------------===// - Consider the expansion of: uint %test3(uint %X) { diff --git a/test/CodeGen/X86/sext-load.ll b/test/CodeGen/X86/sext-load.ll new file mode 100644 index 0000000..a6d1080 --- /dev/null +++ b/test/CodeGen/X86/sext-load.ll @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | llc -march=x86 | grep movsbl + +define i32 @foo(i32 %X) nounwind { +entry: + %tmp12 = trunc i32 %X to i8 ; <i8> [#uses=1] + %tmp123 = sext i8 %tmp12 to i32 ; <i32> [#uses=1] + ret i32 %tmp123 +} + |