[llvm-commits] [llvm] r122559 - /llvm/trunk/lib/Target/X86/README.txt

Nick Lewycky nicholas at mxc.ca
Sat Dec 25 20:08:46 PST 2010


On 12/25/2010 07:53 PM, Chris Lattner wrote:
> Author: lattner
> Date: Sat Dec 25 21:53:31 2010
> New Revision: 122559
>
> URL: http://llvm.org/viewvc/llvm-project?rev=122559&view=rev
> Log:
> add a note
>
> Modified:
>      llvm/trunk/lib/Target/X86/README.txt
>
> Modified: llvm/trunk/lib/Target/X86/README.txt
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/README.txt?rev=122559&r1=122558&r2=122559&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/README.txt (original)
> +++ llvm/trunk/lib/Target/X86/README.txt Sat Dec 25 21:53:31 2010
> @@ -96,6 +96,97 @@
>
>   //===---------------------------------------------------------------------===//
>
> +This:
> +
> +void foo(void);
> +void bar(int x, int *P) {
> +  x>>= 2;
> +  if (x)
> +    foo();
> +  *P = x;
> +}
> +
> +compiles into:
> +
> +	movq	%rsi, %rbx
> +	movl	%edi, %r14d
> +	sarl	$2, %r14d
> +	testl	%r14d, %r14d
> +	je	LBB0_2
> +
> +Instead of doing an explicit test, we can use the flags off the sar.  This
> +occurs in a bigger testcase like this, which is pretty common:
> +
> +#include<vector>
> +
> +
> +int test1(std::vector<int>  &X) {
> +  int Sum = 0;
> +  for (long i = 0, e = X.size(); i != e; ++i)
> +    X[i] = 0;
> +  return Sum;
> +}

This entry is very repetitive ;-)

Nick

> +compiles into:
> +
> +	movq	%rsi, %rbx
> +	movl	%edi, %r14d
> +	sarl	$2, %r14d
> +	testl	%r14d, %r14d
> +	je	LBB0_2
> +
> +Instead of doing an explicit test, we can use the flags off the sar.  This
> +occurs in a bigger testcase like this, which is pretty common:
> +
> +#include<vector>
> +
> +
> +int test1(std::vector<int>  &X) {
> +  int Sum = 0;
> +  for (long i = 0, e = X.size(); i != e; ++i)
> +    X[i] = 0;
> +  return Sum;
> +}
> +compiles into:
> +
> +	movq	%rsi, %rbx
> +	movl	%edi, %r14d
> +	sarl	$2, %r14d
> +	testl	%r14d, %r14d
> +	je	LBB0_2
> +
> +Instead of doing an explicit test, we can use the flags off the sar.  This
> +occurs in a bigger testcase like this, which is pretty common:
> +
> +#include<vector>
> +
> +
> +int test1(std::vector<int>  &X) {
> +  int Sum = 0;
> +  for (long i = 0, e = X.size(); i != e; ++i)
> +    X[i] = 0;
> +  return Sum;
> +}
> +compiles into:
> +
> +	movq	%rsi, %rbx
> +	movl	%edi, %r14d
> +	sarl	$2, %r14d
> +	testl	%r14d, %r14d
> +	je	LBB0_2
> +
> +Instead of doing an explicit test, we can use the flags off the sar.  This
> +occurs in a bigger testcase like this, which is pretty common in bootstrap:
> +
> +#include<vector>
> +int test1(std::vector<int>  &X) {
> +  int Sum = 0;
> +  for (long i = 0, e = X.size(); i != e; ++i)
> +    X[i] = 0;
> +  return Sum;
> +}
> +
> +//===---------------------------------------------------------------------===//
> +
>   Only use inc/neg/not instructions on processors where they are faster than
>   add/sub/xor.  They are slower on the P4 due to only updating some processor
>   flags.
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>




More information about the llvm-commits mailing list