  Tensor processing infrastructures such as deep learning frameworks and
specialized hardware accelerators have revolutionized how computationally
intensive code from domains such as deep learning and image processing is
executed and optimized. These infrastructures provide powerful and expressive
abstractions while ensuring high performance. However, to utilize them, code
must be written specifically using the APIs / ISAs of such software frameworks
or hardware accelerators. Importantly, given the fast pace of innovation in
these domains, code written today quickly becomes legacy as new frameworks and
accelerators are developed, and migrating such legacy code manually is a
considerable effort.
  To enable developers in leveraging such DSLs while preserving their current
programming paradigm, we introduce Tenspiler, a verified lifting-based compiler
that uses program synthesis to translate sequential programs written in
general-purpose programming languages (e.g., C++ or Python code) into tensor
operations. Central to Tenspiler is our carefully crafted yet simple
intermediate language, named TensIR, that expresses tensor operations. TensIR
enables efficient lifting, verification, and code generation.
  Currently, Tenspiler already supports \textbf{six} DSLs, spanning a broad
spectrum of software and hardware environments. Furthermore, we show that new
backends can be easily supported by Tenspiler by adding simple pattern-matching
rules for TensIR. Using 10 real-world code benchmark suites, our experimental
evaluation shows that by translating code to be executed on \textbf{6}
different software frameworks and hardware devices, Tenspiler offers on average
105$\times$ kernel and 9.65$\times$ end-to-end execution time improvement over
the fully-optimized sequential implementation of the same benchmarks.
