public void MulwTest2() { // Same test like RV32I... program.AddRange(InstructionTypeFactory.Lui(10, 0xFFFFF)); program.AddRange(InstructionTypeFactory.Lui(11, 0x00FFF)); program.AddRange(InstructionTypeFactory.MultiplyOP32(12, 10, 11, 0)); // MUL: 2*10 = 20 core.Run(program); var register = core.Register; var x10 = register.ReadBlock(10); var x11 = register.ReadBlock(11); var x12 = register.ReadBlock(12); Assert.AreEqual(x10, new byte[] { 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }); Assert.AreEqual(x11, new byte[] { 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00 }); Assert.AreEqual(x12, new byte[] { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 }); }
public void MulAndMulhTest3() { program.AddRange(InstructionTypeFactory.Lui(10, 0xFFFFF)); program.AddRange(InstructionTypeFactory.Lui(11, 0x00FFF)); program.AddRange(InstructionTypeFactory.MultiplyOP(12, 10, 11, 0)); // MUL: 2*10 = 20 program.AddRange(InstructionTypeFactory.MultiplyOP(13, 10, 11, 1)); core.Run(program); var register = core.Register; var x10 = register.ReadBlock(10); var x11 = register.ReadBlock(11); var x12 = register.ReadBlock(12); var x13 = register.ReadBlock(13); Assert.AreEqual(x10, new byte[] { 0x00, 0xF0, 0xFF, 0xFF }); Assert.AreEqual(x11, new byte[] { 0x00, 0xF0, 0xFF, 0x00 }); Assert.AreEqual(x12, new byte[] { 0x00, 0x00, 0x00, 0x01 }); Assert.AreEqual(x13, new byte[] { 0xF0, 0x00, 0x00, 0x00 }); }