this xform is implemented.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45404 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2007-12-29 08:19:39 +00:00
parent b15147ea4c
commit 69bfbdfaee
2 changed files with 9 additions and 22 deletions

View File

@ -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) {

View File

@ -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
}