1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workertarget triple = "nvptx-nvidia-cuda" 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 6*9880d681SAndroid Build Coastguard Worker; CHECK: .entry foo 7*9880d681SAndroid Build Coastguard Workerdefine void @foo(float* nocapture %a) #0 { 8*9880d681SAndroid Build Coastguard Worker %val = load float, float* %a 9*9880d681SAndroid Build Coastguard Worker %tan = tail call fastcc float @__nv_fast_tanf(float %val) 10*9880d681SAndroid Build Coastguard Worker store float %tan, float* %a 11*9880d681SAndroid Build Coastguard Worker ret void 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 15*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.nvvm.sin.approx.ftz.f(float) #1 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 18*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.nvvm.cos.approx.ftz.f(float) #1 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 21*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.nvvm.div.approx.ftz.f(float, float) #1 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker; Function Attrs: alwaysinline inlinehint nounwind readnone 24*9880d681SAndroid Build Coastguard Worker; CHECK: .func (.param .b32 func_retval0) __nv_fast_tanf 25*9880d681SAndroid Build Coastguard Workerdefine internal fastcc float @__nv_fast_tanf(float %a) #2 { 26*9880d681SAndroid Build Coastguard Workerentry: 27*9880d681SAndroid Build Coastguard Worker %0 = tail call float @llvm.nvvm.sin.approx.ftz.f(float %a) 28*9880d681SAndroid Build Coastguard Worker %1 = tail call float @llvm.nvvm.cos.approx.ftz.f(float %a) 29*9880d681SAndroid Build Coastguard Worker %2 = tail call float @llvm.nvvm.div.approx.ftz.f(float %0, float %1) 30*9880d681SAndroid Build Coastguard Worker ret float %2 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 34*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind readnone } 35*9880d681SAndroid Build Coastguard Workerattributes #2 = { alwaysinline inlinehint nounwind readnone } 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker!nvvm.annotations = !{!0} 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Worker!0 = !{void (float*)* @foo, !"kernel", i32 1} 40