)]}' { "commit": "185ce72d003def80022a48fe56ce65e547170cd2", "tree": "9fc0e68070eae13c17e167e310d2f88e8c93bcfb", "parents": [ "240fb8623b1fe027d0d33a9d4c41d99ceb385b58" ], "author": { "name": "Christopher Ferris", "email": "cferris@google.com", "time": "Fri Mar 15 16:01:17 2013 -0700" }, "committer": { "name": "Christopher Ferris", "email": "cferris@google.com", "time": "Mon Apr 08 18:13:35 2013 -0700" }, "message": "Update to latest cortexa15 memcpy code.\n\nThis uses the new code original submitted as memcpy.a15.S as\nthe base. However, the old code handled unaligned src/dst better\nso that was spliced in. I optimized the original unaligned code by\nremoving a few unnecessary instructions. I optimized the a15 code by\nrewriting the pre and post code. I also modified the main loop to add\na pld so that larger copies would not stall waiting for memory.\n\nTest cases for the new memcpy:\n\n- Copy all sized values from 0 to 1024 bytes, using whatever alignment\n is returned by malloc.\nFor each alignment case described below, the test copied from 0 to 128\nbytes.\n- Src and dst pointers are both aligned to the same value, starting\n at one going through every power of two up to and including 128.\n- Src aligned to double word boundary, dst aligned to word boundary.\n- Src aligned to word boundary, dst aligned to double word boundary.\n- Src aligned to 16 bit boundary, dst aligned to word boundary.\n- Src aligned to word boundary, dst aligned to 16 byte boundary.\n- Src aligned to word boundary, dst aligned to 1 byte from a word\n boundary.\n- Src aligned to word boundary, dst aligned to 2 bytes from a word\n boundary.\n- Src aligned to word boundary, dst aligned to 3 bytes from a word\n boundary.\n- Src aligned to 1 byte from a word boundary, dst aligned to a word\n boundary.\n- Src aligned to 2 bytes from a word boundary, dst aligned to a word\n boundary.\n- Src aligned to 3 bytes from a word boundary, dst aligned to a word\n boundary.\n\nCases to verify the unaligned source code properly aligns to a 16 bit\nboundary.\n- Src aligned to 1 byte from a 128 bit boundary, dst aligned to\n 4 + 128 bit boundary.\n- Src aligned to 1 byte from a 128 bit boundary, dst aligned to\n 8 + 128 bit boundary.\n- Src aligned to 1 byte from a 128 bit boundary, dst aligned to\n 12 + 128 bit boundary.\n- Src aligned to 1 byte from a 128 bit boundary, dst aligned to\n 16 + 128 bit boundary.\n\nIn all cases, a two byte fencepost was placed at the end of the\ndestination to verify that only the requested number of bytes were copied.\n\nBug: 8005082\n\nMerge from internal master.\n\n(cherry-picked from commit 21ede92d794969f22cacbdb9f557818f1c5712b5)\n\nChange-Id: Ief70c9e6dc8c6473ae245b6570b2c266fed9618c\n", "tree_diff": [ { "type": "modify", "old_id": "16187b56211812aed389e438b5c25bb77ab13390", "old_mode": 33188, "old_path": "libc/arch-arm/cortex-a15/bionic/memcpy.S", "new_id": "9985e7f427fee169e7f402683b8c0c20aaee09a0", "new_mode": 33188, "new_path": "libc/arch-arm/cortex-a15/bionic/memcpy.S" } ] }