@instruction<EOL><INDENT>def SHRX(cpu, dest, src, count):<DEDENT>
OperandSize = dest.size<EOL>count = count.read()<EOL>countMask = {<NUM_LIT:8>: <NUM_LIT>,<EOL><NUM_LIT:16>: <NUM_LIT>,<EOL><NUM_LIT:32>: <NUM_LIT>,<EOL><NUM_LIT:64>: <NUM_LIT>}[OperandSize]<EOL>tempCount = Operators.ZEXTEND(count & countMask, dest.size)<EOL>tempDest = value = src.read()<EOL>res = dest.write(Operators.ITEBV(dest.size, tempCount == <NUM_LIT:0>, tempDest, value >> tempCount))<EOL>
The shift arithmetic right.

:param cpu: current CPU.
:param dest: destination operand.
:param src: count operand.