From 69bfbdfaeebf366b70a1aa3ba650685493da9e8c Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 29 Dec 2007 08:19:39 +0000 Subject: [PATCH] this xform is implemented. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45404 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/README.txt | 22 ---------------------- test/CodeGen/X86/sext-load.ll | 9 +++++++++ 2 files changed, 9 insertions(+), 22 deletions(-) create mode 100644 test/CodeGen/X86/sext-load.ll diff --git a/lib/Target/X86/README.txt b/lib/Target/X86/README.txt index 46f31164d5d..08b5875c574 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 00000000000..a6d1080bd84 --- /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 ; [#uses=1] + %tmp123 = sext i8 %tmp12 to i32 ; [#uses=1] + ret i32 %tmp123 +} +