Shouldn't a superscalar CPU figure out concurrent execution chains by itself with register renaming
And the follow up https://youtu.be/nAbCKa0FzjQ.
But sometimes things that look like dependencies are fake.
XMM0 = XMM1 + XMM2 XMM3 = XMM0 + XMM4 XMM0 = XMM5 + XMM6 XMM7 = XMM0 + XMM8
At first glance it may look like you have to calculate these instructions serially. But, by renaming the last two `XMM0` you eliminate the dependency on the specific register, and can calculate instructions 1 and 3 in parallel, followed by 2 and 4 in parallel.
Regiser renaming is designed assuming the optimizer