20 ms·
Viewing it from the other side, when you split some of the useful but different operations into a bunch of orthogonal extensions, then when you have to do somet
by sifar 7y ago
Viewing it from the other side, when you split some of the useful but different operations into a bunch of orthogonal extensions, then when you have to do something really useful, you have to implement the entire extension. That equally bloats your core.
In this case, one cannot just implement ROT, one has to implement the entire Bit manipulation extension. Scale it up across the extensions - say you need 3 basic ops from 3 different extensions.
Sure you can add your custom ROT op, but then you end up breaking compatibility.
[Edit] The principle of removing unused/rarely used HW goes for a toss since now you have a bunch of operations from these extensions that would lie unused yet consume HW. It is not the basic operations that cause bloat, it is the functional variants - need to support different width, indexing, different constant. In this case shift and rotate have the same function. Immediate ones are the variants.