brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 1f09875 Raw
45 lines · cpp
1//===- Utils.cpp - GPU transforms utils -----------------------------------===//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// Implements GPU dialect transforms utils.10//11//===----------------------------------------------------------------------===//12 13#include "mlir/Dialect/GPU/Utils/GPUUtils.h"14#include "llvm/Support/ErrorHandling.h"15 16namespace mlir::gpu {17 18vector::CombiningKind convertReductionKind(gpu::AllReduceOperation mode) {19  switch (mode) {20#define MAP_CASE(X)                                                            \21  case gpu::AllReduceOperation::X:                                             \22    return vector::CombiningKind::X23 24    MAP_CASE(ADD);25    MAP_CASE(MUL);26    MAP_CASE(MINUI);27    MAP_CASE(MINSI);28    MAP_CASE(MINNUMF);29    MAP_CASE(MAXSI);30    MAP_CASE(MAXUI);31    MAP_CASE(MAXNUMF);32    MAP_CASE(AND);33    MAP_CASE(OR);34    MAP_CASE(XOR);35    MAP_CASE(MINIMUMF);36    MAP_CASE(MAXIMUMF);37 38#undef MAP_CASE39  }40 41  llvm_unreachable("Vector and GPU reduction kinds should match 1:1");42}43 44} // namespace mlir::gpu45