Support ppcf128 in SelectionDAG::getConstantFP

Fixes pr14751.

Patch by Kai; Thanks!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171261 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Hal Finkel 2012-12-30 19:03:32 +00:00
parent 98281a2050
commit 6eb7a4270b
2 changed files with 17 additions and 1 deletions

View File

@ -1075,7 +1075,8 @@ SDValue SelectionDAG::getConstantFP(double Val, EVT VT, bool isTarget) {
return getConstantFP(APFloat((float)Val), VT, isTarget); return getConstantFP(APFloat((float)Val), VT, isTarget);
else if (EltVT==MVT::f64) else if (EltVT==MVT::f64)
return getConstantFP(APFloat(Val), VT, isTarget); return getConstantFP(APFloat(Val), VT, isTarget);
else if (EltVT==MVT::f80 || EltVT==MVT::f128 || EltVT==MVT::f16) { else if (EltVT==MVT::f80 || EltVT==MVT::f128 || EltVT==MVT::ppcf128 ||
EltVT==MVT::f16) {
bool ignored; bool ignored;
APFloat apf = APFloat(Val); APFloat apf = APFloat(Val);
apf.convert(*EVTToAPFloatSemantics(EltVT), APFloat::rmNearestTiesToEven, apf.convert(*EVTToAPFloatSemantics(EltVT), APFloat::rmNearestTiesToEven,

View File

@ -0,0 +1,15 @@
; RUN: llc -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s
;
; PR14751: Unsupported type in SelectionDAG::getConstantFP()
define fastcc void @_D3std4math4sqrtFNaNbNfcZc() {
entry:
br i1 undef, label %if, label %else
; CHECK: cmplwi 0, 3, 0
if: ; preds = %entry
store { ppc_fp128, ppc_fp128 } zeroinitializer, { ppc_fp128, ppc_fp128 }* undef
ret void
else: ; preds = %entry
unreachable
}