I've been working on speeding up the Hexagon target by using direct block 
chaining.  Due to Hexagon's VLIW packet semantics (possibly multiple branches 
in a packet, not processing change-of-flow until packet commit), we have 
historically treated all change-of-flow as indirect.

I looked at the documentation here
https://qemu.readthedocs.io/en/latest/devel/tcg.html#direct-block-chaining

I implemented both approaches for inner loops and didn't see speedup in my 
benchmark.  So, I have a couple of questions
1) What are the pros and cons of the two approaches (lookup_and_goto_ptr and 
goto_tb + exit_tb)?
2) How can I verify that direct block chaining is working properly?
      With -d exec, I see lines like the following with goto_tb + exit_tb but 
NOT lookup_and_goto_ptr
      Linking TBs 0x7fda44172e00 [0050ac38] index 1 -> 0x7fda44173b40 [0050ac6c]

Thanks,
Taylor


Reply via email to