1*67e74705SXin Li // REQUIRES: arm-registered-target
2*67e74705SXin Li // RUN: %clang_cc1 -triple armv7-unknown-unknown -mfpmath vfp -emit-llvm -o - %s | FileCheck %s
3*67e74705SXin Li
4*67e74705SXin Li // CHECK-NOT: error:
5*67e74705SXin Li
fabs(double x)6*67e74705SXin Li double fabs(double x) { // CHECK-LABEL: @fabs(
7*67e74705SXin Li // CHECK: call double asm "vabs.f64 ${0:P}, ${1:P}", "=w,w"(double
8*67e74705SXin Li __asm__("vabs.f64 %P0, %P1"
9*67e74705SXin Li : "=w"(x)
10*67e74705SXin Li : "w"(x));
11*67e74705SXin Li return x;
12*67e74705SXin Li }
13*67e74705SXin Li
fabsf(float x)14*67e74705SXin Li float fabsf(float x) { // CHECK-LABEL: @fabsf(
15*67e74705SXin Li // CHECK: call float asm "vabs.f32 $0, $1", "=t,t"(float
16*67e74705SXin Li __asm__("vabs.f32 %0, %1"
17*67e74705SXin Li : "=t"(x)
18*67e74705SXin Li : "t"(x));
19*67e74705SXin Li return x;
20*67e74705SXin Li }
21*67e74705SXin Li
sqrt(double x)22*67e74705SXin Li double sqrt(double x) { // CHECK-LABEL: @sqrt(
23*67e74705SXin Li // CHECK: call double asm "vsqrt.f64 ${0:P}, ${1:P}", "=w,w"(double
24*67e74705SXin Li __asm__("vsqrt.f64 %P0, %P1"
25*67e74705SXin Li : "=w"(x)
26*67e74705SXin Li : "w"(x));
27*67e74705SXin Li return x;
28*67e74705SXin Li }
29*67e74705SXin Li
sqrtf(float x)30*67e74705SXin Li float sqrtf(float x) { // CHECK-LABEL: @sqrtf(
31*67e74705SXin Li // CHECK: call float asm "vsqrt.f32 $0, $1", "=t,t"(float
32*67e74705SXin Li __asm__("vsqrt.f32 %0, %1"
33*67e74705SXin Li : "=t"(x)
34*67e74705SXin Li : "t"(x));
35*67e74705SXin Li return x;
36*67e74705SXin Li }
37