FOR PlaRowPointer:
INT
IN [0..PLAMinterms)
DO
plaRow: PlaRow ← PLA[PlaRowPointer];
sigRow: SigPhBArgs ← plaRow.andRow.sigPhBArgs;
argRow: PhBArgs ← plaRow.andRow.phBArgs;
IF sigRow.state.cycle THEN IF phBArgs.state.cycle#argRow.state.cycle THEN LOOP;
IF sigRow.state.rescheduleWaiting THEN IF phBArgs.state.rescheduleWaiting#argRow.state.rescheduleWaiting THEN LOOP;
IF sigRow.state.inhibitTraps THEN IF phBArgs.state.inhibitTraps#argRow.state.inhibitTraps THEN LOOP;
IF sigRow.state.exceptions THEN IF phBArgs.state.exceptions#argRow.state.exceptions THEN LOOP;
TRUSTED {
opTest ←
LOOPHOLE[
Basics.BITXOR[LOOPHOLE[argRow.op], LOOPHOLE[phBArgs.op]], ByteArray];
alphaTest ← LOOPHOLE[Basics.BITXOR[argRow.alpha, phBArgs.alpha], ByteArray];
betaTest ← LOOPHOLE[Basics.BITXOR[argRow.beta, phBArgs.beta], ByteArray];
};
IF sigRow.op.bit0 THEN IF opTest[0] THEN LOOP;
IF sigRow.op.bit1 THEN IF opTest[1] THEN LOOP;
IF sigRow.op.bit2 THEN IF opTest[2] THEN LOOP;
IF sigRow.op.bit3 THEN IF opTest[3] THEN LOOP;
IF sigRow.op.bit4 THEN IF opTest[4] THEN LOOP;
IF sigRow.op.bit5 THEN IF opTest[5] THEN LOOP;
IF sigRow.op.bit6 THEN IF opTest[6] THEN LOOP;
IF sigRow.op.bit7 THEN IF opTest[7] THEN LOOP;
IF sigRow.alpha.bit0 THEN IF alphaTest[0] THEN LOOP;
IF sigRow.alpha.bit1 THEN IF alphaTest[1] THEN LOOP;
IF sigRow.alpha.bit2 THEN IF alphaTest[2] THEN LOOP;
IF sigRow.alpha.bit3 THEN IF alphaTest[3] THEN LOOP;
IF sigRow.alpha.bit4 THEN IF alphaTest[4] THEN LOOP;
IF sigRow.alpha.bit5 THEN IF alphaTest[5] THEN LOOP;
IF sigRow.alpha.bit6 THEN IF alphaTest[6] THEN LOOP;
IF sigRow.alpha.bit7 THEN IF alphaTest[7] THEN LOOP;
IF sigRow.beta.bit0 THEN IF betaTest[0] THEN LOOP;
IF sigRow.beta.bit1 THEN IF betaTest[1] THEN LOOP;
IF sigRow.beta.bit2 THEN IF betaTest[2] THEN LOOP;
IF sigRow.beta.bit3 THEN IF betaTest[3] THEN LOOP;
IF sigRow.beta.bit4 THEN IF betaTest[4] THEN LOOP;
IF sigRow.beta.bit5 THEN IF betaTest[5] THEN LOOP;
IF sigRow.beta.bit6 THEN IF betaTest[6] THEN LOOP;
IF sigRow.beta.bit7 THEN IF betaTest[7] THEN LOOP;
IF sigRow.delayACycle THEN IF phBArgs.delayACycle#argRow.delayACycle THEN LOOP;
IF sigRow.iStkEmpty THEN IF phBArgs.iStkEmpty#argRow.iStkEmpty THEN LOOP;
IF sigRow.pushPending THEN IF phBArgs.pushPending#argRow.pushPending THEN LOOP;
IF sigRow.popPending THEN IF phBArgs.popPending#argRow.popPending THEN LOOP;
IF sigRow.instReady THEN IF phBArgs.instReady#argRow.instReady THEN LOOP;
IF firstHit
THEN {
firstHit ← FALSE;
accumMicro ← plaRow.orRow.m
}
ELSE accumMicro ← OrMicroInst[ accumMicro, plaRow.orRow.m];
ENDLOOP;