// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 6 // REQUIRES: amdgpu-registered-target // RUN: %clang --target=%target -mcpu=%cpu %libclc_lib -x cl -cl-std=CL3.0 -O2 -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix #pragma OPENCL EXTENSION cl_khr_fp16 : enable // AMDGCN-LABEL: define hidden noundef half @test_half( // AMDGCN-SAME: half noundef [[X:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] { // AMDGCN-NEXT: [[ENTRY:.*:]] // AMDGCN-NEXT: [[TMP0:%.*]] = tail call contract half @llvm.sqrt.f16(half [[X]]), !fpmath [[META13:![0-9]+]] // AMDGCN-NEXT: [[TMP1:%.*]] = fdiv contract half 1.000000e+00, [[TMP0]], !fpmath [[META14:![0-9]+]] // AMDGCN-NEXT: ret half [[TMP1]] // half test_half(half x) { return rsqrt(x); } // AMDGCN-LABEL: define hidden noundef float @test_float( // AMDGCN-SAME: float noundef [[X:%.*]]) local_unnamed_addr #[[ATTR0]] { // AMDGCN-NEXT: [[ENTRY:.*:]] // AMDGCN-NEXT: [[TMP0:%.*]] = tail call contract float @llvm.sqrt.f32(float [[X]]), !fpmath [[META15:![0-9]+]] // AMDGCN-NEXT: [[TMP1:%.*]] = fdiv contract float 1.000000e+00, [[TMP0]], !fpmath [[META16:![0-9]+]] // AMDGCN-NEXT: ret float [[TMP1]] // float test_float(float x) { return rsqrt(x); } // AMDGCN-LABEL: define hidden noundef double @test_double( // AMDGCN-SAME: double noundef [[X:%.*]]) local_unnamed_addr #[[ATTR0]] { // AMDGCN-NEXT: [[ENTRY:.*:]] // AMDGCN-NEXT: [[TMP0:%.*]] = tail call contract double @llvm.sqrt.f64(double [[X]]) // AMDGCN-NEXT: [[TMP1:%.*]] = fdiv contract double 1.000000e+00, [[TMP0]] // AMDGCN-NEXT: ret double [[TMP1]] // double test_double(double x) { return rsqrt(x); } //. // AMDGCN: [[META13]] = !{float 1.500000e+00} // AMDGCN: [[META14]] = !{float 1.000000e+00} // AMDGCN: [[META15]] = !{float 3.000000e+00} // AMDGCN: [[META16]] = !{float 2.500000e+00} //.