Home | History | Annotate | Download | only in ExecutionEngine

Lines Matching refs:GV

88   GVMemoryBlock(const GlobalVariable *GV)
89 : CallbackVH(const_cast<GlobalVariable*>(GV)) {}
94 static char *Create(const GlobalVariable *GV, const TargetData& TD) {
95 Type *ElTy = GV->getType()->getElementType();
99 TD.getPreferredAlignment(GV))
101 new(RawMemory) GVMemoryBlock(GV);
115 char *ExecutionEngine::getMemoryForGV(const GlobalVariable *GV) {
116 return GVMemoryBlock::Create(GV, *getTargetData());
159 void ExecutionEngine::addGlobalMapping(const GlobalValue *GV, void *Addr) {
162 DEBUG(dbgs() << "JIT: Map \'" << GV->getName()
164 void *&CurVal = EEState.getGlobalAddressMap(locked)[GV];
172 assert((V == 0 || GV == 0) && "GlobalMapping already established!");
173 V = GV;
194 void *ExecutionEngine::updateGlobalMapping(const GlobalValue *GV, void *Addr) {
202 return EEState.RemoveMapping(locked, GV);
204 void *&CurVal = Map[GV];
215 assert((V == 0 || GV == 0) && "GlobalMapping already established!");
216 V = GV;
221 void *ExecutionEngine::getPointerToGlobalIfAvailable(const GlobalValue *GV) {
225 EEState.getGlobalAddressMap(locked).find(GV);
300 GlobalVariable *GV = module->getNamedGlobal(Name);
306 if (!GV || GV->isDeclaration() || GV->hasLocalLinkage()) return;
310 ConstantArray *InitList = dyn_cast<ConstantArray>(GV->getInitializer());
512 void *ExecutionEngine::getPointerToGlobal(const GlobalValue *GV) {
513 if (Function *F = const_cast<Function*>(dyn_cast<Function>(GV)))
517 if (void *P = EEState.getGlobalAddressMap(locked)[GV])
522 const_cast<GlobalVariable *>(dyn_cast<GlobalVariable>(GV)))
527 return EEState.getGlobalAddressMap(locked)[GV];
566 GenericValue GV = getConstantValue(Op0);
568 GV.IntVal = GV.IntVal.trunc(BitWidth);
569 return GV;
572 GenericValue GV = getConstantValue(Op0);
574 GV.IntVal = GV.IntVal.zext(BitWidth);
575 return GV;
578 GenericValue GV = getConstantValue(Op0);
580 GV.IntVal = GV.IntVal.sext(BitWidth);
581 return GV;
585 GenericValue GV = getConstantValue(Op0);
586 GV.FloatVal = float(GV.DoubleVal);
587 return GV;
591 GenericValue GV = getConstantValue(Op0);
592 GV.DoubleVal = double(GV.FloatVal);
593 return GV;
596 GenericValue GV = getConstantValue(Op0);
598 GV.FloatVal = float(GV.IntVal.roundToDouble());
600 GV.DoubleVal = GV.IntVal.roundToDouble();
603 (void)apf.convertFromAPInt(GV.IntVal,
606 GV.IntVal = apf.bitcastToAPInt();
608 return GV;
611 GenericValue GV = getConstantValue(Op0);
613 GV.FloatVal = float(GV.IntVal.signedRoundToDouble());
615 GV.DoubleVal = GV.IntVal.signedRoundToDouble();
618 (void)apf.convertFromAPInt(GV.IntVal,
621 GV.IntVal = apf.bitcastToAPInt();
623 return GV;
627 GenericValue GV = getConstantValue(Op0);
630 GV.IntVal = APIntOps::RoundFloatToAPInt(GV.FloatVal, BitWidth);
632 GV.IntVal = APIntOps::RoundDoubleToAPInt(GV.DoubleVal, BitWidth);
634 APFloat apf = APFloat(GV.IntVal);
640 GV.IntVal = v; // endian?
642 return GV;
645 GenericValue GV = getConstantValue(Op0);
647 GV.IntVal = APInt(PtrWidth, uintptr_t(GV.PointerVal));
648 return GV;
651 GenericValue GV = getConstantValue(Op0);
653 if (PtrWidth != GV.IntVal.getBitWidth())
654 GV.IntVal = GV.IntVal.zextOrTrunc(PtrWidth);
655 assert(GV.IntVal.getBitWidth() <= 64 && "Bad pointer width");
656 GV.PointerVal = PointerTy(uintptr_t(GV.IntVal.getZExtValue()));
657 return GV;
660 GenericValue GV = getConstantValue(Op0);
667 GV.FloatVal = GV.IntVal.bitsToFloat();
669 GV.DoubleVal = GV.IntVal.bitsToDouble();
673 GV.IntVal = APInt::floatToBits(GV.FloatVal);
677 GV.IntVal = APInt::doubleToBits(GV.DoubleVal);
683 return GV;
700 GenericValue GV;
706 case Instruction::Add: GV.IntVal = LHS.IntVal + RHS.IntVal; break;
707 case Instruction::Sub: GV.IntVal = LHS.IntVal - RHS.IntVal; break;
708 case Instruction::Mul: GV.IntVal = LHS.IntVal * RHS.IntVal; break;
709 case Instruction::UDiv:GV.IntVal = LHS.IntVal.udiv(RHS.IntVal); break;
710 case Instruction::SDiv:GV.IntVal = LHS.IntVal.sdiv(RHS.IntVal); break;
711 case Instruction::URem:GV.IntVal = LHS.IntVal.urem(RHS.IntVal); break;
712 case Instruction::SRem:GV.IntVal = LHS.IntVal.srem(RHS.IntVal); break;
713 case Instruction::And: GV.IntVal = LHS.IntVal & RHS.IntVal; break;
714 case Instruction::Or: GV.IntVal = LHS.IntVal | RHS.IntVal; break;
715 case Instruction::Xor: GV.IntVal = LHS.IntVal ^ RHS.IntVal; break;
722 GV.FloatVal = LHS.FloatVal + RHS.FloatVal; break;
724 GV.FloatVal = LHS.FloatVal - RHS.FloatVal; break;
726 GV.FloatVal = LHS.FloatVal * RHS.FloatVal; break;
728 GV.FloatVal = LHS.FloatVal / RHS.FloatVal; break;
730 GV.FloatVal = std::fmod(LHS.FloatVal,RHS.FloatVal); break;
737 GV.DoubleVal = LHS.DoubleVal + RHS.DoubleVal; break;
739 GV.DoubleVal = LHS.DoubleVal - RHS.DoubleVal; break;
741 GV.DoubleVal = LHS.DoubleVal * RHS.DoubleVal; break;
743 GV.DoubleVal = LHS.DoubleVal / RHS.DoubleVal; break;
745 GV.DoubleVal = std::fmod(LHS.DoubleVal,RHS.DoubleVal); break;
756 GV.IntVal = apfLHS.bitcastToAPInt();
760 GV.IntVal = apfLHS.bitcastToAPInt();
764 GV.IntVal = apfLHS.bitcastToAPInt();
768 GV.IntVal = apfLHS.bitcastToAPInt();
772 GV.IntVal = apfLHS.bitcastToAPInt();
778 return GV;
812 else if (const GlobalVariable *GV = dyn_cast<GlobalVariable>(C))
813 Result = PTOGV(getOrEmitGlobalVariable(const_cast<GlobalVariable*>(GV)));
1021 const GlobalValue *GV = I;
1022 if (GV->hasLocalLinkage() || GV->isDeclaration() ||
1023 GV->hasAppendingLinkage() || !GV->hasName())
1027 LinkedGlobalsMap[std::make_pair(GV->getName(), GV->getType())];
1032 GVEntry = GV;
1044 if (GV->hasExternalLinkage() || GVEntry->hasExternalWeakLinkage())
1045 GVEntry = GV;
1086 const GlobalValue *GV = NonCanonicalGlobals[i];
1088 LinkedGlobalsMap[std::make_pair(GV->getName(), GV->getType())];
1091 addGlobalMapping(GV, Ptr);
1115 void ExecutionEngine::EmitGlobalVariable(const GlobalVariable *GV) {
1116 void *GA = getPointerToGlobalIfAvailable(GV);
1120 GA = getMemoryForGV(GV);
1121 addGlobalMapping(GV, GA);
1125 if (!GV->isThreadLocal())
1126 InitializeMemory(GV->getInitializer(), GA);
1128 Type *ElTy = GV->getType()->getElementType();