Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Target/RISCV/RISCVInstrInfoF.td
Show First 20 Lines • Show All 245 Lines • ▼ Show 20 Lines | |||||
def : InstAlias<"fgt.s $rd, $rs, $rt", | def : InstAlias<"fgt.s $rd, $rs, $rt", | ||||
(FLT_S GPR:$rd, FPR32:$rt, FPR32:$rs), 0>; | (FLT_S GPR:$rd, FPR32:$rt, FPR32:$rs), 0>; | ||||
def : InstAlias<"fge.s $rd, $rs, $rt", | def : InstAlias<"fge.s $rd, $rs, $rt", | ||||
(FLE_S GPR:$rd, FPR32:$rt, FPR32:$rs), 0>; | (FLE_S GPR:$rd, FPR32:$rt, FPR32:$rs), 0>; | ||||
// The following csr instructions actually alias instructions from the base ISA. | // The following csr instructions actually alias instructions from the base ISA. | ||||
// However, it only makes sense to support them when the F extension is enabled. | // However, it only makes sense to support them when the F extension is enabled. | ||||
// NOTE: "frcsr", "frrm", and "frflags" are more specialized version of "csrr". | // NOTE: "frcsr", "frrm", and "frflags" are more specialized version of "csrr". | ||||
def : InstAlias<"frcsr $rd", (CSRRS GPR:$rd, FCSR.Encoding, X0), 2>; | def : InstAlias<"frcsr $rd", (CSRRS GPR:$rd, SysRegFCSR.Encoding, X0), 2>; | ||||
def : InstAlias<"fscsr $rd, $rs", (CSRRW GPR:$rd, FCSR.Encoding, GPR:$rs)>; | def : InstAlias<"fscsr $rd, $rs", (CSRRW GPR:$rd, SysRegFCSR.Encoding, GPR:$rs)>; | ||||
def : InstAlias<"fscsr $rs", (CSRRW X0, FCSR.Encoding, GPR:$rs), 2>; | def : InstAlias<"fscsr $rs", (CSRRW X0, SysRegFCSR.Encoding, GPR:$rs), 2>; | ||||
// frsr, fssr are obsolete aliases replaced by frcsr, fscsr, so give them | // frsr, fssr are obsolete aliases replaced by frcsr, fscsr, so give them | ||||
// zero weight. | // zero weight. | ||||
def : InstAlias<"frsr $rd", (CSRRS GPR:$rd, FCSR.Encoding, X0), 0>; | def : InstAlias<"frsr $rd", (CSRRS GPR:$rd, SysRegFCSR.Encoding, X0), 0>; | ||||
def : InstAlias<"fssr $rd, $rs", (CSRRW GPR:$rd, FCSR.Encoding, GPR:$rs), 0>; | def : InstAlias<"fssr $rd, $rs", (CSRRW GPR:$rd, SysRegFCSR.Encoding, GPR:$rs), 0>; | ||||
def : InstAlias<"fssr $rs", (CSRRW X0, FCSR.Encoding, GPR:$rs), 0>; | def : InstAlias<"fssr $rs", (CSRRW X0, SysRegFCSR.Encoding, GPR:$rs), 0>; | ||||
def : InstAlias<"frrm $rd", (CSRRS GPR:$rd, FRM.Encoding, X0), 2>; | def : InstAlias<"frrm $rd", (CSRRS GPR:$rd, SysRegFRM.Encoding, X0), 2>; | ||||
def : InstAlias<"fsrm $rd, $rs", (CSRRW GPR:$rd, FRM.Encoding, GPR:$rs)>; | def : InstAlias<"fsrm $rd, $rs", (CSRRW GPR:$rd, SysRegFRM.Encoding, GPR:$rs)>; | ||||
def : InstAlias<"fsrm $rs", (CSRRW X0, FRM.Encoding, GPR:$rs), 2>; | def : InstAlias<"fsrm $rs", (CSRRW X0, SysRegFRM.Encoding, GPR:$rs), 2>; | ||||
def : InstAlias<"fsrmi $rd, $imm", (CSRRWI GPR:$rd, FRM.Encoding, uimm5:$imm)>; | def : InstAlias<"fsrmi $rd, $imm", (CSRRWI GPR:$rd, SysRegFRM.Encoding, uimm5:$imm)>; | ||||
def : InstAlias<"fsrmi $imm", (CSRRWI X0, FRM.Encoding, uimm5:$imm), 2>; | def : InstAlias<"fsrmi $imm", (CSRRWI X0, SysRegFRM.Encoding, uimm5:$imm), 2>; | ||||
def : InstAlias<"frflags $rd", (CSRRS GPR:$rd, FFLAGS.Encoding, X0), 2>; | def : InstAlias<"frflags $rd", (CSRRS GPR:$rd, SysRegFFLAGS.Encoding, X0), 2>; | ||||
def : InstAlias<"fsflags $rd, $rs", (CSRRW GPR:$rd, FFLAGS.Encoding, GPR:$rs)>; | def : InstAlias<"fsflags $rd, $rs", (CSRRW GPR:$rd, SysRegFFLAGS.Encoding, GPR:$rs)>; | ||||
def : InstAlias<"fsflags $rs", (CSRRW X0, FFLAGS.Encoding, GPR:$rs), 2>; | def : InstAlias<"fsflags $rs", (CSRRW X0, SysRegFFLAGS.Encoding, GPR:$rs), 2>; | ||||
def : InstAlias<"fsflagsi $rd, $imm", (CSRRWI GPR:$rd, FFLAGS.Encoding, uimm5:$imm)>; | def : InstAlias<"fsflagsi $rd, $imm", (CSRRWI GPR:$rd, SysRegFFLAGS.Encoding, uimm5:$imm)>; | ||||
def : InstAlias<"fsflagsi $imm", (CSRRWI X0, FFLAGS.Encoding, uimm5:$imm), 2>; | def : InstAlias<"fsflagsi $imm", (CSRRWI X0, SysRegFFLAGS.Encoding, uimm5:$imm), 2>; | ||||
// fmv.w.x and fmv.x.w were previously known as fmv.s.x and fmv.x.s. Both | // fmv.w.x and fmv.x.w were previously known as fmv.s.x and fmv.x.s. Both | ||||
// spellings should be supported by standard tools. | // spellings should be supported by standard tools. | ||||
def : MnemonicAlias<"fmv.s.x", "fmv.w.x">; | def : MnemonicAlias<"fmv.s.x", "fmv.w.x">; | ||||
def : MnemonicAlias<"fmv.x.s", "fmv.x.w">; | def : MnemonicAlias<"fmv.x.s", "fmv.x.w">; | ||||
def PseudoFLW : PseudoFloatLoad<"flw", FPR32>; | def PseudoFLW : PseudoFloatLoad<"flw", FPR32>; | ||||
def PseudoFSW : PseudoStore<"fsw", FPR32>; | def PseudoFSW : PseudoStore<"fsw", FPR32>; | ||||
▲ Show 20 Lines • Show All 125 Lines • Show Last 20 Lines |