"and": InternalOp.OP_AND,
             "or": InternalOp.OP_OR,
             "add.": InternalOp.OP_ADD,
+            "lwzx": InternalOp.OP_LOAD,
+            "stwx": InternalOp.OP_STORE,
         }
         self.opcodestr = random.choice(list(self.ops.keys()))
         self.opcode = self.ops[self.opcodestr]
         return string
 
     def check_results(self, pdecode2):
-        r1sel = yield pdecode2.e.write_reg.data
+        if self.opcode == InternalOp.OP_STORE:
+            r1sel = yield pdecode2.e.read_reg3.data
+        else:
+            r1sel = yield pdecode2.e.write_reg.data
+
         r3sel = yield pdecode2.e.read_reg2.data
 
         # For some reason r2 gets decoded either in read_reg1