This paper describes a general code-improving transformation that can coalesce conditional branches into an indirect jump from a table. Applying this transformation allows an optimizer to exploit indirect jumps for many other coalescing opportunities besides the translation of multiway branch statements. First, dataflow analysis is performed to detect a set of coalescent conditional branches, which are often separated by blocks of intervening instructions. Second, several techniques are applied to reduce the cost of performing an indirect jump operation, often requiring the execution of only two instructions on a SPARC. Finally, the control flow is restructured using code duplication to replace the set of branches with an indirect jump. Thu...
AbstractOne of the fundamental problems with the static analysis of binary (executable) code is that...
Conditional branches are expensive. Branches require a significant percentage of execution cycles si...
We study sequential programs that are instruction sequences with direct and indirect jump instructio...
Indirect jumps from tables are traditionally only generated by compilers as an intermediate code gen...
Branch prediction is a key mechanism used to achieve high performance on multiple issue, deeply pipe...
As the issue rate and pipeline depth of high perfor-mance superscalar processors increase, the amoun...
The conditional branch has long been considered an expensive operation. The relative cost of conditi...
Indirect branch prediction is likely to become increasingly important in the future because indirect...
Predicated execution has been used to reduce the number of branch mispredictions by eliminating hard...
Irregular control-flow structures like deeply nested conditional branches are common in real-world s...
Indirect branch handling is a major source of performance overhead in Dynamic Binary Translation (DB...
One of the fundamental problems with the analysis of binary (executable) code is that of recognizing...
Providing accurate branch prediction is critical to effectively exploit superscalar execution. While...
Interpreters designed for efficiency execute a huge number of indirect branches and can spend more ...
Instruction sequences with direct and indirect jump instructions are as expressive as instruction se...
AbstractOne of the fundamental problems with the static analysis of binary (executable) code is that...
Conditional branches are expensive. Branches require a significant percentage of execution cycles si...
We study sequential programs that are instruction sequences with direct and indirect jump instructio...
Indirect jumps from tables are traditionally only generated by compilers as an intermediate code gen...
Branch prediction is a key mechanism used to achieve high performance on multiple issue, deeply pipe...
As the issue rate and pipeline depth of high perfor-mance superscalar processors increase, the amoun...
The conditional branch has long been considered an expensive operation. The relative cost of conditi...
Indirect branch prediction is likely to become increasingly important in the future because indirect...
Predicated execution has been used to reduce the number of branch mispredictions by eliminating hard...
Irregular control-flow structures like deeply nested conditional branches are common in real-world s...
Indirect branch handling is a major source of performance overhead in Dynamic Binary Translation (DB...
One of the fundamental problems with the analysis of binary (executable) code is that of recognizing...
Providing accurate branch prediction is critical to effectively exploit superscalar execution. While...
Interpreters designed for efficiency execute a huge number of indirect branches and can spend more ...
Instruction sequences with direct and indirect jump instructions are as expressive as instruction se...
AbstractOne of the fundamental problems with the static analysis of binary (executable) code is that...
Conditional branches are expensive. Branches require a significant percentage of execution cycles si...
We study sequential programs that are instruction sequences with direct and indirect jump instructio...