Extracting ILP from bytecode/*.ll

By using analyze -stats -instcounts <bytecode> I can get the total number
of instructions but I want to extract instruction level parallelism .
That is I want to know number of add instruction that can be executed
in parallel, similarly for multiply ...
This would give me an idea what is upper limit of adders ( and multipliers
)should be there in my hardware.

Any kind of help would be greatly appreciated.

-Devesh

By using analyze -stats -instcounts <bytecode> I can get the total number
of instructions but I want to extract instruction level parallelism .
That is I want to know number of add instruction that can be executed
in parallel, similarly for multiply ...
This would give me an idea what is upper limit of adders ( and multipliers
)should be there in my hardware.

Any kind of help would be greatly appreciated.

LLVM instructions are target independent and have no concept of hardware resources. The kind of information you want is target specific. You would need to know the mapping from LLVM instructions to your target machine instructions (not necessarily 1-1) and what resources each machine instruction uses. But thats just the start of it. You need to take into consideration all the architecture details (not just resource constraints) and the dependence graph to determine which instructions can be executed in parallel.

I'd suggest reading up on instruction scheduling or software pipelining for more details.

-Tanya