Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Discovering machine-specific code improvements
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Automatic generation of peephole optimizations
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
A practical method for code generation based on exhaustive search
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
Automatic generation of fast optimizing code generators
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
A language for shading and lighting calculations
SIGGRAPH '90 Proceedings of the 17th annual conference on Computer graphics and interactive techniques
Group graphs and computational symmetry on massively parallel architecture
Proceedings of the 1990 ACM/IEEE conference on Supercomputing
Eliminating branches using a superoptimizer and the GNU C compiler
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Precise instruction scheduling without a precise machine model
ACM SIGARCH Computer Architecture News
A massively parallel optimizer for expression evaluation
ICS '93 Proceedings of the 7th international conference on Supercomputing
Compiler transformations for high-performance computing
ACM Computing Surveys (CSUR)
Generating machine specific optimizing compilers
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Reverse interpretation + mutation analysis = automatic retargeting
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Potential-driven statistical ordering of transformations
DAC '97 Proceedings of the 34th annual Design Automation Conference
Enhanced code compression for embedded RISC processors
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Power optimization using divide-and-conquer techniques for minimization of the number of operations
ACM Transactions on Design Automation of Electronic Systems (TODAES)
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Derive: a tool that automatically reverse-engineers instruction encodings
DYNAMO '00 Proceedings of the ACM SIGPLAN workshop on Dynamic and adaptive compilation and optimization
Denali: a goal-directed superoptimizer
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Automatic derivation of compiler machine descriptions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Object combining: A new aggressive optimization for object intensive programs
JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
Adaptive Optimizing Compilers for the 21st Century
The Journal of Supercomputing
Programming Languages for Compressing Graphics
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
Searching for the Best FFT Formulas with the SPL Compiler
LCPC '00 Proceedings of the 13th International Workshop on Languages and Compilers for Parallel Computing-Revised Papers
Searching for Mutual Exclusion Algorithms Using BDDs
Progress in Discovery Science, Final Report of the Japanese Discovery Science Project
DS '00 Proceedings of the Third International Conference on Discovery Science
Finding effective optimization phase sequences
Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems
Fast searches for effective optimization phase sequences
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
HOIST: a system for automatically deriving static analyzers for embedded systems
ASPLOS XI Proceedings of the 11th international conference on Architectural support for programming languages and operating systems
Automatic discovery of API-level exploits
Proceedings of the 27th international conference on Software engineering
Fast and efficient searches for effective optimization-phase sequences
ACM Transactions on Architecture and Code Optimization (TACO)
Statistical Models for Empirical Search-Based Performance Tuning
International Journal of High Performance Computing Applications
Automatic generation of peephole superoptimizers
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
Denali: A practical algorithm for generating optimal code
ACM Transactions on Programming Languages and Systems (TOPLAS)
VISTA: VPO interactive system for tuning applications
ACM Transactions on Embedded Computing Systems (TECS)
Iterative compilation for energy reduction
Journal of Embedded Computing - Cache exploitation in embedded systems
CGCExplorer: a semi-automated search procedure for provably correct concurrent collectors
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Deriving linearizable fine-grained concurrent objects
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Equality saturation: a new approach to optimization
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
The Superdiversifier: Peephole Individualization for Software Protection
IWSEC '08 Proceedings of the 3rd International Workshop on Security: Advances in Information and Computer Security
Instruction Set Limitation in Support of Software Diversity
Information Security and Cryptology --- ICISC 2008
Blind Optimization for Exploiting Hardware Features
CC '09 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Generating Optimal Code Using Answer Set Programming
LPNMR '09 Proceedings of the 10th International Conference on Logic Programming and Nonmonotonic Reasoning
Generating compiler optimizations from proofs
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automatically generating instruction selectors using declarative machine descriptions
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Code density concerns for new architectures
ICCD'09 Proceedings of the 2009 IEEE international conference on Computer design
Oracle-guided component-based program synthesis
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Dimensions in program synthesis
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Binary translation using peephole superoptimizers
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
Synthesis of loop-free programs
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Automatic SIMD vectorization of fast fourier transforms for the larrabee and AVX instruction sets
Proceedings of the international conference on Supercomputing
Control-Flow semantics for assembly-level data-flow graphs
RelMiCS'05 Proceedings of the 8th international conference on Relational Methods in Computer Science, Proceedings of the 3rd international conference on Applications of Kleene Algebra
TOAST: applying answer set programming to superoptimisation
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
Compiler optimizations using data compression to decrease address reference entropy
LCPC'02 Proceedings of the 15th international conference on Languages and Compilers for Parallel Computing
Steganography for executables and code transformation signatures
ICISC'04 Proceedings of the 7th international conference on Information Security and Cryptology
Correct, fast, maintainable: choose any three!
Proceedings of the Asia-Pacific Workshop on Systems
Correct, fast, maintainable - choose any three!
APSys'12 Proceedings of the Third ACM SIGOPS Asia-Pacific conference on Systems
Data-driven equivalence checking
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Proceedings of the 2013 workshop on New security paradigms workshop
Symbolic optimization with SMT solvers
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Post-compiler software optimization for reducing energy
Proceedings of the 19th international conference on Architectural support for programming languages and operating systems
Hi-index | 0.01 |
Given an instruction set, the superoptimizer finds the shortest program to compute a function. Startling programs have been generated, many of them engaging in convoluted bit-fiddling bearing little resemblance to the source programs which defined the functions. The key idea in the superoptimizer is a probabilistic test that makes exhaustive searches practical for programs of useful size. The search space is defined by the processor's instruction set, which may include the whole set, but it is typically restricted to a subset. By constraining the instructions and observing the effect on the output program, one can gain insight into the design of instruction sets. In addition, superoptimized programs may be used by peephole optimizers to improve the quality of generated code, or by assembly language programmers to improve manually written code.