Floating Move Register
X-Form
- fmr FRT,FRB (Rc=0)
- fmr. FRT,FRB (Rc=1)
Pseudo-code:
FRT <- FRB[0:63]
Special Registers Altered:
CR1 (if Rc=1)
Floating Absolute Value Register
X-Form
- fabs FRT,FRB (Rc=0)
- fabs. FRT,FRB (Rc=1)
Pseudo-code:
FRT <- 0b0 || FRB[1:63]
Special Registers Altered:
CR1 (if Rc=1)
Floating Negative Absolute Value Register
X-Form
- fnabs FRT,FRB (Rc=0)
- fnabs. FRT,FRB (Rc=1)
Pseudo-code:
FRT <- 0b1 || FRB[1:63]
Special Registers Altered:
CR1 (if Rc=1)
Floating Negate Register
X-Form
- fneg FRT,FRB (Rc=0)
- fneg. FRT,FRB (Rc=1)
Pseudo-code:
FRT <- ¬FRB[0] || FRB[1:63]
Special Registers Altered:
CR1 (if Rc=1)
Floating Copy Sign Register
X-Form
- fcpsgn FRT,FRA,FRB (Rc=0)
- fcpsgn. FRT,FRA,FRB (Rc=1)
Pseudo-code:
FRT <- FRA[0] || FRB[1:63]
Special Registers Altered:
CR1 (if Rc=1)
[DRAFT] Floating Move To GPR
X-Form
- mffpr RT,FRB (Rc=0)
- mffpr. RT,FRB (Rc=1)
Pseudo-code:
RT <- (FRB)
Special Registers Altered:
CR0 (if Rc=1)
[DRAFT] Floating Move To GPR Single
X-Form
- mffprs RT,FRB (Rc=0)
- mffprs. RT,FRB (Rc=1)
Pseudo-code:
RT <- [0] * (XLEN/2) || SINGLE((FRB)) # SINGLE since that's what stfs uses
Special Registers Altered:
CR0 (if Rc=1)
[DRAFT] Floating Move From GPR
X-Form
- mtfpr FRT,RB
Pseudo-code:
FRT <- (RB)
Special Registers Altered:
None
[DRAFT] Floating Move From GPR Single
X-Form
- mtfprs FRT,RB
Pseudo-code:
FRT <- DOUBLE((RB)[XLEN/2:XLEN-1]) # DOUBLE since that's what lfs uses
Special Registers Altered:
None