Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2051)

Unified Diff: runtime/vm/simulator_arm.cc

Issue 2481873005: clang-format runtime/vm (Closed)
Patch Set: Merge Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/simulator_arm.h ('k') | runtime/vm/simulator_arm64.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/simulator_arm.cc
diff --git a/runtime/vm/simulator_arm.cc b/runtime/vm/simulator_arm.cc
index 9c3e3cf36a305ad121d795177541e26945b6c66d..232b1a4f1766ba16b1852c0e2fabd10dd85e4a6f 100644
--- a/runtime/vm/simulator_arm.cc
+++ b/runtime/vm/simulator_arm.cc
@@ -24,9 +24,13 @@
namespace dart {
-DEFINE_FLAG(uint64_t, trace_sim_after, ULLONG_MAX,
+DEFINE_FLAG(uint64_t,
+ trace_sim_after,
+ ULLONG_MAX,
"Trace simulator execution after instruction count reached.");
-DEFINE_FLAG(uint64_t, stop_sim_at, ULLONG_MAX,
+DEFINE_FLAG(uint64_t,
+ stop_sim_at,
+ ULLONG_MAX,
"Instruction address or instruction count to stop simulator at.");
@@ -96,7 +100,9 @@ class SimulatorDebugger {
static TokenPosition GetApproximateTokenIndex(const Code& code, uword pc);
- static void PrintDartFrame(uword pc, uword fp, uword sp,
+ static void PrintDartFrame(uword pc,
+ uword fp,
+ uword sp,
const Function& function,
TokenPosition token_pos,
bool is_optimized,
@@ -119,8 +125,7 @@ SimulatorDebugger::SimulatorDebugger(Simulator* sim) {
}
-SimulatorDebugger::~SimulatorDebugger() {
-}
+SimulatorDebugger::~SimulatorDebugger() {}
void SimulatorDebugger::Stop(Instr* instr, const char* message) {
@@ -130,22 +135,13 @@ void SimulatorDebugger::Stop(Instr* instr, const char* message) {
static Register LookupCpuRegisterByName(const char* name) {
- static const char* kNames[] = {
- "r0", "r1", "r2", "r3",
- "r4", "r5", "r6", "r7",
- "r8", "r9", "r10", "r11",
- "r12", "r13", "r14", "r15",
- "pc", "lr", "sp", "ip",
- "fp", "pp", "ctx"
- };
- static const Register kRegisters[] = {
- R0, R1, R2, R3,
- R4, R5, R6, R7,
- R8, R9, R10, R11,
- R12, R13, R14, R15,
- PC, LR, SP, IP,
- FP, PP, CTX
- };
+ static const char* kNames[] = {"r0", "r1", "r2", "r3", "r4", "r5",
+ "r6", "r7", "r8", "r9", "r10", "r11",
+ "r12", "r13", "r14", "r15", "pc", "lr",
+ "sp", "ip", "fp", "pp", "ctx"};
+ static const Register kRegisters[] = {R0, R1, R2, R3, R4, R5, R6, R7,
+ R8, R9, R10, R11, R12, R13, R14, R15,
+ PC, LR, SP, IP, FP, PP, CTX};
ASSERT(ARRAY_SIZE(kNames) == ARRAY_SIZE(kRegisters));
for (unsigned i = 0; i < ARRAY_SIZE(kNames); i++) {
if (strcmp(kNames[i], name) == 0) {
@@ -245,7 +241,7 @@ bool SimulatorDebugger::GetDValue(char* desc, double* value) {
TokenPosition SimulatorDebugger::GetApproximateTokenIndex(const Code& code,
- uword pc) {
+ uword pc) {
TokenPosition token_pos = TokenPosition::kNoSource;
uword pc_offset = pc - code.PayloadStart();
const PcDescriptors& descriptors =
@@ -262,7 +258,9 @@ TokenPosition SimulatorDebugger::GetApproximateTokenIndex(const Code& code,
}
-void SimulatorDebugger::PrintDartFrame(uword pc, uword fp, uword sp,
+void SimulatorDebugger::PrintDartFrame(uword pc,
+ uword fp,
+ uword sp,
const Function& function,
TokenPosition token_pos,
bool is_optimized,
@@ -275,19 +273,15 @@ void SimulatorDebugger::PrintDartFrame(uword pc, uword fp, uword sp,
if (token_pos.IsReal()) {
script.GetTokenLocation(token_pos, &line, &column);
}
- OS::Print("pc=0x%" Px " fp=0x%" Px " sp=0x%" Px " %s%s (%s:%" Pd
- ":%" Pd ")\n",
- pc, fp, sp,
- is_optimized ? (is_inlined ? "inlined " : "optimized ") : "",
- func_name.ToCString(),
- url.ToCString(),
- line, column);
+ OS::Print(
+ "pc=0x%" Px " fp=0x%" Px " sp=0x%" Px " %s%s (%s:%" Pd ":%" Pd ")\n", pc,
+ fp, sp, is_optimized ? (is_inlined ? "inlined " : "optimized ") : "",
+ func_name.ToCString(), url.ToCString(), line, column);
}
void SimulatorDebugger::PrintBacktrace() {
- StackFrameIterator frames(sim_->get_register(FP),
- sim_->get_register(SP),
+ StackFrameIterator frames(sim_->get_register(FP), sim_->get_register(SP),
sim_->get_pc(),
StackFrameIterator::kDontValidateFrames);
StackFrame* frame = frames.NextFrame();
@@ -312,25 +306,25 @@ void SimulatorDebugger::PrintBacktrace() {
uword unoptimized_pc = it.pc();
it.Advance();
if (!it.Done()) {
- PrintDartFrame(unoptimized_pc, frame->fp(), frame->sp(),
- inlined_function,
- GetApproximateTokenIndex(unoptimized_code,
- unoptimized_pc),
- true, true);
+ PrintDartFrame(
+ unoptimized_pc, frame->fp(), frame->sp(), inlined_function,
+ GetApproximateTokenIndex(unoptimized_code, unoptimized_pc),
+ true, true);
}
}
// Print the optimized inlining frame below.
}
- PrintDartFrame(frame->pc(), frame->fp(), frame->sp(),
- function,
+ PrintDartFrame(frame->pc(), frame->fp(), frame->sp(), function,
GetApproximateTokenIndex(code, frame->pc()),
code.is_optimized(), false);
} else {
OS::Print("pc=0x%" Px " fp=0x%" Px " sp=0x%" Px " %s frame\n",
frame->pc(), frame->fp(), frame->sp(),
- frame->IsEntryFrame() ? "entry" :
- frame->IsExitFrame() ? "exit" :
- frame->IsStubFrame() ? "stub" : "invalid");
+ frame->IsEntryFrame()
+ ? "entry"
+ : frame->IsExitFrame()
+ ? "exit"
+ : frame->IsStubFrame() ? "stub" : "invalid");
}
frame = frames.NextFrame();
}
@@ -425,26 +419,27 @@ void SimulatorDebugger::Debug() {
"%" XSTR(ARG_SIZE) "s",
cmd, arg1, arg2);
if ((strcmp(cmd, "h") == 0) || (strcmp(cmd, "help") == 0)) {
- OS::Print("c/cont -- continue execution\n"
- "disasm -- disassemble instrs at current pc location\n"
- " other variants are:\n"
- " disasm <address>\n"
- " disasm <address> <number_of_instructions>\n"
- " by default 10 instrs are disassembled\n"
- "del -- delete breakpoints\n"
- "flags -- print flag values\n"
- "gdb -- transfer control to gdb\n"
- "h/help -- print this help string\n"
- "break <address> -- set break point at specified address\n"
- "p/print <reg or icount or value or *addr> -- print integer\n"
- "ps/printsingle <sreg or *addr> -- print float value\n"
- "pd/printdouble <dreg or *addr> -- print double value\n"
- "po/printobject <*reg or *addr> -- print object\n"
- "si/stepi -- single step an instruction\n"
- "trace -- toggle execution tracing mode\n"
- "bt -- print backtrace\n"
- "unstop -- if current pc is a stop instr make it a nop\n"
- "q/quit -- Quit the debugger and exit the program\n");
+ OS::Print(
+ "c/cont -- continue execution\n"
+ "disasm -- disassemble instrs at current pc location\n"
+ " other variants are:\n"
+ " disasm <address>\n"
+ " disasm <address> <number_of_instructions>\n"
+ " by default 10 instrs are disassembled\n"
+ "del -- delete breakpoints\n"
+ "flags -- print flag values\n"
+ "gdb -- transfer control to gdb\n"
+ "h/help -- print this help string\n"
+ "break <address> -- set break point at specified address\n"
+ "p/print <reg or icount or value or *addr> -- print integer\n"
+ "ps/printsingle <sreg or *addr> -- print float value\n"
+ "pd/printdouble <dreg or *addr> -- print double value\n"
+ "po/printobject <*reg or *addr> -- print object\n"
+ "si/stepi -- single step an instruction\n"
+ "trace -- toggle execution tracing mode\n"
+ "bt -- print backtrace\n"
+ "unstop -- if current pc is a stop instr make it a nop\n"
+ "q/quit -- Quit the debugger and exit the program\n");
} else if ((strcmp(cmd, "quit") == 0) || (strcmp(cmd, "q") == 0)) {
OS::Print("Quitting\n");
OS::Exit(0);
@@ -488,8 +483,8 @@ void SimulatorDebugger::Debug() {
double dvalue;
if (GetDValue(arg1, &dvalue)) {
uint64_t long_value = bit_cast<uint64_t, double>(dvalue);
- OS::Print("%s: %llu 0x%llx %.8g\n",
- arg1, long_value, long_value, dvalue);
+ OS::Print("%s: %llu 0x%llx %.8g\n", arg1, long_value, long_value,
+ dvalue);
} else {
OS::Print("%s unrecognized\n", arg1);
}
@@ -506,8 +501,8 @@ void SimulatorDebugger::Debug() {
if (Isolate::Current()->heap()->Contains(value)) {
OS::Print("%s: \n", arg1);
#if defined(DEBUG)
- const Object& obj = Object::Handle(
- reinterpret_cast<RawObject*>(value));
+ const Object& obj =
+ Object::Handle(reinterpret_cast<RawObject*>(value));
obj.Print();
#endif // defined(DEBUG)
} else {
@@ -641,9 +636,7 @@ char* SimulatorDebugger::ReadLine(const char* prompt) {
return NULL;
}
intptr_t len = strlen(line_buf);
- if (len > 1 &&
- line_buf[len - 2] == '\\' &&
- line_buf[len - 1] == '\n') {
+ if (len > 1 && line_buf[len - 2] == '\\' && line_buf[len - 1] == '\n') {
// When we read a line that ends with a "\" we remove the escape and
// append the remainder.
line_buf[len - 2] = '\n';
@@ -689,8 +682,8 @@ char* SimulatorDebugger::ReadLine(const char* prompt) {
// Synchronization primitives support.
Mutex* Simulator::exclusive_access_lock_ = NULL;
-Simulator::AddressTag Simulator::exclusive_access_state_[kNumAddressTags] =
- {{NULL, 0}};
+Simulator::AddressTag Simulator::exclusive_access_state_[kNumAddressTags] = {
+ {NULL, 0}};
int Simulator::next_address_tag_ = 0;
@@ -707,9 +700,9 @@ Simulator::Simulator() {
// the size specified by the user and the buffer space needed for
// handling stack overflow exceptions. To be safe in potential
// stack underflows we also add some underflow buffer space.
- stack_ = new char[(OSThread::GetSpecifiedStackSize() +
- OSThread::kStackSizeBuffer +
- kSimulatorStackUnderflowSize)];
+ stack_ =
+ new char[(OSThread::GetSpecifiedStackSize() + OSThread::kStackSizeBuffer +
+ kSimulatorStackUnderflowSize)];
pc_modified_ = false;
icount_ = 0;
break_pc_ = NULL;
@@ -741,7 +734,7 @@ Simulator::Simulator() {
}
// Since VFP registers are overlapping, single-precision registers should
// already be initialized.
- ASSERT(2*kNumberOfDRegisters >= kNumberOfSRegisters);
+ ASSERT(2 * kNumberOfDRegisters >= kNumberOfSRegisters);
for (int i = 0; i < kNumberOfSRegisters; i++) {
ASSERT(sregisters_[i] == 0.0);
}
@@ -820,10 +813,9 @@ class Redirection {
Redirection* list_head = list_;
do {
next_ = list_head;
- list_head = reinterpret_cast<Redirection*>(
- AtomicOperations::CompareAndSwapWord(
- reinterpret_cast<uword*>(&list_),
- reinterpret_cast<uword>(next_),
+ list_head =
+ reinterpret_cast<Redirection*>(AtomicOperations::CompareAndSwapWord(
+ reinterpret_cast<uword*>(&list_), reinterpret_cast<uword>(next_),
reinterpret_cast<uword>(this)));
} while (list_head != next_);
}
@@ -980,8 +972,8 @@ void Simulator::HandleIllegalAccess(uword addr, Instr* instr) {
// it will be possible to disassemble the code and inspect registers.
char buffer[128];
snprintf(buffer, sizeof(buffer),
- "illegal memory access at 0x%" Px ", pc=0x%" Px "\n",
- addr, fault_pc);
+ "illegal memory access at 0x%" Px ", pc=0x%" Px "\n", addr,
+ fault_pc);
SimulatorDebugger dbg(this);
dbg.Stop(instr, buffer);
// The debugger will return control in non-interactive mode.
@@ -1001,8 +993,8 @@ void Simulator::UnalignedAccess(const char* msg, uword addr, Instr* instr) {
// The debugger will not be able to single step past this instruction, but
// it will be possible to disassemble the code and inspect registers.
char buffer[64];
- snprintf(buffer, sizeof(buffer),
- "unaligned %s at 0x%" Px ", pc=%p\n", msg, addr, instr);
+ snprintf(buffer, sizeof(buffer), "unaligned %s at 0x%" Px ", pc=%p\n", msg,
+ addr, instr);
SimulatorDebugger dbg(this);
dbg.Stop(instr, buffer);
// The debugger will return control in non-interactive mode.
@@ -1194,7 +1186,7 @@ uword Simulator::StackTop() const {
// To be safe in potential stack underflows we leave some buffer above and
// set the stack top.
return StackBase() +
- (OSThread::GetSpecifiedStackSize() + OSThread::kStackSizeBuffer);
+ (OSThread::GetSpecifiedStackSize() + OSThread::kStackSizeBuffer);
}
@@ -1205,8 +1197,7 @@ bool Simulator::IsTracingExecution() const {
// Unsupported instructions use Format to print an error and stop execution.
void Simulator::Format(Instr* instr, const char* format) {
- OS::Print("Simulator found unsupported instruction:\n 0x%p: %s\n",
- instr,
+ OS::Print("Simulator found unsupported instruction:\n 0x%p: %s\n", instr,
format);
UNIMPLEMENTED();
}
@@ -1216,22 +1207,38 @@ void Simulator::Format(Instr* instr, const char* format) {
// condition bits.
bool Simulator::ConditionallyExecute(Instr* instr) {
switch (instr->ConditionField()) {
- case EQ: return z_flag_;
- case NE: return !z_flag_;
- case CS: return c_flag_;
- case CC: return !c_flag_;
- case MI: return n_flag_;
- case PL: return !n_flag_;
- case VS: return v_flag_;
- case VC: return !v_flag_;
- case HI: return c_flag_ && !z_flag_;
- case LS: return !c_flag_ || z_flag_;
- case GE: return n_flag_ == v_flag_;
- case LT: return n_flag_ != v_flag_;
- case GT: return !z_flag_ && (n_flag_ == v_flag_);
- case LE: return z_flag_ || (n_flag_ != v_flag_);
- case AL: return true;
- default: UNREACHABLE();
+ case EQ:
+ return z_flag_;
+ case NE:
+ return !z_flag_;
+ case CS:
+ return c_flag_;
+ case CC:
+ return !c_flag_;
+ case MI:
+ return n_flag_;
+ case PL:
+ return !n_flag_;
+ case VS:
+ return v_flag_;
+ case VC:
+ return !v_flag_;
+ case HI:
+ return c_flag_ && !z_flag_;
+ case LS:
+ return !c_flag_ || z_flag_;
+ case GE:
+ return n_flag_ == v_flag_;
+ case LT:
+ return n_flag_ != v_flag_;
+ case GT:
+ return !z_flag_ && (n_flag_ == v_flag_);
+ case LE:
+ return z_flag_ || (n_flag_ != v_flag_);
+ case AL:
+ return true;
+ default:
+ UNREACHABLE();
}
return false;
}
@@ -1341,7 +1348,7 @@ int32_t Simulator::GetShiftRm(Instr* instr, bool* carry_out) {
} else {
// by register
Register rs = instr->RsField();
- shift_amount = get_register(rs) &0xff;
+ shift_amount = get_register(rs) & 0xff;
switch (shift) {
case ASR: {
if (shift_amount == 0) {
@@ -1509,8 +1516,10 @@ void Simulator::HandleRList(Instr* instr, bool load) {
typedef void (*SimulatorRuntimeCall)(NativeArguments arguments);
// Calls to leaf Dart runtime functions are based on this interface.
-typedef int32_t (*SimulatorLeafRuntimeCall)(
- int32_t r0, int32_t r1, int32_t r2, int32_t r3);
+typedef int32_t (*SimulatorLeafRuntimeCall)(int32_t r0,
+ int32_t r1,
+ int32_t r2,
+ int32_t r3);
// Calls to leaf float Dart runtime functions are based on this interface.
typedef double (*SimulatorLeafFloatRuntimeCall)(double d0, double d1);
@@ -1542,7 +1551,7 @@ void Simulator::SupervisorCall(Instr* instr) {
}
if (redirection->call_kind() == kRuntimeCall) {
NativeArguments arguments;
- ASSERT(sizeof(NativeArguments) == 4*kWordSize);
+ ASSERT(sizeof(NativeArguments) == 4 * kWordSize);
arguments.thread_ = reinterpret_cast<Thread*>(get_register(R0));
arguments.argc_tag_ = get_register(R1);
arguments.argv_ = reinterpret_cast<RawObject**>(get_register(R2));
@@ -1562,7 +1571,7 @@ void Simulator::SupervisorCall(Instr* instr) {
SimulatorLeafRuntimeCall target =
reinterpret_cast<SimulatorLeafRuntimeCall>(external);
r0 = target(r0, r1, r2, r3);
- set_register(R0, r0); // Set returned result from function.
+ set_register(R0, r0); // Set returned result from function.
set_register(R1, icount_); // Zap unused result register.
} else if (redirection->call_kind() == kLeafFloatRuntimeCall) {
ASSERT((0 <= redirection->argument_count()) &&
@@ -1627,8 +1636,8 @@ void Simulator::SupervisorCall(Instr* instr) {
for (int i = D1; i <= D7; i++) {
set_dregister(static_cast<DRegister>(i), zap_dvalue);
}
- // The above loop also zaps overlapping registers S2-S15.
- // Registers D8-D15 (overlapping with S16-S31) are preserved.
+// The above loop also zaps overlapping registers S2-S15.
+// Registers D8-D15 (overlapping with S16-S31) are preserved.
#if defined(VFPv3_D32)
for (int i = D16; i <= D31; i++) {
set_dregister(static_cast<DRegister>(i), zap_dvalue);
@@ -1719,7 +1728,7 @@ void Simulator::DecodeType01(Instr* instr) {
dbg.Stop(instr, buffer);
}
} else {
- // Format(instr, "smc'cond");
+ // Format(instr, "smc'cond");
UnimplementedInstruction(instr);
}
break;
@@ -1741,8 +1750,8 @@ void Simulator::DecodeType01(Instr* instr) {
int32_t rd_val = 0;
switch (instr->Bits(21, 3)) {
case 1:
- // Registers rd, rn, rm, ra are encoded as rn, rm, rs, rd.
- // Format(instr, "mla'cond's 'rn, 'rm, 'rs, 'rd");
+ // Registers rd, rn, rm, ra are encoded as rn, rm, rs, rd.
+ // Format(instr, "mla'cond's 'rn, 'rm, 'rs, 'rd");
case 3: {
// Registers rd, rn, rm, ra are encoded as rn, rm, rs, rd.
// Format(instr, "mls'cond's 'rn, 'rm, 'rs, 'rd");
@@ -1768,18 +1777,18 @@ void Simulator::DecodeType01(Instr* instr) {
break;
}
case 4:
- // Registers rd_lo, rd_hi, rn, rm are encoded as rd, rn, rm, rs.
- // Format(instr, "umull'cond's 'rd, 'rn, 'rm, 'rs");
+ // Registers rd_lo, rd_hi, rn, rm are encoded as rd, rn, rm, rs.
+ // Format(instr, "umull'cond's 'rd, 'rn, 'rm, 'rs");
case 6: {
// Registers rd_lo, rd_hi, rn, rm are encoded as rd, rn, rm, rs.
// Format(instr, "smull'cond's 'rd, 'rn, 'rm, 'rs");
int64_t result;
if (instr->Bits(21, 3) == 4) { // umull
- uint64_t left_op = static_cast<uint32_t>(rm_val);
+ uint64_t left_op = static_cast<uint32_t>(rm_val);
uint64_t right_op = static_cast<uint32_t>(rs_val);
result = left_op * right_op; // Unsigned multiplication.
- } else { // smull
- int64_t left_op = static_cast<int32_t>(rm_val);
+ } else { // smull
+ int64_t left_op = static_cast<int32_t>(rm_val);
int64_t right_op = static_cast<int32_t>(rs_val);
result = left_op * right_op; // Signed multiplication.
}
@@ -1792,7 +1801,7 @@ void Simulator::DecodeType01(Instr* instr) {
// Collapse bits 0..31 into bit 32 so that 32-bit Z check works.
hi_res |= 1;
}
- ASSERT((result == 0) == (hi_res == 0)); // Z bit
+ ASSERT((result == 0) == (hi_res == 0)); // Z bit
ASSERT(((result & (1LL << 63)) != 0) == (hi_res < 0)); // N bit
SetNZFlags(hi_res);
}
@@ -1806,8 +1815,8 @@ void Simulator::DecodeType01(Instr* instr) {
UnimplementedInstruction(instr);
}
case 5:
- // Registers rd_lo, rd_hi, rn, rm are encoded as rd, rn, rm, rs.
- // Format(instr, "umlal'cond's 'rd, 'rn, 'rm, 'rs");
+ // Registers rd_lo, rd_hi, rn, rm are encoded as rd, rn, rm, rs.
+ // Format(instr, "umlal'cond's 'rd, 'rn, 'rm, 'rs");
case 7: {
// Registers rd_lo, rd_hi, rn, rm are encoded as rd, rn, rm, rs.
// Format(instr, "smlal'cond's 'rd, 'rn, 'rm, 'rs");
@@ -1818,21 +1827,21 @@ void Simulator::DecodeType01(Instr* instr) {
int64_t accum = Utils::LowHighTo64Bits(accum_lo, accum_hi);
int64_t result;
if (instr->Bits(21, 3) == 5) { // umlal
- uint64_t left_op = static_cast<uint32_t>(rm_val);
+ uint64_t left_op = static_cast<uint32_t>(rm_val);
uint64_t right_op = static_cast<uint32_t>(rs_val);
result = accum + left_op * right_op; // Unsigned multiplication.
- } else if (instr->Bits(21, 3) == 7) { // smlal
- int64_t left_op = static_cast<int32_t>(rm_val);
+ } else if (instr->Bits(21, 3) == 7) { // smlal
+ int64_t left_op = static_cast<int32_t>(rm_val);
int64_t right_op = static_cast<int32_t>(rs_val);
result = accum + left_op * right_op; // Signed multiplication.
} else {
ASSERT(instr->Bits(21, 3) == 2); // umaal
ASSERT(!instr->HasS());
- uint64_t left_op = static_cast<uint32_t>(rm_val);
+ uint64_t left_op = static_cast<uint32_t>(rm_val);
uint64_t right_op = static_cast<uint32_t>(rs_val);
result = left_op * right_op + // Unsigned multiplication.
- static_cast<uint32_t>(rd_lo_val) +
- static_cast<uint32_t>(rd_hi_val);
+ static_cast<uint32_t>(rd_lo_val) +
+ static_cast<uint32_t>(rd_hi_val);
}
int32_t hi_res = Utils::High32Bits(result);
int32_t lo_res = Utils::Low32Bits(result);
@@ -1843,7 +1852,7 @@ void Simulator::DecodeType01(Instr* instr) {
// Collapse bits 0..31 into bit 32 so that 32-bit Z check works.
hi_res |= 1;
}
- ASSERT((result == 0) == (hi_res == 0)); // Z bit
+ ASSERT((result == 0) == (hi_res == 0)); // Z bit
ASSERT(((result & (1LL << 63)) != 0) == (hi_res < 0)); // N bit
SetNZFlags(hi_res);
}
@@ -2484,7 +2493,7 @@ void Simulator::DecodeType5(Instr* instr) {
if (instr->HasLink()) {
set_register(LR, pc + Instr::kInstrSize);
}
- set_pc(pc+off);
+ set_pc(pc + off);
}
@@ -2514,12 +2523,12 @@ void Simulator::DecodeType6(Instr* instr) {
set_register(rn, Utils::High32Bits(dm_val));
} else {
// Format(instr, "vmovdrr'cond 'dm, 'rd, 'rn");
- int64_t dm_val = Utils::LowHighTo64Bits(get_register(rd),
- get_register(rn));
+ int64_t dm_val =
+ Utils::LowHighTo64Bits(get_register(rd), get_register(rn));
set_dregister_bits(dm, dm_val);
}
}
- } else if (instr-> IsVFPLoadStore()) {
+ } else if (instr->IsVFPLoadStore()) {
Register rn = instr->RnField();
int32_t addr = get_register(rn);
int32_t imm_val = instr->Bits(0, 8) << 2;
@@ -2718,7 +2727,7 @@ void Simulator::DecodeType7(Instr* instr) {
}
break;
}
- case 0xb: { // Other VFP data-processing instructions
+ case 0xb: { // Other VFP data-processing instructions
if (instr->Bit(6) == 0) { // vmov immediate
if (instr->Bit(8) == 0) {
// Format(instr, "vmovs'cond 'sd, #'immf");
@@ -2788,8 +2797,8 @@ void Simulator::DecodeType7(Instr* instr) {
}
break;
}
- case 4: // vcmp, vcmpe
- case 5: { // vcmp #0.0, vcmpe #0.0
+ case 4: // vcmp, vcmpe
+ case 5: { // vcmp #0.0, vcmpe #0.0
if (instr->Bit(7) == 1) { // vcmpe
UnimplementedInstruction(instr);
} else {
@@ -2952,9 +2961,9 @@ void Simulator::DecodeType7(Instr* instr) {
set_sregister_bits(sd, sd_val);
break;
}
- case 2: // vcvtb, vcvtt
- case 3: // vcvtb, vcvtt
- case 9: // undefined
+ case 2: // vcvtb, vcvtt
+ case 3: // vcvtb, vcvtt
+ case 9: // undefined
case 10: // vcvt between floating-point and fixed-point
case 11: // vcvt between floating-point and fixed-point
case 14: // vcvt between floating-point and fixed-point
@@ -2964,8 +2973,7 @@ void Simulator::DecodeType7(Instr* instr) {
break;
}
}
- }
- break;
+ } break;
}
} else {
// 8, 16, or 32-bit Transfer between ARM Core and VFP
@@ -3019,9 +3027,12 @@ void Simulator::DecodeType7(Instr* instr) {
static float arm_reciprocal_sqrt_estimate(float a) {
// From the ARM Architecture Reference Manual A2-87.
- if (isinf(a) || (fabs(a) >= exp2f(126))) return 0.0;
- else if (a == 0.0) return kPosInfinity;
- else if (isnan(a)) return a;
+ if (isinf(a) || (fabs(a) >= exp2f(126)))
+ return 0.0;
+ else if (a == 0.0)
+ return kPosInfinity;
+ else if (isnan(a))
+ return a;
uint32_t a_bits = bit_cast<uint32_t, float>(a);
uint64_t scaled;
@@ -3059,10 +3070,11 @@ static float arm_reciprocal_sqrt_estimate(float a) {
// r in units of 1/256 rounded to nearest.
int32_t s = static_cast<int>(256.0 * r + 0.5);
double estimate = static_cast<double>(s) / 256.0;
- ASSERT((estimate >= 1.0) && (estimate <= (511.0/256.0)));
+ ASSERT((estimate >= 1.0) && (estimate <= (511.0 / 256.0)));
// result = 0 : result_exp<7:0> : estimate<51:29>
- int32_t result_bits = ((result_exp & 0xff) << 23) |
+ int32_t result_bits =
+ ((result_exp & 0xff) << 23) |
((bit_cast<uint64_t, double>(estimate) >> 29) & 0x7fffff);
return bit_cast<float, int32_t>(result_bits);
}
@@ -3070,9 +3082,12 @@ static float arm_reciprocal_sqrt_estimate(float a) {
static float arm_recip_estimate(float a) {
// From the ARM Architecture Reference Manual A2-85.
- if (isinf(a) || (fabs(a) >= exp2f(126))) return 0.0;
- else if (a == 0.0) return kPosInfinity;
- else if (isnan(a)) return a;
+ if (isinf(a) || (fabs(a) >= exp2f(126)))
+ return 0.0;
+ else if (a == 0.0)
+ return kPosInfinity;
+ else if (isnan(a))
+ return a;
uint32_t a_bits = bit_cast<uint32_t, float>(a);
// scaled = '0011 1111 1110' : a<22:0> : Zeros(29)
@@ -3092,7 +3107,7 @@ static float arm_recip_estimate(float a) {
// r in units of 1/256 rounded to nearest.
int32_t s = static_cast<int32_t>(256.0 * r + 0.5);
double estimate = static_cast<double>(s) / 256.0;
- ASSERT((estimate >= 1.0) && (estimate <= (511.0/256.0)));
+ ASSERT((estimate >= 1.0) && (estimate <= (511.0 / 256.0)));
// result = sign : result_exp<7:0> : estimate<51:29>
int32_t result_bits =
@@ -3102,8 +3117,10 @@ static float arm_recip_estimate(float a) {
}
-static void simd_value_swap(simd_value_t* s1, int i1,
- simd_value_t* s2, int i2) {
+static void simd_value_swap(simd_value_t* s1,
+ int i1,
+ simd_value_t* s2,
+ int i2) {
uint32_t tmp;
tmp = s1->data_[i1].u;
s1->data_[i1].u = s2->data_[i2].u;
@@ -3344,7 +3361,7 @@ void Simulator::DecodeSIMDDataProcessing(Instr* instr) {
// Format(instr, "vmaxqs 'qd, 'qn, 'qm");
for (int i = 0; i < 4; i++) {
s8d.data_[i].f =
- s8n.data_[i].f >= s8m.data_[i].f ? s8n.data_[i].f : s8m.data_[i].f;
+ s8n.data_[i].f >= s8m.data_[i].f ? s8n.data_[i].f : s8m.data_[i].f;
}
} else if ((instr->Bits(8, 4) == 7) && (instr->Bit(4) == 0) &&
(instr->Bits(20, 2) == 3) && (instr->Bits(23, 2) == 3) &&
@@ -3907,10 +3924,10 @@ void Simulator::Longjmp(uword pc,
set_register(kExceptionObjectReg, bit_cast<int32_t>(raw_exception));
set_register(kStackTraceObjectReg, bit_cast<int32_t>(raw_stacktrace));
// Restore pool pointer.
- int32_t code = *reinterpret_cast<int32_t*>(
- fp + kPcMarkerSlotFromFp * kWordSize);
- int32_t pp = *reinterpret_cast<int32_t*>(
- code + Code::object_pool_offset() - kHeapObjectTag);
+ int32_t code =
+ *reinterpret_cast<int32_t*>(fp + kPcMarkerSlotFromFp * kWordSize);
+ int32_t pp = *reinterpret_cast<int32_t*>(code + Code::object_pool_offset() -
+ kHeapObjectTag);
set_register(CODE_REG, code);
set_register(PP, pp);
buf->Longjmp();
« no previous file with comments | « runtime/vm/simulator_arm.h ('k') | runtime/vm/simulator_arm64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698