Deleted Added
full compact
ExecutionEngine.cpp (193323) ExecutionEngine.cpp (193574)
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:
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::FAdd:
576 case Instruction::Sub:
577 case Instruction::Sub:
578 case Instruction::FSub:
577 case Instruction::Mul:
579 case Instruction::Mul:
580 case Instruction::FMul:
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();
581 case Instruction::UDiv:
582 case Instruction::SDiv:
583 case Instruction::URem:
584 case Instruction::SRem:
585 case Instruction::And:
586 case Instruction::Or:
587 case Instruction::Xor: {
588 GenericValue LHS = getConstantValue(Op0);

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

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

--- 353 unchanged lines hidden ---