xref: /llvm-project/mlir/lib/Target/LLVMIR/Dialect/OpenMPCommon.cpp (revision 095b41c6eedb3acc908dc63ee91ff77944c07d75)
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