add more tests and fix missing corner case
[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)