| commit | f470747a365a5edac817c27359e020fa006b7d69 | [log] [tgz] |
|---|---|---|
| author | Bill Wendling <isanbard@gmail.com> | Wed Jun 23 23:00:16 2010 +0000 |
| committer | Bill Wendling <isanbard@gmail.com> | Wed Jun 23 23:00:16 2010 +0000 |
| tree | 232bdaf7547bf175c6c574d6b10f36494637fdc4 | |
| parent | 253c6bf366ba8b696c058126c4d3397e583b4244 [diff] |
We are missing opportunites to use ldm. Take code like this:
void t(int *cp0, int *cp1, int *dp, int fmd) {
int c0, c1, d0, d1, d2, d3;
c0 = (*cp0++ & 0xffff) | ((*cp1++ << 16) & 0xffff0000);
c1 = (*cp0++ & 0xffff) | ((*cp1++ << 16) & 0xffff0000);
/* ... */
}
It code gens into something pretty bad. But with this change (analogous to the
X86 back-end), it will use ldm and generate few instructions.
llvm-svn: 106693