mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-13 14:35:54 +00:00
Disable some compile-time optimizations on PPC
long double. llvm-svn: 42958
This commit is contained in:
parent
f38341e4a6
commit
4cbce377c6
@ -965,6 +965,9 @@ SDOperand SelectionDAG::FoldSetCC(MVT::ValueType VT, SDOperand N1,
|
||||
}
|
||||
if (ConstantFPSDNode *N1C = dyn_cast<ConstantFPSDNode>(N1.Val))
|
||||
if (ConstantFPSDNode *N2C = dyn_cast<ConstantFPSDNode>(N2.Val)) {
|
||||
// No compile time operations on this type yet.
|
||||
if (N1C->getValueType(0) == MVT::ppcf128)
|
||||
return SDOperand();
|
||||
|
||||
APFloat::cmpResult R = N1C->getValueAPF().compare(N2C->getValueAPF());
|
||||
switch (Cond) {
|
||||
|
@ -149,6 +149,9 @@ Constant *llvm::ConstantFoldCastInstruction(unsigned opc, const Constant *V,
|
||||
return Constant::getNullValue(DestTy);
|
||||
return UndefValue::get(DestTy);
|
||||
}
|
||||
// No compile-time operations on this type yet.
|
||||
if (V->getType() == Type::PPC_FP128Ty || DestTy == Type::PPC_FP128Ty)
|
||||
return 0;
|
||||
|
||||
// If the cast operand is a constant expression, there's a few things we can
|
||||
// do to try to simplify it.
|
||||
@ -808,6 +811,11 @@ static FCmpInst::Predicate evaluateFCmpRelation(const Constant *V1,
|
||||
const Constant *V2) {
|
||||
assert(V1->getType() == V2->getType() &&
|
||||
"Cannot compare values of different types!");
|
||||
|
||||
// No compile-time operations on this type yet.
|
||||
if (V1->getType() == Type::PPC_FP128Ty)
|
||||
return FCmpInst::BAD_FCMP_PREDICATE;
|
||||
|
||||
// Handle degenerate case quickly
|
||||
if (V1 == V2) return FCmpInst::FCMP_OEQ;
|
||||
|
||||
@ -1095,6 +1103,10 @@ Constant *llvm::ConstantFoldCompareInstruction(unsigned short pred,
|
||||
if (isa<UndefValue>(C1) || isa<UndefValue>(C2))
|
||||
return UndefValue::get(Type::Int1Ty);
|
||||
|
||||
// No compile-time operations on this type yet.
|
||||
if (C1->getType() == Type::PPC_FP128Ty)
|
||||
return 0;
|
||||
|
||||
// icmp eq/ne(null,GV) -> false/true
|
||||
if (C1->isNullValue()) {
|
||||
if (const GlobalValue *GV = dyn_cast<GlobalValue>(C2))
|
||||
|
Loading…
Reference in New Issue
Block a user