International audienceInstrumentation by sampling, adaptive computing and dynamic optimization can be efficiently implemented using multiple versions of a code region. Ideally, compilers should automatically handle the generation of such multiple versions. In this work we discuss the problem of multi-versioning in the situation where each version requires a different intermediate representation. We expose the limits of nowadays compilers regarding these aspects and provide our solutions to overcome them, using the LLVM compiler as our research platform. The paper is focused on three main aspects: tracking code in LLVM IR, cloning, and communication between low-level and high-level representations. Aiming at performance and minimal impact on...
Compilation is an essential step to create efficient applications.This step allows the use of high-l...
Code multi-versioning is an increasingly widely adopted tool for implementing optimizations which re...
On-Stack Replacement (OSR) is a technique for dynamically transferring execution between different v...
We present libVersioningCompiler, a C++ library designed to support the dynamic generation of multip...
International audienceIn this paper, we propose a runtime framework that implements code multi-versi...
International audienceWhen reengineering large systems, software developers would like to assess and...
Software-pipelining is an important technique for increasing the instruction level parallelism of lo...
International audienceIterative compilation is a widely adopted technique to optimize programs for d...
Modern compilers perform extensive transformation of code in order to optimize run- ning time and bi...
Production compilers have achieved a high level of maturity in terms of generating efficient code. C...
Low Level Virtual Machine (LLVM) is a widely adopted open source compiler providing numerous optimiz...
One of the important feature of application specific processors is performance. To maximize it, the ...
cited By 2; Conference of 4th International Workshop on Adaptive Self-Tuning Computing Systems, ADAP...
La compilation est une étape indispensable dans la création d'applications performantes.Cette étape ...
Adaptive optimization technology is a key ingredient in modern runtime systems. This technology aims...
Compilation is an essential step to create efficient applications.This step allows the use of high-l...
Code multi-versioning is an increasingly widely adopted tool for implementing optimizations which re...
On-Stack Replacement (OSR) is a technique for dynamically transferring execution between different v...
We present libVersioningCompiler, a C++ library designed to support the dynamic generation of multip...
International audienceIn this paper, we propose a runtime framework that implements code multi-versi...
International audienceWhen reengineering large systems, software developers would like to assess and...
Software-pipelining is an important technique for increasing the instruction level parallelism of lo...
International audienceIterative compilation is a widely adopted technique to optimize programs for d...
Modern compilers perform extensive transformation of code in order to optimize run- ning time and bi...
Production compilers have achieved a high level of maturity in terms of generating efficient code. C...
Low Level Virtual Machine (LLVM) is a widely adopted open source compiler providing numerous optimiz...
One of the important feature of application specific processors is performance. To maximize it, the ...
cited By 2; Conference of 4th International Workshop on Adaptive Self-Tuning Computing Systems, ADAP...
La compilation est une étape indispensable dans la création d'applications performantes.Cette étape ...
Adaptive optimization technology is a key ingredient in modern runtime systems. This technology aims...
Compilation is an essential step to create efficient applications.This step allows the use of high-l...
Code multi-versioning is an increasingly widely adopted tool for implementing optimizations which re...
On-Stack Replacement (OSR) is a technique for dynamically transferring execution between different v...