RESOLVED INVALID 20796
Combine op_eq and op_lesseq with op_jfalse
https://bugs.webkit.org/show_bug.cgi?id=20796
Summary Combine op_eq and op_lesseq with op_jfalse
Gabor Loki
Reported 2008-09-12 07:49:59 PDT
I have found that op_eq and op_jfalse instructions appear 441683 times (0.72%) and op_lesseq and op_jfalse are 340196 times (0.55%) in SunSpider. These two instruction pair mostly come up in condition fields, where the results of the binary operator never used after the jump. So it is possible to introduce two super-instructions for those cases (like op_jnless). I have implemented these op_jneq and op_jnlesseq instructions, and the result is 0.8% progression in SunSpider.
Attachments
op_jneq and op_jnlesseq instructions (6.00 KB, patch)
2008-09-12 07:51 PDT, Gabor Loki
darin: review-
SunSpider result for op_jneq and op_jnlesseq instructions (3.50 KB, text/plain)
2008-09-12 07:51 PDT, Gabor Loki
no flags
op_jneq and op_jnlesseq instructions (v2) (13.39 KB, patch)
2008-11-19 05:39 PST, Gabor Loki
no flags
SunSpider, V8, WindScorpion results (non-jit) (6.27 KB, text/plain)
2008-11-19 08:27 PST, Gabor Loki
no flags
SunSpider, V8, WindScorpion results (JIT) (6.30 KB, text/plain)
2008-11-19 08:28 PST, Gabor Loki
no flags
op_jneq and op_jnlesseq instructions (v3) (13.63 KB, patch)
2008-12-17 07:02 PST, Gabor Loki
no flags
SunSpider, V8, WindScorpion results (non-jit) (6.17 KB, text/plain)
2008-12-17 07:58 PST, Gabor Loki
no flags
SunSpider, V8, WindScorpion results (JIT) (6.23 KB, text/plain)
2008-12-17 07:59 PST, Gabor Loki
no flags
Gabor Loki
Comment 1 2008-09-12 07:51:14 PDT
Created attachment 23369 [details] op_jneq and op_jnlesseq instructions
Gabor Loki
Comment 2 2008-09-12 07:51:57 PDT
Created attachment 23370 [details] SunSpider result for op_jneq and op_jnlesseq instructions
Maciej Stachowiak
Comment 3 2008-09-13 14:19:53 PDT
Looks like some good results, though we will also need CTI / native code implementations of these.
Darin Adler
Comment 4 2008-09-21 11:38:36 PDT
Maciej, this seems to be related to the work you're doing right now. Maybe you could review and land this?
Darin Adler
Comment 5 2008-09-21 13:55:05 PDT
Comment on attachment 23369 [details] op_jneq and op_jnlesseq instructions Looks great. Now that CTI is landed, we need the CTI versions -- we can't add an opcode without that. So review- because of that issue.
Gabor Loki
Comment 6 2008-11-19 05:39:18 PST
Created attachment 25263 [details] op_jneq and op_jnlesseq instructions (v2) I have added the CTI part of these instructions. The SunSpider results are the follwing on Qt-linux: - NON-JIT: 1.007% progression - JIT: 1.001% propression I am going to attach the full SunSpider, V8, WindScorpion results.
Gabor Loki
Comment 7 2008-11-19 05:43:48 PST
Err. Wrong number. Those numbers are from sunspider-compare-results, but they are not percentages. The valid numbers: - NON-JIT: 0.7% progression - JIT: 0.1% propression
Gabor Loki
Comment 8 2008-11-19 08:27:37 PST
Created attachment 25269 [details] SunSpider, V8, WindScorpion results (non-jit) Here are the non-JIT results of the last patch on Qt-linux.
Gabor Loki
Comment 9 2008-11-19 08:28:14 PST
Created attachment 25270 [details] SunSpider, V8, WindScorpion results (JIT) JIT results of the last patch on Qt-linux.
Gabor Loki
Comment 10 2008-12-17 07:02:36 PST
Created attachment 26094 [details] op_jneq and op_jnlesseq instructions (v3) I have updated the previous patch on ToT. The results are almost the same. I will attach them later.
Gabor Loki
Comment 11 2008-12-17 07:58:21 PST
Created attachment 26095 [details] SunSpider, V8, WindScorpion results (non-jit)
Gabor Loki
Comment 12 2008-12-17 07:59:15 PST
Created attachment 26096 [details] SunSpider, V8, WindScorpion results (JIT)
Eric Seidel (no email)
Comment 13 2009-05-11 05:24:22 PDT
Is this bug even still relevant? It's been sitting in the queue for 5 months...
Gabor Loki
Comment 14 2009-05-12 08:23:32 PDT
This is still valid. There is about 1-2% progression on x86 without JIT. I am going to send the patch and the results tomorrow.
Gabor Loki
Comment 15 2009-05-13 04:15:21 PDT
It looks like op_jnlesseq instruction have been added in r43401. The op_jneq does not give more speedup on x86 without JIT. So, this bug should be closed.
Eric Seidel (no email)
Comment 16 2009-05-19 19:50:42 PDT
Closing per loki's comment.
Eric Seidel (no email)
Comment 17 2009-05-19 19:51:00 PDT
Comment on attachment 26094 [details] op_jneq and op_jnlesseq instructions (v3) obsoleting patch.
Note You need to log in before you can comment on or make changes to this bug.