forked from OSchip/llvm-project
InstCombine: APFloat can't perform arithmetic on PPC double doubles, don't even try.
Thanks Eli! llvm-svn: 128676
This commit is contained in:
parent
d20c8d1a17
commit
5291054ef1
|
@ -2769,6 +2769,10 @@ Instruction *InstCombiner::visitFCmpInst(FCmpInst &I) {
|
|||
if (!RHSF)
|
||||
break;
|
||||
|
||||
// We can't convert a PPC double double.
|
||||
if (RHSF->getType()->isPPC_FP128Ty())
|
||||
break;
|
||||
|
||||
const fltSemantics *Sem;
|
||||
// FIXME: This shouldn't be here.
|
||||
if (LHSExt->getSrcTy()->isFloatTy())
|
||||
|
@ -2779,8 +2783,6 @@ Instruction *InstCombiner::visitFCmpInst(FCmpInst &I) {
|
|||
Sem = &APFloat::IEEEquad;
|
||||
else if (LHSExt->getSrcTy()->isX86_FP80Ty())
|
||||
Sem = &APFloat::x87DoubleExtended;
|
||||
else if (LHSExt->getSrcTy()->isPPC_FP128Ty())
|
||||
Sem = &APFloat::PPCDoubleDouble;
|
||||
else
|
||||
break;
|
||||
|
||||
|
|
|
@ -49,3 +49,12 @@ define i1 @test6(float %x, float %y) nounwind {
|
|||
; CHECK: @test6
|
||||
; CHECK-NEXT: fcmp ogt float %x, %y
|
||||
}
|
||||
|
||||
define i1 @test7(float %x) nounwind readnone ssp noredzone {
|
||||
%ext = fpext float %x to ppc_fp128
|
||||
%cmp = fcmp ogt ppc_fp128 %ext, 0xM00000000000000000000000000000000
|
||||
ret i1 %cmp
|
||||
; Can't convert ppc_fp128
|
||||
; CHECK: @test7
|
||||
; CHECK-NEXT: fpext float %x to ppc_fp128
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue