Fix bug with ROTL32 helper
[soc.git] / src / soc / decoder / isa / fixedshift.patch
1 --- fixedshift.py.orig 2020-05-11 10:20:55.781417649 -0400
2 +++ fixedshift.py 2020-05-13 14:02:01.147691354 -0400
3 @@ -13,7 +13,7 @@
4 def op_rlwinm(self, RS):
5 n = SH
6 r = ROTL32(RS[32:64], n)
7 - m = MASK(MB + 32, ME + 32)
8 + m = MASK(MB.value + 32, ME.value + 32)
9 RA = r & m
10 return (RA,)
11
12 @@ -21,7 +21,7 @@
13 def op_rlwinm_(self, RS):
14 n = SH
15 r = ROTL32(RS[32:64], n)
16 - m = MASK(MB + 32, ME + 32)
17 + m = MASK(MB.value + 32, ME.value + 32)
18 RA = r & m
19 return (RA,)
20
21 @@ -29,7 +29,7 @@
22 def op_rlwnm(self, RB, RS):
23 n = RB[59:64]
24 r = ROTL32(RS[32:64], n)
25 - m = MASK(MB + 32, ME + 32)
26 + m = MASK(MB.value + 32, ME.value + 32)
27 RA = r & m
28 return (RA,)
29
30 @@ -37,7 +37,7 @@
31 def op_rlwnm_(self, RB, RS):
32 n = RB[59:64]
33 r = ROTL32(RS[32:64], n)
34 - m = MASK(MB + 32, ME + 32)
35 + m = MASK(MB.value + 32, ME.value + 32)
36 RA = r & m
37 return (RA,)
38
39 @@ -45,7 +45,7 @@
40 def op_rlwimi(self, RS, RA):
41 n = SH
42 r = ROTL32(RS[32:64], n)
43 - m = MASK(MB + 32, ME + 32)
44 + m = MASK(MB.value + 32, ME.value + 32)
45 RA = r & m | RA & ~m
46 return (RA,)
47
48 @@ -53,7 +53,7 @@
49 def op_rlwimi_(self, RS, RA):
50 n = SH
51 r = ROTL32(RS[32:64], n)
52 - m = MASK(MB + 32, ME + 32)
53 + m = MASK(MB.value + 32, ME.value + 32)
54 RA = r & m | RA & ~m
55 return (RA,)
56
57 @@ -168,9 +168,9 @@
58 @inject()
59 def op_slw(self, RB, RS):
60 n = RB[59:64]
61 - r = ROTL32(RS[32:64], n)
62 + r = ROTL32(RS[32:64], n.value)
63 if eq(RB[58], 0):
64 - m = MASK(32, 63 - n)
65 + m = MASK(32, 63 - n.value)
66 else:
67 m = concat(0, repeat=64)
68 RA = r & m
69 @@ -179,9 +179,9 @@
70 @inject()
71 def op_slw_(self, RB, RS):
72 n = RB[59:64]
73 - r = ROTL32(RS[32:64], n)
74 + r = ROTL32(RS[32:64], n.value)
75 if eq(RB[58], 0):
76 - m = MASK(32, 63 - n)
77 + m = MASK(32, 63 - n.value)
78 else:
79 m = concat(0, repeat=64)
80 RA = r & m
81 @@ -190,9 +190,9 @@
82 @inject()
83 def op_srw(self, RB, RS):
84 n = RB[59:64]
85 - r = ROTL32(RS[32:64], 64 - n)
86 + r = ROTL32(RS[32:64], 64 - n.value)
87 if eq(RB[58], 0):
88 - m = MASK(n + 32, 63)
89 + m = MASK(n.value + 32, 63)
90 else:
91 m = concat(0, repeat=64)
92 RA = r & m
93 @@ -201,9 +201,9 @@
94 @inject()
95 def op_srw_(self, RB, RS):
96 n = RB[59:64]
97 - r = ROTL32(RS[32:64], 64 - n)
98 + r = ROTL32(RS[32:64], 64 - n.value)
99 if eq(RB[58], 0):
100 - m = MASK(n + 32, 63)
101 + m = MASK(n.value + 32, 63)
102 else:
103 m = concat(0, repeat=64)
104 RA = r & m
105 @@ -212,8 +212,8 @@
106 @inject()
107 def op_srawi(self, RS):
108 n = SH
109 - r = ROTL32(RS[32:64], 64 - n)
110 - m = MASK(n + 32, 63)
111 + r = ROTL32(RS[32:64], 64 - n.value)
112 + m = MASK(n.value + 32, 63)
113 s = RS[32]
114 RA = r & m | concat(s, repeat=64) & ~m
115 carry = s & ne((r & ~m)[32:64], 0)
116 @@ -224,8 +224,8 @@
117 @inject()
118 def op_srawi_(self, RS):
119 n = SH
120 - r = ROTL32(RS[32:64], 64 - n)
121 - m = MASK(n + 32, 63)
122 + r = ROTL32(RS[32:64], 64 - n.value)
123 + m = MASK(n.value + 32, 63)
124 s = RS[32]
125 RA = r & m | concat(s, repeat=64) & ~m
126 carry = s & ne((r & ~m)[32:64], 0)
127 @@ -236,9 +236,9 @@
128 @inject()
129 def op_sraw(self, RB, RS):
130 n = RB[59:64]
131 - r = ROTL32(RS[32:64], 64 - n)
132 + r = ROTL32(RS[32:64], 64 - n.value)
133 if eq(RB[58], 0):
134 - m = MASK(n + 32, 63)
135 + m = MASK(n.value + 32, 63)
136 else:
137 m = concat(0, repeat=64)
138 s = RS[32]
139 @@ -251,9 +251,9 @@
140 @inject()
141 def op_sraw_(self, RB, RS):
142 n = RB[59:64]
143 - r = ROTL32(RS[32:64], 64 - n)
144 + r = ROTL32(RS[32:64], 64 - n.value)
145 if eq(RB[58], 0):
146 - m = MASK(n + 32, 63)
147 + m = MASK(n.value + 32, 63)
148 else:
149 m = concat(0, repeat=64)
150 s = RS[32]