Move Nucleus statics to implementation side globals.
Bug swiftshader:10
Change-Id: I69105d8287e52f0f0573c45c59958994a56fc0af
Reviewed-on: https://swiftshader-review.googlesource.com/7214
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Reactor/Nucleus.cpp b/src/Reactor/Nucleus.cpp
index 1311488..993ba28 100644
--- a/src/Reactor/Nucleus.cpp
+++ b/src/Reactor/Nucleus.cpp
@@ -58,23 +58,22 @@
extern bool JITEmitDebugInfo;
}
+namespace
+{
+ sw::RoutineManager *routineManager = nullptr;
+ llvm::ExecutionEngine *executionEngine = nullptr;
+ llvm::IRBuilder<> *builder = nullptr;
+ llvm::LLVMContext *context = nullptr;
+ llvm::Module *module = nullptr;
+ llvm::Function *function = nullptr;
+}
+
namespace sw
{
- Optimization optimization[10] = {InstructionCombining, Disabled};
-
using namespace llvm;
-
- RoutineManager *Nucleus::routineManager = 0;
- ExecutionEngine *Nucleus::executionEngine = 0;
- Builder *Nucleus::builder = 0;
- LLVMContext *Nucleus::context = 0;
- Module *Nucleus::module = 0;
- llvm::Function *Nucleus::function = 0;
BackoffLock Nucleus::codegenMutex;
- class Builder : public IRBuilder<>
- {
- };
+ Optimization optimization[10] = {InstructionCombining, Disabled};
Nucleus::Nucleus()
{
@@ -83,13 +82,13 @@
InitializeNativeTarget();
JITEmitDebugInfo = false;
- if(!context)
+ if(!::context)
{
- context = new LLVMContext();
+ ::context = new LLVMContext();
}
- module = new Module("", *context);
- routineManager = new RoutineManager();
+ ::module = new Module("", *::context);
+ ::routineManager = new RoutineManager();
#if defined(__x86_64__)
const char *architecture = "x86-64";
@@ -107,12 +106,12 @@
MAttrs.push_back(CPUID::supportsSSE4_1() ? "+sse41" : "-sse41");
std::string error;
- TargetMachine *targetMachine = EngineBuilder::selectTarget(module, architecture, "", MAttrs, Reloc::Default, CodeModel::JITDefault, &error);
- executionEngine = JIT::createJIT(module, 0, routineManager, CodeGenOpt::Aggressive, true, targetMachine);
+ TargetMachine *targetMachine = EngineBuilder::selectTarget(::module, architecture, "", MAttrs, Reloc::Default, CodeModel::JITDefault, &error);
+ ::executionEngine = JIT::createJIT(::module, 0, ::routineManager, CodeGenOpt::Aggressive, true, targetMachine);
- if(!builder)
+ if(!::builder)
{
- builder = static_cast<Builder*>(new IRBuilder<>(*context));
+ ::builder = new IRBuilder<>(*::context);
#if defined(_WIN32)
HMODULE CodeAnalyst = LoadLibrary("CAJitNtfyLib.dll");
@@ -130,21 +129,21 @@
Nucleus::~Nucleus()
{
- delete executionEngine;
- executionEngine = 0;
+ delete ::executionEngine;
+ ::executionEngine = nullptr;
- routineManager = 0;
- function = 0;
- module = 0;
+ ::routineManager = nullptr;
+ ::function = nullptr;
+ ::module = nullptr;
codegenMutex.unlock();
}
Routine *Nucleus::acquireRoutine(const wchar_t *name, bool runOptimizations)
{
- if(builder->GetInsertBlock()->empty() || !builder->GetInsertBlock()->back().isTerminator())
+ if(::builder->GetInsertBlock()->empty() || !::builder->GetInsertBlock()->back().isTerminator())
{
- Type *type = function->getReturnType();
+ Type *type = ::function->getReturnType();
if(type->isVoidTy())
{
@@ -160,7 +159,7 @@
{
std::string error;
raw_fd_ostream file("llvm-dump-unopt.txt", error);
- module->print(file, 0);
+ ::module->print(file, 0);
}
if(runOptimizations)
@@ -172,11 +171,11 @@
{
std::string error;
raw_fd_ostream file("llvm-dump-opt.txt", error);
- module->print(file, 0);
+ ::module->print(file, 0);
}
- void *entry = executionEngine->getPointerToFunction(function);
- Routine *routine = routineManager->acquireRoutine(entry);
+ void *entry = ::executionEngine->getPointerToFunction(::function);
+ Routine *routine = ::routineManager->acquireRoutine(entry);
if(CodeAnalystLogJITCode)
{
@@ -188,7 +187,7 @@
void Nucleus::optimize()
{
- static PassManager *passManager = 0;
+ static PassManager *passManager = nullptr;
if(!passManager)
{
@@ -198,7 +197,7 @@
// NoInfsFPMath = true;
// NoNaNsFPMath = true;
- passManager->add(new TargetData(*executionEngine->getTargetData()));
+ passManager->add(new TargetData(*::executionEngine->getTargetData()));
passManager->add(createScalarReplAggregatesPass());
for(int pass = 0; pass < 10 && optimization[pass] != Disabled; pass++)
@@ -221,36 +220,13 @@
}
}
- passManager->run(*module);
- }
-
- void Nucleus::setFunction(llvm::Function *function)
- {
- Nucleus::function = function;
-
- builder->SetInsertPoint(BasicBlock::Create(*context, "", function));
- }
-
- Module *Nucleus::getModule()
- {
- return module;
- }
-
- llvm::Function *Nucleus::getFunction()
- {
- return function;
- }
-
- llvm::LLVMContext *Nucleus::getContext()
- {
- return context;
+ passManager->run(*::module);
}
Value *Nucleus::allocateStackVariable(Type *type, int arraySize)
{
// Need to allocate it in the entry block for mem2reg to work
- llvm::Function *function = getFunction();
- BasicBlock &entryBlock = function->getEntryBlock();
+ BasicBlock &entryBlock = ::function->getEntryBlock();
Instruction *declaration;
@@ -270,18 +246,18 @@
BasicBlock *Nucleus::createBasicBlock()
{
- return BasicBlock::Create(*context, "", Nucleus::getFunction());
+ return BasicBlock::Create(*::context, "", ::function);
}
BasicBlock *Nucleus::getInsertBlock()
{
- return builder->GetInsertBlock();
+ return ::builder->GetInsertBlock();
}
void Nucleus::setInsertBlock(BasicBlock *basicBlock)
{
- // assert(builder->GetInsertBlock()->back().isTerminator());
- return builder->SetInsertPoint(basicBlock);
+ // assert(::builder->GetInsertBlock()->back().isTerminator());
+ return ::builder->SetInsertPoint(basicBlock);
}
BasicBlock *Nucleus::getPredecessor(BasicBlock *basicBlock)
@@ -289,18 +265,18 @@
return *pred_begin(basicBlock);
}
- llvm::Function *Nucleus::createFunction(llvm::Type *ReturnType, std::vector<llvm::Type*> &Params)
+ void Nucleus::createFunction(llvm::Type *ReturnType, std::vector<llvm::Type*> &Params)
{
llvm::FunctionType *functionType = llvm::FunctionType::get(ReturnType, Params, false);
- llvm::Function *function = llvm::Function::Create(functionType, llvm::GlobalValue::InternalLinkage, "", Nucleus::getModule());
- function->setCallingConv(llvm::CallingConv::C);
+ ::function = llvm::Function::Create(functionType, llvm::GlobalValue::InternalLinkage, "", ::module);
+ ::function->setCallingConv(llvm::CallingConv::C);
- return function;
+ ::builder->SetInsertPoint(BasicBlock::Create(*::context, "", ::function));
}
- llvm::Value *Nucleus::getArgument(llvm::Function *function, unsigned int index)
+ llvm::Value *Nucleus::getArgument(unsigned int index)
{
- llvm::Function::arg_iterator args = function->arg_begin();
+ llvm::Function::arg_iterator args = ::function->arg_begin();
while(index)
{
@@ -315,384 +291,379 @@
{
x86::emms();
- return builder->CreateRetVoid();
+ return ::builder->CreateRetVoid();
}
Value *Nucleus::createRet(Value *V)
{
x86::emms();
- return builder->CreateRet(V);
+ return ::builder->CreateRet(V);
}
Value *Nucleus::createBr(BasicBlock *dest)
{
- return builder->CreateBr(dest);
+ return ::builder->CreateBr(dest);
}
Value *Nucleus::createCondBr(Value *cond, BasicBlock *ifTrue, BasicBlock *ifFalse)
{
- return builder->CreateCondBr(cond, ifTrue, ifFalse);
+ return ::builder->CreateCondBr(cond, ifTrue, ifFalse);
}
Value *Nucleus::createAdd(Value *lhs, Value *rhs)
{
- return builder->CreateAdd(lhs, rhs);
+ return ::builder->CreateAdd(lhs, rhs);
}
Value *Nucleus::createSub(Value *lhs, Value *rhs)
{
- return builder->CreateSub(lhs, rhs);
+ return ::builder->CreateSub(lhs, rhs);
}
Value *Nucleus::createMul(Value *lhs, Value *rhs)
{
- return builder->CreateMul(lhs, rhs);
+ return ::builder->CreateMul(lhs, rhs);
}
Value *Nucleus::createUDiv(Value *lhs, Value *rhs)
{
- return builder->CreateUDiv(lhs, rhs);
+ return ::builder->CreateUDiv(lhs, rhs);
}
Value *Nucleus::createSDiv(Value *lhs, Value *rhs)
{
- return builder->CreateSDiv(lhs, rhs);
+ return ::builder->CreateSDiv(lhs, rhs);
}
Value *Nucleus::createFAdd(Value *lhs, Value *rhs)
{
- return builder->CreateFAdd(lhs, rhs);
+ return ::builder->CreateFAdd(lhs, rhs);
}
Value *Nucleus::createFSub(Value *lhs, Value *rhs)
{
- return builder->CreateFSub(lhs, rhs);
+ return ::builder->CreateFSub(lhs, rhs);
}
Value *Nucleus::createFMul(Value *lhs, Value *rhs)
{
- return builder->CreateFMul(lhs, rhs);
+ return ::builder->CreateFMul(lhs, rhs);
}
Value *Nucleus::createFDiv(Value *lhs, Value *rhs)
{
- return builder->CreateFDiv(lhs, rhs);
+ return ::builder->CreateFDiv(lhs, rhs);
}
Value *Nucleus::createURem(Value *lhs, Value *rhs)
{
- return builder->CreateURem(lhs, rhs);
+ return ::builder->CreateURem(lhs, rhs);
}
Value *Nucleus::createSRem(Value *lhs, Value *rhs)
{
- return builder->CreateSRem(lhs, rhs);
+ return ::builder->CreateSRem(lhs, rhs);
}
Value *Nucleus::createFRem(Value *lhs, Value *rhs)
{
- return builder->CreateFRem(lhs, rhs);
+ return ::builder->CreateFRem(lhs, rhs);
}
Value *Nucleus::createShl(Value *lhs, Value *rhs)
{
- return builder->CreateShl(lhs, rhs);
+ return ::builder->CreateShl(lhs, rhs);
}
Value *Nucleus::createLShr(Value *lhs, Value *rhs)
{
- return builder->CreateLShr(lhs, rhs);
+ return ::builder->CreateLShr(lhs, rhs);
}
Value *Nucleus::createAShr(Value *lhs, Value *rhs)
{
- return builder->CreateAShr(lhs, rhs);
+ return ::builder->CreateAShr(lhs, rhs);
}
Value *Nucleus::createAnd(Value *lhs, Value *rhs)
{
- return builder->CreateAnd(lhs, rhs);
+ return ::builder->CreateAnd(lhs, rhs);
}
Value *Nucleus::createOr(Value *lhs, Value *rhs)
{
- return builder->CreateOr(lhs, rhs);
+ return ::builder->CreateOr(lhs, rhs);
}
Value *Nucleus::createXor(Value *lhs, Value *rhs)
{
- return builder->CreateXor(lhs, rhs);
+ return ::builder->CreateXor(lhs, rhs);
}
Value *Nucleus::createNeg(Value *V)
{
- return builder->CreateNeg(V);
+ return ::builder->CreateNeg(V);
}
Value *Nucleus::createFNeg(Value *V)
{
- return builder->CreateFNeg(V);
+ return ::builder->CreateFNeg(V);
}
Value *Nucleus::createNot(Value *V)
{
- return builder->CreateNot(V);
+ return ::builder->CreateNot(V);
}
Value *Nucleus::createLoad(Value *ptr, bool isVolatile, unsigned int align)
{
- return builder->Insert(new LoadInst(ptr, "", isVolatile, align));
+ return ::builder->Insert(new LoadInst(ptr, "", isVolatile, align));
}
Value *Nucleus::createStore(Value *value, Value *ptr, bool isVolatile, unsigned int align)
{
- return builder->Insert(new StoreInst(value, ptr, isVolatile, align));
+ return ::builder->Insert(new StoreInst(value, ptr, isVolatile, align));
}
Value *Nucleus::createGEP(Value *ptr, Value *index)
{
- return builder->CreateGEP(ptr, index);
+ return ::builder->CreateGEP(ptr, index);
}
Value *Nucleus::createAtomicAdd(Value *ptr, Value *value)
{
- return builder->CreateAtomicRMW(AtomicRMWInst::Add, ptr, value, SequentiallyConsistent);
+ return ::builder->CreateAtomicRMW(AtomicRMWInst::Add, ptr, value, SequentiallyConsistent);
}
Value *Nucleus::createTrunc(Value *V, Type *destType)
{
- return builder->CreateTrunc(V, destType);
+ return ::builder->CreateTrunc(V, destType);
}
Value *Nucleus::createZExt(Value *V, Type *destType)
{
- return builder->CreateZExt(V, destType);
+ return ::builder->CreateZExt(V, destType);
}
Value *Nucleus::createSExt(Value *V, Type *destType)
{
- return builder->CreateSExt(V, destType);
+ return ::builder->CreateSExt(V, destType);
}
-// Value *Nucleus::createFPToUI(Value *V, Type *destType)
-// {
-// return builder->CreateFPToUI(V, destType);
-// }
-
Value *Nucleus::createFPToSI(Value *V, Type *destType)
{
- return builder->CreateFPToSI(V, destType);
+ return ::builder->CreateFPToSI(V, destType);
}
Value *Nucleus::createUIToFP(Value *V, Type *destType)
{
- return builder->CreateUIToFP(V, destType);
+ return ::builder->CreateUIToFP(V, destType);
}
Value *Nucleus::createSIToFP(Value *V, Type *destType)
{
- return builder->CreateSIToFP(V, destType);
+ return ::builder->CreateSIToFP(V, destType);
}
Value *Nucleus::createFPTrunc(Value *V, Type *destType)
{
- return builder->CreateFPTrunc(V, destType);
+ return ::builder->CreateFPTrunc(V, destType);
}
Value *Nucleus::createFPExt(Value *V, Type *destType)
{
- return builder->CreateFPExt(V, destType);
+ return ::builder->CreateFPExt(V, destType);
}
Value *Nucleus::createPtrToInt(Value *V, Type *destType)
{
- return builder->CreatePtrToInt(V, destType);
+ return ::builder->CreatePtrToInt(V, destType);
}
Value *Nucleus::createIntToPtr(Value *V, Type *destType)
{
- return builder->CreateIntToPtr(V, destType);
+ return ::builder->CreateIntToPtr(V, destType);
}
Value *Nucleus::createBitCast(Value *V, Type *destType)
{
- return builder->CreateBitCast(V, destType);
+ return ::builder->CreateBitCast(V, destType);
}
Value *Nucleus::createIntCast(Value *V, Type *destType, bool isSigned)
{
- return builder->CreateIntCast(V, destType, isSigned);
+ return ::builder->CreateIntCast(V, destType, isSigned);
}
Value *Nucleus::createICmpEQ(Value *lhs, Value *rhs)
{
- return builder->CreateICmpEQ(lhs, rhs);
+ return ::builder->CreateICmpEQ(lhs, rhs);
}
Value *Nucleus::createICmpNE(Value *lhs, Value *rhs)
{
- return builder->CreateICmpNE(lhs, rhs);
+ return ::builder->CreateICmpNE(lhs, rhs);
}
Value *Nucleus::createICmpUGT(Value *lhs, Value *rhs)
{
- return builder->CreateICmpUGT(lhs, rhs);
+ return ::builder->CreateICmpUGT(lhs, rhs);
}
Value *Nucleus::createICmpUGE(Value *lhs, Value *rhs)
{
- return builder->CreateICmpUGE(lhs, rhs);
+ return ::builder->CreateICmpUGE(lhs, rhs);
}
Value *Nucleus::createICmpULT(Value *lhs, Value *rhs)
{
- return builder->CreateICmpULT(lhs, rhs);
+ return ::builder->CreateICmpULT(lhs, rhs);
}
Value *Nucleus::createICmpULE(Value *lhs, Value *rhs)
{
- return builder->CreateICmpULE(lhs, rhs);
+ return ::builder->CreateICmpULE(lhs, rhs);
}
Value *Nucleus::createICmpSGT(Value *lhs, Value *rhs)
{
- return builder->CreateICmpSGT(lhs, rhs);
+ return ::builder->CreateICmpSGT(lhs, rhs);
}
Value *Nucleus::createICmpSGE(Value *lhs, Value *rhs)
{
- return builder->CreateICmpSGE(lhs, rhs);
+ return ::builder->CreateICmpSGE(lhs, rhs);
}
Value *Nucleus::createICmpSLT(Value *lhs, Value *rhs)
{
- return builder->CreateICmpSLT(lhs, rhs);
+ return ::builder->CreateICmpSLT(lhs, rhs);
}
Value *Nucleus::createICmpSLE(Value *lhs, Value *rhs)
{
- return builder->CreateICmpSLE(lhs, rhs);
+ return ::builder->CreateICmpSLE(lhs, rhs);
}
Value *Nucleus::createFCmpOEQ(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpOEQ(lhs, rhs);
+ return ::builder->CreateFCmpOEQ(lhs, rhs);
}
Value *Nucleus::createFCmpOGT(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpOGT(lhs, rhs);
+ return ::builder->CreateFCmpOGT(lhs, rhs);
}
Value *Nucleus::createFCmpOGE(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpOGE(lhs, rhs);
+ return ::builder->CreateFCmpOGE(lhs, rhs);
}
Value *Nucleus::createFCmpOLT(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpOLT(lhs, rhs);
+ return ::builder->CreateFCmpOLT(lhs, rhs);
}
Value *Nucleus::createFCmpOLE(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpOLE(lhs, rhs);
+ return ::builder->CreateFCmpOLE(lhs, rhs);
}
Value *Nucleus::createFCmpONE(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpONE(lhs, rhs);
+ return ::builder->CreateFCmpONE(lhs, rhs);
}
Value *Nucleus::createFCmpORD(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpORD(lhs, rhs);
+ return ::builder->CreateFCmpORD(lhs, rhs);
}
Value *Nucleus::createFCmpUNO(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpUNO(lhs, rhs);
+ return ::builder->CreateFCmpUNO(lhs, rhs);
}
Value *Nucleus::createFCmpUEQ(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpUEQ(lhs, rhs);
+ return ::builder->CreateFCmpUEQ(lhs, rhs);
}
Value *Nucleus::createFCmpUGT(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpUGT(lhs, rhs);
+ return ::builder->CreateFCmpUGT(lhs, rhs);
}
Value *Nucleus::createFCmpUGE(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpUGE(lhs, rhs);
+ return ::builder->CreateFCmpUGE(lhs, rhs);
}
Value *Nucleus::createFCmpULT(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpULT(lhs, rhs);
+ return ::builder->CreateFCmpULT(lhs, rhs);
}
Value *Nucleus::createFCmpULE(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpULE(lhs, rhs);
+ return ::builder->CreateFCmpULE(lhs, rhs);
}
Value *Nucleus::createFCmpUNE(Value *lhs, Value *rhs)
{
- return builder->CreateFCmpULE(lhs, rhs);
+ return ::builder->CreateFCmpULE(lhs, rhs);
}
Value *Nucleus::createCall(Value *callee)
{
- return builder->CreateCall(callee);
+ return ::builder->CreateCall(callee);
}
Value *Nucleus::createCall(Value *callee, Value *arg)
{
- return builder->CreateCall(callee, arg);
+ return ::builder->CreateCall(callee, arg);
}
Value *Nucleus::createCall(Value *callee, Value *arg1, Value *arg2)
{
- return builder->CreateCall2(callee, arg1, arg2);
+ return ::builder->CreateCall2(callee, arg1, arg2);
}
Value *Nucleus::createCall(Value *callee, Value *arg1, Value *arg2, Value *arg3)
{
- return builder->CreateCall3(callee, arg1, arg2, arg3);
+ return ::builder->CreateCall3(callee, arg1, arg2, arg3);
}
Value *Nucleus::createCall(Value *callee, Value *arg1, Value *arg2, Value *arg3, Value *arg4)
{
- return builder->CreateCall4(callee, arg1, arg2, arg3, arg4);
+ return ::builder->CreateCall4(callee, arg1, arg2, arg3, arg4);
}
Value *Nucleus::createExtractElement(Value *vector, int index)
{
- return builder->CreateExtractElement(vector, createConstantInt(index));
+ return ::builder->CreateExtractElement(vector, createConstantInt(index));
}
Value *Nucleus::createInsertElement(Value *vector, Value *element, int index)
{
- return builder->CreateInsertElement(vector, element, createConstantInt(index));
+ return ::builder->CreateInsertElement(vector, element, createConstantInt(index));
}
Value *Nucleus::createShuffleVector(Value *V1, Value *V2, Value *mask)
{
- return builder->CreateShuffleVector(V1, V2, mask);
+ return ::builder->CreateShuffleVector(V1, V2, mask);
}
Value *Nucleus::createSelect(Value *C, Value *ifTrue, Value *ifFalse)
{
- return builder->CreateSelect(C, ifTrue, ifFalse);
+ return ::builder->CreateSelect(C, ifTrue, ifFalse);
}
Value *Nucleus::createSwitch(llvm::Value *V, llvm::BasicBlock *Dest, unsigned NumCases)
{
- return builder->CreateSwitch(V, Dest, NumCases);
+ return ::builder->CreateSwitch(V, Dest, NumCases);
}
void Nucleus::addSwitchCase(llvm::Value *Switch, int Case, llvm::BasicBlock *Branch)
@@ -702,7 +673,7 @@
Value *Nucleus::createUnreachable()
{
- return builder->CreateUnreachable();
+ return ::builder->CreateUnreachable();
}
Value *Nucleus::createSwizzle(Value *val, unsigned char select)
@@ -740,17 +711,17 @@
const llvm::GlobalValue *Nucleus::getGlobalValueAtAddress(void *Addr)
{
- return executionEngine->getGlobalValueAtAddress(Addr);
+ return ::executionEngine->getGlobalValueAtAddress(Addr);
}
void Nucleus::addGlobalMapping(const llvm::GlobalValue *GV, void *Addr)
{
- executionEngine->addGlobalMapping(GV, Addr);
+ ::executionEngine->addGlobalMapping(GV, Addr);
}
llvm::GlobalValue *Nucleus::createGlobalValue(llvm::Type *Ty, bool isConstant, unsigned int Align)
{
- llvm::GlobalValue *global = new llvm::GlobalVariable(*Nucleus::getModule(), Ty, isConstant, llvm::GlobalValue::ExternalLinkage, 0, "");
+ llvm::GlobalValue *global = new llvm::GlobalVariable(*::module, Ty, isConstant, llvm::GlobalValue::ExternalLinkage, 0, "");
global->setAlignment(Align);
return global;
@@ -768,42 +739,42 @@
llvm::ConstantInt *Nucleus::createConstantInt(int64_t i)
{
- return llvm::ConstantInt::get(Type::getInt64Ty(*context), i, true);
+ return llvm::ConstantInt::get(Type::getInt64Ty(*::context), i, true);
}
llvm::ConstantInt *Nucleus::createConstantInt(int i)
{
- return llvm::ConstantInt::get(Type::getInt32Ty(*context), i, true);
+ return llvm::ConstantInt::get(Type::getInt32Ty(*::context), i, true);
}
llvm::ConstantInt *Nucleus::createConstantInt(unsigned int i)
{
- return llvm::ConstantInt::get(Type::getInt32Ty(*context), i, false);
+ return llvm::ConstantInt::get(Type::getInt32Ty(*::context), i, false);
}
llvm::ConstantInt *Nucleus::createConstantBool(bool b)
{
- return llvm::ConstantInt::get(Type::getInt1Ty(*context), b);
+ return llvm::ConstantInt::get(Type::getInt1Ty(*::context), b);
}
llvm::ConstantInt *Nucleus::createConstantByte(signed char i)
{
- return llvm::ConstantInt::get(Type::getInt8Ty(*context), i, true);
+ return llvm::ConstantInt::get(Type::getInt8Ty(*::context), i, true);
}
llvm::ConstantInt *Nucleus::createConstantByte(unsigned char i)
{
- return llvm::ConstantInt::get(Type::getInt8Ty(*context), i, false);
+ return llvm::ConstantInt::get(Type::getInt8Ty(*::context), i, false);
}
llvm::ConstantInt *Nucleus::createConstantShort(short i)
{
- return llvm::ConstantInt::get(Type::getInt16Ty(*context), i, true);
+ return llvm::ConstantInt::get(Type::getInt16Ty(*::context), i, true);
}
llvm::ConstantInt *Nucleus::createConstantShort(unsigned short i)
{
- return llvm::ConstantInt::get(Type::getInt16Ty(*context), i, false);
+ return llvm::ConstantInt::get(Type::getInt16Ty(*::context), i, false);
}
llvm::Constant *Nucleus::createConstantFloat(float x)
@@ -823,7 +794,7 @@
Type *Void::getType()
{
- return Type::getVoidTy(*Nucleus::getContext());
+ return Type::getVoidTy(*::context);
}
LValue::LValue(llvm::Type *type, int arraySize)
@@ -854,7 +825,7 @@
Type *MMX::getType()
{
- return Type::getX86_MMXTy(*Nucleus::getContext());
+ return Type::getX86_MMXTy(*::context);
}
Bool::Bool(Argument<Bool> argument)
@@ -928,7 +899,7 @@
Type *Bool::getType()
{
- return Type::getInt1Ty(*Nucleus::getContext());
+ return Type::getInt1Ty(*::context);
}
Byte::Byte(Argument<Byte> argument)
@@ -1194,7 +1165,7 @@
Type *Byte::getType()
{
- return Type::getInt8Ty(*Nucleus::getContext());
+ return Type::getInt8Ty(*::context);
}
SByte::SByte(Argument<SByte> argument)
@@ -1448,7 +1419,7 @@
Type *SByte::getType()
{
- return Type::getInt8Ty(*Nucleus::getContext());
+ return Type::getInt8Ty(*::context);
}
Short::Short(Argument<Short> argument)
@@ -1695,7 +1666,7 @@
Type *Short::getType()
{
- return Type::getInt16Ty(*Nucleus::getContext());
+ return Type::getInt16Ty(*::context);
}
UShort::UShort(Argument<UShort> argument)
@@ -1949,7 +1920,7 @@
Type *UShort::getType()
{
- return Type::getInt16Ty(*Nucleus::getContext());
+ return Type::getInt16Ty(*::context);
}
Type *Byte4::getType()
@@ -4151,7 +4122,7 @@
Type *Int::getType()
{
- return Type::getInt32Ty(*Nucleus::getContext());
+ return Type::getInt32Ty(*::context);
}
Long::Long(RValue<Int> cast)
@@ -4234,7 +4205,7 @@
Type *Long::getType()
{
- return Type::getInt64Ty(*Nucleus::getContext());
+ return Type::getInt64Ty(*::context);
}
Long1::Long1(const RValue<UInt> cast)
@@ -4620,7 +4591,7 @@
Type *UInt::getType()
{
- return Type::getInt32Ty(*Nucleus::getContext());
+ return Type::getInt32Ty(*::context);
}
// Int2::Int2(RValue<Int> cast)
@@ -6391,7 +6362,7 @@
Type *Float::getType()
{
- return Type::getFloatTy(*Nucleus::getContext());
+ return Type::getFloatTy(*::context);
}
Float2::Float2(RValue<Float4> cast)
@@ -7032,8 +7003,7 @@
RValue<Long> Ticks()
{
- Module *module = Nucleus::getModule();
- llvm::Function *rdtsc = Intrinsic::getDeclaration(module, Intrinsic::readcyclecounter);
+ llvm::Function *rdtsc = Intrinsic::getDeclaration(::module, Intrinsic::readcyclecounter);
return RValue<Long>(Nucleus::createCall(rdtsc));
}
@@ -7045,8 +7015,7 @@
{
RValue<Int> cvtss2si(RValue<Float> val)
{
- Module *module = Nucleus::getModule();
- llvm::Function *cvtss2si = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_cvtss2si);
+ llvm::Function *cvtss2si = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_cvtss2si);
Float4 vector;
vector.x = val;
@@ -7056,16 +7025,14 @@
RValue<Int2> cvtps2pi(RValue<Float4> val)
{
- Module *module = Nucleus::getModule();
- llvm::Function *cvtps2pi = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_cvtps2pi);
+ llvm::Function *cvtps2pi = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_cvtps2pi);
return RValue<Int2>(Nucleus::createCall(cvtps2pi, val.value));
}
RValue<Int2> cvttps2pi(RValue<Float4> val)
{
- Module *module = Nucleus::getModule();
- llvm::Function *cvttps2pi = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_cvttps2pi);
+ llvm::Function *cvttps2pi = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_cvttps2pi);
return RValue<Int2>(Nucleus::createCall(cvttps2pi, val.value));
}
@@ -7074,8 +7041,7 @@
{
if(CPUID::supportsSSE2())
{
- Module *module = Nucleus::getModule();
- llvm::Function *cvtps2dq = Intrinsic::getDeclaration(module, Intrinsic::x86_sse2_cvtps2dq);
+ llvm::Function *cvtps2dq = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse2_cvtps2dq);
return RValue<Int4>(Nucleus::createCall(cvtps2dq, val.value));
}
@@ -7090,8 +7056,7 @@
RValue<Float> rcpss(RValue<Float> val)
{
- Module *module = Nucleus::getModule();
- llvm::Function *rcpss = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_rcp_ss);
+ llvm::Function *rcpss = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_rcp_ss);
Value *vector = Nucleus::createInsertElement(UndefValue::get(Float4::getType()), val.value, 0);
@@ -7100,8 +7065,7 @@
RValue<Float> sqrtss(RValue<Float> val)
{
- Module *module = Nucleus::getModule();
- llvm::Function *sqrtss = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_sqrt_ss);
+ llvm::Function *sqrtss = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_sqrt_ss);
Value *vector = Nucleus::createInsertElement(UndefValue::get(Float4::getType()), val.value, 0);
@@ -7110,8 +7074,7 @@
RValue<Float> rsqrtss(RValue<Float> val)
{
- Module *module = Nucleus::getModule();
- llvm::Function *rsqrtss = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_rsqrt_ss);
+ llvm::Function *rsqrtss = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_rsqrt_ss);
Value *vector = Nucleus::createInsertElement(UndefValue::get(Float4::getType()), val.value, 0);
@@ -7120,48 +7083,42 @@
RValue<Float4> rcpps(RValue<Float4> val)
{
- Module *module = Nucleus::getModule();
- llvm::Function *rcpps = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_rcp_ps);
+ llvm::Function *rcpps = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_rcp_ps);
return RValue<Float4>(Nucleus::createCall(rcpps, val.value));
}
RValue<Float4> sqrtps(RValue<Float4> val)
{
- Module *module = Nucleus::getModule();
- llvm::Function *sqrtps = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_sqrt_ps);
+ llvm::Function *sqrtps = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_sqrt_ps);
return RValue<Float4>(Nucleus::createCall(sqrtps, val.value));
}
RValue<Float4> rsqrtps(RValue<Float4> val)
{
- Module *module = Nucleus::getModule();
- llvm::Function *rsqrtps = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_rsqrt_ps);
+ llvm::Function *rsqrtps = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_rsqrt_ps);
return RValue<Float4>(Nucleus::createCall(rsqrtps, val.value));
}
RValue<Float4> maxps(RValue<Float4> x, RValue<Float4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *maxps = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_max_ps);
+ llvm::Function *maxps = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_max_ps);
return RValue<Float4>(Nucleus::createCall(maxps, x.value, y.value));
}
RValue<Float4> minps(RValue<Float4> x, RValue<Float4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *minps = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_min_ps);
+ llvm::Function *minps = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_min_ps);
return RValue<Float4>(Nucleus::createCall(minps, x.value, y.value));
}
RValue<Float> roundss(RValue<Float> val, unsigned char imm)
{
- Module *module = Nucleus::getModule();
- llvm::Function *roundss = Intrinsic::getDeclaration(module, Intrinsic::x86_sse41_round_ss);
+ llvm::Function *roundss = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse41_round_ss);
Value *undef = UndefValue::get(Float4::getType());
Value *vector = Nucleus::createInsertElement(undef, val.value, 0);
@@ -7181,8 +7138,7 @@
RValue<Float4> roundps(RValue<Float4> val, unsigned char imm)
{
- Module *module = Nucleus::getModule();
- llvm::Function *roundps = Intrinsic::getDeclaration(module, Intrinsic::x86_sse41_round_ps);
+ llvm::Function *roundps = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse41_round_ps);
return RValue<Float4>(Nucleus::createCall(roundps, val.value, Nucleus::createConstantInt(imm)));
}
@@ -7199,8 +7155,7 @@
RValue<Float4> cmpps(RValue<Float4> x, RValue<Float4> y, unsigned char imm)
{
- Module *module = Nucleus::getModule();
- llvm::Function *cmpps = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_cmp_ps);
+ llvm::Function *cmpps = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_cmp_ps);
return RValue<Float4>(Nucleus::createCall(cmpps, x.value, y.value, Nucleus::createConstantByte(imm)));
}
@@ -7247,8 +7202,7 @@
RValue<Float> cmpss(RValue<Float> x, RValue<Float> y, unsigned char imm)
{
- Module *module = Nucleus::getModule();
- llvm::Function *cmpss = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_cmp_ss);
+ llvm::Function *cmpss = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_cmp_ss);
Value *vector1 = Nucleus::createInsertElement(UndefValue::get(Float4::getType()), x.value, 0);
Value *vector2 = Nucleus::createInsertElement(UndefValue::get(Float4::getType()), y.value, 0);
@@ -7298,288 +7252,252 @@
RValue<Int4> pabsd(RValue<Int4> x)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pabsd = Intrinsic::getDeclaration(module, Intrinsic::x86_ssse3_pabs_d_128);
+ llvm::Function *pabsd = Intrinsic::getDeclaration(::module, Intrinsic::x86_ssse3_pabs_d_128);
return RValue<Int4>(Nucleus::createCall(pabsd, x.value));
}
RValue<Short4> paddsw(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *paddsw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_padds_w);
+ llvm::Function *paddsw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_padds_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(paddsw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> psubsw(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psubsw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psubs_w);
+ llvm::Function *psubsw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psubs_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(psubsw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<UShort4> paddusw(RValue<UShort4> x, RValue<UShort4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *paddusw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_paddus_w);
+ llvm::Function *paddusw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_paddus_w);
return As<UShort4>(RValue<MMX>(Nucleus::createCall(paddusw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<UShort4> psubusw(RValue<UShort4> x, RValue<UShort4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psubusw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psubus_w);
+ llvm::Function *psubusw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psubus_w);
return As<UShort4>(RValue<MMX>(Nucleus::createCall(psubusw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<SByte8> paddsb(RValue<SByte8> x, RValue<SByte8> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *paddsb = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_padds_b);
+ llvm::Function *paddsb = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_padds_b);
return As<SByte8>(RValue<MMX>(Nucleus::createCall(paddsb, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<SByte8> psubsb(RValue<SByte8> x, RValue<SByte8> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psubsb = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psubs_b);
+ llvm::Function *psubsb = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psubs_b);
return As<SByte8>(RValue<MMX>(Nucleus::createCall(psubsb, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Byte8> paddusb(RValue<Byte8> x, RValue<Byte8> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *paddusb = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_paddus_b);
+ llvm::Function *paddusb = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_paddus_b);
return As<Byte8>(RValue<MMX>(Nucleus::createCall(paddusb, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Byte8> psubusb(RValue<Byte8> x, RValue<Byte8> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psubusb = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psubus_b);
+ llvm::Function *psubusb = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psubus_b);
return As<Byte8>(RValue<MMX>(Nucleus::createCall(psubusb, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> paddw(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *paddw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_padd_w);
+ llvm::Function *paddw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_padd_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(paddw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> psubw(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psubw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psub_w);
+ llvm::Function *psubw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psub_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(psubw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> pmullw(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmullw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pmull_w);
+ llvm::Function *pmullw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pmull_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(pmullw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> pand(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pand = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pand);
+ llvm::Function *pand = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pand);
return As<Short4>(RValue<MMX>(Nucleus::createCall(pand, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> por(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *por = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_por);
+ llvm::Function *por = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_por);
return As<Short4>(RValue<MMX>(Nucleus::createCall(por, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> pxor(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pxor = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pxor);
+ llvm::Function *pxor = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pxor);
return As<Short4>(RValue<MMX>(Nucleus::createCall(pxor, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> pshufw(RValue<Short4> x, unsigned char y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pshufw = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_pshuf_w);
+ llvm::Function *pshufw = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_pshuf_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(pshufw, As<MMX>(x).value, Nucleus::createConstantByte(y))));
}
RValue<Int2> punpcklwd(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *punpcklwd = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_punpcklwd);
+ llvm::Function *punpcklwd = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_punpcklwd);
return As<Int2>(RValue<MMX>(Nucleus::createCall(punpcklwd, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Int2> punpckhwd(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *punpckhwd = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_punpckhwd);
+ llvm::Function *punpckhwd = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_punpckhwd);
return As<Int2>(RValue<MMX>(Nucleus::createCall(punpckhwd, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> pinsrw(RValue<Short4> x, RValue<Int> y, unsigned int i)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pinsrw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pinsr_w);
+ llvm::Function *pinsrw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pinsr_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(pinsrw, As<MMX>(x).value, y.value, Nucleus::createConstantInt(i))));
}
RValue<Int> pextrw(RValue<Short4> x, unsigned int i)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pextrw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pextr_w);
+ llvm::Function *pextrw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pextr_w);
return RValue<Int>(Nucleus::createCall(pextrw, As<MMX>(x).value, Nucleus::createConstantInt(i)));
}
RValue<Long1> punpckldq(RValue<Int2> x, RValue<Int2> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *punpckldq = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_punpckldq);
+ llvm::Function *punpckldq = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_punpckldq);
return As<Long1>(RValue<MMX>(Nucleus::createCall(punpckldq, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Long1> punpckhdq(RValue<Int2> x, RValue<Int2> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *punpckhdq = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_punpckhdq);
+ llvm::Function *punpckhdq = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_punpckhdq);
return As<Long1>(RValue<MMX>(Nucleus::createCall(punpckhdq, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> punpcklbw(RValue<Byte8> x, RValue<Byte8> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *punpcklbw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_punpcklbw);
+ llvm::Function *punpcklbw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_punpcklbw);
return As<Short4>(RValue<MMX>(Nucleus::createCall(punpcklbw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> punpckhbw(RValue<Byte8> x, RValue<Byte8> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *punpckhbw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_punpckhbw);
+ llvm::Function *punpckhbw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_punpckhbw);
return As<Short4>(RValue<MMX>(Nucleus::createCall(punpckhbw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Byte8> paddb(RValue<Byte8> x, RValue<Byte8> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *paddb = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_padd_b);
+ llvm::Function *paddb = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_padd_b);
return As<Byte8>(RValue<MMX>(Nucleus::createCall(paddb, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Byte8> psubb(RValue<Byte8> x, RValue<Byte8> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psubb = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psub_b);
+ llvm::Function *psubb = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psub_b);
return As<Byte8>(RValue<MMX>(Nucleus::createCall(psubb, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Int2> paddd(RValue<Int2> x, RValue<Int2> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *paddd = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_padd_d);
+ llvm::Function *paddd = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_padd_d);
return As<Int2>(RValue<MMX>(Nucleus::createCall(paddd, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Int2> psubd(RValue<Int2> x, RValue<Int2> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psubd = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psub_d);
+ llvm::Function *psubd = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psub_d);
return As<Int2>(RValue<MMX>(Nucleus::createCall(psubd, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<UShort4> pavgw(RValue<UShort4> x, RValue<UShort4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pavgw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pavg_w);
+ llvm::Function *pavgw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pavg_w);
return As<UShort4>(RValue<MMX>(Nucleus::createCall(pavgw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> pmaxsw(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmaxsw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pmaxs_w);
+ llvm::Function *pmaxsw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pmaxs_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(pmaxsw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> pminsw(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pminsw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pmins_w);
+ llvm::Function *pminsw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pmins_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(pminsw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> pcmpgtw(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pcmpgtw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pcmpgt_w);
+ llvm::Function *pcmpgtw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pcmpgt_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(pcmpgtw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> pcmpeqw(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pcmpeqw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pcmpeq_w);
+ llvm::Function *pcmpeqw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pcmpeq_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(pcmpeqw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Byte8> pcmpgtb(RValue<SByte8> x, RValue<SByte8> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pcmpgtb = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pcmpgt_b);
+ llvm::Function *pcmpgtb = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pcmpgt_b);
return As<Byte8>(RValue<MMX>(Nucleus::createCall(pcmpgtb, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Byte8> pcmpeqb(RValue<Byte8> x, RValue<Byte8> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pcmpeqb = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pcmpeq_b);
+ llvm::Function *pcmpeqb = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pcmpeq_b);
return As<Byte8>(RValue<MMX>(Nucleus::createCall(pcmpeqb, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> packssdw(RValue<Int2> x, RValue<Int2> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *packssdw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_packssdw);
+ llvm::Function *packssdw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_packssdw);
return As<Short4>(RValue<MMX>(Nucleus::createCall(packssdw, As<MMX>(x).value, As<MMX>(y).value)));
}
@@ -7588,8 +7506,7 @@
{
if(CPUID::supportsSSE2())
{
- Module *module = Nucleus::getModule();
- llvm::Function *packssdw = Intrinsic::getDeclaration(module, Intrinsic::x86_sse2_packssdw_128);
+ llvm::Function *packssdw = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse2_packssdw_128);
return RValue<Short8>(Nucleus::createCall(packssdw, x.value, y.value));
}
@@ -7610,16 +7527,14 @@
RValue<SByte8> packsswb(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *packsswb = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_packsswb);
+ llvm::Function *packsswb = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_packsswb);
return As<SByte8>(RValue<MMX>(Nucleus::createCall(packsswb, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Byte8> packuswb(RValue<UShort4> x, RValue<UShort4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *packuswb = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_packuswb);
+ llvm::Function *packuswb = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_packuswb);
return As<Byte8>(RValue<MMX>(Nucleus::createCall(packuswb, As<MMX>(x).value, As<MMX>(y).value)));
}
@@ -7628,8 +7543,7 @@
{
if(CPUID::supportsSSE4_1())
{
- Module *module = Nucleus::getModule();
- llvm::Function *packusdw = Intrinsic::getDeclaration(module, Intrinsic::x86_sse41_packusdw);
+ llvm::Function *packusdw = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse41_packusdw);
return RValue<UShort8>(Nucleus::createCall(packusdw, x.value, y.value));
}
@@ -7642,56 +7556,49 @@
RValue<UShort4> psrlw(RValue<UShort4> x, unsigned char y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psrlw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psrli_w);
+ llvm::Function *psrlw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psrli_w);
return As<UShort4>(RValue<MMX>(Nucleus::createCall(psrlw, As<MMX>(x).value, Nucleus::createConstantInt(y))));
}
RValue<UShort8> psrlw(RValue<UShort8> x, unsigned char y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psrlw = Intrinsic::getDeclaration(module, Intrinsic::x86_sse2_psrli_w);
+ llvm::Function *psrlw = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse2_psrli_w);
return RValue<UShort8>(Nucleus::createCall(psrlw, x.value, Nucleus::createConstantInt(y)));
}
RValue<Short4> psraw(RValue<Short4> x, unsigned char y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psraw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psrai_w);
+ llvm::Function *psraw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psrai_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(psraw, As<MMX>(x).value, Nucleus::createConstantInt(y))));
}
RValue<Short8> psraw(RValue<Short8> x, unsigned char y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psraw = Intrinsic::getDeclaration(module, Intrinsic::x86_sse2_psrai_w);
+ llvm::Function *psraw = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse2_psrai_w);
return RValue<Short8>(Nucleus::createCall(psraw, x.value, Nucleus::createConstantInt(y)));
}
RValue<Short4> psllw(RValue<Short4> x, unsigned char y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psllw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pslli_w);
+ llvm::Function *psllw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pslli_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(psllw, As<MMX>(x).value, Nucleus::createConstantInt(y))));
}
RValue<Short8> psllw(RValue<Short8> x, unsigned char y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psllw = Intrinsic::getDeclaration(module, Intrinsic::x86_sse2_pslli_w);
+ llvm::Function *psllw = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse2_pslli_w);
return RValue<Short8>(Nucleus::createCall(psllw, x.value, Nucleus::createConstantInt(y)));
}
RValue<Int2> pslld(RValue<Int2> x, unsigned char y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pslld = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pslli_d);
+ llvm::Function *pslld = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pslli_d);
return As<Int2>(RValue<MMX>(Nucleus::createCall(pslld, As<MMX>(x).value, Nucleus::createConstantInt(y))));
}
@@ -7700,8 +7607,7 @@
{
if(CPUID::supportsSSE2())
{
- Module *module = Nucleus::getModule();
- llvm::Function *pslld = Intrinsic::getDeclaration(module, Intrinsic::x86_sse2_pslli_d);
+ llvm::Function *pslld = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse2_pslli_d);
return RValue<Int4>(Nucleus::createCall(pslld, x.value, Nucleus::createConstantInt(y)));
}
@@ -7719,8 +7625,7 @@
RValue<Int2> psrad(RValue<Int2> x, unsigned char y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psrad = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psrai_d);
+ llvm::Function *psrad = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psrai_d);
return As<Int2>(RValue<MMX>(Nucleus::createCall(psrad, As<MMX>(x).value, Nucleus::createConstantInt(y))));
}
@@ -7729,8 +7634,7 @@
{
if(CPUID::supportsSSE2())
{
- Module *module = Nucleus::getModule();
- llvm::Function *psrad = Intrinsic::getDeclaration(module, Intrinsic::x86_sse2_psrai_d);
+ llvm::Function *psrad = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse2_psrai_d);
return RValue<Int4>(Nucleus::createCall(psrad, x.value, Nucleus::createConstantInt(y)));
}
@@ -7748,8 +7652,7 @@
RValue<UInt2> psrld(RValue<UInt2> x, unsigned char y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psrld = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psrli_d);
+ llvm::Function *psrld = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psrli_d);
return As<UInt2>(RValue<MMX>(Nucleus::createCall(psrld, As<MMX>(x).value, Nucleus::createConstantInt(y))));
}
@@ -7758,8 +7661,7 @@
{
if(CPUID::supportsSSE2())
{
- Module *module = Nucleus::getModule();
- llvm::Function *psrld = Intrinsic::getDeclaration(module, Intrinsic::x86_sse2_psrli_d);
+ llvm::Function *psrld = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse2_psrli_d);
return RValue<UInt4>(Nucleus::createCall(psrld, x.value, Nucleus::createConstantInt(y)));
}
@@ -7777,144 +7679,126 @@
RValue<UShort4> psrlw(RValue<UShort4> x, RValue<Long1> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psrlw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psrl_w);
+ llvm::Function *psrlw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psrl_w);
return As<UShort4>(RValue<MMX>(Nucleus::createCall(psrlw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> psraw(RValue<Short4> x, RValue<Long1> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psraw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psra_w);
+ llvm::Function *psraw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psra_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(psraw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short4> psllw(RValue<Short4> x, RValue<Long1> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psllw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psll_w);
+ llvm::Function *psllw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psll_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(psllw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Int2> pslld(RValue<Int2> x, RValue<Long1> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pslld = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psll_d);
+ llvm::Function *pslld = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psll_d);
return As<Int2>(RValue<MMX>(Nucleus::createCall(pslld, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<UInt2> psrld(RValue<UInt2> x, RValue<Long1> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psrld = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psrl_d);
+ llvm::Function *psrld = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psrl_d);
return As<UInt2>(RValue<MMX>(Nucleus::createCall(psrld, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Int2> psrad(RValue<Int2> x, RValue<Long1> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *psrld = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_psra_d);
+ llvm::Function *psrld = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_psra_d);
return As<Int2>(RValue<MMX>(Nucleus::createCall(psrld, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Int4> pmaxsd(RValue<Int4> x, RValue<Int4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmaxsd = Intrinsic::getDeclaration(module, Intrinsic::x86_sse41_pmaxsd);
+ llvm::Function *pmaxsd = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse41_pmaxsd);
return RValue<Int4>(Nucleus::createCall(pmaxsd, x.value, y.value));
}
RValue<Int4> pminsd(RValue<Int4> x, RValue<Int4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pminsd = Intrinsic::getDeclaration(module, Intrinsic::x86_sse41_pminsd);
+ llvm::Function *pminsd = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse41_pminsd);
return RValue<Int4>(Nucleus::createCall(pminsd, x.value, y.value));
}
RValue<UInt4> pmaxud(RValue<UInt4> x, RValue<UInt4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmaxud = Intrinsic::getDeclaration(module, Intrinsic::x86_sse41_pmaxud);
+ llvm::Function *pmaxud = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse41_pmaxud);
return RValue<UInt4>(Nucleus::createCall(pmaxud, x.value, y.value));
}
RValue<UInt4> pminud(RValue<UInt4> x, RValue<UInt4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pminud = Intrinsic::getDeclaration(module, Intrinsic::x86_sse41_pminud);
+ llvm::Function *pminud = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse41_pminud);
return RValue<UInt4>(Nucleus::createCall(pminud, x.value, y.value));
}
RValue<Short4> pmulhw(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmulhw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pmulh_w);
+ llvm::Function *pmulhw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pmulh_w);
return As<Short4>(RValue<MMX>(Nucleus::createCall(pmulhw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<UShort4> pmulhuw(RValue<UShort4> x, RValue<UShort4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmulhuw = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pmulhu_w);
+ llvm::Function *pmulhuw = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pmulhu_w);
return As<UShort4>(RValue<MMX>(Nucleus::createCall(pmulhuw, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Int2> pmaddwd(RValue<Short4> x, RValue<Short4> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmaddwd = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pmadd_wd);
+ llvm::Function *pmaddwd = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pmadd_wd);
return As<Int2>(RValue<MMX>(Nucleus::createCall(pmaddwd, As<MMX>(x).value, As<MMX>(y).value)));
}
RValue<Short8> pmulhw(RValue<Short8> x, RValue<Short8> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmulhw = Intrinsic::getDeclaration(module, Intrinsic::x86_sse2_pmulh_w);
+ llvm::Function *pmulhw = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse2_pmulh_w);
return RValue<Short8>(Nucleus::createCall(pmulhw, x.value, y.value));
}
RValue<UShort8> pmulhuw(RValue<UShort8> x, RValue<UShort8> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmulhuw = Intrinsic::getDeclaration(module, Intrinsic::x86_sse2_pmulhu_w);
+ llvm::Function *pmulhuw = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse2_pmulhu_w);
return RValue<UShort8>(Nucleus::createCall(pmulhuw, x.value, y.value));
}
RValue<Int4> pmaddwd(RValue<Short8> x, RValue<Short8> y)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmaddwd = Intrinsic::getDeclaration(module, Intrinsic::x86_sse2_pmadd_wd);
+ llvm::Function *pmaddwd = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse2_pmadd_wd);
return RValue<Int4>(Nucleus::createCall(pmaddwd, x.value, y.value));
}
RValue<Int> movmskps(RValue<Float4> x)
{
- Module *module = Nucleus::getModule();
- llvm::Function *movmskps = Intrinsic::getDeclaration(module, Intrinsic::x86_sse_movmsk_ps);
+ llvm::Function *movmskps = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse_movmsk_ps);
return RValue<Int>(Nucleus::createCall(movmskps, x.value));
}
RValue<Int> pmovmskb(RValue<Byte8> x)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmovmskb = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_pmovmskb);
+ llvm::Function *pmovmskb = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_pmovmskb);
return RValue<Int>(Nucleus::createCall(pmovmskb, As<MMX>(x).value));
}
@@ -7941,40 +7825,35 @@
RValue<Int4> pmovzxbd(RValue<Int4> x)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmovzxbd = Intrinsic::getDeclaration(module, Intrinsic::x86_sse41_pmovzxbd);
+ llvm::Function *pmovzxbd = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse41_pmovzxbd);
return RValue<Int4>(Nucleus::createCall(pmovzxbd, Nucleus::createBitCast(x.value, Byte16::getType())));
}
RValue<Int4> pmovsxbd(RValue<Int4> x)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmovsxbd = Intrinsic::getDeclaration(module, Intrinsic::x86_sse41_pmovsxbd);
+ llvm::Function *pmovsxbd = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse41_pmovsxbd);
return RValue<Int4>(Nucleus::createCall(pmovsxbd, Nucleus::createBitCast(x.value, SByte16::getType())));
}
RValue<Int4> pmovzxwd(RValue<Int4> x)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmovzxwd = Intrinsic::getDeclaration(module, Intrinsic::x86_sse41_pmovzxwd);
+ llvm::Function *pmovzxwd = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse41_pmovzxwd);
return RValue<Int4>(Nucleus::createCall(pmovzxwd, Nucleus::createBitCast(x.value, UShort8::getType())));
}
RValue<Int4> pmovsxwd(RValue<Int4> x)
{
- Module *module = Nucleus::getModule();
- llvm::Function *pmovsxwd = Intrinsic::getDeclaration(module, Intrinsic::x86_sse41_pmovsxwd);
+ llvm::Function *pmovsxwd = Intrinsic::getDeclaration(::module, Intrinsic::x86_sse41_pmovsxwd);
return RValue<Int4>(Nucleus::createCall(pmovsxwd, Nucleus::createBitCast(x.value, Short8::getType())));
}
void emms()
{
- Module *module = Nucleus::getModule();
- llvm::Function *emms = Intrinsic::getDeclaration(module, Intrinsic::x86_mmx_emms);
+ llvm::Function *emms = Intrinsic::getDeclaration(::module, Intrinsic::x86_mmx_emms);
Nucleus::createCall(emms);
}
diff --git a/src/Reactor/Nucleus.hpp b/src/Reactor/Nucleus.hpp
index 56b7210..6124508 100644
--- a/src/Reactor/Nucleus.hpp
+++ b/src/Reactor/Nucleus.hpp
@@ -30,19 +30,12 @@
namespace llvm
{
- class Function;
- class Module;
class BasicBlock;
class Value;
class Constant;
class ConstantInt;
- class ConstantFP;
class Type;
- class Argument;
- class GlobalVariable;
class GlobalValue;
- class ExecutionEngine;
- class LLVMContext;
}
namespace sw
@@ -78,20 +71,14 @@
Routine *acquireRoutine(const wchar_t *name, bool runOptimizations = true);
- static void setFunction(llvm::Function *function);
-
- static llvm::Module *getModule();
- static llvm::Function *getFunction();
- static llvm::LLVMContext *getContext();
-
static llvm::Value *allocateStackVariable(llvm::Type *type, int arraySize = 0);
static llvm::BasicBlock *createBasicBlock();
static llvm::BasicBlock *getInsertBlock();
static void setInsertBlock(llvm::BasicBlock *basicBlock);
static llvm::BasicBlock *getPredecessor(llvm::BasicBlock *basicBlock);
- static llvm::Function *createFunction(llvm::Type *ReturnType, std::vector<llvm::Type*> &Params);
- static llvm::Value *getArgument(llvm::Function *function, unsigned int index);
+ static void createFunction(llvm::Type *ReturnType, std::vector<llvm::Type*> &Params);
+ static llvm::Value *getArgument(unsigned int index);
// Terminators
static llvm::Value *createRetVoid();
@@ -134,7 +121,6 @@
static llvm::Value *createTrunc(llvm::Value *V, llvm::Type *destType);
static llvm::Value *createZExt(llvm::Value *V, llvm::Type *destType);
static llvm::Value *createSExt(llvm::Value *V, llvm::Type *destType);
- // static llvm::Value *createFPToUI(llvm::Value *V, llvm::Type *destType);
static llvm::Value *createFPToSI(llvm::Value *V, llvm::Type *destType);
static llvm::Value *createUIToFP(llvm::Value *V, llvm::Type *destType);
static llvm::Value *createSIToFP(llvm::Value *V, llvm::Type *destType);
@@ -216,13 +202,6 @@
private:
void optimize();
- static llvm::ExecutionEngine *executionEngine;
- static Builder *builder;
- static llvm::Function *function;
- static llvm::LLVMContext *context;
- static llvm::Module *module;
- static RoutineManager *routineManager;
-
static BackoffLock codegenMutex;
};
@@ -2519,7 +2498,7 @@
template<int index>
Argument<typename ArgI<index, Arguments...>::Type> Arg() const
{
- llvm::Value *arg = Nucleus::getArgument(function, index);
+ llvm::Value *arg = Nucleus::getArgument(index);
return Argument<typename ArgI<index, Arguments...>::Type>(arg);
}
@@ -2527,7 +2506,6 @@
protected:
Nucleus *core;
- llvm::Function *function;
std::vector<llvm::Type*> arguments;
};
@@ -2988,8 +2966,7 @@
}
}
- function = Nucleus::createFunction(Return::getType(), arguments);
- Nucleus::setFunction(function);
+ Nucleus::createFunction(Return::getType(), arguments);
}
template<typename Return, typename... Arguments>