On 08/10/2018 07:45 PM, Al Viro wrote:
BTW, seeing that it's your code - why was unop used in alpha_ni_syscall? I don't remember the rules re pipeline stalls; is it that some earlier variants prefer unop to nop in such places? It's not that microoptimizing that one makes any difference, but just out of curiosity - would something like lda $0, -ENOSYS stq $sp, 0($sp) /* sp != 0 */ ret do just as well there?
Oh that. Well, unop is a "load" and pairs with everything on all cpus, where nop is an integer and doesn't always pair. So I got into the habit of using unop for everything.
The extra nop was so that lda + unop // stq + ret paired up in in two cycles as opposed to lda /stall/ stq // ret in three cycles on ev4+ev5. ev6 didn't care. FWIW.