diff options
author | Joerg Sonnenberger <joerg@bec.de> | 2014-10-17 11:51:19 +0000 |
---|---|---|
committer | Joerg Sonnenberger <joerg@bec.de> | 2014-10-17 11:51:19 +0000 |
commit | aa3e9f5a0f45dd0736c831dfb2607df05dab627c (patch) | |
tree | 25286216adb95fc79841b4f938e50c608178bc0c /clang | |
parent | 218dad8568570942246cca62660bb8b2b49a8a7d (diff) | |
download | bcm5719-llvm-aa3e9f5a0f45dd0736c831dfb2607df05dab627c.tar.gz bcm5719-llvm-aa3e9f5a0f45dd0736c831dfb2607df05dab627c.zip |
complex long double support for PowerPC
llvm-svn: 220034
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/CodeGen/CGExprComplex.cpp | 4 | ||||
-rw-r--r-- | clang/test/CodeGen/complex-math.c | 13 |
2 files changed, 17 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGExprComplex.cpp b/clang/lib/CodeGen/CGExprComplex.cpp index 271c9bc5d44..b1cc1efa58e 100644 --- a/clang/lib/CodeGen/CGExprComplex.cpp +++ b/clang/lib/CodeGen/CGExprComplex.cpp @@ -615,6 +615,8 @@ ComplexPairTy ComplexExprEmitter::EmitBinMul(const BinOpInfo &Op) { return EmitComplexBinOpLibCall("__mulsc3", Op); case llvm::Type::DoubleTyID: return EmitComplexBinOpLibCall("__muldc3", Op); + case llvm::Type::PPC_FP128TyID: + return EmitComplexBinOpLibCall("__multc3", Op); case llvm::Type::X86_FP80TyID: return EmitComplexBinOpLibCall("__mulxc3", Op); } @@ -674,6 +676,8 @@ ComplexPairTy ComplexExprEmitter::EmitBinDiv(const BinOpInfo &Op) { return EmitComplexBinOpLibCall("__divsc3", LibCallOp); case llvm::Type::DoubleTyID: return EmitComplexBinOpLibCall("__divdc3", LibCallOp); + case llvm::Type::PPC_FP128TyID: + return EmitComplexBinOpLibCall("__divtc3", LibCallOp); case llvm::Type::X86_FP80TyID: return EmitComplexBinOpLibCall("__divxc3", LibCallOp); } diff --git a/clang/test/CodeGen/complex-math.c b/clang/test/CodeGen/complex-math.c index 27540c78f77..2bdf02b7199 100644 --- a/clang/test/CodeGen/complex-math.c +++ b/clang/test/CodeGen/complex-math.c @@ -1,6 +1,7 @@ // RUN: %clang_cc1 %s -O1 -emit-llvm -triple x86_64-unknown-unknown -o - | FileCheck %s --check-prefix=X86 // RUN: %clang_cc1 %s -O1 -emit-llvm -triple x86_64-pc-win64 -o - | FileCheck %s --check-prefix=X86 // RUN: %clang_cc1 %s -O1 -emit-llvm -triple i686-unknown-unknown -o - | FileCheck %s --check-prefix=X86 +// RUN: %clang_cc1 %s -O1 -emit-llvm -triple powerpc-unknown-unknown -o - | FileCheck %s --check-prefix=PPC float _Complex add_float_rr(float a, float b) { // X86-LABEL: @add_float_rr( @@ -335,6 +336,10 @@ long double _Complex mul_long_double_cc(long double _Complex a, long double _Com // X86-NOT: fmul // X86: call {{.*}} @__mulxc3( // X86: ret + // PPC-LABEL: @mul_long_double_cc( + // PPC-NOT: fmul + // PPC: call {{.*}} @__multc3( + // PPC: ret return a * b; } @@ -358,6 +363,10 @@ long double _Complex div_long_double_rc(long double a, long double _Complex b) { // X86-NOT: fdiv // X86: call {{.*}} @__divxc3( // X86: ret + // PPC-LABEL: @div_long_double_rc( + // PPC-NOT: fdiv + // PPC: call {{.*}} @__divtc3( + // PPC: ret return a / b; } long double _Complex div_long_double_cc(long double _Complex a, long double _Complex b) { @@ -365,6 +374,10 @@ long double _Complex div_long_double_cc(long double _Complex a, long double _Com // X86-NOT: fdiv // X86: call {{.*}} @__divxc3( // X86: ret + // PPC-LABEL: @div_long_double_cc( + // PPC-NOT: fdiv + // PPC: call {{.*}} @__divtc3( + // PPC: ret return a / b; } |