changeset 8038b47efe64 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=8038b47efe64
description:
        X86: Make larger blocks of instructions use the Inst format by default.

diffstat:

1 file changed, 331 insertions(+), 323 deletions(-)
src/arch/x86/isa/decoder/two_byte_opcodes.isa |  654 ++++++++++++-------------

diffs (truncated from 721 to 300 lines):

diff -r e5a3ae40c4d0 -r 8038b47efe64 
src/arch/x86/isa/decoder/two_byte_opcodes.isa
--- a/src/arch/x86/isa/decoder/two_byte_opcodes.isa     Mon Aug 17 20:04:03 
2009 -0700
+++ b/src/arch/x86/isa/decoder/two_byte_opcodes.isa     Mon Aug 17 20:04:03 
2009 -0700
@@ -285,86 +285,88 @@
                 0x6: FailUnimpl::femms();
                 0x7: FailUnimpl::threednow();
             }
-            0x02: decode LEGACY_DECODEVAL {
-                // no prefix
-                0x0: decode OPCODE_OP_BOTTOM3 {
-                    0x0: Inst::MOVUPS(Vo,Wo);
-                    0x1: Inst::MOVUPS(Wo,Vo);
-                    0x2: decode MODRM_MOD {
-                        0x3: Inst::MOVHLPS(Vq,VRq);
-                        default: Inst::MOVLPS(Vq,Mq);
+            format Inst{
+                0x02: decode LEGACY_DECODEVAL {
+                    // no prefix
+                    0x0: decode OPCODE_OP_BOTTOM3 {
+                        0x0: MOVUPS(Vo,Wo);
+                        0x1: MOVUPS(Wo,Vo);
+                        0x2: decode MODRM_MOD {
+                            0x3: MOVHLPS(Vq,VRq);
+                            default: MOVLPS(Vq,Mq);
+                        }
+                        0x3: MOVLPS(Mq,Vq);
+                        0x4: UNPCKLPS(Vps,Wq);
+                        0x5: UNPCKHPS(Vpd,Wq);
+                        0x6: decode MODRM_MOD {
+                            0x3: MOVLHPS(Vq,VRq);
+                            default: MOVHPS(Vq,Mq);
+                        }
+                        0x7: MOVHPS(Mq,Vq);
                     }
-                    0x3: Inst::MOVLPS(Mq,Vq);
-                    0x4: Inst::UNPCKLPS(Vps,Wq);
-                    0x5: Inst::UNPCKHPS(Vpd,Wq);
-                    0x6: decode MODRM_MOD {
-                        0x3: Inst::MOVLHPS(Vq,VRq);
-                        default: Inst::MOVHPS(Vq,Mq);
+                    // repe (0xF3)
+                    0x4: decode OPCODE_OP_BOTTOM3 {
+                        0x0: WarnUnimpl::movss_Vd_Wd();
+                        0x1: WarnUnimpl::movss_Wd_Vd();
+                        0x2: WarnUnimpl::movsldup_Vo_Wo();
+                        0x6: WarnUnimpl::movshdup_Vo_Wo();
+                        default: UD2();
                     }
-                    0x7: Inst::MOVHPS(Mq,Vq);
+                    // operand size (0x66)
+                    0x1: decode OPCODE_OP_BOTTOM3 {
+                        0x0: MOVUPD(Vo,Wo);
+                        0x1: MOVUPD(Wo,Vo);
+                        0x2: MOVLPD(Vq,Mq);
+                        0x3: MOVLPD(Mq,Vq);
+                        0x4: UNPCKLPD(Vo,Wq);
+                        0x5: UNPCKHPD(Vo,Wo);
+                        0x6: MOVHPD(Vq,Mq);
+                        0x7: MOVHPD(Mq,Vq);
+                    }
+                    // repne (0xF2)
+                    0x8: decode OPCODE_OP_BOTTOM3 {
+                        0x0: MOVSD(Vq,Wq);
+                        0x1: MOVSD(Wq,Vq);
+                        0x2: MOVDDUP(Vo,Wq);
+                        default: UD2();
+                    }
+                    default: UD2();
                 }
-                // repe (0xF3)
-                0x4: decode OPCODE_OP_BOTTOM3 {
-                    0x0: movss_Vd_Wd();
-                    0x1: movss_Wd_Vd();
-                    0x2: movsldup_Vo_Wo();
-                    0x6: movshdup_Vo_Wo();
-                    default: Inst::UD2();
+                0x03: decode OPCODE_OP_BOTTOM3 {
+                    //group17();
+                    0x0: decode MODRM_REG {
+                        0x0: WarnUnimpl::prefetch_nta();
+                        0x1: PREFETCH_T0(Mb);
+                        0x2: WarnUnimpl::prefetch_t1();
+                        0x3: WarnUnimpl::prefetch_t2();
+                        default: HINT_NOP();
+                    }
+                    0x1: HINT_NOP();
+                    0x2: HINT_NOP();
+                    0x3: HINT_NOP();
+                    0x4: HINT_NOP();
+                    0x5: HINT_NOP();
+                    0x6: HINT_NOP();
+                    0x7: HINT_NOP();
                 }
-                // operand size (0x66)
-                0x1: decode OPCODE_OP_BOTTOM3 {
-                    0x0: Inst::MOVUPD(Vo,Wo);
-                    0x1: Inst::MOVUPD(Wo,Vo);
-                    0x2: Inst::MOVLPD(Vq,Mq);
-                    0x3: Inst::MOVLPD(Mq,Vq);
-                    0x4: Inst::UNPCKLPD(Vo,Wq);
-                    0x5: Inst::UNPCKHPD(Vo,Wo);
-                    0x6: Inst::MOVHPD(Vq,Mq);
-                    0x7: Inst::MOVHPD(Mq,Vq);
+                0x04: decode LEGACY_DECODEVAL {
+                    // no prefix
+                    0x0: decode OPCODE_OP_BOTTOM3 {
+                        0x0: MOV(Rd,Cd);
+                        0x1: MOV(Rd,Dd);
+                        0x2: MOV(Cd,Rd);
+                        0x3: MOV(Dd,Rd);
+                        0x4: WarnUnimpl::mov_Rd_Td();
+                        0x6: WarnUnimpl::mov_Td_Rd();
+                        default: UD2();
+                    }
+                    // lock prefix (0xF0)
+                    0x2: decode OPCODE_OP_BOTTOM3 {
+                        0x0: WarnUnimpl::mov_Rd_CR8D();
+                        0x2: WarnUnimpl::mov_CR8D_Rd();
+                    }
+                    default: UD2();
                 }
-                // repne (0xF2)
-                0x8: decode OPCODE_OP_BOTTOM3 {
-                    0x0: Inst::MOVSD(Vq,Wq);
-                    0x1: Inst::MOVSD(Wq,Vq);
-                    0x2: Inst::MOVDDUP(Vo,Wq);
-                    default: Inst::UD2();
-                }
-                default: Inst::UD2();
-            }
-            0x03: decode OPCODE_OP_BOTTOM3 {
-                //group17();
-                0x0: decode MODRM_REG {
-                    0x0: prefetch_nta();
-                    0x1: Inst::PREFETCH_T0(Mb);
-                    0x2: prefetch_t1();
-                    0x3: prefetch_t2();
-                    default: Inst::HINT_NOP();
-                }
-                0x1: Inst::HINT_NOP();
-                0x2: Inst::HINT_NOP();
-                0x3: Inst::HINT_NOP();
-                0x4: Inst::HINT_NOP();
-                0x5: Inst::HINT_NOP();
-                0x6: Inst::HINT_NOP();
-                0x7: Inst::HINT_NOP();
-            }
-            0x04: decode LEGACY_DECODEVAL {
-                // no prefix
-                0x0: decode OPCODE_OP_BOTTOM3 {
-                    0x0: Inst::MOV(Rd,Cd);
-                    0x1: Inst::MOV(Rd,Dd);
-                    0x2: Inst::MOV(Cd,Rd);
-                    0x3: Inst::MOV(Dd,Rd);
-                    0x4: mov_Rd_Td();
-                    0x6: mov_Td_Rd();
-                    default: Inst::UD2();
-                }
-                // lock prefix (0xF0)
-                0x2: decode OPCODE_OP_BOTTOM3 {
-                    0x0: mov_Rd_CR8D();
-                    0x2: mov_CR8D_Rd();
-                }
-                default: Inst::UD2();
             }
             0x05: decode LEGACY_DECODEVAL {
                 // no prefix
@@ -454,147 +456,145 @@
                     0x6: CMOVLE(Gv,Ev);
                     0x7: CMOVNLE(Gv,Ev);
                 }
-            }
-            0x0A: decode LEGACY_DECODEVAL {
-                // no prefix
-                0x0: decode OPCODE_OP_BOTTOM3 {
-                    0x0: movmskps_Gd_VRo();
-                    0x1: Inst::SQRTPS(Vo,Wo);
-                    0x2: rqsrtps_Vo_Wo();
-                    0x3: rcpps_Vo_Wo();
-                    0x4: Inst::ANDPS(Vo,Wo);
-                    0x5: Inst::ANDNPS(Vo,Wo);
-                    0x6: Inst::ORPS(Vo,Wo);
-                    0x7: Inst::XORPS(Vo,Wo);
-                }
-                // repe (0xF3)
-                0x4: decode OPCODE_OP_BOTTOM3 {
-                    0x1: Inst::SQRTSS(Vd,Wd);
-                    0x2: rsqrtss_Vd_Wd();
-                    0x3: rcpss_Vd_Wd();
-                    default: Inst::UD2();
-                }
-                // operand size (0x66)
-                0x1: decode OPCODE_OP_BOTTOM3 {
-                    0x0: movmskpd_Gd_VRo();
-                    0x1: Inst::SQRTPD(Vo,Wo);
-                    0x4: Inst::ANDPD(Vo,Wo);
-                    0x5: Inst::ANDNPD(Vo,Wo);
-                    0x6: Inst::ORPD(Vo,Wo);
-                    //This really should be type o, but it works on q sized
-                    //chunks at a time.
-                    0x7: Inst::XORPD(Vq,Wq);
-                    default: Inst::UD2();
-                }
-                format Inst {
+                0x0A: decode LEGACY_DECODEVAL {
+                    // no prefix
+                    0x0: decode OPCODE_OP_BOTTOM3 {
+                        0x0: WarnUnimpl::movmskps_Gd_VRo();
+                        0x1: SQRTPS(Vo,Wo);
+                        0x2: WarnUnimpl::rqsrtps_Vo_Wo();
+                        0x3: WarnUnimpl::rcpps_Vo_Wo();
+                        0x4: ANDPS(Vo,Wo);
+                        0x5: ANDNPS(Vo,Wo);
+                        0x6: ORPS(Vo,Wo);
+                        0x7: XORPS(Vo,Wo);
+                    }
+                    // repe (0xF3)
+                    0x4: decode OPCODE_OP_BOTTOM3 {
+                        0x1: SQRTSS(Vd,Wd);
+                        0x2: WarnUnimpl::rsqrtss_Vd_Wd();
+                        0x3: WarnUnimpl::rcpss_Vd_Wd();
+                        default: UD2();
+                    }
+                    // operand size (0x66)
+                    0x1: decode OPCODE_OP_BOTTOM3 {
+                        0x0: WarnUnimpl::movmskpd_Gd_VRo();
+                        0x1: SQRTPD(Vo,Wo);
+                        0x4: ANDPD(Vo,Wo);
+                        0x5: ANDNPD(Vo,Wo);
+                        0x6: ORPD(Vo,Wo);
+                        //This really should be type o, but it works on q sized
+                        //chunks at a time.
+                        0x7: XORPD(Vq,Wq);
+                        default: UD2();
+                    }
                     // repne (0xF2)
                     0x8: decode OPCODE_OP_BOTTOM3 {
-                        0x1: Inst::SQRTSD(Vq,Wq);
+                        0x1: SQRTSD(Vq,Wq);
                         default: UD2();
                     }
                     default: UD2();
                 }
-            }
-            0x0B: decode LEGACY_DECODEVAL {
-                // no prefix
-                0x0: decode OPCODE_OP_BOTTOM3 {
-                    0x0: Inst::ADDPS(Vo,Wo);
-                    0x1: Inst::MULPS(Vo,Wo);
-                    0x2: Inst::CVTPS2PD(Vo,Wq);
-                    0x3: Inst::CVTDQ2PS(Vo,Wo);
-                    0x4: Inst::SUBPS(Vo,Wo);
-                    0x5: Inst::MINPS(Vo,Wo);
-                    0x6: Inst::DIVPS(Vo,Wo);
-                    0x7: Inst::MAXPS(Vo,Wo);
+                0x0B: decode LEGACY_DECODEVAL {
+                    // no prefix
+                    0x0: decode OPCODE_OP_BOTTOM3 {
+                        0x0: ADDPS(Vo,Wo);
+                        0x1: MULPS(Vo,Wo);
+                        0x2: CVTPS2PD(Vo,Wq);
+                        0x3: CVTDQ2PS(Vo,Wo);
+                        0x4: SUBPS(Vo,Wo);
+                        0x5: MINPS(Vo,Wo);
+                        0x6: DIVPS(Vo,Wo);
+                        0x7: MAXPS(Vo,Wo);
+                    }
+                    // repe (0xF3)
+                    0x4: decode OPCODE_OP_BOTTOM3 {
+                        0x0: ADDSS(Vd,Wd);
+                        0x1: MULSS(Vd,Wd);
+                        0x2: CVTSS2SD(Vq,Wd);
+                        0x3: WarnUnimpl::cvttps2dq_Vo_Wo();
+                        0x4: SUBSS(Vd,Wd);
+                        0x5: MINSS(Vd,Wd);
+                        0x6: DIVSS(Vd,Wd);
+                        0x7: MAXSS(Vd,Wd);
+                    }
+                    // operand size (0x66)
+                    0x1: decode OPCODE_OP_BOTTOM3 {
+                        0x0: ADDPD(Vo,Wo);
+                        0x1: MULPD(Vo,Wo);
+                        0x2: CVTPD2PS(Vo,Wo);
+                        0x3: WarnUnimpl::cvtps2dq_Vo_Wo();
+                        0x4: SUBPD(Vo,Wo);
+                        0x5: MINPD(Vo,Wo);
+                        0x6: DIVPD(Vo,Wo);
+                        0x7: MAXPD(Vo,Wo);
+                    }
+                    // repne (0xF2)
+                    0x8: decode OPCODE_OP_BOTTOM3 {
+                        0x0: ADDSD(Vq,Wq);
+                        0x1: MULSD(Vq,Wq);
+                        0x2: CVTSD2SS(Vd,Wq);
+                        0x4: SUBSD(Vq,Wq);
+                        0x5: MINSD(Vq,Wq);
+                        0x6: DIVSD(Vq,Wq);
+                        0x7: MAXSD(Vq,Wq);
+                        default: UD2();
+                    }
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to