mirror of
https://github.com/xmrig/xmrig.git
synced 2024-11-05 16:07:42 +00:00
Sync with latest RandomX code
Fix a possible out-of-bounds access in superscalar generator
This commit is contained in:
parent
228f02c361
commit
c9798ba2e9
1 changed files with 7 additions and 1 deletions
|
@ -631,7 +631,7 @@ namespace randomx {
|
||||||
int cycle1 = scheduleUop<false>(mop.getUop1(), portBusy, cycle);
|
int cycle1 = scheduleUop<false>(mop.getUop1(), portBusy, cycle);
|
||||||
int cycle2 = scheduleUop<false>(mop.getUop2(), portBusy, cycle);
|
int cycle2 = scheduleUop<false>(mop.getUop2(), portBusy, cycle);
|
||||||
|
|
||||||
if (cycle1 == cycle2) {
|
if (cycle1 >= 0 && cycle1 == cycle2) {
|
||||||
if (commit) {
|
if (commit) {
|
||||||
scheduleUop<true>(mop.getUop1(), portBusy, cycle1);
|
scheduleUop<true>(mop.getUop1(), portBusy, cycle1);
|
||||||
scheduleUop<true>(mop.getUop2(), portBusy, cycle2);
|
scheduleUop<true>(mop.getUop2(), portBusy, cycle2);
|
||||||
|
@ -755,6 +755,12 @@ namespace randomx {
|
||||||
//recalculate when the instruction can be scheduled for execution based on operand availability
|
//recalculate when the instruction can be scheduled for execution based on operand availability
|
||||||
scheduleCycle = scheduleMop<true>(mop, portBusy, scheduleCycle, scheduleCycle);
|
scheduleCycle = scheduleMop<true>(mop, portBusy, scheduleCycle, scheduleCycle);
|
||||||
|
|
||||||
|
if (scheduleCycle < 0) {
|
||||||
|
if (trace) std::cout << "Unable to map operation '" << mop.getName() << "' to execution port (cycle " << scheduleCycle << ")" << std::endl;
|
||||||
|
portsSaturated = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
//calculate when the result will be ready
|
//calculate when the result will be ready
|
||||||
depCycle = scheduleCycle + mop.getLatency();
|
depCycle = scheduleCycle + mop.getLatency();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue