Home | History | Annotate | Download | only in CodeGen
      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 
      8 float4_t my_function(void) {
      9 // CHECK-LABEL: define %struct.float4_s @my_function
     10   float4_t t;
     11   return t;
     12 };
     13 
     14 float 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 
     22 void foo(float4_t x) {
     23 // CHECK-LABEL: @foo
     24 // CHECK: %struct.float4_s* byval align 4 %x
     25 }
     26 
     27 void fooN(float4_t x, float4_t y, float4_t z) {
     28 // CHECK-LABEL: @fooN
     29 // CHECK: %struct.float4_s* byval align 4 %x
     30 // CHECK: %struct.float4_s* byval align 4 %y
     31 // CHECK: %struct.float4_s* byval align 4 %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 
     40 void baz(nested_t x) {
     41 // CHECK-LABEL: @baz
     42 // CHECK: %struct.nested_s* byval align 8 %x)
     43 }
     44