Ручная оптимизация (кусок из самописаной библиотеки)

Тема в разделе "WASM.BEGINNERS", создана пользователем Vilco, 2 сен 2011.

  1. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Vilco
    Перед первым setne al нужно добавить xor eax,eax, чтобы при последующем sub edx,eax не нарываться на partial register stall на P6, включая Core
     
  2. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    540
    В данном случае у него ж вроде необходимая partial register ситуация при каждом изменении al, и применение xor eax,eax убъет реально необходимую информацию.
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    partial register ситуация возникает только при обращении к целому регистру после изменения его части, т.е. в данном случае на sub edx,eax после операций с al
     
  4. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    540
    Да, но в данном-то случае эту ситуацию нельзя обойти обрывом цепочки зависимостей с помощю xor eax,eax перед setne al, так как тут входной операнд операции sub edx,eax обязательно должен зависеть как от того, что получилось в результате операции setne al, так и от того, что было до нее в других частях eax. Хотя, достоверно это известно только топикстартеру, если диапазон чисел в eax перед setne al укладывается в 0..255, то можно.
     
  5. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Судя по (довольно запутанной) логике вычитаться должно именно значение AL как число "nonnil" несовпадений на данной итерации...
     
  6. Vilco

    Vilco Vitaly

    Публикаций:
    0
    Регистрация:
    5 мар 2007
    Сообщения:
    190
    Адрес:
    Nsk, Russia
    Именно AL. EAX <= 2. nonnil - ограничение на число несовпадающих бит, циклом выше в него пишется значение =2.
     
  7. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    540
    ТОгда однозначно рвите цепочку.