Вы можете заменить внутренний цикл на 8 явных строк кода
dst[RIDX(dim-1-jj, i, dim)] = src[RIDX(i, jj, dim)];
dst[RIDX(dim-1-(jj+1), i, dim)] = src[RIDX(i, (jj+1), dim)];
...
dst[RIDX(dim-1-(jj+7), i, dim)] = src[RIDX(i, (jj+7), dim)];
поэтому вы заменяете переменную цикла, явно записывая строку для каждого значения, которое она принимает.
Теперь вы можете повторить, что для 8 значений следующего цикла у вас будет 8 x 8 строк кода и т. Д.
Как что-то кроме упражнения в понимании, это кажется мне довольно бессмысленным, компиляторы делают такие вещи действительно эффективно, они оптимизируют там, где это имеет смысл. Ручное вращение редко дает оптимальный код.