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 --- |