execute.cc (13818:f0126488ef9e) execute.cc (13954:2f400a5f2627)
1/*
1/*
2 * Copyright (c) 2013-2014 ARM Limited
2 * Copyright (c) 2013-2014,2018 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
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated

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

359 fault = response->fault;
360
361 fault->invoke(thread, inst->staticInst);
362 }
363 } else if (!packet) {
364 DPRINTF(MinorMem, "Completing failed request inst: %s\n",
365 *inst);
366 use_context_predicate = false;
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
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated

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

359 fault = response->fault;
360
361 fault->invoke(thread, inst->staticInst);
362 }
363 } else if (!packet) {
364 DPRINTF(MinorMem, "Completing failed request inst: %s\n",
365 *inst);
366 use_context_predicate = false;
367 if (!context.readMemAccPredicate())
368 inst->staticInst->completeAcc(nullptr, &context, inst->traceData);
367 } else if (packet->isError()) {
368 DPRINTF(MinorMem, "Trying to commit error response: %s\n",
369 *inst);
370
371 fatal("Received error response packet for inst: %s\n", *inst);
372 } else if (is_store || is_load || is_prefetch || is_atomic) {
373 assert(packet);
374

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

476
477 if (init_fault != NoFault) {
478 DPRINTF(MinorExecute, "Fault on memory inst: %s"
479 " initiateAcc: %s\n", *inst, init_fault->name());
480 fault = init_fault;
481 } else {
482 /* Only set this if the instruction passed its
483 * predicate */
369 } else if (packet->isError()) {
370 DPRINTF(MinorMem, "Trying to commit error response: %s\n",
371 *inst);
372
373 fatal("Received error response packet for inst: %s\n", *inst);
374 } else if (is_store || is_load || is_prefetch || is_atomic) {
375 assert(packet);
376

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

478
479 if (init_fault != NoFault) {
480 DPRINTF(MinorExecute, "Fault on memory inst: %s"
481 " initiateAcc: %s\n", *inst, init_fault->name());
482 fault = init_fault;
483 } else {
484 /* Only set this if the instruction passed its
485 * predicate */
486 if (!context.readMemAccPredicate()) {
487 DPRINTF(MinorMem, "No memory access for inst: %s\n", *inst);
488 assert(context.readPredicate());
489 }
484 passed_predicate = context.readPredicate();
485
486 /* Set predicate in tracing */
487 if (inst->traceData)
488 inst->traceData->setPredicate(passed_predicate);
489
490 /* If the instruction didn't pass its predicate (and so will not
491 * progress from here) Try to branch to correct and branch

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

923 if (completed_mem_inst && fault != NoFault) {
924 if (early_memory_issue) {
925 DPRINTF(MinorExecute, "Fault in early executing inst: %s\n",
926 fault->name());
927 /* Don't execute the fault, just stall the instruction
928 * until it gets to the head of inFlightInsts */
929 inst->canEarlyIssue = false;
930 /* Not completed as we'll come here again to pick up
490 passed_predicate = context.readPredicate();
491
492 /* Set predicate in tracing */
493 if (inst->traceData)
494 inst->traceData->setPredicate(passed_predicate);
495
496 /* If the instruction didn't pass its predicate (and so will not
497 * progress from here) Try to branch to correct and branch

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

929 if (completed_mem_inst && fault != NoFault) {
930 if (early_memory_issue) {
931 DPRINTF(MinorExecute, "Fault in early executing inst: %s\n",
932 fault->name());
933 /* Don't execute the fault, just stall the instruction
934 * until it gets to the head of inFlightInsts */
935 inst->canEarlyIssue = false;
936 /* Not completed as we'll come here again to pick up
931 * the fault when we get to the end of the FU */
937 * the fault when we get to the end of the FU */
932 completed_inst = false;
933 } else {
934 DPRINTF(MinorExecute, "Fault in execute: %s\n",
935 fault->name());
936 fault->invoke(thread, NULL);
937
938 tryToBranch(inst, fault, branch);
939 completed_inst = true;

--- 942 unchanged lines hidden ---
938 completed_inst = false;
939 } else {
940 DPRINTF(MinorExecute, "Fault in execute: %s\n",
941 fault->name());
942 fault->invoke(thread, NULL);
943
944 tryToBranch(inst, fault, branch);
945 completed_inst = true;

--- 942 unchanged lines hidden ---