Added English Language description for stb instruction
[openpower-isa.git] / openpower / isa / fpmove.mdwn
1 <!-- X Instructions here described in PowerISA Version 3.0 B Book 1 -->
2
3 <!-- Section 4.6.5 Floating-point Move instructions. P 150 -->
4
5 # Floating Move Register
6
7 X-Form
8
9 * fmr FRT,FRB (Rc=0)
10 * fmr. FRT,FRB (Rc=1)
11
12 Pseudo-code:
13
14 FRT <- FRB[0:63]
15
16 Special Registers Altered:
17
18 CR1 (if Rc=1)
19
20 # Floating Absolute Value Register
21
22 X-Form
23
24 * fabs FRT,FRB (Rc=0)
25 * fabs. FRT,FRB (Rc=1)
26
27 Pseudo-code:
28
29 FRT <- 0b0 || FRB[1:63]
30
31 Special Registers Altered:
32
33 CR1 (if Rc=1)
34
35 # Floating Negative Absolute Value Register
36
37 X-Form
38
39 * fnabs FRT,FRB (Rc=0)
40 * fnabs. FRT,FRB (Rc=1)
41
42 Pseudo-code:
43
44 FRT <- 0b1 || FRB[1:63]
45
46 Special Registers Altered:
47
48 CR1 (if Rc=1)
49
50 # Floating Negate Register
51
52 X-Form
53
54 * fneg FRT,FRB (Rc=0)
55 * fneg. FRT,FRB (Rc=1)
56
57 Pseudo-code:
58
59 FRT <- ¬FRB[0] || FRB[1:63]
60
61 Special Registers Altered:
62
63 CR1 (if Rc=1)
64
65 # Floating Copy Sign Register
66
67 X-Form
68
69 * fcpsgn FRT,FRA,FRB (Rc=0)
70 * fcpsgn. FRT,FRA,FRB (Rc=1)
71
72 Pseudo-code:
73
74 FRT <- FRA[0] || FRB[1:63]
75
76 Special Registers Altered:
77
78 CR1 (if Rc=1)
79
80 # [DRAFT] Floating Move To GPR
81
82 X-Form
83
84 * mffpr RT,FRB (Rc=0)
85 * mffpr. RT,FRB (Rc=1)
86
87 Pseudo-code:
88
89 RT <- (FRB)
90
91 Special Registers Altered:
92
93 CR0 (if Rc=1)
94
95 # [DRAFT] Floating Move To GPR Single
96
97 X-Form
98
99 * mffprs RT,FRB (Rc=0)
100 * mffprs. RT,FRB (Rc=1)
101
102 Pseudo-code:
103
104 RT <- [0] * (XLEN/2) || SINGLE((FRB)) # SINGLE since that's what stfs uses
105
106 Special Registers Altered:
107
108 CR0 (if Rc=1)
109
110 # [DRAFT] Floating Move From GPR
111
112 X-Form
113
114 * mtfpr FRT,RB
115
116 Pseudo-code:
117
118 FRT <- (RB)
119
120 Special Registers Altered:
121
122 None
123
124 # [DRAFT] Floating Move From GPR Single
125
126 X-Form
127
128 * mtfprs FRT,RB
129
130 Pseudo-code:
131
132 FRT <- DOUBLE((RB)[XLEN/2:XLEN-1]) # DOUBLE since that's what lfs uses
133
134 Special Registers Altered:
135
136 None