isa/bcd: BCD_TO_DPD helper
authorDmitry Selyutin <dmitry.selyutin@3mdeb.com>
Sat, 31 Jul 2021 18:56:16 +0000 (18:56 +0000)
committerDmitry Selyutin <dmitry.selyutin@3mdeb.com>
Sat, 31 Jul 2021 19:17:49 +0000 (19:17 +0000)
openpower/isafunctions/bcd.mdwn [new file with mode: 0644]

diff --git a/openpower/isafunctions/bcd.mdwn b/openpower/isafunctions/bcd.mdwn
new file mode 100644 (file)
index 0000000..e37bbca
--- /dev/null
@@ -0,0 +1,38 @@
+# B.1 BCD-to-DPD Translation
+
+The following describes conversion from 3-digit BCD to 10-bit DPD.
+
+<!-- Power ISA Book I Version 3.0C Section B.1 page 795 -->
+
+    def BCD_TO_DPD( BCD ):
+        a <- BCD[0]
+        b <- BCD[1]
+        c <- BCD[2]
+        d <- BCD[3]
+        e <- BCD[4]
+        f <- BCD[5]
+        g <- BCD[6]
+        h <- BCD[7]
+        i <- BCD[8]
+        j <- BCD[9]
+        k <- BCD[10]
+        m <- BCD[11]
+
+        p <- ((f & a & i & ¬e) | (j & a & ¬i) | (b & ¬a))
+        q <- ((g & a & i & ¬e) | (k & a & ¬i) | (c & ¬a))
+        r <- d
+
+        s <- ((j & ¬a & e & ¬i) | (f & ¬i & ¬e) |
+            (f & ¬a & ¬e) | (e & i))
+        t <- ((k & ¬a & e & ¬i) | (g & ¬i & ¬e) |
+            (g & ¬a & ¬e) | (a & i))
+
+        u <- h
+
+        v <- (a | e | i)
+
+        w <- ((¬e & j & ¬i) | (e & i) | a)
+        x <- ((¬a & k & ¬i) | (a & i) | e)
+        y <- m
+
+        return (p || q || r || s || t || u || v || w || x || y)