compute CR1 for non-compare fp Rc=1 instructions
[openpower-isa.git] / openpower / isafunctions / bcd.mdwn
1 # B.1 BCD-to-DPD Translation; B.2 DPD-to-BCD Translation
2
3 The following describes conversions between 3-digit BCD and 10-bit DPD formats.
4
5 <!-- Power ISA Book I Version 3.0C Section B.1 page 795 -->
6
7 def BCD_TO_DPD( BCD ):
8 a <- BCD[0]
9 b <- BCD[1]
10 c <- BCD[2]
11 d <- BCD[3]
12 e <- BCD[4]
13 f <- BCD[5]
14 g <- BCD[6]
15 h <- BCD[7]
16 i <- BCD[8]
17 j <- BCD[9]
18 k <- BCD[10]
19 m <- BCD[11]
20
21 p <- ((f & a & i & ¬e) | (j & a & ¬i) | (b & ¬a))
22 q <- ((g & a & i & ¬e) | (k & a & ¬i) | (c & ¬a))
23 r <- d
24
25 s <- ((j & ¬a & e & ¬i) | (f & ¬i & ¬e) |
26 (f & ¬a & ¬e) | (e & i))
27 t <- ((k & ¬a & e & ¬i) | (g & ¬i & ¬e) |
28 (g & ¬a & ¬e) | (a & i))
29
30 u <- h
31
32 v <- (a | e | i)
33
34 w <- ((¬e & j & ¬i) | (e & i) | a)
35 x <- ((¬a & k & ¬i) | (a & i) | e)
36 y <- m
37
38 return (p || q || r || s || t || u || v || w || x || y)
39
40 <!-- Power ISA Book I Version 3.0C Section B.2 page 795 -->
41
42 def DPD_TO_BCD(DPD):
43 p <- DPD[0]
44 q <- DPD[1]
45 r <- DPD[2]
46 s <- DPD[3]
47 t <- DPD[4]
48 u <- DPD[5]
49 v <- DPD[6]
50 w <- DPD[7]
51 x <- DPD[8]
52 y <- DPD[9]
53
54 a <- ((¬s & v & w) | (t & v & w & s) | (v & w & ¬x))
55 b <- ((p & s & x & ¬t) | (p & ¬w) | (p & ¬v))
56 c <- ((q & s & x & ¬t) | (q & ¬w) | (q & ¬v))
57 d <- r
58
59 e <- ((v & ¬w & x) | (s & v & w & x) |
60 (¬t & v & x & w))
61 f <- ((p & t & v & w & x & ¬s) | (s & ¬x & v) |
62 (s & ¬v))
63 g <- ((q & t & w & v & x & ¬s) | (t & ¬x & v) |
64 (t & ¬v))
65 h <- u
66
67 i <- ((t & v & w & x) | (s & v & w & x) |
68 (v & ¬w & ¬x))
69 j <- ((p & ¬s & ¬t & w & v) | (s & v & ¬w & x) |
70 (p & w & ¬x & v) | (w & ¬v))
71 k <- ((q & ¬s & ¬t & v & w) | (t & v & ¬w & x) |
72 (q & v & w & ¬x) | (x & ¬v))
73 m <- y
74
75 return (a || b || c || d || e || f || g || h || i || j || k || m)