Skip to content

Commit 451255b

Browse files
committed
[RISCV][test] Extend test coverage for Zfa's fli instructions to cover miscompile
There's a miscompile currently for negative numbers (other than -1) that are the negated form of numbers in the fli lookup table. This adds tests that capture the issue, with a fix to follow in a separate commit/PR.
1 parent 1925c7a commit 451255b

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

llvm/test/CodeGen/RISCV/double-zfa.ll

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,25 @@ define double @loadfpimm15() {
133133
ret double 0x0008000000000000
134134
}
135135

136+
define double @loadfpimm16() {
137+
; CHECK-LABEL: loadfpimm16:
138+
; CHECK: # %bb.0:
139+
; CHECK-NEXT: fli.d fa0, -1.0
140+
; CHECK-NEXT: ret
141+
ret double -1.0
142+
}
143+
144+
; Ensure fli isn't incorrectly used for negated versions of numbers in the fli
145+
; table.
146+
; FIXME: Codegen is incorrect.
147+
define double @loadfpimm17() {
148+
; CHECK-LABEL: loadfpimm17:
149+
; CHECK: # %bb.0:
150+
; CHECK-NEXT: fli.d fa0, -1.0
151+
; CHECK-NEXT: ret
152+
ret double -2.0
153+
}
154+
136155
declare double @llvm.minimum.f64(double, double)
137156

138157
define double @fminm_d(double %a, double %b) nounwind {

llvm/test/CodeGen/RISCV/float-zfa.ll

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,25 @@ define float @loadfpimm10() {
8787
ret float 0.00006103515625
8888
}
8989

90+
define float @loadfpimm11() {
91+
; CHECK-LABEL: loadfpimm11:
92+
; CHECK: # %bb.0:
93+
; CHECK-NEXT: fli.s fa0, -1.0
94+
; CHECK-NEXT: ret
95+
ret float -1.0
96+
}
97+
98+
; Ensure fli isn't incorrectly used for negated versions of numbers in the fli
99+
; table.
100+
; FIXME: Codegen is incorrect.
101+
define float @loadfpimm12() {
102+
; CHECK-LABEL: loadfpimm12:
103+
; CHECK: # %bb.0:
104+
; CHECK-NEXT: fli.s fa0, -1.0
105+
; CHECK-NEXT: ret
106+
ret float -2.0
107+
}
108+
90109
declare float @llvm.minimum.f32(float, float)
91110

92111
define float @fminm_s(float %a, float %b) nounwind {

llvm/test/CodeGen/RISCV/half-zfa-fli.ll

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,3 +180,34 @@ define half @loadfpimm12() {
180180
; ZFHMIN-NEXT: ret
181181
ret half 0xH7c01
182182
}
183+
184+
define half @loadfpimm13() {
185+
; CHECK-LABEL: loadfpimm13:
186+
; CHECK: # %bb.0:
187+
; CHECK-NEXT: fli.h fa0, -1.0
188+
; CHECK-NEXT: ret
189+
;
190+
; ZFHMIN-LABEL: loadfpimm13:
191+
; ZFHMIN: # %bb.0:
192+
; ZFHMIN-NEXT: lui a0, %hi(.LCPI12_0)
193+
; ZFHMIN-NEXT: flh fa0, %lo(.LCPI12_0)(a0)
194+
; ZFHMIN-NEXT: ret
195+
ret half -1.0
196+
}
197+
198+
; Ensure fli isn't incorrectly used for negated versions of numbers in the fli
199+
; table.
200+
; FIXME: Codegen is incorrect when Zfa is enabled.
201+
define half @loadfpimm14() {
202+
; CHECK-LABEL: loadfpimm14:
203+
; CHECK: # %bb.0:
204+
; CHECK-NEXT: fli.h fa0, -1.0
205+
; CHECK-NEXT: ret
206+
;
207+
; ZFHMIN-LABEL: loadfpimm14:
208+
; ZFHMIN: # %bb.0:
209+
; ZFHMIN-NEXT: lui a0, 1048572
210+
; ZFHMIN-NEXT: fmv.h.x fa0, a0
211+
; ZFHMIN-NEXT: ret
212+
ret half -2.0
213+
}

0 commit comments

Comments
 (0)