diff --git a/InstructionSets/68k/Decoder.cpp b/InstructionSets/68k/Decoder.cpp
index d9eb8a7df..d2f97d635 100644
--- a/InstructionSets/68k/Decoder.cpp
+++ b/InstructionSets/68k/Decoder.cpp
@@ -499,7 +499,63 @@ Preinstruction Predecoder::decodeD(uint16_t instruction) {
 }
 
 Preinstruction Predecoder::decodeE(uint16_t instruction) {
-	(void)instruction;
+	switch(instruction & 0x1d8) {
+		// 4-22 (p126)
+		case 0x000:	return decode<Operation::ASRb>(instruction);
+		case 0x040:	return decode<Operation::ASRw>(instruction);
+		case 0x080:	return decode<Operation::ASRl>(instruction);
+
+		// 4-113 (p217)
+		case 0x008:	return decode<Operation::LSRb>(instruction);
+		case 0x048:	return decode<Operation::LSRw>(instruction);
+		case 0x088:	return decode<Operation::LSRl>(instruction);
+
+		// 4-163 (p267)
+		case 0x010:	return decode<Operation::ROXRb>(instruction);
+		case 0x050:	return decode<Operation::ROXRw>(instruction);
+		case 0x090:	return decode<Operation::ROXRl>(instruction);
+
+		// 4-160 (p264)
+		case 0x018:	return decode<Operation::RORb>(instruction);
+		case 0x058:	return decode<Operation::RORw>(instruction);
+		case 0x098:	return decode<Operation::RORl>(instruction);
+
+		// 4-22 (p126)
+		case 0x100:	return decode<Operation::ASLb>(instruction);
+		case 0x140:	return decode<Operation::ASLw>(instruction);
+		case 0x180:	return decode<Operation::ASLl>(instruction);
+
+		// 4-113 (p217)
+		case 0x108:	return decode<Operation::LSLb>(instruction);
+		case 0x148:	return decode<Operation::LSLw>(instruction);
+		case 0x188:	return decode<Operation::LSLl>(instruction);
+
+		// 4-163 (p267)
+		case 0x110:	return decode<Operation::ROXLb>(instruction);
+		case 0x150:	return decode<Operation::ROXLw>(instruction);
+		case 0x190:	return decode<Operation::ROXLl>(instruction);
+
+		// 4-160 (p264)
+		case 0x118:	return decode<Operation::ROLb>(instruction);
+		case 0x158:	return decode<Operation::ROLw>(instruction);
+		case 0x198:	return decode<Operation::ROLl>(instruction);
+
+		default: break;
+	}
+
+	switch(instruction & 0xfc0) {
+		case 0x0c0:	return decode<Operation::ASRm>(instruction);	// 4-22 (p126)
+		case 0x1c0:	return decode<Operation::ASLm>(instruction);	// 4-22 (p126)
+		case 0x2c0:	return decode<Operation::LSRm>(instruction);	// 4-113 (p217)
+		case 0x3c0:	return decode<Operation::LSLm>(instruction);	// 4-113 (p217)
+		case 0x4c0:	return decode<Operation::ROXRm>(instruction);	// 4-163 (p267)
+		case 0x5c0:	return decode<Operation::ROXLm>(instruction);	// 4-163 (p267)
+		case 0x6c0:	return decode<Operation::RORm>(instruction);	// 4-160 (p264)
+		case 0x7c0:	return decode<Operation::ROLm>(instruction);	// 4-160 (p264)
+
+		default: break;
+	}
+
 	return Preinstruction();
 }