As far as I know there's no method of dereferencing the contents of an XMM register so you're only solution will be to 'manually' extract the addresses, dereference them, and then 'manually' build your new XMM register - this is effectively what you're suggesting. Of course you can keep the addresses in registers to avoid the memory read/write hit you mention but it's still not a great solution. For example: movd eax, xmm0 //eax is now the address in the lowest 32 bits of xmm0 mov ebx, [eax] //ebx is whatever eax was pointing at movd xmm1, ebx //low dword of xmm1 = *(low dword of xmm0) repeating this with some packed rotations to get/set all the data in the xmm registers. (Sorry for the assembler - I don't actually use intrinsics) Perhaps you need to look at the overall algorithm to see whether there's a method which avoids ending up with your addresses in an XMM register... Not sure I've been much help really - if you find an elegant solution I'd be interested! Cheers, Chris.