brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 5bcc9f5 Raw
44 lines · c
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This contains helpers for OpenACC emission that don't need to be in10// CIRGenModule, but can't live in a single .cpp file.11//12//===----------------------------------------------------------------------===//13#include "mlir/Dialect/OpenACC/OpenACC.h"14#include "clang/AST/DeclOpenACC.h"15 16namespace clang::CIRGen {17inline mlir::acc::DataClauseModifier18convertOpenACCModifiers(OpenACCModifierKind modifiers) {19  using namespace mlir::acc;20  static_assert(static_cast<int>(OpenACCModifierKind::Zero) ==21                    static_cast<int>(DataClauseModifier::zero) &&22                static_cast<int>(OpenACCModifierKind::Readonly) ==23                    static_cast<int>(DataClauseModifier::readonly) &&24                static_cast<int>(OpenACCModifierKind::AlwaysIn) ==25                    static_cast<int>(DataClauseModifier::alwaysin) &&26                static_cast<int>(OpenACCModifierKind::AlwaysOut) ==27                    static_cast<int>(DataClauseModifier::alwaysout) &&28                static_cast<int>(OpenACCModifierKind::Capture) ==29                    static_cast<int>(DataClauseModifier::capture));30 31  DataClauseModifier mlirModifiers{};32 33  // The MLIR representation of this represents `always` as `alwaysin` +34  // `alwaysout`.  So do a small fixup here.35  if (isOpenACCModifierBitSet(modifiers, OpenACCModifierKind::Always)) {36    mlirModifiers = mlirModifiers | DataClauseModifier::always;37    modifiers &= ~OpenACCModifierKind::Always;38  }39 40  mlirModifiers = mlirModifiers | static_cast<DataClauseModifier>(modifiers);41  return mlirModifiers;42}43} // namespace clang::CIRGen44