42 lines · cpp
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 52// RUN: %clang_cc1 -include __clang_hip_runtime_wrapper.h \3// RUN: -internal-isystem %S/../../lib/Headers/cuda_wrappers \4// RUN: -internal-isystem %S/Inputs/include \5// RUN: -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-unknown \6// RUN: -target-cpu gfx906 -emit-llvm %s -fcuda-is-device -o - \7// RUN: -D __CLANG_GPU_DISABLE_MATH_WRAPPERS | FileCheck -check-prefix=AMDGPU %s8 9// RUN: %clang_cc1 -include __clang_cuda_runtime_wrapper.h \10// RUN: -internal-isystem %S/../../lib/Headers/cuda_wrappers \11// RUN: -internal-isystem %S/Inputs/include \12// RUN: -triple nvptx64-nvidia-cuda -aux-triple x86_64-unknown-unknown \13// RUN: -target-cpu sm_90 -emit-llvm %s -fcuda-is-device -o - \14// RUN: -D __CLANG_GPU_DISABLE_MATH_WRAPPERS | FileCheck -check-prefix=NVPTX %s15 16extern "C" double sin(double x);17 18// AMDGPU-LABEL: define dso_local noundef double @_Z3food(19// AMDGPU-SAME: double noundef [[X:%.*]]) #[[ATTR0:[0-9]+]] {20// AMDGPU-NEXT: [[ENTRY:.*:]]21// AMDGPU-NEXT: [[RETVAL:%.*]] = alloca double, align 8, addrspace(5)22// AMDGPU-NEXT: [[X_ADDR:%.*]] = alloca double, align 8, addrspace(5)23// AMDGPU-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr24// AMDGPU-NEXT: [[X_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X_ADDR]] to ptr25// AMDGPU-NEXT: store double [[X]], ptr [[X_ADDR_ASCAST]], align 826// AMDGPU-NEXT: [[TMP0:%.*]] = load double, ptr [[X_ADDR_ASCAST]], align 827// AMDGPU-NEXT: [[TMP1:%.*]] = call double @llvm.sin.f64(double [[TMP0]])28// AMDGPU-NEXT: ret double [[TMP1]]29//30// NVPTX-LABEL: define dso_local noundef double @_Z3food(31// NVPTX-SAME: double noundef [[X:%.*]]) #[[ATTR0:[0-9]+]] {32// NVPTX-NEXT: [[ENTRY:.*:]]33// NVPTX-NEXT: [[X_ADDR:%.*]] = alloca double, align 834// NVPTX-NEXT: store double [[X]], ptr [[X_ADDR]], align 835// NVPTX-NEXT: [[TMP0:%.*]] = load double, ptr [[X_ADDR]], align 836// NVPTX-NEXT: [[TMP1:%.*]] = call double @llvm.sin.f64(double [[TMP0]])37// NVPTX-NEXT: ret double [[TMP1]]38//39double foo(double x) {40 return sin(x);41}42