I have trouble finding out what movslq
instruction does. Google isn't very helpful and there is no such instruction on this list. Here I have read that
MOVSLQ is move and sign-extend a value from a 32-bit source to a 64-bit destination.
I understand this like this. The instruction moves a value from 32-bit source to 64-bit destination but ensures that signed value of the number in the 64-bit destination is equal to the one from source, that is in case of negative number it fills first 32 bits of destination with ones, otherwise with zeros.
Is my understanding correct? If not, please explain where I am wrong.
EDIT:
This is not a duplicate of this topic: assembly cltq and movslq difference. There is no explanation for my question. And you'd have to read the whole answer for 10 minutes to convince yourself of that.