xref: /aosp_15_r20/external/clang/test/CodeGen/libcalls-complex.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -fno-builtin -emit-llvm -o - %s -triple i386-unknown-unknown | FileCheck -check-prefix CHECK-YES %s
2*67e74705SXin Li // RUN: %clang_cc1 -fno-builtin-crealf -fno-builtin-creal -fno-builtin-creall \
3*67e74705SXin Li // RUN:  -fno-builtin-cimagf  -fno-builtin-cimag -fno-builtin-cimagl -emit-llvm \
4*67e74705SXin Li // RUN:  -o - %s -triple i386-unknown-unknown | FileCheck -check-prefix CHECK-YES %s
5*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm -o - %s -triple i386-unknown-unknown | FileCheck -check-prefix CHECK-NO %s
6*67e74705SXin Li 
7*67e74705SXin Li extern float crealf(float _Complex);
8*67e74705SXin Li extern double creal(double _Complex);
9*67e74705SXin Li extern long double creall(long double _Complex);
10*67e74705SXin Li 
11*67e74705SXin Li extern float cimagf(float _Complex);
12*67e74705SXin Li extern double cimag(double _Complex);
13*67e74705SXin Li extern long double cimagl(long double _Complex);
14*67e74705SXin Li 
test_creal(double _Complex z)15*67e74705SXin Li double test_creal(double _Complex z) {
16*67e74705SXin Li   return creal(z);
17*67e74705SXin Li   // CHECK-NO-NOT: call double @creal
18*67e74705SXin Li   // CHECK-YES: call double @creal
19*67e74705SXin Li }
20*67e74705SXin Li 
test_creall(double _Complex z)21*67e74705SXin Li long double test_creall(double _Complex z) {
22*67e74705SXin Li   return creall(z);
23*67e74705SXin Li   // CHECK-NO-NOT: call x86_fp80 @creall
24*67e74705SXin Li   // CHECK-YES: call x86_fp80 @creall
25*67e74705SXin Li }
26*67e74705SXin Li 
test_crealf(double _Complex z)27*67e74705SXin Li float test_crealf(double _Complex z) {
28*67e74705SXin Li   return crealf(z);
29*67e74705SXin Li   // CHECK-NO-NOT: call float @crealf
30*67e74705SXin Li   // CHECK-YES: call float @crealf
31*67e74705SXin Li }
32*67e74705SXin Li 
test_cimag(double _Complex z)33*67e74705SXin Li double test_cimag(double _Complex z) {
34*67e74705SXin Li   return cimag(z);
35*67e74705SXin Li   // CHECK-NO-NOT: call double @cimag
36*67e74705SXin Li   // CHECK-YES: call double @cimag
37*67e74705SXin Li }
38*67e74705SXin Li 
test_cimagl(double _Complex z)39*67e74705SXin Li long double test_cimagl(double _Complex z) {
40*67e74705SXin Li   return cimagl(z);
41*67e74705SXin Li   // CHECK-NO-NOT: call x86_fp80 @cimagl
42*67e74705SXin Li   // CHECK-YES: call x86_fp80 @cimagl
43*67e74705SXin Li }
44*67e74705SXin Li 
test_cimagf(double _Complex z)45*67e74705SXin Li float test_cimagf(double _Complex z) {
46*67e74705SXin Li   return cimagf(z);
47*67e74705SXin Li   // CHECK-NO-NOT: call float @cimagf
48*67e74705SXin Li   // CHECK-YES: call float @cimagf
49*67e74705SXin Li }
50