Make a 1.0 release of cortex-strings

Registered by Michael Hope on 2011-08-30

We've been working on a set of string routines hand-optimised for the A8 and A9. As the first step in getting these upstream, complete the routines and do a 1.0 release.

Follow up blueprints use this 1.0 release as a base to get the routines into the different C libraries.

Blueprint information

Status:
Complete
Approver:
Michael Hope
Priority:
High
Drafter:
Michael Hope
Direction:
Approved
Assignee:
Michael Hope
Definition:
Approved
Series goal:
Accepted for trunk
Implementation:
Implemented
Milestone target:
milestone icon 2011.09
Started by
Michael Hope on 2011-09-01
Completed by
Michael Hope on 2011-09-28

Related branches

Sprints

Whiteboard

Headline: First release of cortex-strings, a set of hand-optimised string routines for Cortex-A processors

Acceptance: standard release procedure run and a tarball released via Launchpad

Checklist (too small to be work items):
Builds: DONE
No warnings or errors[1]: DONE
All files are covered by Makefile.am: DONE
NEON on by default but can be disabled: DONE
'make check' works: DONE
'make distcheck' works: DONE
'make add-on' works: DONE
Check proper type sizes on all implementations: DONE
Change to the GLIBC coding style: DONE

Performance summary:
OK: memchr memset strchr strcpy strlen memcpy
No good: strcmp

Note that strchr is good for 16 bytes and less.

Tweaks:
memchr between 8 and 16 bytes.
memset for < 128 bytes
strchr between 16 and 32 bytes
strlen being erratic on Panda for large sizes

[1] dhry and the reference code show warnings.

[asac, Sep 14, 2011]: please expand summmary, headline and acceptance criteria to make it easier to understand what this is about.

(?)

Work Items

Work items:
Flatten out strcmp and strcpy to Thumb-2 only: TODO
Check and document the licensing: DONE
Add and check the test cases: DONE
Benchmark and show the differences vs the other C libraries: DONE
Test the add on generator: TODO
Release a 1.0 of cortex-strings to base on: TODO

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.