diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.cpp index 7919189d198c8..ed8ae4a7a4550 100644 --- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.cpp +++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.cpp @@ -251,7 +251,7 @@ int RISCVLoadFPImm::getLoadFPImm(APFloat FPImm) { "Unexpected semantics"); // Handle the minimum normalized value which is different for each type. - if (FPImm.isSmallestNormalized()) + if (FPImm.isSmallestNormalized() && !FPImm.isNegative()) return 1; // Convert to single precision to use its lookup table. diff --git a/llvm/test/CodeGen/RISCV/double-zfa.ll b/llvm/test/CodeGen/RISCV/double-zfa.ll index 9f244f0daacf5..162f33dd5ac9d 100644 --- a/llvm/test/CodeGen/RISCV/double-zfa.ll +++ b/llvm/test/CodeGen/RISCV/double-zfa.ll @@ -156,7 +156,8 @@ define double @loadfpimm17() { define double @loadfpimm18() { ; CHECK-LABEL: loadfpimm18: ; CHECK: # %bb.0: -; CHECK-NEXT: fli.d fa0, min +; CHECK-NEXT: lui a0, %hi(.LCPI16_0) +; CHECK-NEXT: fld fa0, %lo(.LCPI16_0)(a0) ; CHECK-NEXT: ret ret double 0x8010000000000000 } diff --git a/llvm/test/CodeGen/RISCV/float-zfa.ll b/llvm/test/CodeGen/RISCV/float-zfa.ll index ec982a78dfe76..6f9e5ec035224 100644 --- a/llvm/test/CodeGen/RISCV/float-zfa.ll +++ b/llvm/test/CodeGen/RISCV/float-zfa.ll @@ -110,7 +110,8 @@ define float @loadfpimm12() { define float @loadfpimm13() { ; CHECK-LABEL: loadfpimm13: ; CHECK: # %bb.0: -; CHECK-NEXT: fli.s fa0, min +; CHECK-NEXT: lui a0, 526336 +; CHECK-NEXT: fmv.w.x fa0, a0 ; CHECK-NEXT: ret ret float 0xb810000000000000 } diff --git a/llvm/test/CodeGen/RISCV/half-zfa-fli.ll b/llvm/test/CodeGen/RISCV/half-zfa-fli.ll index 73a77660eb3bd..577b774c27a0b 100644 --- a/llvm/test/CodeGen/RISCV/half-zfa-fli.ll +++ b/llvm/test/CodeGen/RISCV/half-zfa-fli.ll @@ -216,7 +216,8 @@ define half @loadfpimm14() { define half @loadfpimm15() { ; CHECK-LABEL: loadfpimm15: ; CHECK: # %bb.0: -; CHECK-NEXT: fli.h fa0, min +; CHECK-NEXT: lui a0, %hi(.LCPI14_0) +; CHECK-NEXT: flh fa0, %lo(.LCPI14_0)(a0) ; CHECK-NEXT: ret ; ; ZFHMIN-LABEL: loadfpimm15: