ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
706496 Топик полностью
Ксения (18.10.2016 01:04 - 01:11, просмотров: 180) ответил fk0 на Ну у тебя-то на входе пакеты! vmovupd и vfmadd231pd работают с пакетами. А иначе есть vmovusd и vfmadd231sd.
vmovusd и vmovapd грузят в длинный регистр данные с указанного им адреса, с ними как раз всё правильно. Проблема в ином - компилятор должен был сам догадаться о том, что double-массив можно обрабатывать четверками. При этом число элементов в массиве уже не годится в качестве ограничителя счетчика цикла, а тоже должно быть уменьшено в 4 раза! Более того, если число чисел в массивах/векторах не кратно четырем, то он должен был заняться этим остатком, посчитав его отдельно, поскольку операция скалярного произведения вовсе не подразумевает, что длина векторов должна делится без остатка на 4 или на 8. Таким образом, мы сейчас с вами занимаемся тем, что уламываем компилятор с языка C выдать код, как у ассемблера, изобретая для него подпорки/подсказки. Тогда как ассемблер как раз и служит той цели, чтобы изобразить код именно такой, какой нужен программисту.