Deleted Added
sdiff udiff text old ( 7615:50f6494d9b55 ) new ( 7639:8c09b7ff5b57 )
full compact
1/*
2 * Copyright (c) 2010 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

132 for (StaticInstPtr *curUop = microOps;
133 !(*curUop)->isLastMicroop(); curUop++) {
134 MicroOp * uopPtr = dynamic_cast<MicroOp *>(curUop->get());
135 assert(uopPtr);
136 uopPtr->setDelayedCommit();
137 }
138}
139
140MacroVFPMemOp::MacroVFPMemOp(const char *mnem, ExtMachInst machInst,
141 OpClass __opClass, IntRegIndex rn,
142 RegIndex vd, bool single, bool up,
143 bool writeback, bool load, uint32_t offset) :
144 PredMacroOp(mnem, machInst, __opClass)
145{
146 int i = 0;
147

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

164 int64_t addr = 0;
165
166 if (!up)
167 addr = 4 * offset;
168
169 bool tempUp = up;
170 for (int j = 0; j < count; j++) {
171 if (load) {
172 microOps[i++] = new MicroLdrFpUop(machInst, vd++, rn,
173 tempUp, addr);
174 if (!single)
175 microOps[i++] = new MicroLdrFpUop(machInst, vd++, rn, tempUp,
176 addr + (up ? 4 : -4));
177 } else {
178 microOps[i++] = new MicroStrFpUop(machInst, vd++, rn,
179 tempUp, addr);
180 if (!single)
181 microOps[i++] = new MicroStrFpUop(machInst, vd++, rn, tempUp,
182 addr + (up ? 4 : -4));
183 }
184 if (!tempUp) {
185 addr -= (single ? 4 : 8);
186 // The microops don't handle negative displacement, so turn if we
187 // hit zero, flip polarity and start adding.
188 if (addr <= 0) {
189 tempUp = true;
190 addr = -addr;

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

211 !(*curUop)->isLastMicroop(); curUop++) {
212 MicroOp * uopPtr = dynamic_cast<MicroOp *>(curUop->get());
213 assert(uopPtr);
214 uopPtr->setDelayedCommit();
215 }
216}
217
218std::string
219MicroIntOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const
220{
221 std::stringstream ss;
222 printMnemonic(ss);
223 printReg(ss, ura);
224 ss << ", ";
225 printReg(ss, urb);
226 ss << ", ";
227 ccprintf(ss, "#%d", imm);
228 return ss.str();
229}
230
231std::string
232MicroMemOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const
233{
234 std::stringstream ss;
235 printMnemonic(ss);
236 printReg(ss, ura);
237 ss << ", [";
238 printReg(ss, urb);
239 ss << ", ";
240 ccprintf(ss, "#%d", imm);
241 ss << "]";
242 return ss.str();
243}
244
245}