DocumentCode
1570299
Title
Analysis techniques for predicated code
Author
Johnson, Richard ; Schlansker, Michael
Author_Institution
Hewlett-Packard Co., Palo Alto, CA, USA
fYear
1996
Firstpage
100
Lastpage
113
Abstract
Predicated execution offers new approaches to exploiting instruction-level parallelism (ILP), but it also presents new challenges for compiler analysis and optimization. In predicated code, each operation is guarded by a boolean operand whose run-time value determines whether the operation is executed or nullified. While research has shown the utility of predication in enhancing ILP, there has been little discussion of the difficulties surrounding compiler support for predicated execution. Conventional program analysis tools (e.g. data flow analysis) assume that operations execute unconditionally within each basic block and thus make incorrect assumptions about the run-rime behavior of predicated code. These tools can be modified to be correct without requiring predicate analysis, but this yields overly-conservative results in crucial areas such as scheduling and register allocation. To generate high-quality code for machines offering predicated execution, a compiler must incorporate information about relations between predicates into its analysis. We present new techniques for analyzing predicated code. Operations which compute predicates are analyzed to determine relations between predicate values. These relations are captured in a graph-based data structure, which supports efficient manipulation of boolean expression representing facts about predicated code. This approach forms the basis for predicate-sensitive data flow analysis. Conventional data flow algorithms can be systematically upgraded to be predicate sensitive by incorporating information about predicates. Predicate-sensitive data flow analysis yields significantly more accurate results than conventional data flow analysis when applied to predicated code
Keywords
data flow analysis; data structures; optimising compilers; boolean operand; compiler analysis; compiler optimization; data flow analysis; graph-based data structure; instruction-level parallelism; predicated code; program analysis tools; run-time value; Computer aided instruction; Computer architecture; Data analysis; Data structures; Delay; Information analysis; Laboratories; Optimizing compilers; Parallel processing; Runtime;
fLanguage
English
Publisher
ieee
Conference_Titel
Microarchitecture, 1996. MICRO-29.Proceedings of the 29th Annual IEEE/ACM International Symposium on
Conference_Location
Paris
Print_ISBN
0-8186-7641-8
Type
conf
DOI
10.1109/MICRO.1996.566454
Filename
566454
Link To Document