aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/nvptx-abi.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/nvptx-abi.c')
-rw-r--r--test/CodeGen/nvptx-abi.c34
1 files changed, 30 insertions, 4 deletions
diff --git a/test/CodeGen/nvptx-abi.c b/test/CodeGen/nvptx-abi.c
index f846def2de52..58ad6a17f242 100644
--- a/test/CodeGen/nvptx-abi.c
+++ b/test/CodeGen/nvptx-abi.c
@@ -5,13 +5,39 @@ typedef struct float4_s {
float x, y, z, w;
} float4_t;
-float4_t my_function(void);
-
-// CHECK-DAG: declare %struct.float4_s @my_function
+float4_t my_function(void) {
+// CHECK-LABEL: define %struct.float4_s @my_function
+ float4_t t;
+ return t;
+};
float bar(void) {
float4_t ret;
-// CHECK-DAG: call %struct.float4_s @my_function
+// CHECK-LABEL: @bar
+// CHECK: call %struct.float4_s @my_function
ret = my_function();
return ret.x;
}
+
+void foo(float4_t x) {
+// CHECK-LABEL: @foo
+// CHECK: %struct.float4_s* byval %x
+}
+
+void fooN(float4_t x, float4_t y, float4_t z) {
+// CHECK-LABEL: @fooN
+// CHECK: %struct.float4_s* byval %x
+// CHECK: %struct.float4_s* byval %y
+// CHECK: %struct.float4_s* byval %z
+}
+
+typedef struct nested_s {
+ unsigned long long x;
+ float z[64];
+ float4_t t;
+} nested_t;
+
+void baz(nested_t x) {
+// CHECK-LABEL: @baz
+// CHECK: %struct.nested_s* byval %x)
+}