All some fp instruction documentation

This commit is contained in:
Quentin Legot 2023-01-23 12:52:32 +01:00
parent 55f5726197
commit 0c04f4bf6d

View File

@ -380,15 +380,43 @@ pub mod global {
pub const RISCV_FMSUB: u8 = 0x47; pub const RISCV_FMSUB: u8 = 0x47;
pub const RISCV_FNMSUB: u8 = 0x4b; pub const RISCV_FNMSUB: u8 = 0x4b;
pub const RISCV_FNMADD: u8 = 0x4f; pub const RISCV_FNMADD: u8 = 0x4f;
/// Simple floating point extension /// Simple floating point extension
pub const RISCV_FP: u8 = 0x53; pub const RISCV_FP: u8 = 0x53;
/// Type: R
///
/// Simple precision floating point addition
///
/// `FADD.S rd, rs1, rs2` => `rd <- rs1 + rs2`
pub const RISCV_FP_ADD: u8 = 0x0; pub const RISCV_FP_ADD: u8 = 0x0;
/// Type: R
///
/// Simple precision floating point substraction
///
/// `FSUB.S rd, rs1, rs2` => `rd <- rs1 - rs2`
pub const RISCV_FP_SUB: u8 = 0x4; pub const RISCV_FP_SUB: u8 = 0x4;
/// Type: R
///
/// Simple precision floating point multiplication
///
/// `fmul.s rd, rs1, rs2` => `rd <- rs1 * rs2`
pub const RISCV_FP_MUL: u8 = 0x8; pub const RISCV_FP_MUL: u8 = 0x8;
/// Type : R
///
/// Simple precision floating point division
///
/// `fdiv.s rd, rs1, rs2` => `rd <- rs1 / rs2`
pub const RISCV_FP_DIV: u8 = 0xc; pub const RISCV_FP_DIV: u8 = 0xc;
/// Type: R
///
/// Simple precision square root
///
/// `fsqrt.s rd, rs1` => `rd <- sqrt(rs1)`
pub const RISCV_FP_SQRT: u8 = 0x2c; pub const RISCV_FP_SQRT: u8 = 0x2c;
/// FSGN instructions
pub const RISCV_FP_FSGN: u8 = 0x10; pub const RISCV_FP_FSGN: u8 = 0x10;
// fmin or fmax instructions
pub const RISCV_FP_MINMAX: u8 = 0x14; pub const RISCV_FP_MINMAX: u8 = 0x14;
pub const RISCV_FP_FCVTW: u8 = 0x60; pub const RISCV_FP_FCVTW: u8 = 0x60;
pub const RISCV_FP_FMVXFCLASS: u8 = 0x70; pub const RISCV_FP_FMVXFCLASS: u8 = 0x70;
@ -397,8 +425,23 @@ pub mod global {
pub const RISCV_FP_FCVTS: u8 = 0x68; pub const RISCV_FP_FCVTS: u8 = 0x68;
pub const RISCV_FP_FCVTDS: u8 = 0x21; pub const RISCV_FP_FCVTDS: u8 = 0x21;
/// Type: R
///
/// Take all bits except sign bit from rs1. sign is rs2's sign bit
///
/// `fsgnj.s rd, rs1, rs2` => `rd <- {rs2[31], rs1[30:0]}`
pub const RISCV_FP_FSGN_J: u8 = 0x0; pub const RISCV_FP_FSGN_J: u8 = 0x0;
/// Type: R
///
/// Take all bits except sign bit from rs1, sign is opposite of rs2's sign bit
///
/// `fsgnjs.s rd, rs1, rs2` => `rd <- {rs2[31], rs[30:0]}`
pub const RISCV_FP_FSGN_JN: u8 = 0x1; pub const RISCV_FP_FSGN_JN: u8 = 0x1;
/// Type: R
///
/// Take all bits except sign bit from rs1, sign is XOR of sign bit of rs1 and rs2
///
/// `fsgnjx.s rd, rs1, rs2` => `rd <- {rs1[31] ^ rs2[31], rs1[30:0]}`
pub const RISCV_FP_FSGN_JX: u8 = 0x2; pub const RISCV_FP_FSGN_JX: u8 = 0x2;
pub const RISCV_FP_MINMAX_MIN: u8 = 0x0; pub const RISCV_FP_MINMAX_MIN: u8 = 0x0;