Save like <block guest addr>_<block hash> to avoid collisions
Should dump both "IR" and "Mixed IR/Host Code"
Per-block support for multiblock in perf symbols
Rationale: Superblocks can have 10s of blocks, it is important to attribute runtime to the hot ones
Export each sub-block as <superblock main entry>-<basicblock entry>?
Add it as a command line option, --perf-metadata=none|basic|detailed?
GuestOp IR op
Rationale: We need to better track Guest - IR - Host relationships to spot optimization opportunities
Stores Guest Address, Guest opcode and Guest disassembly, allows us to better AB between Guest and IR
Exposed via --ir-debug-metadata?
Add Offline IR compiler
Rationale: Allow us to iterate over a specific block/superblock without having to relaunch the guest application
Should Accept IR as dumped by FEXLoader
Should be able to show "Mixed IR/Host Code"
Should be able to calculate basic metrics like "Instruction Blowup" and "Code Size Blowup"
Tighter perf integration / Perf Explorer
Rationale: We tooling to help us find optimization opportunities and slowdowns, and to also test the "simulated" effects of WIP optimizations
Show perf data scaled by blowup or other metrics
Be able to take a perf trace + ir dump and calculate metrics like "average executed code per trace", and also break down by category like "memory", "vector" etc
I'd use these as command line utilities in an offline fashion myself.
Following up some discussions with @Sonicadvance1
Exposed via FEXLoader
IR dumping to folder
Rationale: We need the data for offline analysis
--dump-ir=path/to/folder
?<block guest addr>_<block hash>
to avoid collisionsPer-block support for multiblock in perf symbols
Rationale: Superblocks can have 10s of blocks, it is important to attribute runtime to the hot ones
<superblock main entry>-<basicblock entry>
?--perf-metadata=none|basic|detailed
?GuestOp
IR opRationale: We need to better track Guest - IR - Host relationships to spot optimization opportunities
--ir-debug-metadata
?Add Offline IR compiler
Rationale: Allow us to iterate over a specific block/superblock without having to relaunch the guest application
Tighter perf integration / Perf Explorer
Rationale: We tooling to help us find optimization opportunities and slowdowns, and to also test the "simulated" effects of WIP optimizations
I'd use these as command line utilities in an offline fashion myself.
@Sonicadvance1 @phire, thoughts?