| ▲ | gpderetta 2 years ago | |
The looping overhead is trivial, especially on simd code where the loop overhead will use the scalar hardware. Unrolling is definitely needed for properly scheduling and pipelining SIMD code even on OoO cores. Remember that an OoO core cannot reorder dependent instructions, so the dependencies need to be manually broken, for example by adding additional accumulators, which in turn requires additional unrolling, this is especially important on SIMD code which typically is non-branchy with long dependency chains. | ||