SPRUIG3C January 2018 – August 2019 TDA4VM , TDA4VM-Q1
VCOP supports conditional moves with compound predicates comprised of testing the LCVs for either the first or last iteration of each loop level. For example, the following kernel contains a conditional move that will execute only when all three loops are in their first iteration:
for(I0 = 0; I0 < N0; I0++) {
for (I1 = 0; I1 < N1; I1++) {
for (I2 = 0; I2 < N2; I2++)
{
...
// conditional move
if (I0 == 0 && I1 == 0 && I2 == 0)
Vx = Vy;
...
}
The migration tool translates conditional
moves as simple conditions ( if
statements), copying the condition
verbatim from the Kernel-C expression. This will prevent additional optimizations such
as collapsing and use of the NLC because it requires the LCVs to be explicitly
instantiated.