AVX определен, зафиксирован и уже идет к нам. Ранее много говорилось о разных способах разработки: компиляция, эмуляция, документация и даже профайлинг (очень рекомендую заглянуть сюда /en-us/avx/ ), – но довольно мало было информации по поводу отладки.
Хотя, если сказать честно – все уже было. Но сегодня стало еще удобнее и даже нагляднее отлаживать перемещение битов по 256 битному полю AVX регистров.
В общем, рекомендую ближе познакомиться с SDE (/en-us/articles/intel-software-development-emulator ).
Эмулятор позволяет не только отлично, но и тихо обрабатывать набор всех инструкций, а также показывать, что именно происходило.
Для начала хочу обратить ваше внимание на дополнительный аргумент помощи - thelp, который раскрывается в довольно длинный набор аргументов, среди которых можно найти и так называемые Debugtrace knobs, где отдельно стоит отметить -debugtrace и -dt_start_int3.
Их использование позволяет нам создать файл отчета debugtrace.out ( имя по умолчанию ), где будут явно видны команды и, главное, их операнды с используемыми значениями.
У меня, например, получается:
TID0: INS 0x00401f4d vrcpss xmm7, xmm5, xmm5
TID0: XMM7 := 00000000_00000000_00000000_3ba57800
XMM7 (doubles) := 0 4.94411e-315
XMM7 (floats) := 0 0 0 0.00504971
TID0: INS 0x00401f51 vsubss xmm5, xmm1, xmm0
TID0: XMM5 := 00000000_00000000_00000000_43460000
XMM5 (doubles) := 0 5.57633e-315
XMM5 (floats) := 0 0 0 198
TID0: INS 0x00401f55 vmulss xmm5, xmm5, xmm7
TID0: XMM5 := 00000000_00000000_00000000_3f7ff5a0
XMM5 (doubles) := 0 5.26353e-315
XMM5 (floats) := 0 0 0 0.999842
Здесь явно видно, что vmulss ( скалярное умножение с плавающей точкой ) в виде операндов получает
0.00504971 (XMM7) и 198 (XMM5). Результат остается в XMM5 (0.999842), что согласно моему калькулятору является истиной.
Структура debugtrace.out на самом деле довольно проста, и практически сразу, ну или со второго взгляда можно увидеть последние значения используемых регистров или памяти J.
Для большего удобства советую также обратить внимание на dt_start_int3, который позволяет «окружать» интересный код для более детального разбора уже из SDE.
Я думаю проблем уже нет или ?