Vector Instruction Selection for Digital Signal Processors Using Program Synthesis
Maaz Bin Safeer Ahmad, Adobe Research
Alexander J Root, MIT CSAIL
Andrew Adams, Adobe Research
Shoaib Kamil, Adobe Research
Alvin Cheung, UC Berkeley
Abstract
Instruction selection, whereby input code represented in an intermediate representation is translated into executable instructions from the target platform, is often the most target-dependent component in optimizing compilers. Current approaches include pattern matching, which is brittle and tedious to design, or search-based methods, which are limited by scalability of the search algorithm. In this paper, we propose a new algorithm that first abstracts the target platform instructions into high-level uber-instructions, with each uber-instruction unifying multiple concrete instructions from the target platform. Program synthesis is used to lift input code sequences into semantically equivalent sequences of uber-instructions and then to lower from uber-instructions to machine code. Using 21 real-world benchmarks, we show that our synthesis-based instruction selection algorithm can generate instruction sequences for a hardware target, with the synthesized code performing up to 2.1x faster as compared to code generated by a professionally-developed optimizing compiler for the same platform.
Article
ACM Digital LibraryCode
Code is publicly available here.
BibTeX
@inproceedings{ahmad2022rake,
author = {Ahmad, Maaz Bin Safeer and Root, Alexander J and Adams, Andrew and Kamil, Shoaib and Cheung, Alvin},
title = {Vector Instruction Selection for Digital Signal Processors Using Program Synthesis},
year = {2022},
isbn = {9781450392051},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3503222.3507714},
doi = {10.1145/3503222.3507714},
abstract = {Instruction selection, whereby input code represented in an intermediate representation is translated into executable instructions from the target platform, is often the most target-dependent component in optimizing compilers. Current approaches include pattern matching, which is brittle and tedious to design, or search-based methods, which are limited by scalability of the search algorithm. In this paper, we propose a new algorithm that first abstracts the target platform instructions into high-level uber-instructions, with each uber-instruction unifying multiple concrete instructions from the target platform. Program synthesis is used to lift input code sequences into semantically equivalent sequences of uber-instructions and then to lower from uber-instructions to machine code. Using 21 real-world benchmarks, we show that our synthesis-based instruction selection algorithm can generate instruction sequences for a hardware target, with the synthesized code performing up to 2.1x faster as compared to code generated by a professionally-developed optimizing compiler for the same platform.},
booktitle = {Proceedings of the 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems},
pages = {1004-1016},
numpages = {13},
keywords = {Instruction selection, program synthesis, compiler optimizations},
location = {Lausanne, Switzerland},
series = {ASPLOS '22}
}