Вопрос видимо к гентушникам.. Простой топорный тестовый пример: char bullshit[1024]; int main(int argc, char** argv){ int i; for (i=0;i<1024;i++) bullshit[i]=0; return 0; } Собираю с опциями "-O -march=pentium3 -mtune=pentium3 -mmmx -msse -ftree-vectorize", получается такое(сам цикл): movl $0, %eax .L2: xorps %xmm0, %xmm0 // почему внутри цикла? movaps %xmm0, bullshit(%eax) addl $16, %eax cmpl $1024, %eax jne .L2 Если bullshit сдедать float, получим: movl $0, %eax xorps %xmm0, %xmm0 // всё почти также, но лишняя операция вынесена из цикла .L2: movaps %xmm0, bullshit(%eax) addl $16, %eax cmpl $4096, %eax jne .L2 Казалось бы, никакой разницы быть не должно. Но самое интересное начинается, когда присваем не 0. В случае float всё остается также, а при char имеем вот такой высер: movl $0, %eax .L2: movb $15, bullshit(%eax) movb $15, bullshit+1(%eax) movb $15, bullshit+2(%eax) movb $15, bullshit+3(%eax) movb $15, bullshit+4(%eax) movb $15, bullshit+5(%eax) movb $15, bullshit+6(%eax) movb $15, bullshit+7(%eax) movb $15, bullshit+8(%eax) movb $15, bullshit+9(%eax) movb $15, bullshit+10(%eax) movb $15, bullshit+11(%eax) movb $15, bullshit+12(%eax) movb $15, bullshit+13(%eax) movb $15, bullshit+14(%eax) movb $15, bullshit+15(%eax) addl $16, %eax cmpl $1024, %eax jne .L2 Опции -O2 и -O3 для всех примеров делают код более раздутым и тревожным, но едва-ли более быстрым. Собстно вопрос: как его заставить генерировать вменяемый код? Или не париться и собирать под i386 без всяких выкрутасов? gcc version 4.2.1
Ответ на:
комментарий
от watashiwa_daredeska
Ответ на:
комментарий
от madcore
Ответ на:
комментарий
от madcore
Ответ на:
комментарий
от dilmah
Ответ на:
комментарий
от fmj
Ответ на:
комментарий
от dilmah
Ответ на:
комментарий
от madcore
Ответ на:
комментарий
от krum
Ответ на:
комментарий
от madcore
Ответ на:
комментарий
от sergio_nsk
Ответ на:
комментарий
от mv
Ответ на:
комментарий
от krum
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от mv
Ответ на:
комментарий
от mv
Ответ на:
комментарий
от madcore
Ответ на:
комментарий
от sergio_nsk
Ответ на:
комментарий
от madcore
Ответ на:
комментарий
от mv
Ответ на:
комментарий
от sergio_nsk
Ответ на:
комментарий
от mv
Ответ на:
комментарий
от sergio_nsk
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Снова type aliasing, и баг в gcc (2016)
- Форум RH9.0 и do_brk :) (2003)
- Форум gcc - ключи оптимизации... (2004)
- Форум [ключи] Оптимизация (2010)
- Форум [2Silvy][gcc]Оптимизация (2010)
- Форум [gcc][ключи]скорость (2008)
- Форум Оптимизация в gcc (2007)
- Форум Опции оптимизации gcc (2010)
- Форум GCC оптимизация core 2 (2013)
- Форум Оптимизации циклов в gcc (2012)