blob: bcef140ef773ceb889c8f962f4f98beaeae18928 [file] [edit]
// REQUIRES: nvptx-registered-target
// RUN: %clang_cc1 -fcuda-is-device -triple nvptx64-nvidia-cuda \
// RUN: -target-cpu sm_75 -O2 -S -o - %s \
// RUN: | FileCheck --check-prefix=DEFAULT %s
// RUN: %clang_cc1 -fcuda-is-device -triple nvptx64-nvidia-cuda \
// RUN: -target-cpu sm_75 -O2 -fapprox-func -S -o - %s \
// RUN: | FileCheck --check-prefix=APPROX %s
// RUN: %clang_cc1 -fcuda-is-device -triple nvptx64-nvidia-cuda \
// RUN: -target-cpu sm_75 -O2 -fapprox-func \
// RUN: -mllvm -nvptx-prec-sqrtf32=1 -S -o - %s \
// RUN: | FileCheck --check-prefix=FORCE-PRECISE %s
// RUN: %clang_cc1 -fcuda-is-device -triple nvptx64-nvidia-cuda \
// RUN: -target-cpu sm_75 -O2 -mllvm -nvptx-prec-sqrtf32=0 -S -o - %s \
// RUN: | FileCheck --check-prefix=FORCE-APPROX %s
// DEFAULT-LABEL: .func{{.*}}builtin_sqrtf
// DEFAULT: sqrt.rn.f32
// DEFAULT-NOT: sqrt.approx.f32
//
// APPROX-LABEL: .func{{.*}}builtin_sqrtf
// APPROX: sqrt.approx.f32
// APPROX-NOT: sqrt.rn.f32
//
// FORCE-PRECISE-LABEL: .func{{.*}}builtin_sqrtf
// FORCE-PRECISE: sqrt.rn.f32
// FORCE-PRECISE-NOT: sqrt.approx.f32
//
// FORCE-APPROX-LABEL: .func{{.*}}builtin_sqrtf
// FORCE-APPROX: sqrt.approx.f32
// FORCE-APPROX-NOT: sqrt.rn.f32
extern "C" __attribute__((device)) float builtin_sqrtf(float x) {
return __builtin_sqrtf(x);
}