Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp
Show First 20 Lines • Show All 73 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintF64Fn(ModuleOp moduleOp) { | LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintF64Fn(ModuleOp moduleOp) { | ||||
return lookupOrCreateFn(moduleOp, kPrintF64, | return lookupOrCreateFn(moduleOp, kPrintF64, | ||||
Float64Type::get(moduleOp->getContext()), | Float64Type::get(moduleOp->getContext()), | ||||
LLVM::LLVMVoidType::get(moduleOp->getContext())); | LLVM::LLVMVoidType::get(moduleOp->getContext())); | ||||
} | } | ||||
LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintStrFn(ModuleOp moduleOp) { | static LLVM::LLVMPointerType getCharPtr(MLIRContext *context, | ||||
return lookupOrCreateFn( | bool opaquePointers) { | ||||
moduleOp, kPrintStr, | if (opaquePointers) | ||||
LLVM::LLVMPointerType::get(IntegerType::get(moduleOp->getContext(), 8)), | return LLVM::LLVMPointerType::get(context); | ||||
return LLVM::LLVMPointerType::get(IntegerType::get(context, 8)); | |||||
} | |||||
static LLVM::LLVMPointerType getVoidPtr(MLIRContext *context, | |||||
bool opaquePointers) { | |||||
// A char pointer and void ptr are the same in LLVM IR. | |||||
return getCharPtr(context, opaquePointers); | |||||
} | |||||
LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintStrFn(ModuleOp moduleOp, | |||||
bool opaquePointers) { | |||||
return lookupOrCreateFn(moduleOp, kPrintStr, | |||||
getCharPtr(moduleOp->getContext(), opaquePointers), | |||||
LLVM::LLVMVoidType::get(moduleOp->getContext())); | LLVM::LLVMVoidType::get(moduleOp->getContext())); | ||||
} | } | ||||
LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintOpenFn(ModuleOp moduleOp) { | LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintOpenFn(ModuleOp moduleOp) { | ||||
return lookupOrCreateFn(moduleOp, kPrintOpen, {}, | return lookupOrCreateFn(moduleOp, kPrintOpen, {}, | ||||
LLVM::LLVMVoidType::get(moduleOp->getContext())); | LLVM::LLVMVoidType::get(moduleOp->getContext())); | ||||
} | } | ||||
LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintCloseFn(ModuleOp moduleOp) { | LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintCloseFn(ModuleOp moduleOp) { | ||||
return lookupOrCreateFn(moduleOp, kPrintClose, {}, | return lookupOrCreateFn(moduleOp, kPrintClose, {}, | ||||
LLVM::LLVMVoidType::get(moduleOp->getContext())); | LLVM::LLVMVoidType::get(moduleOp->getContext())); | ||||
} | } | ||||
LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintCommaFn(ModuleOp moduleOp) { | LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintCommaFn(ModuleOp moduleOp) { | ||||
return lookupOrCreateFn(moduleOp, kPrintComma, {}, | return lookupOrCreateFn(moduleOp, kPrintComma, {}, | ||||
LLVM::LLVMVoidType::get(moduleOp->getContext())); | LLVM::LLVMVoidType::get(moduleOp->getContext())); | ||||
} | } | ||||
LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintNewlineFn(ModuleOp moduleOp) { | LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreatePrintNewlineFn(ModuleOp moduleOp) { | ||||
return lookupOrCreateFn(moduleOp, kPrintNewline, {}, | return lookupOrCreateFn(moduleOp, kPrintNewline, {}, | ||||
LLVM::LLVMVoidType::get(moduleOp->getContext())); | LLVM::LLVMVoidType::get(moduleOp->getContext())); | ||||
} | } | ||||
LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateMallocFn(ModuleOp moduleOp, | LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateMallocFn(ModuleOp moduleOp, | ||||
Type indexType) { | Type indexType, | ||||
bool opaquePointers) { | |||||
return LLVM::lookupOrCreateFn( | return LLVM::lookupOrCreateFn( | ||||
moduleOp, kMalloc, indexType, | moduleOp, kMalloc, indexType, | ||||
LLVM::LLVMPointerType::get(IntegerType::get(moduleOp->getContext(), 8))); | getVoidPtr(moduleOp->getContext(), opaquePointers)); | ||||
} | } | ||||
LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateAlignedAllocFn(ModuleOp moduleOp, | LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateAlignedAllocFn(ModuleOp moduleOp, | ||||
Type indexType) { | Type indexType, | ||||
bool opaquePointers) { | |||||
return LLVM::lookupOrCreateFn( | return LLVM::lookupOrCreateFn( | ||||
moduleOp, kAlignedAlloc, {indexType, indexType}, | moduleOp, kAlignedAlloc, {indexType, indexType}, | ||||
LLVM::LLVMPointerType::get(IntegerType::get(moduleOp->getContext(), 8))); | getVoidPtr(moduleOp->getContext(), opaquePointers)); | ||||
} | } | ||||
LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateFreeFn(ModuleOp moduleOp) { | LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateFreeFn(ModuleOp moduleOp, | ||||
bool opaquePointers) { | |||||
return LLVM::lookupOrCreateFn( | return LLVM::lookupOrCreateFn( | ||||
moduleOp, kFree, | moduleOp, kFree, getVoidPtr(moduleOp->getContext(), opaquePointers), | ||||
LLVM::LLVMPointerType::get(IntegerType::get(moduleOp->getContext(), 8)), | |||||
LLVM::LLVMVoidType::get(moduleOp->getContext())); | LLVM::LLVMVoidType::get(moduleOp->getContext())); | ||||
} | } | ||||
LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateGenericAllocFn(ModuleOp moduleOp, | LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateGenericAllocFn(ModuleOp moduleOp, | ||||
Type indexType) { | Type indexType, | ||||
bool opaquePointers) { | |||||
return LLVM::lookupOrCreateFn( | return LLVM::lookupOrCreateFn( | ||||
moduleOp, kGenericAlloc, indexType, | moduleOp, kGenericAlloc, indexType, | ||||
LLVM::LLVMPointerType::get(IntegerType::get(moduleOp->getContext(), 8))); | getVoidPtr(moduleOp->getContext(), opaquePointers)); | ||||
} | } | ||||
LLVM::LLVMFuncOp | LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateGenericAlignedAllocFn( | ||||
mlir::LLVM::lookupOrCreateGenericAlignedAllocFn(ModuleOp moduleOp, | ModuleOp moduleOp, Type indexType, bool opaquePointers) { | ||||
Type indexType) { | |||||
return LLVM::lookupOrCreateFn( | return LLVM::lookupOrCreateFn( | ||||
moduleOp, kGenericAlignedAlloc, {indexType, indexType}, | moduleOp, kGenericAlignedAlloc, {indexType, indexType}, | ||||
LLVM::LLVMPointerType::get(IntegerType::get(moduleOp->getContext(), 8))); | getVoidPtr(moduleOp->getContext(), opaquePointers)); | ||||
} | } | ||||
LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateGenericFreeFn(ModuleOp moduleOp) { | LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateGenericFreeFn(ModuleOp moduleOp, | ||||
bool opaquePointers) { | |||||
return LLVM::lookupOrCreateFn( | return LLVM::lookupOrCreateFn( | ||||
moduleOp, kGenericFree, | moduleOp, kGenericFree, | ||||
LLVM::LLVMPointerType::get(IntegerType::get(moduleOp->getContext(), 8)), | getVoidPtr(moduleOp->getContext(), opaquePointers), | ||||
LLVM::LLVMVoidType::get(moduleOp->getContext())); | LLVM::LLVMVoidType::get(moduleOp->getContext())); | ||||
} | } | ||||
LLVM::LLVMFuncOp | LLVM::LLVMFuncOp | ||||
mlir::LLVM::lookupOrCreateMemRefCopyFn(ModuleOp moduleOp, Type indexType, | mlir::LLVM::lookupOrCreateMemRefCopyFn(ModuleOp moduleOp, Type indexType, | ||||
Type unrankedDescriptorType) { | Type unrankedDescriptorType) { | ||||
return LLVM::lookupOrCreateFn( | return LLVM::lookupOrCreateFn( | ||||
moduleOp, kMemRefCopy, | moduleOp, kMemRefCopy, | ||||
ArrayRef<Type>{indexType, unrankedDescriptorType, unrankedDescriptorType}, | ArrayRef<Type>{indexType, unrankedDescriptorType, unrankedDescriptorType}, | ||||
LLVM::LLVMVoidType::get(moduleOp->getContext())); | LLVM::LLVMVoidType::get(moduleOp->getContext())); | ||||
} | } |