Skip to content

Commit a256e89

Browse files
yingopqnikic
authored andcommitted
[Mips] Add additional half float tests (NFC)
For llvm#110199.
1 parent cdfd4cf commit a256e89

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

llvm/test/CodeGen/Mips/fp16-promote.ll

+62
Original file line numberDiff line numberDiff line change
@@ -260,3 +260,65 @@ define void @test_vec_fptrunc_double(<4 x double> %a, ptr %p) nounwind {
260260
ret void
261261
}
262262

263+
define half @test_fadd_fadd(half %a, half %b, half %c) nounwind {
264+
; CHECK-LIBCALL-LABEL: test_fadd_fadd:
265+
; CHECK-LIBCALL: # %bb.0:
266+
; CHECK-LIBCALL-NEXT: addiu $sp, $sp, -32
267+
; CHECK-LIBCALL-NEXT: sdc1 $f20, 24($sp) # 8-byte Folded Spill
268+
; CHECK-LIBCALL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill
269+
; CHECK-LIBCALL-NEXT: sw $16, 16($sp) # 4-byte Folded Spill
270+
; CHECK-LIBCALL-NEXT: move $16, $6
271+
; CHECK-LIBCALL-NEXT: mov.s $f20, $f12
272+
; CHECK-LIBCALL-NEXT: jal __gnu_f2h_ieee
273+
; CHECK-LIBCALL-NEXT: mov.s $f12, $f14
274+
; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
275+
; CHECK-LIBCALL-NEXT: move $4, $2
276+
; CHECK-LIBCALL-NEXT: mov.s $f21, $f0
277+
; CHECK-LIBCALL-NEXT: jal __gnu_f2h_ieee
278+
; CHECK-LIBCALL-NEXT: mov.s $f12, $f20
279+
; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
280+
; CHECK-LIBCALL-NEXT: move $4, $2
281+
; CHECK-LIBCALL-NEXT: add.s $f20, $f0, $f21
282+
; CHECK-LIBCALL-NEXT: jal __gnu_f2h_ieee
283+
; CHECK-LIBCALL-NEXT: mtc1 $16, $f12
284+
; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
285+
; CHECK-LIBCALL-NEXT: move $4, $2
286+
; CHECK-LIBCALL-NEXT: add.s $f0, $f20, $f0
287+
; CHECK-LIBCALL-NEXT: lw $16, 16($sp) # 4-byte Folded Reload
288+
; CHECK-LIBCALL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload
289+
; CHECK-LIBCALL-NEXT: ldc1 $f20, 24($sp) # 8-byte Folded Reload
290+
; CHECK-LIBCALL-NEXT: jr $ra
291+
; CHECK-LIBCALL-NEXT: addiu $sp, $sp, 32
292+
%d = fadd half %a, %b
293+
%e = fadd half %d, %c
294+
ret half %e
295+
}
296+
297+
define half @to_half(i16 %bits) nounwind {
298+
; CHECK-LIBCALL-LABEL: to_half:
299+
; CHECK-LIBCALL: # %bb.0:
300+
; CHECK-LIBCALL-NEXT: addiu $sp, $sp, -24
301+
; CHECK-LIBCALL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill
302+
; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
303+
; CHECK-LIBCALL-NEXT: nop
304+
; CHECK-LIBCALL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload
305+
; CHECK-LIBCALL-NEXT: jr $ra
306+
; CHECK-LIBCALL-NEXT: addiu $sp, $sp, 24
307+
%f = bitcast i16 %bits to half
308+
ret half %f
309+
}
310+
311+
define i16 @from_half(half %f) nounwind {
312+
; CHECK-LIBCALL-LABEL: from_half:
313+
; CHECK-LIBCALL: # %bb.0:
314+
; CHECK-LIBCALL-NEXT: addiu $sp, $sp, -24
315+
; CHECK-LIBCALL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill
316+
; CHECK-LIBCALL-NEXT: jal __gnu_f2h_ieee
317+
; CHECK-LIBCALL-NEXT: nop
318+
; CHECK-LIBCALL-NEXT: andi $2, $2, 65535
319+
; CHECK-LIBCALL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload
320+
; CHECK-LIBCALL-NEXT: jr $ra
321+
; CHECK-LIBCALL-NEXT: addiu $sp, $sp, 24
322+
%bits = bitcast half %f to i16
323+
ret i16 %bits
324+
}

0 commit comments

Comments
 (0)