Deleted Added
sdiff udiff text old ( 193323 ) new ( 193574 )
full compact
1//===-- ExecutionEngine.cpp - Common Implementation shared by EEs ---------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//

--- 559 unchanged lines hidden (view full) ---

568 break;
569 case Type::PointerTyID:
570 assert(isa<PointerType>(DestTy) && "Invalid bitcast");
571 break; // getConstantValue(Op0) above already converted it
572 }
573 return GV;
574 }
575 case Instruction::Add:
576 case Instruction::Sub:
577 case Instruction::Mul:
578 case Instruction::UDiv:
579 case Instruction::SDiv:
580 case Instruction::URem:
581 case Instruction::SRem:
582 case Instruction::And:
583 case Instruction::Or:
584 case Instruction::Xor: {
585 GenericValue LHS = getConstantValue(Op0);

--- 14 unchanged lines hidden (view full) ---

600 case Instruction::And: GV.IntVal = LHS.IntVal & RHS.IntVal; break;
601 case Instruction::Or: GV.IntVal = LHS.IntVal | RHS.IntVal; break;
602 case Instruction::Xor: GV.IntVal = LHS.IntVal ^ RHS.IntVal; break;
603 }
604 break;
605 case Type::FloatTyID:
606 switch (CE->getOpcode()) {
607 default: assert(0 && "Invalid float opcode"); abort();
608 case Instruction::Add:
609 GV.FloatVal = LHS.FloatVal + RHS.FloatVal; break;
610 case Instruction::Sub:
611 GV.FloatVal = LHS.FloatVal - RHS.FloatVal; break;
612 case Instruction::Mul:
613 GV.FloatVal = LHS.FloatVal * RHS.FloatVal; break;
614 case Instruction::FDiv:
615 GV.FloatVal = LHS.FloatVal / RHS.FloatVal; break;
616 case Instruction::FRem:
617 GV.FloatVal = ::fmodf(LHS.FloatVal,RHS.FloatVal); break;
618 }
619 break;
620 case Type::DoubleTyID:
621 switch (CE->getOpcode()) {
622 default: assert(0 && "Invalid double opcode"); abort();
623 case Instruction::Add:
624 GV.DoubleVal = LHS.DoubleVal + RHS.DoubleVal; break;
625 case Instruction::Sub:
626 GV.DoubleVal = LHS.DoubleVal - RHS.DoubleVal; break;
627 case Instruction::Mul:
628 GV.DoubleVal = LHS.DoubleVal * RHS.DoubleVal; break;
629 case Instruction::FDiv:
630 GV.DoubleVal = LHS.DoubleVal / RHS.DoubleVal; break;
631 case Instruction::FRem:
632 GV.DoubleVal = ::fmod(LHS.DoubleVal,RHS.DoubleVal); break;
633 }
634 break;
635 case Type::X86_FP80TyID:
636 case Type::PPC_FP128TyID:
637 case Type::FP128TyID: {
638 APFloat apfLHS = APFloat(LHS.IntVal);
639 switch (CE->getOpcode()) {
640 default: assert(0 && "Invalid long double opcode"); abort();
641 case Instruction::Add:
642 apfLHS.add(APFloat(RHS.IntVal), APFloat::rmNearestTiesToEven);
643 GV.IntVal = apfLHS.bitcastToAPInt();
644 break;
645 case Instruction::Sub:
646 apfLHS.subtract(APFloat(RHS.IntVal), APFloat::rmNearestTiesToEven);
647 GV.IntVal = apfLHS.bitcastToAPInt();
648 break;
649 case Instruction::Mul:
650 apfLHS.multiply(APFloat(RHS.IntVal), APFloat::rmNearestTiesToEven);
651 GV.IntVal = apfLHS.bitcastToAPInt();
652 break;
653 case Instruction::FDiv:
654 apfLHS.divide(APFloat(RHS.IntVal), APFloat::rmNearestTiesToEven);
655 GV.IntVal = apfLHS.bitcastToAPInt();
656 break;
657 case Instruction::FRem:

--- 353 unchanged lines hidden ---