Software pipelining: an effective scheduling technique for VLIW machines
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
The Omega test: a fast and practical integer programming algorithm for dependence analysis
Proceedings of the 1991 ACM/IEEE conference on Supercomputing
Lifetime-sensitive modulo scheduling
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Advanced compiler design and implementation
Advanced compiler design and implementation
Translation validation for an optimizing compiler
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
A comparative study of modulo scheduling techniques
ICS '02 Proceedings of the 16th international conference on Supercomputing
Modern Compiler Implementation: In ML
Modern Compiler Implementation: In ML
Validating software pipelining optimizations
CASES '02 Proceedings of the 2002 international conference on Compilers, architecture, and synthesis for embedded systems
Software Bubbles: Using Predication to Compensate for Aliasing in Software Pipelines
Proceedings of the 2002 International Conference on Parallel Architectures and Compilation Techniques
TACAS '98 Proceedings of the 4th International Conference on Tools and Algorithms for Construction and Analysis of Systems
Swing Modulo Scheduling: A Lifetime-Sensitive Approach
PACT '96 Proceedings of the 1996 Conference on Parallel Architectures and Compilation Techniques
Validation of Optimizing Compilers,
Validation of Optimizing Compilers,
Symbolic transfer function-based approaches to certified compilation
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A PVS Based Framework for Validating Compiler Optimizations
SEFM '06 Proceedings of the Fourth IEEE International Conference on Software Engineering and Formal Methods
Compilers: Principles, Techniques, and Tools (2nd Edition)
Compilers: Principles, Techniques, and Tools (2nd Edition)
Formal verification of translation validators: a case study on instruction scheduling optimizations
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Formal Verification of a C-like Memory Model and Its Uses for Verifying Program Transformations
Journal of Automated Reasoning
Equality saturation: a new approach to optimization
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Formal verification of a realistic compiler
Communications of the ACM - Barbara Liskov: ACM's A.M. Turing Award Winner
Verified validation of lazy code motion
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Proving optimizations correct using parameterized program equivalence
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Transforming Programs into Recursive Functions
Electronic Notes in Theoretical Computer Science (ENTCS)
A Formally Verified Compiler Back-end
Journal of Automated Reasoning
Catching and identifying bugs in register allocation
SAS'06 Proceedings of the 13th international conference on Static Analysis
TVOC: a translation validator for optimizing compilers
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
Bringing extensibility to verified compilers
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
SAS'10 Proceedings of the 17th international conference on Static analysis
Evaluating value-graph translation validation for LLVM
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Formalizing the LLVM intermediate representation for verified program transformations
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Validating register allocation and spilling
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
A formally verified SSA-Based middle-end: Static single assignment meets compcert
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Formal verification of SSA-based optimizations for LLVM
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Code optimizations using formally verified properties
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Formal verification of synchronous data-flow program transformations toward certified compilers
Frontiers of Computer Science: Selected Publications from Chinese Universities
Formal Verification of an SSA-Based Middle-End for CompCert
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Software pipelining is a loop optimization that overlaps the execution of several iterations of a loop to expose more instruction-level parallelism. It can result in first-class performance characteristics, but at the cost of significant obfuscation of the code, making this optimization difficult to test and debug. In this paper, we present a translation validation algorithm that uses symbolic evaluation to detect semantics discrepancies between a loop and its pipelined version. Our algorithm can be implemented simply and efficiently, is provably sound, and appears to be complete with respect to most modulo scheduling algorithms. A conclusion of this case study is that it is possible and effective to use symbolic evaluation to reason about loop transformations.