[llvm] 858451c - [RISCV] Add test cases for fli.h and fli.d CodeGen bugs. NFC

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Sun Mar 12 11:37:02 PDT 2023


Author: Craig Topper
Date: 2023-03-12T11:28:49-07:00
New Revision: 858451c50b81379d1761e3f31d8c5e712b6fb77f

URL: https://github.com/llvm/llvm-project/commit/858451c50b81379d1761e3f31d8c5e712b6fb77f
DIFF: https://github.com/llvm/llvm-project/commit/858451c50b81379d1761e3f31d8c5e712b6fb77f.diff

LOG: [RISCV] Add test cases for fli.h and fli.d CodeGen bugs. NFC

We fail to use fli.h for the 2 denormal values.
We use fli.d for some values where the value is larger than a float
can represent due to truncating the exponent to 8 bits without checking
if it fits in 8 bits.

Added: 
    

Modified: 
    llvm/test/CodeGen/RISCV/double-zfa.ll
    llvm/test/CodeGen/RISCV/half-zfa-fli.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/RISCV/double-zfa.ll b/llvm/test/CodeGen/RISCV/double-zfa.ll
index eb077b3a144cc..427c5b5c646b3 100644
--- a/llvm/test/CodeGen/RISCV/double-zfa.ll
+++ b/llvm/test/CodeGen/RISCV/double-zfa.ll
@@ -77,6 +77,16 @@ define double @loadfpimm9() {
   ret double 255.0
 }
 
+; Negative test. This is 1 * 2^256.
+; FIXME: This should not use fli.d
+define double @loadfpimm10() {
+; CHECK-LABEL: loadfpimm10:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    fli.d fa0, 2.0
+; CHECK-NEXT:    ret
+  ret double 0x1000000000000000
+}
+
 declare double @llvm.minimum.f64(double, double)
 
 define double @fminm_d(double %a, double %b) nounwind {

diff  --git a/llvm/test/CodeGen/RISCV/half-zfa-fli.ll b/llvm/test/CodeGen/RISCV/half-zfa-fli.ll
index 36c49da75d900..500c74cbd9118 100644
--- a/llvm/test/CodeGen/RISCV/half-zfa-fli.ll
+++ b/llvm/test/CodeGen/RISCV/half-zfa-fli.ll
@@ -134,3 +134,37 @@ define half @loadfpimm9() {
 ; ZFHMIN-NEXT:    ret
   ret half 255.0
 }
+
+; This is 1 * 2^-16
+; FIXME: this should use fli.h
+define half @loadfpimm10() {
+; CHECK-LABEL: loadfpimm10:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    li a0, 256
+; CHECK-NEXT:    fmv.h.x fa0, a0
+; CHECK-NEXT:    ret
+;
+; ZFHMIN-LABEL: loadfpimm10:
+; ZFHMIN:       # %bb.0:
+; ZFHMIN-NEXT:    li a0, 256
+; ZFHMIN-NEXT:    fmv.h.x fa0, a0
+; ZFHMIN-NEXT:    ret
+  ret half 0xH0100
+}
+
+; This is 1 * 2^-15
+; FIXME: This should use fli.h
+define half @loadfpimm11() {
+; CHECK-LABEL: loadfpimm11:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    li a0, 512
+; CHECK-NEXT:    fmv.h.x fa0, a0
+; CHECK-NEXT:    ret
+;
+; ZFHMIN-LABEL: loadfpimm11:
+; ZFHMIN:       # %bb.0:
+; ZFHMIN-NEXT:    li a0, 512
+; ZFHMIN-NEXT:    fmv.h.x fa0, a0
+; ZFHMIN-NEXT:    ret
+  ret half 0xH0200
+}


        


More information about the llvm-commits mailing list