# 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