|
1 | 1 | // REQUIRES: powerpc-registered-target |
2 | 2 | // RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s |
| 3 | +// RUN: %clang_cc1 -target-feature +float128 -DTEST_F128 -triple \ |
| 4 | +// RUN: powerpc64le-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s \ |
| 5 | +// RUN: --check-prefix CHECK-F128 |
3 | 6 |
|
4 | 7 | float crealf(_Complex float); |
5 | 8 | double creal(_Complex double); |
6 | 9 | long double creall(_Complex long double); |
| 10 | +#ifdef TEST_F128 |
| 11 | +__float128 crealf128(_Complex __float128); |
| 12 | +_Complex __float128 foo_f128(_Complex __float128 x) { |
| 13 | + return x; |
| 14 | +} |
| 15 | + |
| 16 | +// CHECK-F128: define { fp128, fp128 } @foo_f128(fp128 {{[%A-Za-z0-9.]+}}, fp128 {{[%A-Za-z0-9.]+}}) [[NUW:#[0-9]+]] { |
| 17 | +#endif |
7 | 18 |
|
8 | 19 | _Complex float foo_float(_Complex float x) { |
9 | 20 | return x; |
@@ -80,6 +91,17 @@ long double bar_long_double(void) { |
80 | 91 | // CHECK: extractvalue { ppc_fp128, ppc_fp128 } [[VAR3]], 0 |
81 | 92 | // CHECK: extractvalue { ppc_fp128, ppc_fp128 } [[VAR3]], 1 |
82 | 93 |
|
| 94 | +#ifdef TEST_F128 |
| 95 | +__float128 bar_f128(void) { |
| 96 | + return crealf128(foo_f128(2.0Q - 2.5Qi)); |
| 97 | +} |
| 98 | + |
| 99 | +// CHECK-F128: define fp128 @bar_f128() [[NUW]] { |
| 100 | +// CHECK-F128: [[VAR3:[%A-Za-z0-9.]+]] = call { fp128, fp128 } @foo_f128 |
| 101 | +// CHECK-F128: extractvalue { fp128, fp128 } [[VAR3]], 0 |
| 102 | +// CHECK-F128: extractvalue { fp128, fp128 } [[VAR3]], 1 |
| 103 | +#endif |
| 104 | + |
83 | 105 | int bar_int(void) { |
84 | 106 | return __real__(foo_int(2 - 3i)); |
85 | 107 | } |
|
0 commit comments