# 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 * fmvtg RT,FRB (Rc=0) * fmvtg. RT,FRB (Rc=1) Pseudo-code: RT <- (FRB) Special Registers Altered: CR0 (if Rc=1) # [DRAFT] Floating Move To GPR Single X-Form * fmvtgs RT,FRB (Rc=0) * fmvtgs. 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 * fmvfg FRT,RB (Rc=0) * fmvfg. FRT,RB (Rc=1) Pseudo-code: FRT <- (RB) Special Registers Altered: CR1 (if Rc=1) # [DRAFT] Floating Move From GPR Single X-Form * fmvfgs FRT,RB (Rc=0) * fmvfgs. FRT,RB (Rc=1) Pseudo-code: FRT <- DOUBLE((RB)[XLEN/2:XLEN-1]) # DOUBLE since that's what lfs uses Special Registers Altered: CR1 (if Rc=1)