SPRUIV4D May 2020 – May 2024
Because software pipelined loops may not have any control flow except for the branch to the kernel, any calls or control-flow (if-statements) will prevent software pipelining. To mitigate the effect that control-flow inside a loop has on whether the loop is software pipelined, the compiler performs “if-conversion” on some if statements, which adds a proper predicate onto the instructions in the “then” and “else” clauses. Because there are a limited number of machine predicate registers, and because of other factors, you should limit the nesting level of if-statements inside loops you hope will software pipeline.