46 lines · plain
1// REQUIRES: nvptx-registered-target2// REQUIRES: x86-registered-target3 4// RUN: %clang_cc1 "-aux-triple" "x86_64-unknown-linux-gnu" "-triple" "nvptx64-nvidia-cuda" \5// RUN: -fcuda-is-device "-aux-target-cpu" "x86-64" -O1 -S -o - %s | FileCheck %s6 7#include "Inputs/cuda.h"8 9// CHECK-LABEL: .visible .func _Z8test_argPDF16bDF16b(10// CHECK: .param .b64 _Z8test_argPDF16bDF16b_param_0,11// CHECK: .param .align 2 .b8 _Z8test_argPDF16bDF16b_param_1[2]12//13__device__ void test_arg(__bf16 *out, __bf16 in) {14// CHECK-DAG: ld.param.b64 %[[A:rd[0-9]+]], [_Z8test_argPDF16bDF16b_param_0];15// CHECK-DAG: ld.param.b16 %[[R:rs[0-9]+]], [_Z8test_argPDF16bDF16b_param_1];16 __bf16 bf16 = in;17 *out = bf16;18// CHECK: st.b16 [%[[A]]], %[[R]]19// CHECK: ret;20}21 22 23// CHECK-LABEL: .visible .func (.param .align 2 .b8 func_retval0[2]) _Z8test_retDF16b(24// CHECK: .param .align 2 .b8 _Z8test_retDF16b_param_0[2]25__device__ __bf16 test_ret( __bf16 in) {26// CHECK: ld.param.b16 %[[R:rs[0-9]+]], [_Z8test_retDF16b_param_0];27 return in;28// CHECK: st.param.b16 [func_retval0], %[[R]]29// CHECK: ret;30}31 32__device__ __bf16 external_func( __bf16 in);33 34// CHECK-LABEL: .visible .func (.param .align 2 .b8 func_retval0[2]) _Z9test_callDF16b(35// CHECK: .param .align 2 .b8 _Z9test_callDF16b_param_0[2]36__device__ __bf16 test_call( __bf16 in) {37// CHECK: ld.param.b16 %[[R:rs[0-9]+]], [_Z9test_callDF16b_param_0];38// CHECK: .param .align 2 .b8 retval0[2];39// CHECK: st.param.b16 [param0], %[[R]];40// CHECK: call.uni (retval0), _Z13external_funcDF16b, (param0);41// CHECK: ld.param.b16 %[[RET:rs[0-9]+]], [retval0];42 return external_func(in);43// CHECK: st.param.b16 [func_retval0], %[[RET]]44// CHECK: ret;45}46