The GCC compiler introduced the ‘ifunc’ extension to allow developers to create programs that can use advanced SIMD, SVE2, etc.
Our project is base on the use of ifunc and advanced SIMD, SVE2.
The goal for this project is to produce a proof-of-concept tool that will take code that meets specific conditions and automatically build it with
ifunc capability to select between multiple, autovectorized versions of a function, to take advantage of the best SIMD implementation available on the CPU on which the code is running.
For a single instruction to be completed for multiple data unit different architecture have different SIMD implementations like advance SIMD, SVE and SVE2.
The tool designed by us will build 3 implementation for
function.c file which wil have only one function.
I am comfortable coding and understanding pyton code and I know python has many library that I can use. The reason I an not using C or C++ is that I am not sure I can complete the project if I face any troble while working with C++. But at last I decided to work with C
I am some what confused no how to approach the problem.
Lets divide the working of the program into steps.
- Get input
- Linker function
- Functions for different modules
- will figure out in the future.
The initial process will produce output similar to gcc compiler.
gcc -c func.c -o func.o
Calling the linking stage multiple times during building for different modules.