xref: /llvm-project/clang/test/CodeGen/X86/fp128-abi.c (revision f07aba4bc1fbd8301b09e2114ebc4149d2439cac)
1 // RUN: %clang_cc1 -triple x86_64-linux -emit-llvm  -target-feature +sse2 < %s | FileCheck %s --check-prefixes=CHECK
2 // RUN: %clang_cc1 -triple x86_64-linux -emit-llvm  -target-feature -sse2 < %s | FileCheck %s --check-prefixes=CHECK
3 
4 struct st1 {
5   __float128 a;
6 };
7 
h1(__float128 a)8 struct st1 h1(__float128 a) {
9   // CHECK: define{{.*}}fp128 @h1(fp128
10   struct st1 x;
11   x.a = a;
12   return x;
13 }
14 
h2(struct st1 x)15 __float128 h2(struct st1 x) {
16   // CHECK: define{{.*}}fp128 @h2(fp128
17   return x.a;
18 }
19 
20 struct st2 {
21   __float128 a;
22   int b;
23 };
24 
h3(__float128 a,int b)25 struct st2 h3(__float128 a, int b) {
26   // CHECK: define{{.*}}void @h3(ptr {{.*}}sret(%struct.st2)
27   struct st2 x;
28   x.a = a;
29   x.b = b;
30   return x;
31 }
32 
h4(struct st2 x)33 __float128 h4(struct st2 x) {
34   // CHECK: define{{.*}}fp128 @h4(ptr {{.*}}byval(%struct.st2)
35   return x.a;
36 }
37