xref: /llvm-project/llvm/test/CodeGen/RISCV/bfloat-imm.ll (revision 32597685574e594d745df1bb15dc0e626bd60566)
18a71f44eSAlex Bradbury; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2*32597685SJianjian Guan; RUN: llc -mtriple=riscv32 -mattr=+zfbfmin -verify-machineinstrs \
38a71f44eSAlex Bradbury; RUN:   -target-abi ilp32f < %s | FileCheck %s
4*32597685SJianjian Guan; RUN: llc -mtriple=riscv64 -mattr=+zfbfmin -verify-machineinstrs \
58a71f44eSAlex Bradbury; RUN:   -target-abi lp64f < %s | FileCheck %s
68a71f44eSAlex Bradbury
78a71f44eSAlex Bradburydefine bfloat @bfloat_imm() nounwind {
88a71f44eSAlex Bradbury; CHECK-LABEL: bfloat_imm:
98a71f44eSAlex Bradbury; CHECK:       # %bb.0:
108a71f44eSAlex Bradbury; CHECK-NEXT:    lui a0, %hi(.LCPI0_0)
118a71f44eSAlex Bradbury; CHECK-NEXT:    flh fa0, %lo(.LCPI0_0)(a0)
128a71f44eSAlex Bradbury; CHECK-NEXT:    ret
138a71f44eSAlex Bradbury  ret bfloat 3.0
148a71f44eSAlex Bradbury}
158a71f44eSAlex Bradbury
168a71f44eSAlex Bradburydefine bfloat @bfloat_imm_op(bfloat %a) nounwind {
178a71f44eSAlex Bradbury; CHECK-LABEL: bfloat_imm_op:
188a71f44eSAlex Bradbury; CHECK:       # %bb.0:
198a71f44eSAlex Bradbury; CHECK-NEXT:    fcvt.s.bf16 fa5, fa0
208a71f44eSAlex Bradbury; CHECK-NEXT:    lui a0, 260096
218a71f44eSAlex Bradbury; CHECK-NEXT:    fmv.w.x fa4, a0
228a71f44eSAlex Bradbury; CHECK-NEXT:    fadd.s fa5, fa5, fa4
238a71f44eSAlex Bradbury; CHECK-NEXT:    fcvt.bf16.s fa0, fa5
248a71f44eSAlex Bradbury; CHECK-NEXT:    ret
258a71f44eSAlex Bradbury  %1 = fadd bfloat %a, 1.0
268a71f44eSAlex Bradbury  ret bfloat %1
278a71f44eSAlex Bradbury}
288a71f44eSAlex Bradbury
298a71f44eSAlex Bradburydefine bfloat @bfloat_zero() nounwind {
308a71f44eSAlex Bradbury; CHECK-LABEL: bfloat_zero:
318a71f44eSAlex Bradbury; CHECK:       # %bb.0:
32a8c502a5SCraig Topper; CHECK-NEXT:    fmv.h.x fa0, zero
338a71f44eSAlex Bradbury; CHECK-NEXT:    ret
348a71f44eSAlex Bradbury  ret bfloat 0.0
358a71f44eSAlex Bradbury}
368a71f44eSAlex Bradbury
378a71f44eSAlex Bradburydefine bfloat @bfloat_negative_zero() nounwind {
388a71f44eSAlex Bradbury; CHECK-LABEL: bfloat_negative_zero:
398a71f44eSAlex Bradbury; CHECK:       # %bb.0:
40a8c502a5SCraig Topper; CHECK-NEXT:    lui a0, 1048568
41a8c502a5SCraig Topper; CHECK-NEXT:    fmv.h.x fa0, a0
428a71f44eSAlex Bradbury; CHECK-NEXT:    ret
438a71f44eSAlex Bradbury  ret bfloat -0.0
448a71f44eSAlex Bradbury}
45