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.
Created attachment 23369 [details] op_jneq and op_jnlesseq instructions
Created attachment 23370 [details] SunSpider result for op_jneq and op_jnlesseq instructions
Looks like some good results, though we will also need CTI / native code implementations of these.
Maciej, this seems to be related to the work you're doing right now. Maybe you could review and land this?
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.
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.
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
Created attachment 25269 [details] SunSpider, V8, WindScorpion results (non-jit) Here are the non-JIT results of the last patch on Qt-linux.
Created attachment 25270 [details] SunSpider, V8, WindScorpion results (JIT) JIT results of the last patch on Qt-linux.
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.
Created attachment 26095 [details] SunSpider, V8, WindScorpion results (non-jit)
Created attachment 26096 [details] SunSpider, V8, WindScorpion results (JIT)
Is this bug even still relevant? It's been sitting in the queue for 5 months...
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.
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.
Closing per loki's comment.
Comment on attachment 26094 [details] op_jneq and op_jnlesseq instructions (v3) obsoleting patch.