From: Chris Lattner Date: Thu, 21 Sep 2006 06:14:54 +0000 (+0000) Subject: implemented X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b13f83eb23ad08cdee76b1ef6c2ae85782dd2dd4;p=oota-llvm.git implemented git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30559 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/README.txt b/lib/Target/X86/README.txt index cc689c4a857..4a0be7bbb0c 100644 --- a/lib/Target/X86/README.txt +++ b/lib/Target/X86/README.txt @@ -642,41 +642,6 @@ sequence)? //===---------------------------------------------------------------------===// -Compile: -int %test(ulong *%tmp) { - %tmp = load ulong* %tmp ; [#uses=1] - %tmp.mask = shr ulong %tmp, ubyte 50 ; [#uses=1] - %tmp.mask = cast ulong %tmp.mask to ubyte - %tmp2 = and ubyte %tmp.mask, 3 ; [#uses=1] - %tmp2 = cast ubyte %tmp2 to int ; [#uses=1] - ret int %tmp2 -} - -to: - -_test: - movl 4(%esp), %eax - movl 4(%eax), %eax - shrl $18, %eax - andl $3, %eax - ret - -instead of: - -_test: - movl 4(%esp), %eax - movl 4(%eax), %eax - shrl $18, %eax - # TRUNCATE movb %al, %al - andb $3, %al - movzbl %al, %eax - ret - -This saves a movzbl, and saves a truncate if it doesn't get coallesced right. -This is a simple DAGCombine to propagate the zext through the and. - -//===---------------------------------------------------------------------===// - GCC's ix86_expand_int_movcc function (in i386.c) has a ton of interesting simplifications for integer "x cmp y ? a : b". For example, instead of: