← All posts tagged sse

чтобы сохранять и восстанавливать FP регистры с учетом ymm регистров старыми инструкциями fxsave/fxrstor операционка должна выполнить инструкцию "xsetbv" при загрузке чтобы переключить fxsave/fxrstor на сохранение бОльшего контекста. хм...

vaesenc инструкция оперируют на 3-х xmm регистрах, а не на двух ymm, как могло показаться. по-видимому она использует третий регистр как целевой и не портит содержимое источников.

чтобы поменять endianness в xmm регистре надо:
1) заиметь правильную маску перестановки байтов для PSHUFB:
 	.data
.align 16
.Lbswap_mask:
	.byte 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
2) загрузить её в доступный xmm регистр и выполнить PSHUFB:
	movdqu .Lbswap_mask, %xmm6
	pshufb %xmm6, %xmm0