brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · 4878699 Raw
117 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=riscv32 -mattr=+zfa,d -global-isel < %s \3; RUN: | FileCheck %s --check-prefixes=CHECK,RV32IDZFA4; RUN: llc -mtriple=riscv64 -mattr=+zfa,d -global-isel < %s \5; RUN: | FileCheck %s --check-prefixes=CHECK,RV64DZFA6 7 8define double @fceil(double %a) {9; CHECK-LABEL: fceil:10; CHECK:       # %bb.0:11; CHECK-NEXT:    fround.d fa0, fa0, rup12; CHECK-NEXT:    ret13  %b = call double @llvm.ceil.f64(double %a)14  ret double %b15}16 17define double @ffloor(double %a) {18; CHECK-LABEL: ffloor:19; CHECK:       # %bb.0:20; CHECK-NEXT:    fround.d fa0, fa0, rdn21; CHECK-NEXT:    ret22  %b = call double @llvm.floor.f64(double %a)23  ret double %b24}25 26define double @frint(double %a) {27; CHECK-LABEL: frint:28; CHECK:       # %bb.0:29; CHECK-NEXT:    froundnx.d fa0, fa030; CHECK-NEXT:    ret31  %b = call double @llvm.rint.f64(double %a)32  ret double %b33}34 35define double @fnearbyint(double %a) {36; CHECK-LABEL: fnearbyint:37; CHECK:       # %bb.0:38; CHECK-NEXT:    fround.d fa0, fa039; CHECK-NEXT:    ret40  %b = call double @llvm.nearbyint.f64(double %a)41  ret double %b42}43 44define double @fround(double %a) {45; CHECK-LABEL: fround:46; CHECK:       # %bb.0:47; CHECK-NEXT:    fround.d fa0, fa0, rmm48; CHECK-NEXT:    ret49  %b = call double @llvm.round.f64(double %a)50  ret double %b51}52 53define double @froundeven(double %a) {54; CHECK-LABEL: froundeven:55; CHECK:       # %bb.0:56; CHECK-NEXT:    fround.d fa0, fa0, rne57; CHECK-NEXT:    ret58  %b = call double @llvm.roundeven.f64(double %a)59  ret double %b60}61 62define double @ftrunc(double %a) {63; CHECK-LABEL: ftrunc:64; CHECK:       # %bb.0:65; CHECK-NEXT:    fround.d fa0, fa0, rtz66; CHECK-NEXT:    ret67  %b = call double @llvm.trunc.f64(double %a)68  ret double %b69}70 71define double @fmaximum(double %a, double %b) {72; CHECK-LABEL: fmaximum:73; CHECK:       # %bb.0:74; CHECK-NEXT:    fmaxm.d fa0, fa0, fa175; CHECK-NEXT:    ret76  %c = call double @llvm.maximum.f64(double %a, double %b)77  ret double %c78}79 80define double @fminimum(double %a, double %b) {81; CHECK-LABEL: fminimum:82; CHECK:       # %bb.0:83; CHECK-NEXT:    fminm.d fa0, fa0, fa184; CHECK-NEXT:    ret85  %c = call double @llvm.minimum.f64(double %a, double %b)86  ret double %c87}88 89define i64 @fmvh_x_d(double %fa) {90; RV32IDZFA-LABEL: fmvh_x_d:91; RV32IDZFA:       # %bb.0:92; RV32IDZFA-NEXT:    fmv.x.w a0, fa093; RV32IDZFA-NEXT:    fmvh.x.d a1, fa094; RV32IDZFA-NEXT:    ret95;96; RV64DZFA-LABEL: fmvh_x_d:97; RV64DZFA:       # %bb.0:98; RV64DZFA-NEXT:    fmv.x.d a0, fa099; RV64DZFA-NEXT:    ret100  %i = bitcast double %fa to i64101  ret i64 %i102}103 104define double @fmvp_d_x(i64 %a) {105; RV32IDZFA-LABEL: fmvp_d_x:106; RV32IDZFA:       # %bb.0:107; RV32IDZFA-NEXT:    fmvp.d.x fa0, a0, a1108; RV32IDZFA-NEXT:    ret109;110; RV64DZFA-LABEL: fmvp_d_x:111; RV64DZFA:       # %bb.0:112; RV64DZFA-NEXT:    fmv.d.x fa0, a0113; RV64DZFA-NEXT:    ret114  %or = bitcast i64 %a to double115  ret double %or116}117