Superoptimizer: a look at the smallest program

Authors:
Henry Massalin
Published:
ACM SIGOPS Operating Systems Review, volume 21, issue 4, pp. 122-126. October 1987.
Other Versions: Abstract:

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.

BibTeX:
@article{massalin1987,
  title = {{Superoptimizer: a look at the smallest program}},
  author = {Henry Massalin},
  journal = {ACM SIGOPS Operating Systems Review},
  volume = {21},
  issue = {4},
  year = 1987,
  month = 10,
  doi = {10.1145/36204.36194},
}