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-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// Implements GPU dialect transforms utils.
10//
11//===----------------------------------------------------------------------===//
12
13#include "mlir/Dialect/GPU/Transforms/Utils.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::X
23
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_CASE
39 }
40
41 llvm_unreachable("Vector and GPU reduction kinds should match 1:1");
42}
43
44} // namespace mlir::gpu
45

source code of mlir/lib/Dialect/GPU/Transforms/Utils.cpp