5 def dorow(imm8
, step_i
, chunk_size
):
8 if (j
&chunk_size
) == 0:
13 b
= (step_i
>>(j ^ chunk_size
))&1
15 #print(j, bin(imm), a, b, res)
17 #print (" ", chunk_size, bin(step_o))
20 def grevlut64(RA
, RB
, imm
, iv
):
23 x
= 0x5555555555555555
28 #print (bin(shamt), bin(63))
32 x
= dorow(imm
, x
, step
)
33 return x
& ((1<<64)-1)
36 if __name__
== '__main__':
40 x
= grevlut64(None, RB
, imm
, 1)
41 print ("grevlut", bin(RB
), bin(imm
), hex(x
), "\n", bin(x
))
46 x
= grevlut64(None, RB
, imm
, 1)
47 print ("grevlut", bin(RB
), bin(imm
), hex(x
), "\n", bin(x
))
52 x
= grevlut64(None, RB
, imm
, 1)
53 print ("grevlut", bin(RB
), bin(imm
), hex(x
), "\n", bin(x
))
58 x
= grevlut64(None, RB
, imm
, 1)
59 print ("grevlut", bin(RB
), bin(imm
), hex(x
), "\n", bin(x
))
65 x
= grevlut64(None, RB
, imm
, 0)
66 print ("grevlut", bin(RB
), bin(imm
), hex(x
), "\n", bin(x
))
71 x
= grevlut64(None, RB
, imm
, 0)
72 print ("grevlut", bin(RB
), bin(imm
), hex(x
), "\n", bin(x
))
77 x
= grevlut64(None, RB
, imm
, 1)
78 print ("grevlut", bin(RB
), bin(imm
), hex(x
), "\n", bin(x
))
83 x
= grevlut64(None, RB
, imm
, 0)
84 print ("grevlut", bin(RB
), bin(imm
), hex(x
), "\n", bin(x
))
89 x
= grevlut64(None, RB
, imm
, 1)
90 print ("grevlut", bin(RB
), bin(imm
), hex(x
), "\n", bin(x
))
95 x
= grevlut64(None, RB
, imm
, 1)
96 print ("grevlut", bin(RB
), bin(imm
), hex(x
), "\n", bin(x
))