|
|
|
|
|
by phire
530 days ago
|
|
The speculation of a "reg + 10-bit offset" representation feels wrong to me. That requires a whole bunch of extra 64-bit full-adders everywhere one of these pairs might be consumed (so realistically, on every single read port of the register file). 64-bit adders take quite a bit of latency, so you don't want extra adders on all your critical paths. In the case where it appears to be holding a reg + offset pair, what I think has actually happened is that renamer (and/or uop fusion) has rewritten the uop to a 3-input add, with the offset as the third input. > Also the problem affects SHL as well as SHLX, I didn't realize until just now. And presumably SHR/SHRX/SAR/SARX too? |
|
And, presumably, the OP shift case here is in fact a case of there not being a built-in immediate adder and thus a need for fixup uops being inserted to materialize it?