The need for multimedia applications has prompted the addition ofa multimedia instruction set (MMX) to most existing general-purposemicroprocessors. The introduction of short single-instruction multipledata (SIMD) i.e. “vectorized” instructions to themicroprocessor “scalar” instruction set is supported byspecial hardware which enables the execution of one instruction onmultiple data sets. Such a vectorized instruction set is primarily usedin multimedia applications, and it seems likely that it will growrapidly over the next few years. Thus on the one hand we have modernmultimedia execution hardware and on the other we have the software andthe general compilers which are not able to automatically exploit themultimedia instruction set. In addition, the compiler is not able tolocate SIMD parallelism within a basic block. Our solution to theseproblems is to find statement candidates in the program written in thelanguage C/C++ (as we mainly use this language), and to employ the SIMDinstruction set in the easiest possible way. As we know that thecompiler cannot be user-changed or modified, we can only extend thefunctionality of the program (compiler) by the use of specialisedlibrary routines or by macros. We prefer the latter. Why? We believethat the use of the macro library is faster than function calls, and weexpect it to be simpler and more friendly for the user. The algorithmfor identifying candidates for parallel processing (ICPP) is based onthe fact that the program does not need any “correction” or“adoption” prior to being analysed andfinally to beingtranslated into the SIMD instruction set. We define the macro libraryMacroVect.c as the substitution for the discovered statement candidates
展开▼