1 // RUN: %clang_cc1 -triple nvptx-unknown-unknown -S -o - %s -emit-llvm | FileCheck %s 2 // RUN: %clang_cc1 -triple nvptx64-unknown-unknown -S -o - %s -emit-llvm | FileCheck %s 3 4 typedef struct float4_s { 5 float x, y, z, w; 6 } float4_t; 7 my_function(void)8float4_t my_function(void) { 9 // CHECK-LABEL: define %struct.float4_s @my_function 10 float4_t t; 11 return t; 12 }; 13 bar(void)14float bar(void) { 15 float4_t ret; 16 // CHECK-LABEL: @bar 17 // CHECK: call %struct.float4_s @my_function 18 ret = my_function(); 19 return ret.x; 20 } 21 foo(float4_t x)22void foo(float4_t x) { 23 // CHECK-LABEL: @foo 24 // CHECK: %struct.float4_s* byval %x 25 } 26 fooN(float4_t x,float4_t y,float4_t z)27void fooN(float4_t x, float4_t y, float4_t z) { 28 // CHECK-LABEL: @fooN 29 // CHECK: %struct.float4_s* byval %x 30 // CHECK: %struct.float4_s* byval %y 31 // CHECK: %struct.float4_s* byval %z 32 } 33 34 typedef struct nested_s { 35 unsigned long long x; 36 float z[64]; 37 float4_t t; 38 } nested_t; 39 baz(nested_t x)40void baz(nested_t x) { 41 // CHECK-LABEL: @baz 42 // CHECK: %struct.nested_s* byval %x) 43 } 44