public int instructionDecode() { //Returns int value of opcode
		Instruction instr = getIR().read();
		int opcodeValue = instr.getOpcode().getValue(); //Gets instruction opcode as int value
		
		if (Thread.currentThread().isInterrupted()) { 
			return -1; //Do not continue execution if interrupted (pipeline flush)
		}
		
		
		if (Thread.currentThread().isInterrupted()) { 
			return -1;
		}
		
		setWaitStatus(true);
		try {
			wait();
		} catch (InterruptedException e) {
		//	e.printStackTrace();
			setWaitStatus(false);
			return -1; //Do not continue execution if interrupted by Ex. stage running the SwingWorker thread; this means
			//reset has been clicked on GUI. -1 signals this thread return from run() method (which called this method).
		}
		setWaitStatus(false);		
		
		return opcodeValue;
		
	}