mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 21:29:20 +00:00
remove two implemented items
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26728 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
947c28935d
commit
2e8a77ff42
@ -56,20 +56,6 @@ Number 1 is the preferred solution.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
DAG combine this into mul A, 8:
|
||||
|
||||
int %test(int %A) {
|
||||
%B = mul int %A, 8 ;; shift
|
||||
%C = add int %B, 7 ;; dead, no demanded bits.
|
||||
%D = and int %C, -8 ;; dead once add is gone.
|
||||
ret int %D
|
||||
}
|
||||
|
||||
This sort of thing occurs in the alloca lowering code and other places that
|
||||
are generating alignment of an already aligned value.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Turn this into a signed shift right in instcombine:
|
||||
|
||||
int f(unsigned x) {
|
||||
@ -81,14 +67,6 @@ http://gcc.gnu.org/ml/gcc-patches/2006-02/msg01492.html
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
We should reassociate:
|
||||
int f(int a, int b){ return a * a + 2 * a * b + b * b; }
|
||||
into:
|
||||
int f(int a, int b) { return a * (a + 2 * b) + b * b; }
|
||||
to eliminate a multiply.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
On targets with expensive 64-bit multiply, we could LSR this:
|
||||
|
||||
for (i = ...; ++i) {
|
||||
|
Loading…
Reference in New Issue
Block a user