FREE RIDER: A Tool for Retargeting Platform-Specific Intrinsic Functions

Stanislav Manilov, Bjoern Franke, Anthony Magrath, Cedric Andrieu

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

Short-vector SIMD and DSP instructions are popular extensions to common ISAs. These extensions deliver excellent performance and compact code for some compute-intensive applications, but they require specialised compiler support. To enable the programmer to explicitly request the use of such an instruction, many C compilers provide platform-specific intrinsic functions, whose implementation is handled specially by the compiler. The use of such intrinsics, however, inevitably results in non-portable code. In this paper we develop a novel methodology for retargeting such non-portable code, which maps intrinsics from one platform to another, taking advantage of similar intrinsics on the target platform. We employ a description language to specify the signature and semantics of intrinsics and perform graph-based pattern matching and high-level code transformations to derive optimised implementations exploiting the target’s intrinsics, wherever possible. We demonstrate the effectiveness of our new methodology, implemented in the FREE RIDER tool, by automatically retargeting benchmarks derived from OPENCV samples and a complex embedded application optimised to run on an ARM CORTEX-M4 to an INTEL EDISON module with SSE4.2 instructions. We achieve a speedup of up to 3.73 over a plain C baseline, and on average 96.0% of the speedup of manually ported and optimised versions of the benchmarks.
Original languageEnglish
Title of host publicationProceedings of the ACM SIGPLAN/SIGBED Conference on Languages, Compilers, Tools and Theory for Embedded Systems
PublisherACM
Number of pages10
DOIs
Publication statusPublished - 20 Jun 2015

Fingerprint

Dive into the research topics of 'FREE RIDER: A Tool for Retargeting Platform-Specific Intrinsic Functions'. Together they form a unique fingerprint.

Cite this