macromem.isa (6243:3a1698fbbc9f) macromem.isa (6250:1cc6e860d95f)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2007-2008 The Florida State University
4// All rights reserved.
5//
6// Redistribution and use in source and binary forms, with or without
7// modification, are permitted provided that the following conditions are
8// met: redistributions of source code must retain the above copyright

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

52 uint32_t ones;
53 uint32_t puswl,
54 prepost,
55 up,
56 psruser,
57 writeback,
58 loadop;
59
1// -*- mode:c++ -*-
2
3// Copyright (c) 2007-2008 The Florida State University
4// All rights reserved.
5//
6// Redistribution and use in source and binary forms, with or without
7// modification, are permitted provided that the following conditions are
8// met: redistributions of source code must retain the above copyright

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

52 uint32_t ones;
53 uint32_t puswl,
54 prepost,
55 up,
56 psruser,
57 writeback,
58 loadop;
59
60 ArmMacroMemoryOp(const char *mnem, MachInst _machInst, OpClass __opClass,
60 ArmMacroMemoryOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
61 StaticInstPtr _eaCompPtr = nullStaticInstPtr,
62 StaticInstPtr _memAccPtr = nullStaticInstPtr)
63 : PredMacroOp(mnem, _machInst, __opClass),
64 memAccessFlags(0), eaCompPtr(_eaCompPtr), memAccPtr(_memAccPtr),
65 reglist(REGLIST), ones(0), puswl(PUSWL), prepost(PREPOST), up(UP),
66 psruser(PSRUSER), writeback(WRITEBACK), loadop(LOADOP)
67 {
68 ones = number_of_ones(reglist);

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

81 uint32_t puswl,
82 prepost,
83 up,
84 psruser,
85 writeback,
86 loadop;
87 int32_t disp8;
88
61 StaticInstPtr _eaCompPtr = nullStaticInstPtr,
62 StaticInstPtr _memAccPtr = nullStaticInstPtr)
63 : PredMacroOp(mnem, _machInst, __opClass),
64 memAccessFlags(0), eaCompPtr(_eaCompPtr), memAccPtr(_memAccPtr),
65 reglist(REGLIST), ones(0), puswl(PUSWL), prepost(PREPOST), up(UP),
66 psruser(PSRUSER), writeback(WRITEBACK), loadop(LOADOP)
67 {
68 ones = number_of_ones(reglist);

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

81 uint32_t puswl,
82 prepost,
83 up,
84 psruser,
85 writeback,
86 loadop;
87 int32_t disp8;
88
89 ArmMacroFPAOp(const char *mnem, MachInst _machInst, OpClass __opClass)
89 ArmMacroFPAOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
90 : PredMacroOp(mnem, _machInst, __opClass),
91 puswl(PUSWL), prepost(PREPOST), up(UP),
92 psruser(PSRUSER), writeback(WRITEBACK), loadop(LOADOP),
93 disp8(IMMED_7_0 << 2)
94 {
95 numMicroops = 3 + writeback;
96 microOps = new StaticInstPtr[numMicroops];
97 }

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

108 up,
109 n1bit,
110 writeback,
111 loadop,
112 n0bit,
113 count;
114 int32_t disp8;
115
90 : PredMacroOp(mnem, _machInst, __opClass),
91 puswl(PUSWL), prepost(PREPOST), up(UP),
92 psruser(PSRUSER), writeback(WRITEBACK), loadop(LOADOP),
93 disp8(IMMED_7_0 << 2)
94 {
95 numMicroops = 3 + writeback;
96 microOps = new StaticInstPtr[numMicroops];
97 }

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

108 up,
109 n1bit,
110 writeback,
111 loadop,
112 n0bit,
113 count;
114 int32_t disp8;
115
116 ArmMacroFMOp(const char *mnem, MachInst _machInst, OpClass __opClass)
116 ArmMacroFMOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
117 : PredMacroOp(mnem, _machInst, __opClass),
118 punwl(PUNWL), prepost(PREPOST), up(UP),
119 n1bit(OPCODE_22), writeback(WRITEBACK), loadop(LOADOP),
120 n0bit(OPCODE_15), disp8(IMMED_7_0 << 2)
121 {
122 // Transfer 1-4 registers based on n1 and n0 bits (with 00 repr. 4)
123 count = (n1bit << 1) | n0bit;
124 if (count == 0)

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

138def template MacroStoreDeclare {{
139 /**
140 * Static instructions class for a store multiple instruction
141 */
142 class %(class_name)s : public %(base_class)s
143 {
144 public:
145 // Constructor
117 : PredMacroOp(mnem, _machInst, __opClass),
118 punwl(PUNWL), prepost(PREPOST), up(UP),
119 n1bit(OPCODE_22), writeback(WRITEBACK), loadop(LOADOP),
120 n0bit(OPCODE_15), disp8(IMMED_7_0 << 2)
121 {
122 // Transfer 1-4 registers based on n1 and n0 bits (with 00 repr. 4)
123 count = (n1bit << 1) | n0bit;
124 if (count == 0)

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

138def template MacroStoreDeclare {{
139 /**
140 * Static instructions class for a store multiple instruction
141 */
142 class %(class_name)s : public %(base_class)s
143 {
144 public:
145 // Constructor
146 %(class_name)s(MachInst machInst);
146 %(class_name)s(ExtMachInst machInst);
147 %(BasicExecDeclare)s
148 };
149}};
150
151def template MacroStoreConstructor {{
147 %(BasicExecDeclare)s
148 };
149}};
150
151def template MacroStoreConstructor {{
152 inline %(class_name)s::%(class_name)s(MachInst machInst)
152 inline %(class_name)s::%(class_name)s(ExtMachInst machInst)
153 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
154 {
155 %(constructor)s;
156 uint32_t regs_to_handle = reglist;
157 uint32_t j = 0,
158 start_addr = 0,
159 end_addr = 0;
160

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

270 %(op_wb)s;
271 }
272
273 return fault;
274 }
275}};
276
277def template MacroFPAConstructor {{
153 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
154 {
155 %(constructor)s;
156 uint32_t regs_to_handle = reglist;
157 uint32_t j = 0,
158 start_addr = 0,
159 end_addr = 0;
160

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

270 %(op_wb)s;
271 }
272
273 return fault;
274 }
275}};
276
277def template MacroFPAConstructor {{
278 inline %(class_name)s::%(class_name)s(MachInst machInst)
278 inline %(class_name)s::%(class_name)s(ExtMachInst machInst)
279 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
280 {
281 %(constructor)s;
282
283 uint32_t start_addr = 0;
284
285 if (prepost)
286 start_addr = disp8;

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

312 }
313 microOps[numMicroops-1]->setLastMicroop();
314 }
315
316}};
317
318
319def template MacroFMConstructor {{
279 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
280 {
281 %(constructor)s;
282
283 uint32_t start_addr = 0;
284
285 if (prepost)
286 start_addr = disp8;

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

312 }
313 microOps[numMicroops-1]->setLastMicroop();
314 }
315
316}};
317
318
319def template MacroFMConstructor {{
320 inline %(class_name)s::%(class_name)s(MachInst machInst)
320 inline %(class_name)s::%(class_name)s(ExtMachInst machInst)
321 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
322 {
323 %(constructor)s;
324
325 uint32_t start_addr = 0;
326
327 if (prepost)
328 start_addr = disp8;

--- 67 unchanged lines hidden ---
321 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
322 {
323 %(constructor)s;
324
325 uint32_t start_addr = 0;
326
327 if (prepost)
328 start_addr = disp8;

--- 67 unchanged lines hidden ---