Новые XOP инструкции vpermil2ps и vpermil2pd

Тема в разделе "WASM.ASSEMBLER", создана пользователем s_d_f, 20 сен 2011.

  1. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Всем привет.
    Не могу разобраться с инструкциями vpermil2ps и vpermil2pd, у меня процессора соответствующего нет, а в мануале явные ошибки.
    В старом мануале.
    Код (Text):
    1. Mnemonic Encoding
    2. XOP
    3. RXB.mmmm
    4. m
    5. W.vvvv.L.pp Opcode
    6. VPERMIL2PS xmm1, xmm2, xmm3/mem128, xmm4, imm8 C4 RXB.03 0.xsrc1.0.00 48 /r imm8
    7. VPERMIL2PS xmm1, xmm2, xmm3, xmm4/mem128, imm8 C4 RXB.03 1.xsrc1.0.00 48 /r imm8
    8. VPERMIL2PS ymm1, ymm2, ymm3/mem256, ymm4, imm8 C4 RXB.03 0.ysrc1.1.00 48 /r imm8
    9. VPERMIL2PS ymm1, ymm2, ymm3, ymm4/mem256, imm8 C4 RXB.03 1.ysrc1.1.00 48 /r imm8
    В новом мануале.
    Код (Text):
    1. Instruction Encoding
    2. Mnemonic VEX RXB.mmmmm W.vvvv.L.pp Opcode
    3. VPERMIL2PS xmm1, xmm2, xmm3/mem128, xmm4, m2z C4 RXB.00011 0.src.0.01 48 /r is5
    4. VPERMIL2PS xmm1, xmm2, xmm3, xmm4/mem128, m2z C4 RXB.00011 1.src.0.01 48 /r is5
    5. VPERMIL2PS ymm1, ymm2, ymm3/mem256, ymm4, m2z C4 RXB.00011 0.src.1.01 48 /r is5
    6. VPERMIL2PS ymm1, ymm2, ymm3, ymm4/mem256, m2z C4 RXB.00011 1.src.1.01 48 /r is5
    Не понятно c последними 2 битами третьего байта то-ли VEX.pp=00 то-ли VEX.pp=01.
    Проверял на Fasm
    Код (Text):
    1.  use64
    2.  org 100400000h
    3. vpermil2ps xmm1,xmm2,xmm3,xmm4,5
    Получилось 6 байт
    db 0C4h,0E3h,68h,48h,0CBh,45h т.е. VEX.pp=00

    Эти 6 байт WinDbg игнорирует, зато опкод db 0C4h,0E3h,69h,48h,0CBh,45h он отображает как vpermil2ps xmm1,xmm2,xmm3,xmm4,5 т.е. VEX.pp=01
     
  2. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Неужели совсем никто не может в отладчике проверить два опкода на ин/валидность?
     
  3. Maratyszcza

    Maratyszcza New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    32
    Процессор не признаёт ни одного из этих опкодов, так же как и код, генерируемый FASM для vpermil2ps xmm1,xmm2,xmm3,xmm4,5
    Процессор с AVX, винда тоже
     
  4. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Спасибо за ответ.
    XOP инструкции могут быть только на процессорах производства AMD, как когда-то ранее 3DNOW, скорей всего на твоей машине Intel.
     
  5. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Эти команды (SSE5) появились только у процессоров AMD на базе архитектуры Bulldozer.
    Серийное производство которых началось только в сентябре 2011 года.
    Я думаю до нас они ещё вообще не доехали, так что людям отладчиком просто проверять не на чем.
    В общем долго ты ещё ждать будешь ответа, посмотри лучше в исходниках binutils.
     
  6. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    cppasm посмотри лучше в исходниках binutils.

    А что, там есть эти инструкции?
     
  7. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    В релизе нету, в рабочей ветке в репозитории есть.
    Там второй вариант (WinDbg).
    Смотри в новых мануалах.
    Там история такая: AMD предложила SSE5 и написала спецификацию (в CPU не реализовали).
    В Intel как всегда решили что мы придумаем своё - понатырили инструкций из SSE5, добавили своих и сделали AVX.
    После этого AMD изменила способ кодирования инструкций SSE5, как написано для совместимости с Intel AVX.
    Так что смотри в новых мануалах - там должно быть правильно.
    В процессорах реализовали именно вариант с изменённым кодированием.

    Вот нашёл ещё в Википедии: http://ru.wikipedia.org/wiki/SSE5
     
  8. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    От SSE5 отказались еще за долго до того как я начал писать свой дизассемблер, так что тема совсем не про это.

    Просто у меня есть прошлогодний AMD`ешный мануал Volume 6 с описанием XOP и FMA4, в котором скорей всего опечатки в описаниях опкодов vpermil2ps и vpermil2pd. Вообщем буду придерживаться варианта из нового мануала, хотя и там хватает опечаток, кто его знает может когда получится проверить это на живой машине то опять придется переделывать.
     
  9. aslmakina

    aslmakina New Member

    Публикаций:
    0
    Регистрация:
    6 окт 2011
    Сообщения:
    1
    Адрес:
    Кемерово
    Очень интересно даже...