Описание тега strength-reduction

Замена дорогостоящих операций на более дешевые. Классический пример: x = n * i в цикле становится x += n.
2 ответа

Как я могу уменьшить силу деления на 2^n + 1?

Мне нужно выполнить несколько целочисленных делений в горячем пути моего кода. Я уже определил с помощью профилирования и подсчета циклов, что целочисленные деления стоят мне. Я надеюсь, что смогу что-то сделать, чтобы разделить дивизии на что-то бо…
1 ответ

Как умножить регистр на 37, используя только две последовательные инструкции в x86?

Скажем,%edi содержит x, и я хочу получить 37*x, используя только 2 последовательные инструкции по обучению, как бы мне поступить? Например, чтобы получить 45x вы бы сделали leal (%edi, %edi, 8), %edi leal (%edi, %edi, 4), %eax (to be returned) Я не …
5 ответов

Добавить против мул (IA32-Assembly)

Я знаю, что добавить быстрее по сравнению с многофункциональным. Я хочу знать, как использовать add вместо mul в следующем коде, чтобы сделать его более эффективным. Образец кода: mov eax, [ebp + 8] #eax = x1 mov ecx, [ebp + 12] #ecx = x2 mov edx, […
14 сен '10 в 05:15
2 ответа

Почему эта программа не оптимизирована?

Рассмотрим следующую простую программу (адаптированную из этого вопроса): #include <cstdlib> int main(int argc, char** argv) { int mul1[10] = { 4, 1, 8, 6, 3, 2, 5, 8, 6, 7 }; // sum = 50 int mul2[10] = { 4, 1, 8, 6, 7, 9, 5, 1, 2, 3 }; // sum…
10 июн '15 в 08:28
2 ответа

Уменьшите этот цикл до уравнения

Эта функция (написана на C для удобства, но это не важно для вопроса) определяет размер массива. Я уверен, что это можно преобразовать в цепочку if-else или даже в уравнение, но я не достаточно умен, чтобы понять, как это сделать. (Я попытался запис…
1 ответ

Индексы легче векторизовать, чем указатели?

Есть ли какой-нибудь пример (например, на https://godbolt.org/), где CLang генерирует худший код, когда алгоритм выражается итерациями указателя вместо индексов массива? Например, в одном случае он может векторизоваться / разворачиваться, а в другом…
2 ответа

Снижение прочности при делении с плавающей запятой вручную

В одном из наших последних заданий по компьютерным наукам в этом семестре мы должны применить снижение прочности к некоторым фрагментам кода. Большинство из них были прямолинейными, особенно с изучением вывода компилятора. Но одну из них я не смогу …