Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / v8 / src / x64 / disasm-x64.cc
index aaa8754..2b8fc2d 100644 (file)
@@ -315,17 +315,6 @@ class DisassemblerX64 {
     OPERAND_QUADWORD_SIZE = 3
   };
 
-  enum {
-    rax = 0,
-    rcx = 1,
-    rdx = 2,
-    rbx = 3,
-    rsp = 4,
-    rbp = 5,
-    rsi = 6,
-    rdi = 7
-  };
-
   const NameConverter& converter_;
   v8::internal::EmbeddedVector<char, 128> tmp_buffer_;
   unsigned int tmp_buffer_pos_;
@@ -1025,22 +1014,6 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
         current += PrintRightOperand(current);
         AppendToBuffer(",%s,%d", NameOfXMMRegister(regop), (*current) & 3);
         current += 1;
-      } else if (third_byte == 0x21) {
-        get_modrm(*current, &mod, &regop, &rm);
-        // insertps xmm, xmm, imm8
-        AppendToBuffer("insertps %s,%s,%d",
-                       NameOfXMMRegister(regop),
-                       NameOfXMMRegister(rm),
-                       (*(current + 1)) & 3);
-        current += 2;
-      } else if (third_byte == 0x22) {
-        get_modrm(*current, &mod, &regop, &rm);
-        // pinsrd xmm, reg32, imm8
-        AppendToBuffer("pinsrd %s,%s,%d",
-                       NameOfXMMRegister(regop),
-                       NameOfCPURegister(rm),
-                       (*(current + 1)) & 3);
-        current += 2;
       } else if (third_byte == 0x0b) {
         get_modrm(*current, &mod, &regop, &rm);
          // roundsd xmm, xmm/m64, imm8
@@ -1051,16 +1024,6 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
       } else {
         UnimplementedInstruction();
       }
-    } else if (opcode == 0x38) {
-      byte third_byte = *current;
-      current = data + 3;
-      if (third_byte == 0x40) {
-        get_modrm(*current, &mod, &regop, &rm);
-        AppendToBuffer("pmulld %s, ", NameOfXMMRegister(regop));
-        current += PrintRightXMMOperand(current);
-      } else {
-        UnimplementedInstruction();
-      }
     } else {
       get_modrm(*current, &mod, &regop, &rm);
       if (opcode == 0x1f) {
@@ -1090,24 +1053,6 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
         AppendToBuffer("movdqa %s,",
                        NameOfXMMRegister(regop));
         current += PrintRightXMMOperand(current);
-      } else if (opcode == 0x70) {
-        AppendToBuffer("pshufd %s,",
-                       NameOfXMMRegister(regop));
-        current += PrintRightXMMOperand(current);
-        AppendToBuffer(",0x%x", (*current) & 0xff);
-        current += 1;
-      } else if (opcode == 0x5B) {
-        AppendToBuffer("cvtps2dq %s,",
-                       NameOfXMMRegister(regop));
-        current += PrintRightXMMOperand(current);
-      } else if (opcode == 0xFE) {
-        AppendToBuffer("paddd %s,",
-                       NameOfXMMRegister(regop));
-        current += PrintRightXMMOperand(current);
-      } else if (opcode == 0xFA) {
-        AppendToBuffer("psubd %s,",
-                       NameOfXMMRegister(regop));
-        current += PrintRightXMMOperand(current);
       } else if (opcode == 0x7E) {
         AppendToBuffer("mov%c ",
                        rex_w() ? 'q' : 'd');
@@ -1129,59 +1074,18 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
         DCHECK(regop == 6);
         AppendToBuffer("psllq,%s,%d", NameOfXMMRegister(rm), *current & 0x7f);
         current += 1;
-      } else if (opcode == 0x62) {
-        AppendToBuffer("punpackldq %s,", NameOfXMMRegister(regop));
-        current += PrintRightXMMOperand(current);
-      } else if (opcode == 0x72) {
-        AppendToBuffer(regop == rsi ? "pslld "
-                                    : regop == rdx ? "psrld" : "psrad");
-        current += PrintRightXMMOperand(current);
-        AppendToBuffer(",0x%x", (*current) & 0xff);
-        current += 1;
-      } else if (opcode == 0xC6) {
-        AppendToBuffer("shufpd %s,", NameOfXMMRegister(regop));
-        current += PrintRightXMMOperand(current);
-        AppendToBuffer(",0x%x", (*current) & 0xff);
-        current += 1;
-      } else if (opcode == 0xF4) {
-        AppendToBuffer("pmuludq %s,", NameOfXMMRegister(regop));
-        current += PrintRightXMMOperand(current);
       } else {
         const char* mnemonic = "?";
-        if (opcode == 0x51) {
-          mnemonic = "sqrtpd";
-        } else if (opcode == 0x54) {
+        if (opcode == 0x54) {
           mnemonic = "andpd";
         } else  if (opcode == 0x56) {
           mnemonic = "orpd";
         } else  if (opcode == 0x57) {
           mnemonic = "xorpd";
-        } else  if (opcode == 0x58) {
-          mnemonic = "addpd";
-        } else  if (opcode == 0x59) {
-          mnemonic = "mulpd";
-        } else  if (opcode == 0x5C) {
-          mnemonic = "subpd";
-        } else  if (opcode == 0x5D) {
-          mnemonic = "minpd";
-        } else  if (opcode == 0x5E) {
-          mnemonic = "divpd";
-        } else  if (opcode == 0x5F) {
-          mnemonic = "maxpd";
         } else if (opcode == 0x2E) {
           mnemonic = "ucomisd";
         } else if (opcode == 0x2F) {
           mnemonic = "comisd";
-        } else if (opcode == 0x66) {
-          mnemonic = "pcmpgtd";
-        } else if (opcode == 0x76) {
-          mnemonic = "pcmpeqd";
-        } else if (opcode == 0xD2) {
-          mnemonic = "psrld";
-        } else if (opcode == 0xE2) {
-          mnemonic = "psrad";
-        } else if (opcode == 0xF2) {
-          mnemonic = "pslld";
         } else {
           UnimplementedInstruction();
         }
@@ -1326,21 +1230,6 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
     current += PrintRightXMMOperand(current);
     AppendToBuffer(",%s", NameOfXMMRegister(regop));
 
-  } else if (opcode == 0x10) {
-    // movups xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("movups %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
-  } else if (opcode == 0x11) {
-    // movups xmm/m128, xmm
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("movups ");
-    current += PrintRightXMMOperand(current);
-    AppendToBuffer(", %s", NameOfXMMRegister(regop));
-
   } else if (opcode == 0xA2) {
     // CPUID
     AppendToBuffer("%s", mnemonic);
@@ -1384,100 +1273,6 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
     AppendToBuffer(", %d", (*current) & 3);
     current += 1;
 
-  } else if (opcode == 0xC6) {
-    // shufps xmm, xmm/m128, imm8
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("shufps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-    AppendToBuffer(", %d", (*current) & 3);
-    current += 1;
-
-  } else if (opcode == 0x54) {
-    // andps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("andps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
-  } else if (opcode == 0x56) {
-    // orps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("orps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
-  } else if (opcode == 0x58) {
-    // addps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("addps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
-  } else if (opcode == 0x59) {
-    // mulps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("mulps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
-  } else if (opcode == 0x5C) {
-    // subps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("subps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
-  } else if (opcode == 0x5E) {
-    // divps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("divps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
-  } else if (opcode == 0x5D) {
-    // minps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("minps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
-  } else if (opcode == 0x5F) {
-    // maxps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("maxps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
-  } else if (opcode == 0x5B) {
-    // cvtdq2ps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("cvtdq2ps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
-
-  } else if (opcode == 0x53) {
-    // rcpps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("rcpps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
-  } else if (opcode == 0x52) {
-    // rsqrtps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("rsqrtps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
-  } else if (opcode == 0x51) {
-    // sqrtps xmm, xmm/m128
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    AppendToBuffer("sqrtps %s, ", NameOfXMMRegister(regop));
-    current += PrintRightXMMOperand(current);
-
   } else if (opcode == 0x50) {
     // movmskps reg, xmm
     int mod, regop, rm;
@@ -1485,26 +1280,6 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) {
     AppendToBuffer("movmskps %s,", NameOfCPURegister(regop));
     current += PrintRightXMMOperand(current);
 
-  } else if (opcode == 0xC2) {
-    // Intel manual 2A, Table 3-11.
-    int mod, regop, rm;
-    get_modrm(*current, &mod, &regop, &rm);
-    const char* const pseudo_op[] = {
-      "cmpeqps",
-      "cmpltps",
-      "cmpleps",
-      "cmpunordps",
-      "cmpneqps",
-      "cmpnltps",
-      "cmpnleps",
-      "cmpordps"
-    };
-    AppendToBuffer("%s %s,%s",
-                   pseudo_op[current[1]],
-                   NameOfXMMRegister(regop),
-                   NameOfXMMRegister(rm));
-    current += 2;
-
   } else if ((opcode & 0xF0) == 0x80) {
     // Jcc: Conditional jump (branch).
     current = data + JumpConditional(data);