diff options
author | Jan Voung <jvoung@chromium.org> | 2013-05-17 13:35:07 -0700 |
---|---|---|
committer | Jan Voung <jvoung@chromium.org> | 2013-05-17 13:35:07 -0700 |
commit | 23577055b156b53520c138fc269bc558f5bb115e (patch) | |
tree | 2ae14a86e7d2ef7cf66522d22d39289cfdba6ec9 /lib/Bitcode/Reader/BitcodeReader.h | |
parent | 4284726d05e5a8397e66e259c3bba323f0966267 (diff) |
Re-allow an x86-32 fast-isel optimization for NaCl / use shorter insts.
There was an old fix for r+r based memory references on
x86-64 that checked for isTargetNaCl() instead of
isTargetNaCl64(). This disabled some r+r for 32-bit.
However, fast isel only sets up r+r with geps, and we don't
have geps in the stable ABI. We could potentially add
some similar pattern matching in the future...
The problem we *do* see with the current bitcode, is that
this change also made it preferred to use an index register
instead of a base register. This made the memory references
on x86-32 look like:
cmpl ..., (,%eax,1)
instead of
cmpl ..., (%eax)
So we had longer instructions.
Total zipped nexe sizes: 5.73MB (old) vs 5.59 MB (new) (2.5%)
Total not zipped: 17.28MB vs 16.28 MB (6%)
runtime diffs (min of 5 runs)
* eon 4.94 (old) vs 4.72 (new) (~4%)
* mesa 21.64 vs 21.08
* mcf 5.76 vs 5.60
* vortex 4.21 vs 4.05
* perlbmk 27.62 vs 26.55
(the rest were under 2% better)
BUG=https://code.google.com/p/nativeclient/issues/detail?id=3359
R=stichnot@chromium.org
Review URL: https://codereview.chromium.org/15047013
Diffstat (limited to 'lib/Bitcode/Reader/BitcodeReader.h')
0 files changed, 0 insertions, 0 deletions