f4aea8e78c600f64c6a39a7f596c8deac93ec825
[openpower-isa.git] / openpower / isa / av.mdwn
1 <!-- DRAFT Instructions for PowerISA Version 3.0 B Book 1 -->
2 <!-- https://libre-soc.org/openpower/sv/bitmanip/ -->
3 <!-- https://libre-soc.org/openpower/sv/av_opcodes/ -->
4
5 # DRAFT Fixed Point Signed Max
6
7 X-Form
8
9 * maxs RT,RA,RB (Rc=0)
10 * maxs. RT,RA,RB (Rc=1)
11
12 Pseudo-code:
13
14 if (RA) > (RB) then RT <- (RA)
15 else RT <- (RB)
16
17 Special Registers Altered:
18
19 CR0 (if Rc=1)
20
21 # DRAFT Fixed Point Unsigned Max
22
23 X-Form
24
25 * maxu RT,RA,RB (Rc=0)
26 * maxu. RT,RA,RB (Rc=1)
27
28 Pseudo-code:
29
30 if (RA) >u (RB) then RT <- (RA)
31 else RT <- (RB)
32
33 Special Registers Altered:
34
35 CR0 (if Rc=1)
36
37 # DRAFT Fixed Point Signed Min
38
39 X-Form
40
41 * mins RT,RA,RB (Rc=0)
42 * mins. RT,RA,RB (Rc=1)
43
44 Pseudo-code:
45
46 if (RA) < (RB) then RT <- (RA)
47 else RT <- (RB)
48
49 Special Registers Altered:
50
51 CR0 (if Rc=1)
52
53 # DRAFT Fixed Point Unsigned Min
54
55 X-Form
56
57 * minu RT,RA,RB (Rc=0)
58 * minu. RT,RA,RB (Rc=1)
59
60 Pseudo-code:
61
62 if (RA) < (RB) then RT <- (RA)
63 else RT <- (RB)
64
65 Special Registers Altered:
66
67 CR0 (if Rc=1)
68
69 # DRAFT Average Add
70
71 X-Form
72
73 * avgadd RT,RA,RB (Rc=0)
74 * avgadd. RT,RA,RB (Rc=1)
75
76 Pseudo-code:
77
78 a <- [0] * (XLEN+1)
79 b <- [0] * (XLEN+1)
80 a[1:XLEN] <- (RA)
81 b[1:XLEN] <- (RB)
82 r <- (a + b + 1)
83 RT <- r[0:XLEN-1]
84
85 Special Registers Altered:
86
87 CR0 (if Rc=1)
88
89 # DRAFT Absolute Unsigned Difference
90
91 X-Form
92
93 * absdu RT,RA,RB (Rc=0)
94 * absdu. RT,RA,RB (Rc=1)
95
96 Pseudo-code:
97
98 if (RA) < (RB) then RT <- ¬(RA) + (RB) + 1
99 else RT <- ¬(RB) + (RA) + 1
100
101 Special Registers Altered:
102
103 CR0 (if Rc=1)
104
105 # DRAFT Absolute Accumulate Unsigned Difference
106
107 X-Form
108
109 * absaddu RT,RA,RB (Rc=0)
110 * absaddu. RT,RA,RB (Rc=1)
111
112 Pseudo-code:
113
114 if (RA) <u (RB) then r <- ¬(RA) + (RB) + 1
115 else r <- ¬(RB) + (RA) + 1
116 RT <- (RT) + r
117
118 Special Registers Altered:
119
120 CR0 (if Rc=1)