From: Joerg Sonnenberger Date: Fri, 17 Oct 2014 11:51:19 +0000 (+0000) Subject: complex long double support for PowerPC X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b2b4ccd2251d3f23e030d35439ea5181a132e446;p=clang complex long double support for PowerPC git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220034 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGExprComplex.cpp b/lib/CodeGen/CGExprComplex.cpp index 271c9bc5d4..b1cc1efa58 100644 --- a/lib/CodeGen/CGExprComplex.cpp +++ b/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/test/CodeGen/complex-math.c b/test/CodeGen/complex-math.c index 27540c78f7..2bdf02b719 100644 --- a/test/CodeGen/complex-math.c +++ b/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; }