| Index: src/ia32/disasm-ia32.cc
|
| ===================================================================
|
| --- src/ia32/disasm-ia32.cc (revision 6800)
|
| +++ src/ia32/disasm-ia32.cc (working copy)
|
| @@ -1115,10 +1115,20 @@
|
| get_modrm(*data, &mod, ®op, &rm);
|
| int8_t imm8 = static_cast<int8_t>(data[1]);
|
| AppendToBuffer("pextrd %s,%s,%d",
|
| - NameOfXMMRegister(regop),
|
| + NameOfCPURegister(regop),
|
| NameOfXMMRegister(rm),
|
| static_cast<int>(imm8));
|
| data += 2;
|
| + } else if (*data == 0x22) {
|
| + data++;
|
| + int mod, regop, rm;
|
| + get_modrm(*data, &mod, ®op, &rm);
|
| + int8_t imm8 = static_cast<int8_t>(data[1]);
|
| + AppendToBuffer("pinsrd %s,%s,%d",
|
| + NameOfXMMRegister(regop),
|
| + NameOfCPURegister(rm),
|
| + static_cast<int>(imm8));
|
| + data += 2;
|
| } else {
|
| UnimplementedInstruction();
|
| }
|
| @@ -1182,15 +1192,33 @@
|
| NameOfXMMRegister(rm),
|
| static_cast<int>(imm8));
|
| data += 2;
|
| + } else if (*data == 0xF3) {
|
| + data++;
|
| + int mod, regop, rm;
|
| + get_modrm(*data, &mod, ®op, &rm);
|
| + AppendToBuffer("psllq %s,%s",
|
| + NameOfXMMRegister(regop),
|
| + NameOfXMMRegister(rm));
|
| + data++;
|
| } else if (*data == 0x73) {
|
| data++;
|
| int mod, regop, rm;
|
| get_modrm(*data, &mod, ®op, &rm);
|
| int8_t imm8 = static_cast<int8_t>(data[1]);
|
| - AppendToBuffer("psllq %s,%d",
|
| + ASSERT(regop == esi || regop == edx);
|
| + AppendToBuffer("%s %s,%d",
|
| + (regop == esi) ? "psllq" : "psrlq",
|
| NameOfXMMRegister(rm),
|
| static_cast<int>(imm8));
|
| data += 2;
|
| + } else if (*data == 0xD3) {
|
| + data++;
|
| + int mod, regop, rm;
|
| + get_modrm(*data, &mod, ®op, &rm);
|
| + AppendToBuffer("psrlq %s,%s",
|
| + NameOfXMMRegister(regop),
|
| + NameOfXMMRegister(rm));
|
| + data++;
|
| } else if (*data == 0x7F) {
|
| AppendToBuffer("movdqa ");
|
| data++;
|
| @@ -1228,6 +1256,14 @@
|
| NameOfXMMRegister(regop),
|
| NameOfXMMRegister(rm));
|
| data++;
|
| + } else if (*data == 0xEB) {
|
| + data++;
|
| + int mod, regop, rm;
|
| + get_modrm(*data, &mod, ®op, &rm);
|
| + AppendToBuffer("por %s,%s",
|
| + NameOfXMMRegister(regop),
|
| + NameOfXMMRegister(rm));
|
| + data++;
|
| } else {
|
| UnimplementedInstruction();
|
| }
|
|
|