44 lines · c
1// RUN: %clang_cc1 -triple nvptx-unknown-unknown -o - %s -emit-llvm | FileCheck %s2// RUN: %clang_cc1 -triple nvptx64-unknown-unknown -o - %s -emit-llvm | FileCheck %s3 4typedef struct float4_s {5 float x, y, z, w;6} float4_t;7 8float4_t my_function(void) {9// CHECK-LABEL: define{{.*}} %struct.float4_s @my_function10 float4_t t;11 return t;12};13 14float bar(void) {15 float4_t ret;16// CHECK-LABEL: @bar17// CHECK: call %struct.float4_s @my_function18 ret = my_function();19 return ret.x;20}21 22void foo(float4_t x) {23// CHECK-LABEL: @foo24// CHECK: ptr noundef byval(%struct.float4_s) align 4 %x25}26 27void fooN(float4_t x, float4_t y, float4_t z) {28// CHECK-LABEL: @fooN29// CHECK: ptr noundef byval(%struct.float4_s) align 4 %x30// CHECK: ptr noundef byval(%struct.float4_s) align 4 %y31// CHECK: ptr noundef byval(%struct.float4_s) align 4 %z32}33 34typedef struct nested_s {35 unsigned long long x;36 float z[64];37 float4_t t;38} nested_t;39 40void baz(nested_t x) {41// CHECK-LABEL: @baz42// CHECK: ptr noundef byval(%struct.nested_s) align 8 %x)43}44