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 | 33de0c6e92e36f3ea25122d1b304f8658c7b7852 (patch) | |
| tree | ae446b098877e04deaa50d6a33db0a93a89b46a9 | |
| parent | b053b80b79731c0da674522d428a6687412b217d (diff) | |
| download | bcm5719-llvm-33de0c6e92e36f3ea25122d1b304f8658c7b7852.tar.gz bcm5719-llvm-33de0c6e92e36f3ea25122d1b304f8658c7b7852.zip  | |
this xform is implemented.
llvm-svn: 45404
| -rw-r--r-- | llvm/lib/Target/X86/README.txt | 22 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/sext-load.ll | 9 | 
2 files changed, 9 insertions, 22 deletions
diff --git a/llvm/lib/Target/X86/README.txt b/llvm/lib/Target/X86/README.txt index 46f31164d5d..08b5875c574 100644 --- a/llvm/lib/Target/X86/README.txt +++ b/llvm/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/llvm/test/CodeGen/X86/sext-load.ll b/llvm/test/CodeGen/X86/sext-load.ll new file mode 100644 index 00000000000..a6d1080bd84 --- /dev/null +++ b/llvm/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 +} +  | 

