xref: /llvm-project/llvm/test/CodeGen/RISCV/GlobalISel/float-zfa.ll (revision 22774bbea1dfa0aeb51a4e6b4332dfaca9f58b1a)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2
3; RUN: llc -mtriple=riscv32 -mattr=+zfa -global-isel < %s \
4; RUN: | FileCheck %s
5; RUN: llc -mtriple=riscv64 -mattr=+zfa -global-isel < %s \
6; RUN: | FileCheck %s
7
8
9define float @fceil(float %a) {
10; CHECK-LABEL: fceil:
11; CHECK:       # %bb.0:
12; CHECK-NEXT:    fround.s fa0, fa0, rup
13; CHECK-NEXT:    ret
14  %b = call float @llvm.ceil.f32(float %a)
15  ret float %b
16}
17
18define float @ffloor(float %a) {
19; CHECK-LABEL: ffloor:
20; CHECK:       # %bb.0:
21; CHECK-NEXT:    fround.s fa0, fa0, rdn
22; CHECK-NEXT:    ret
23  %b = call float @llvm.floor.f32(float %a)
24  ret float %b
25}
26
27define float @frint(float %a) {
28; CHECK-LABEL: frint:
29; CHECK:       # %bb.0:
30; CHECK-NEXT:    froundnx.s fa0, fa0
31; CHECK-NEXT:    ret
32  %b = call float @llvm.rint.f32(float %a)
33  ret float %b
34}
35
36define float @fnearbyint(float %a) {
37; CHECK-LABEL: fnearbyint:
38; CHECK:       # %bb.0:
39; CHECK-NEXT:    fround.s fa0, fa0
40; CHECK-NEXT:    ret
41  %b = call float @llvm.nearbyint.f32(float %a)
42  ret float %b
43}
44
45define float @fround(float %a) {
46; CHECK-LABEL: fround:
47; CHECK:       # %bb.0:
48; CHECK-NEXT:    fround.s fa0, fa0, rmm
49; CHECK-NEXT:    ret
50  %b = call float @llvm.round.f32(float %a)
51  ret float %b
52}
53
54define float @froundeven(float %a) {
55; CHECK-LABEL: froundeven:
56; CHECK:       # %bb.0:
57; CHECK-NEXT:    fround.s fa0, fa0, rne
58; CHECK-NEXT:    ret
59  %b = call float @llvm.roundeven.f32(float %a)
60  ret float %b
61}
62
63define float @ftrunc(float %a) {
64; CHECK-LABEL: ftrunc:
65; CHECK:       # %bb.0:
66; CHECK-NEXT:    fround.s fa0, fa0, rtz
67; CHECK-NEXT:    ret
68  %b = call float @llvm.trunc.f32(float %a)
69  ret float %b
70}
71
72define float @fmaximum(float %a, float %b) {
73; CHECK-LABEL: fmaximum:
74; CHECK:       # %bb.0:
75; CHECK-NEXT:    fmaxm.s fa0, fa0, fa1
76; CHECK-NEXT:    ret
77  %c = call float @llvm.maximum.f32(float %a, float %b)
78  ret float %c
79}
80
81define float @fminimum(float %a, float %b) {
82; CHECK-LABEL: fminimum:
83; CHECK:       # %bb.0:
84; CHECK-NEXT:    fminm.s fa0, fa0, fa1
85; CHECK-NEXT:    ret
86  %c = call float @llvm.minimum.f32(float %a, float %b)
87  ret float %c
88}
89