public void ShiftTest()
{
ExecuteAssembly(@"
li r10, 0b_10110111011110111110111111000000
li r11, 0b_01011011101111011111011111100000
li r12, 7
sll r1, r10, 7
sllv r2, r10, r12
srl r3, r10, 7
srlv r4, r10, r12
sra r5, r10, 7
srav r6, r10, r12
sra r7, r11, 7
srav r8, r11, r12
");
// Check input not modified.
Assert.AreEqual("10110111011110111110111111000000", "%032b".Sprintf(CpuThreadState.GPR[10]));
Assert.AreEqual(7, CpuThreadState.GPR[12]);
Assert.AreEqual("10111101111101111110000000000000", "%032b".Sprintf(CpuThreadState.GPR[1]));
Assert.AreEqual("10111101111101111110000000000000", "%032b".Sprintf(CpuThreadState.GPR[2]));
Assert.AreEqual("00000001011011101111011111011111", "%032b".Sprintf(CpuThreadState.GPR[3]));
Assert.AreEqual("00000001011011101111011111011111", "%032b".Sprintf(CpuThreadState.GPR[4]));
Assert.AreEqual("11111111011011101111011111011111", "%032b".Sprintf(CpuThreadState.GPR[5]));
Assert.AreEqual("11111111011011101111011111011111", "%032b".Sprintf(CpuThreadState.GPR[6]));
Assert.AreEqual("00000000101101110111101111101111", "%032b".Sprintf(CpuThreadState.GPR[7]));
Assert.AreEqual("00000000101101110111101111101111", "%032b".Sprintf(CpuThreadState.GPR[8]));
}