xref: /llvm-project/llvm/test/CodeGen/LoongArch/frint.ll (revision e9d658f72b3600102f7a057574f232954510a308)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc --mtriple=loongarch32 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA32F
3; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA32D
4; RUN: llc --mtriple=loongarch64 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA64F
5; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA64D
6
7define float @rint_f32(float %f) nounwind {
8; LA32F-LABEL: rint_f32:
9; LA32F:       # %bb.0: # %entry
10; LA32F-NEXT:    b %plt(rintf)
11;
12; LA32D-LABEL: rint_f32:
13; LA32D:       # %bb.0: # %entry
14; LA32D-NEXT:    b %plt(rintf)
15;
16; LA64F-LABEL: rint_f32:
17; LA64F:       # %bb.0: # %entry
18; LA64F-NEXT:    frint.s $fa0, $fa0
19; LA64F-NEXT:    ret
20;
21; LA64D-LABEL: rint_f32:
22; LA64D:       # %bb.0: # %entry
23; LA64D-NEXT:    frint.s $fa0, $fa0
24; LA64D-NEXT:    ret
25entry:
26  %0 = tail call float @llvm.rint.f32(float %f)
27  ret float %0
28}
29
30declare float @llvm.rint.f32(float)
31
32define double @rint_f64(double %d) nounwind {
33; LA32F-LABEL: rint_f64:
34; LA32F:       # %bb.0: # %entry
35; LA32F-NEXT:    addi.w $sp, $sp, -16
36; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
37; LA32F-NEXT:    bl %plt(rint)
38; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
39; LA32F-NEXT:    addi.w $sp, $sp, 16
40; LA32F-NEXT:    ret
41;
42; LA32D-LABEL: rint_f64:
43; LA32D:       # %bb.0: # %entry
44; LA32D-NEXT:    b %plt(rint)
45;
46; LA64F-LABEL: rint_f64:
47; LA64F:       # %bb.0: # %entry
48; LA64F-NEXT:    addi.d $sp, $sp, -16
49; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
50; LA64F-NEXT:    bl %plt(rint)
51; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
52; LA64F-NEXT:    addi.d $sp, $sp, 16
53; LA64F-NEXT:    ret
54;
55; LA64D-LABEL: rint_f64:
56; LA64D:       # %bb.0: # %entry
57; LA64D-NEXT:    frint.d $fa0, $fa0
58; LA64D-NEXT:    ret
59entry:
60  %0 = tail call double @llvm.rint.f64(double %d)
61  ret double %0
62}
63
64declare double @llvm.rint.f64(double)
65