--- fixedshift.py.orig 2020-05-09 09:56:10.393656481 -0400
-+++ fixedshift.py 2020-05-09 10:51:18.674826544 -0400
++++ fixedshift.py 2020-05-10 16:03:17.449405581 -0400
+@@ -12,8 +12,8 @@
+ @inject()
+ def op_rlwinm(self, RS):
+ n = SH
+- r = ROTL32(RS[32:64], n)
+- m = MASK(MB + 32, ME + 32)
++ r = ROTL32(EXTZ64(RS[32:64]), n)
++ m = MASK(MB.value + 32, ME.value + 32)
+ RA = r & m
+ return (RA,)
+
+@@ -21,7 +21,7 @@
+ def op_rlwinm_(self, RS):
+ n = SH
+ r = ROTL32(RS[32:64], n)
+- m = MASK(MB + 32, ME + 32)
++ m = MASK(MB.value + 32, ME.value + 32)
+ RA = r & m
+ return (RA,)
+
+@@ -29,7 +29,7 @@
+ def op_rlwnm(self, RB, RS):
+ n = RB[59:64]
+ r = ROTL32(RS[32:64], n)
+- m = MASK(MB + 32, ME + 32)
++ m = MASK(MB.value + 32, ME.value + 32)
+ RA = r & m
+ return (RA,)
+
+@@ -37,7 +37,7 @@
+ def op_rlwnm_(self, RB, RS):
+ n = RB[59:64]
+ r = ROTL32(RS[32:64], n)
+- m = MASK(MB + 32, ME + 32)
++ m = MASK(MB.value + 32, ME.value + 32)
+ RA = r & m
+ return (RA,)
+
+@@ -45,7 +45,7 @@
+ def op_rlwimi(self, RS, RA):
+ n = SH
+ r = ROTL32(RS[32:64], n)
+- m = MASK(MB + 32, ME + 32)
++ m = MASK(MB.value + 32, ME.value + 32)
+ RA = r & m | RA & ~m
+ return (RA,)
+
+@@ -53,7 +53,7 @@
+ def op_rlwimi_(self, RS, RA):
+ n = SH
+ r = ROTL32(RS[32:64], n)
+- m = MASK(MB + 32, ME + 32)
++ m = MASK(MB.value + 32, ME.value + 32)
+ RA = r & m | RA & ~m
+ return (RA,)
+
@@ -168,9 +168,9 @@
@inject()
def op_slw(self, RB, RS):
n = RB[59:64]
- r = ROTL32(RS[32:64], n)
-+ r = ROTL32(RS[32:64], n.value)
++ r = ROTL32(EXTZ64(RS[32:64]), n.value)
if eq(RB[58], 0):
- m = MASK(32, 63 - n)
+ m = MASK(32, 63 - n.value)
def op_slw_(self, RB, RS):
n = RB[59:64]
- r = ROTL32(RS[32:64], n)
-+ r = ROTL32(RS[32:64], n.value)
++ r = ROTL32(EXTZ64(RS[32:64]), n.value)
if eq(RB[58], 0):
- m = MASK(32, 63 - n)
+ m = MASK(32, 63 - n.value)
def op_srw(self, RB, RS):
n = RB[59:64]
- r = ROTL32(RS[32:64], 64 - n)
-+ r = ROTL32(RS[32:64], 64 - n.value)
++ r = ROTL32(EXTZ64(RS[32:64]), 64 - n.value)
if eq(RB[58], 0):
- m = MASK(n + 32, 63)
+ m = MASK(n.value + 32, 63)
def op_srw_(self, RB, RS):
n = RB[59:64]
- r = ROTL32(RS[32:64], 64 - n)
-+ r = ROTL32(RS[32:64], 64 - n.value)
++ r = ROTL32(EXTZ64(RS[32:64]), 64 - n.value)
if eq(RB[58], 0):
- m = MASK(n + 32, 63)
+ m = MASK(n.value + 32, 63)
n = SH
- r = ROTL32(RS[32:64], 64 - n)
- m = MASK(n + 32, 63)
-+ r = ROTL32(RS[32:64], 64 - n.value)
++ r = ROTL32(EXTZ64(RS[32:64]), 64 - n.value)
+ m = MASK(n.value + 32, 63)
s = RS[32]
RA = r & m | concat(s, repeat=64) & ~m
n = SH
- r = ROTL32(RS[32:64], 64 - n)
- m = MASK(n + 32, 63)
-+ r = ROTL32(RS[32:64], 64 - n.value)
++ r = ROTL32(EXTZ64(RS[32:64]), 64 - n.value)
+ m = MASK(n.value + 32, 63)
s = RS[32]
RA = r & m | concat(s, repeat=64) & ~m
def op_sraw(self, RB, RS):
n = RB[59:64]
- r = ROTL32(RS[32:64], 64 - n)
-+ r = ROTL32(RS[32:64], 64 - n.value)
++ r = ROTL32(EXTZ64(RS[32:64]), 64 - n.value)
if eq(RB[58], 0):
- m = MASK(n + 32, 63)
+ m = MASK(n.value + 32, 63)
def op_sraw_(self, RB, RS):
n = RB[59:64]
- r = ROTL32(RS[32:64], 64 - n)
-+ r = ROTL32(RS[32:64], 64 - n.value)
++ r = ROTL32(EXTZ64(RS[32:64]), 64 - n.value)
if eq(RB[58], 0):
- m = MASK(n + 32, 63)
+ m = MASK(n.value + 32, 63)