forked from OSchip/llvm-project
[Sparc] Respect hasHardQuad parameter correctly when lowering SINT_TO_FP with fp128 operand.
llvm-svn: 192015
This commit is contained in:
parent
9e429ae779
commit
30781deb1c
|
@ -2046,7 +2046,7 @@ static SDValue LowerSINT_TO_FP(SDValue Op, SelectionDAG &DAG,
|
|||
assert(Op.getOperand(0).getValueType() == MVT::i32);
|
||||
SDValue Tmp = DAG.getNode(ISD::BITCAST, dl, MVT::f32, Op.getOperand(0));
|
||||
// Convert the int value to FP in an FP register.
|
||||
if (Op.getValueType() == MVT::f128 && hasHardQuad)
|
||||
if (Op.getValueType() == MVT::f128 && !hasHardQuad)
|
||||
return TLI.LowerF128Op(Op, DAG,
|
||||
TLI.getLibcallName(RTLIB::SINTTOFP_I32_F128), 1);
|
||||
return DAG.getNode(SPISD::ITOF, dl, Op.getValueType(), Tmp);
|
||||
|
|
|
@ -113,3 +113,16 @@ entry:
|
|||
}
|
||||
|
||||
declare fp128 @llvm.fabs.f128(fp128) nounwind readonly
|
||||
|
||||
; HARD-LABEL: int_to_f128
|
||||
; HARD: fitoq
|
||||
|
||||
; SOFT-LABEL: int_to_f128
|
||||
; SOFT: _Q_itoq
|
||||
|
||||
define void @int_to_f128(fp128* noalias sret %scalar.result, i32 %i) {
|
||||
entry:
|
||||
%0 = sitofp i32 %i to fp128
|
||||
store fp128 %0, fp128* %scalar.result, align 8
|
||||
ret void
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue