diff options
author | Chris Lattner <sabre@nondot.org> | 2007-12-05 23:05:06 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-12-05 23:05:06 +0000 |
commit | 81f2d71d52f522ae29010aecdfc435162f1da8a4 (patch) | |
tree | 3a1d9618674eb0f8786e14d8a5e95abdf8d8601d | |
parent | 7d13015e3254a78dfc972b5722855fa8ac9062d7 (diff) | |
download | external_llvm-81f2d71d52f522ae29010aecdfc435162f1da8a4.zip external_llvm-81f2d71d52f522ae29010aecdfc435162f1da8a4.tar.gz external_llvm-81f2d71d52f522ae29010aecdfc435162f1da8a4.tar.bz2 |
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44638 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/README.txt | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/Target/README.txt b/lib/Target/README.txt index 2db7e64..008271e 100644 --- a/lib/Target/README.txt +++ b/lib/Target/README.txt @@ -463,5 +463,42 @@ entry: ret int %tmp3 } +//===---------------------------------------------------------------------===// +on this code: + +unsigned array[4]; +unsigned foo(unsigned long x) { + return array[(x>>2)&3ul]; +} + +we should dag combine the left+right shift together. We currently get: + +_foo: + movl 4(%esp), %eax + shrl $2, %eax + andl $3, %eax + movl _array(,%eax,4), %eax + ret +similar on ppc: +_foo: + lis r2, ha16(_array) + srwi r3, r3, 2 + la r2, lo16(_array)(r2) + rlwinm r3, r3, 2, 28, 29 + lwzx r3, r2, r3 + blr + +similar on arm: + +_foo: + mov r3, #3 + and r3, r3, r0, lsr #2 + ldr r2, LCPI1_0 + ldr r0, [r2, +r3, lsl #2] + bx lr + +this is a trivial dag combine xform. + +//===---------------------------------------------------------------------===// |