Risc-V架構定義了可選的單精度浮點指令(F擴展指令集)和雙精度浮點指令(D擴展指令集),以及四精度浮點指令集(Q擴展指令集)。Risc-V架構規定:處理器能夠選擇只實現F擴展指令子集而不支持D擴展指令子集;可是若是支持了D擴展指令子集,則必須支持F擴展指令子集;若是支持了Q擴展指令集,必須支持D擴展指令集。Risc-V架構規定的浮點數符合IEEE754 2008規則,能夠從下面的連接瞭解浮點數格式的詳細信息:html
http://www.javashuo.com/article/p-rglglvrn-ba.html架構
Risc-V規定,若是支持單精度浮點指令或者雙精度浮點指令,四精度浮點指令,則須要增長一組獨立的通用浮點寄存器組,包括32個通用浮點寄存器,標號位f0到f31。若是僅支持F擴展指令子集,則每一個通用寄存器是32位的,若是支持D擴展指令子集,則每一個通用寄存器是64位的,若是支持Q擴展指令集,則每一個浮點通用寄存器是128位的。ide
若是處理器同時支持 RV32F 和 RV32D 擴展,則單精度數據僅使用 f 寄存器中的低 32位。與 RV32I 中的 x0 不一樣,寄存器 f0 不是硬連線到常量 0, 而是和全部其餘 31 個 f 寄存器同樣,是一個可變寄存器。下面是32位和64位浮點寄存器的名字,別名和註釋。ui
63-32 | 31-0(名字和別名) | 註釋 |
f0/ft0 | FP Temporary | |
f1/ft1 | FP Temporary | |
f2/ft2 | FP Temporary | |
f3/ft3 | FP Temporary | |
f4/ft4 | FP Temporary | |
f5/ft5 | FP Temporary | |
f6/ft6 | FP Temporary | |
f7/ft7 | FP Temporary | |
f8 / fs0 | FP Saved register | |
f9 / fs1 | FP Saved register | |
f10 / fa0 | FP Function argument, return value | |
f11 / fa1 | FP Function argument, return value | |
f12 / fa2 | FP Function argument | |
f13 / fa3 | FP Function argument | |
f14 / fa4 | FP Function argument | |
f15 / fa5 | FP Function argument | |
f16 / fa6 | FP Function argument | |
f17 / fa7 | FP Function argument | |
f18 / fs2 | FP Saved register | |
f19 / fs3 | FP Saved register | |
f20 / fs4 | FP Saved register | |
f21 / fs5 | FP Saved register | |
f22 / fs6 | FP Saved register | |
f23 / fs7 | FP Saved register | |
f24 / fs8 | FP Saved register | |
f25 / fs9 | FP Saved register | |
f26 / fs10 | FP Saved register | |
f27 / fs11 | FP Saved register | |
f28 / ft8 | FP Temporary | |
f29 / ft9 | FP Temporary | |
f30 / ft10 | FP Temporary | |
f31 / ft11 | FP Temporary |
Risc-V架構規定,若是支持浮點指令,須要增長一個浮點控制狀態寄存器fcsr,該寄存器是一個可讀可寫的csr寄存器。編碼
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Reserved | Rounding mode(frm) | accrued exceptions(fflags) | |||||||||||||||||||||||||||||
NV | DZ | OF | UF | NX |
fcsr寄存器包含浮點異常標誌域(fflags),不一樣的標誌位表示不一樣的異常類型。若是浮點運算單元在運算中出現了相應的異常,則會將fcsr寄存器中對應的標誌位設置爲1,且會一直保持累積。軟件能夠經過寫0的方式單獨清除某個異常標誌位。spa
flag mnemonic | flag meaning |
NV | invalid operation |
DZ | divide by zero |
OF | overflow |
UF | underflow |
NX | inexact,不精確 |
根據IEEE-754標準,浮點運算須要指定舍入模式(rounding mode),這有助於肯定偏差範圍和編寫數值庫。最準確且最多見的舍入模式是舍入到最近的偶數(RNE)。舍入模式能夠經過浮點控制和狀態寄存器 fcsr 進行設置。rest
Risc-V架構浮點運算的舍入模式能夠經過兩種方式指定。code
使用靜態舍入模式,浮點指令編碼中有3位做爲舍入模式域,不一樣的舍入模式編碼以下圖,Risc-V支持5種合法的舍入模式。若是舍入模式編碼爲101或110,則爲非法模式;若是舍入模式編碼爲111,則意味着使用動態舍入模式。若是使用動態舍入模式,則使用fcsr寄存器中的舍入模式域,舍入模式域定義如上圖,若是fcsr寄存器中的舍入模式域指定爲非法的舍入模式,則後續浮點指令會產生非法指令異常。orm
rounding mode | mnemonic | meaning |
000 | RNE | round to nearest ties to even,舍入到最近的偶數 |
001 | RTZ | round towards zero 向零舍入 |
010 | RDN | round down(towards -∞),向負無窮舍入 |
011 | RUP | round up(towards +∞),向正無窮舍入 |
100 | RMM | round to nearest ties to max magnitude,向最近的最大值舍入 |
101 | invalid reserved for future use | |
110 | invalid reserved for future use | |
111 | in instruction's rm field, selects dynamic rounding mode; in rounding mode register, invalid. |
若是處理器不想使用浮點單元,好比把浮點單元關電以節省功耗,可使用csr寫指令將mstatus寄存器的FS域設置成0,將浮點單元的功能予以關閉。當浮點單元功能關閉後,任何訪問浮點csr寄存器的操做或者執行浮點指令的行爲將會產生非法指令異常。htm
Risc-V規定,對於非規格化數(subnormal Numbers)的處理徹底遵循IEEE754定義。根據IEEE-754標準,在浮點數的表示中,有一類特殊編碼數據屬於NaN(not a number)類型,且NaN分爲Signaling-NaN和Quiet-NAN。Risc-V架構規定,若是浮點運算的結果是一個NaN數,那麼使用一個固定的NaN數,將之命名爲Canonical-NaN。單精度浮點對應的Canonical-NaN數值爲0x7fc00000,雙精度浮點對應Canonical-NaN數值爲0x7ff80000_00000000
若是同時支持單精度浮點(F擴展指令子集)和雙精度浮點(D擴展指令子集),因爲浮點通用寄存器的寬度爲64位,Risc-V架構規定單精度浮點指令產生的32位結果寫入浮點通用寄存器(64位)時,將結果寫入低32位,而高位所有寫入數值1,RiscV架構規定此種作法稱之爲NaN-Boxing。NaN-boxing能夠發生在以下情形:
對於單精度浮點數的讀(Load)/寫(store)指令和傳送(Move)指令(包括FLW,FSW,FMV.W.X,FMV.X.W),若是須要將32位的數值寫入通用浮點寄存器,則採用NaN-boxing的方式;若是須要將浮點通用寄存器中的數值讀出,則僅使用其低32位值。
對於單精度浮點運算(compute)和符號注入(sign-injection)指令,須要判斷其操做數浮點寄存器中的值是否爲合法的NaN-Boxed值,即高位都是1,若是是,則正常使用其低32位,若是不是,則將此操做數看成Canonical-NaN來使用。
對於整數至單精度的浮點轉化指令(好比FCVT.S.X),則採用NaN-boxing的方式寫回浮點通用寄存器。對於單精度浮點至整數的轉化指令(好比FCVT.X.S),須要判斷其操做數浮點寄存器中的值是否爲合法的NaN-boxed值(即高位都爲1)。若是是,則正常使用其低32位,若是不是,則將此操做數看成Canonical-NaN來使用。
浮點指令總共96條,指令格式以下列表。
rs2 | rs1 | func3(rm) | rd | opcode | |||||||||||||||||||||||||||||||||||
name | type | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | RV32F | RV64F | RV32D | RV64D | RV32Q | RV64Q |
fadd.s | R | 0 | 0 | 0 | 0 | 0 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | |||||||||||||||||
fsub.s | R | 0 | 0 | 0 | 0 | 1 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | |||||||||||||||||
fmul.s | R | 0 | 0 | 0 | 1 | 0 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | |||||||||||||||||
fdiv.s | R | 0 | 0 | 0 | 1 | 1 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | |||||||||||||||||
fsgnj.s | R | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | |||||||||||||||
fsgnjn.s | R | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | |||||||||||||||
fsgnjx.s | R | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | |||||||||||||||
fmin.s | R | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | |||||||||||||||
fmax.s | R | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | |||||||||||||||
fsqrt.s | R | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | ||||||||||||
fadd.d | R | 0 | 0 | 0 | 0 | 0 | 0 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | |||||||||||||||||
fsub.d | R | 0 | 0 | 0 | 0 | 1 | 0 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | |||||||||||||||||
fmul.d | R | 0 | 0 | 0 | 1 | 0 | 0 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | |||||||||||||||||
fdiv.d | R | 0 | 0 | 0 | 1 | 1 | 0 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | |||||||||||||||||
fsgnj.d | R | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | |||||||||||||||
fsgnjn.d | R | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | |||||||||||||||
fsgnjx.d | R | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | |||||||||||||||
fmin.d | R | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | |||||||||||||||
fmax.d | R | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | |||||||||||||||
fcvt.s.d | R | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | ||||||||||||
fcvt.d.s | R | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | ||||||||||||
fsqrt.d | R | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | ||||||||||||
fadd.q | R | 0 | 0 | 0 | 0 | 0 | 1 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | |||||||||||||||||
fsub.q | R | 0 | 0 | 0 | 0 | 1 | 1 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | |||||||||||||||||
fmul.q | R | 0 | 0 | 0 | 1 | 0 | 1 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | |||||||||||||||||
fdiv.q | R | 0 | 0 | 0 | 1 | 1 | 1 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | |||||||||||||||||
fsgnj.q | R | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | |||||||||||||||
fsgnjn.q | R | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | |||||||||||||||
fsgnjx.q | R | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | |||||||||||||||
fmin.q | R | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | |||||||||||||||
fmax.q | R | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | |||||||||||||||
fcvt.s.q | R | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | ||||||||||||
fcvt.q.s | R | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | ||||||||||||
fcvt.d.q | R | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | ||||||||||||
fcvt.q.d | R | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | ||||||||||||
fsqrt.q | R | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | ||||||||||||
fle.s | R | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | |||||||||||||||
flt.s | R | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | |||||||||||||||
feq.s | R | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | |||||||||||||||
fle.d | R | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | |||||||||||||||
flt.d | R | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | |||||||||||||||
feq.d | R | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | |||||||||||||||
fle.q | R | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | |||||||||||||||
flt.q | R | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | |||||||||||||||
feq.q | R | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | |||||||||||||||
fcvt.w.s | R | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | ||||||||||||
fcvt.wu.s | R | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | ||||||||||||
fcvt.l.s | R | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | ||||||||||||
fcvt.lu.s | R | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | ||||||||||||
fmv.x | R | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | ||||||||||
fclass.s | R | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | ||||||||||
fcvt.w.d | R | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | ||||||||||||
fcvt.wu.d | R | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | ||||||||||||
fcvt.l.d | R | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | ||||||||||||
fcvt.lu.d | R | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | ||||||||||||
fmv.x | R | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | ||||||||||
fclass.d | R | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | ||||||||||
fcvt.w.q | R | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | ||||||||||||
fcvt.wu | R | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | ||||||||||||
fcvt.l.q | R | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | ||||||||||||
fcvt.lu.q | R | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | ||||||||||||
fmv.x | R | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | ||||||||||
fclass.q | R | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | ✘ | √ | √ | ||||||||||
fcvt.s.w | R | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | ||||||||||||
fcvt.s.wu | R | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | ||||||||||||
fcvt.s.l | R | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | ||||||||||||
fcvt.s.lu | R | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | √ | ✘ | ✘ | ✘ | ✘ | ||||||||||||
fmv.w | R | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | √ | ✘ | ✘ | ✘ | ✘ | ✘ | ||||||||||
fcvt.d.w | R | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | ||||||||||||
fcvt.d.wu | R | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | √ | √ | ✘ | ✘ | ||||||||||||
fcvt.d.l | R | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ | √ | ✘ | ✘ | ||||||||||||
fcvt.d.lu | R | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | rm | 1 | 0 | 1 | 0 | 0 | 1 | 1 | ✘ | ✘ | ✘ |