[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