65 lines · c
1// RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +v8.5a\2// RUN: -flax-vector-conversions=none -disable-O0-optnone -emit-llvm -o - %s \3// RUN: | opt -S -passes=mem2reg \4// RUN: | FileCheck %s5 6// REQUIRES: aarch64-registered-target7 8#include <arm_acle.h>9 10// CHECK-LABEL: test_rint32zf11// CHECK: [[RND:%.*]] = call float @llvm.aarch64.frint32z.f32(float %a)12// CHECK: ret float [[RND]]13float test_rint32zf(float a) {14 return __rint32zf(a);15}16 17// CHECK-LABEL: test_rint32z18// CHECK: [[RND:%.*]] = call double @llvm.aarch64.frint32z.f64(double %a)19// CHECK: ret double [[RND]]20double test_rint32z(double a) {21 return __rint32z(a);22}23 24// CHECK-LABEL: test_rint64zf25// CHECK: [[RND:%.*]] = call float @llvm.aarch64.frint64z.f32(float %a)26// CHECK: ret float [[RND]]27float test_rint64zf(float a) {28 return __rint64zf(a);29}30 31// CHECK-LABEL: test_rint64z32// CHECK: [[RND:%.*]] = call double @llvm.aarch64.frint64z.f64(double %a)33// CHECK: ret double [[RND]]34double test_rint64z(double a) {35 return __rint64z(a);36}37 38// CHECK-LABEL: test_rint32xf39// CHECK: [[RND:%.*]] = call float @llvm.aarch64.frint32x.f32(float %a)40// CHECK: ret float [[RND]]41float test_rint32xf(float a) {42 return __rint32xf(a);43}44 45// CHECK-LABEL: test_rint32x46// CHECK: [[RND:%.*]] = call double @llvm.aarch64.frint32x.f64(double %a)47// CHECK: ret double [[RND]]48double test_rint32x(double a) {49 return __rint32x(a);50}51 52// CHECK-LABEL: test_rint64xf53// CHECK: [[RND:%.*]] = call float @llvm.aarch64.frint64x.f32(float %a)54// CHECK: ret float [[RND]]55float test_rint64xf(float a) {56 return __rint64xf(a);57}58 59// CHECK-LABEL: test_rint64x60// CHECK: [[RND:%.*]] = call double @llvm.aarch64.frint64x.f64(double %a)61// CHECK: ret double [[RND]]62double test_rint64x(double a) {63 return __rint64x(a);64}65