Deleted Added
sdiff udiff text old ( 4519:f8da6b45573f ) new ( 4528:f0b19ee67a7b )
full compact
1// -*- mode:c++ -*-
2
3// Copyright (c) 2007 The Hewlett-Packard Development Company
4// All rights reserved.
5//
6// Redistribution and use of this software in source and binary forms,
7// with or without modification, are permitted provided that the
8// following conditions are met:

--- 57 unchanged lines hidden (view full) ---

66 {
67 panic("Tried to execute macroop directly!");
68 return NoFault;
69 }
70}};
71
72output header {{
73
74 // Base class for macroops
75 class MacroOp : public StaticInst
76 {
77 protected:
78 const uint32_t numMicroOps;
79
80 //Constructor.
81 MacroOp(const char *mnem, ExtMachInst _machInst,
82 uint32_t _numMicroOps)

--- 25 unchanged lines hidden (view full) ---

108 }
109
110 %(MacroExecPanic)s
111 };
112}};
113
114// Basic instruction class declaration template.
115def template MacroDeclare {{
116 /**
117 * Static instruction class for "%(mnemonic)s".
118 */
119 class %(class_name)s : public %(base_class)s
120 {
121 public:
122 // Constructor.
123 %(class_name)s(ExtMachInst machInst);
124 };
125}};
126
127// Basic instruction class constructor template.
128def template MacroConstructor {{
129 inline %(class_name)s::%(class_name)s(ExtMachInst machInst)
130 : %(base_class)s("%(mnemonic)s", machInst, %(num_micro_ops)s)
131 {

--- 5 unchanged lines hidden (view full) ---

137}};
138
139//////////////////////////////////////////////////////////////////////////////
140//
141// X86 specific
142//
143
144let {{
145 def genMacroOp(name, Name, opSeq):
146 numMicroOps = len(opSeq)
147 allocMicroOps = ''
148 micropc = 0
149 for op in opSeq:
150 allocMicroOps += \
151 "microOps[%d] = %s;\n" % \
152 (micropc, op.getAllocator('"' + name + '"', True, False,
153 #op.delayed,
154 micropc == 0,
155 micropc == numMicroOps - 1))
156 micropc += 1
157 iop = InstObjParams(name, Name, 'MacroOp',
158 {'code' : '', 'num_micro_ops' : numMicroOps,
159 'alloc_micro_ops' : allocMicroOps})
160 header_output = MacroDeclare.subst(iop)
161 decoder_output = MacroConstructor.subst(iop)
162 decode_block = BasicDecode.subst(iop)
163 exec_output = ''
164 return (header_output, decoder_output, decode_block, exec_output)
165}};