[Libre-soc-bugs] [Bug 980] Implement C-based Power ISA pseudocode compiler
bugzilla-daemon at libre-soc.org
bugzilla-daemon at libre-soc.org
Thu Jan 4 08:29:39 GMT 2024
https://bugs.libre-soc.org/show_bug.cgi?id=980
--- Comment #45 from Dmitry Selyutin <ghostmansd at gmail.com> ---
The original pseudocode (simplev.mdwn):
tree[0:63] <- (RB)
mode <- tree[62:63]
tree[62:63] <- 0
ra_used <- 0b0
in_bits[0:63] <- (RC|0)
if in_bits = 0 then
in_bits[0:63] <- 1
orig_in_bits <- in_bits
tree_index <- 1
found <- 0b0
hit_end <- 0b0
do bit_length = 1 to 6
in_bit <- in_bits[63]
if in_bits = 1 then
if ra_used | (_RA = 0) then
hit_end <- 0b1
leave
ra_used <- 0b1
in_bit <- (RA)[63]
in_bits <- 0b1 || (RA)[0:62]
else
in_bits <- 0b0 || in_bits[0:62]
tree_index <- tree_index * 2
if in_bit = 1 then
tree_index <- tree_index + 1
if tree_index < 64 then
if tree[63 - tree_index] then
found <- 0b1
leave
compressed_index <- 0
do i = 0 to 127
possible <- 1
j <- i
do while j >= 4
j <- j / 2
if tree[63 - j] then
possible <- 0
leave
if i = tree_index then
leave
else if i >= 64 then
compressed_index <- compressed_index + possible
else if tree[63 - i] = 1 then
compressed_index <- compressed_index + possible
switch(mode)
case(0):
RT[0:63] <- tree_index
if ¬found then
in_bits <- orig_in_bits
ra_used <- 0b0
case(1):
RT[0:63] <- tree_index
if hit_end then
in_bits <- orig_in_bits
ra_used <- 0b0
case(2):
RT[0:63] <- compressed_index
if ¬found then
in_bits <- orig_in_bits
ra_used <- 0b0
RT[0:63] <- tree_index
default:
RT[0:63] <- compressed_index
if hit_end then
in_bits <- orig_in_bits
ra_used <- 0b0
RS <- in_bits
CR0 <- ra_used || (tree_index >= 64) || found || hit_end
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-soc-bugs
mailing list