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