12d373e4dSAkash Banerjee //===- OpenMPCommon.cpp - Utils for translating MLIR dialect to LLVM IR----===// 22d373e4dSAkash Banerjee // 32d373e4dSAkash Banerjee // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42d373e4dSAkash Banerjee // See https://llvm.org/LICENSE.txt for license information. 52d373e4dSAkash Banerjee // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 62d373e4dSAkash Banerjee // 72d373e4dSAkash Banerjee //===----------------------------------------------------------------------===// 82d373e4dSAkash Banerjee // 92d373e4dSAkash Banerjee // This file defines general utilities for MLIR Dialect translations to LLVM IR. 102d373e4dSAkash Banerjee // 112d373e4dSAkash Banerjee //===----------------------------------------------------------------------===// 122d373e4dSAkash Banerjee 132d373e4dSAkash Banerjee #include "mlir/Target/LLVMIR/Dialect/OpenMPCommon.h" 142d373e4dSAkash Banerjee 152d373e4dSAkash Banerjee llvm::Constant * 162d373e4dSAkash Banerjee mlir::LLVM::createSourceLocStrFromLocation(Location loc, 172d373e4dSAkash Banerjee llvm::OpenMPIRBuilder &builder, 182d373e4dSAkash Banerjee StringRef name, uint32_t &strLen) { 195550c821STres Popp if (auto fileLoc = dyn_cast<FileLineColLoc>(loc)) { 202d373e4dSAkash Banerjee StringRef fileName = fileLoc.getFilename(); 212d373e4dSAkash Banerjee unsigned lineNo = fileLoc.getLine(); 222d373e4dSAkash Banerjee unsigned colNo = fileLoc.getColumn(); 232d373e4dSAkash Banerjee return builder.getOrCreateSrcLocStr(name, fileName, lineNo, colNo, strLen); 242d373e4dSAkash Banerjee } 252d373e4dSAkash Banerjee std::string locStr; 262d373e4dSAkash Banerjee llvm::raw_string_ostream locOS(locStr); 272d373e4dSAkash Banerjee locOS << loc; 28*095b41c6SJOE1994 return builder.getOrCreateSrcLocStr(locStr, strLen); 292d373e4dSAkash Banerjee } 302d373e4dSAkash Banerjee 312d373e4dSAkash Banerjee llvm::Constant * 322d373e4dSAkash Banerjee mlir::LLVM::createMappingInformation(Location loc, 332d373e4dSAkash Banerjee llvm::OpenMPIRBuilder &builder) { 342d373e4dSAkash Banerjee uint32_t strLen; 355550c821STres Popp if (auto nameLoc = dyn_cast<NameLoc>(loc)) { 362d373e4dSAkash Banerjee StringRef name = nameLoc.getName(); 372d373e4dSAkash Banerjee return createSourceLocStrFromLocation(nameLoc.getChildLoc(), builder, name, 382d373e4dSAkash Banerjee strLen); 392d373e4dSAkash Banerjee } 402d373e4dSAkash Banerjee return createSourceLocStrFromLocation(loc, builder, "unknown", strLen); 412d373e4dSAkash Banerjee } 42