MLIR 24.0.0git
LLVMInterfaces.h
Go to the documentation of this file.
1//===- LLVMInterfaces.h - LLVM Interfaces -----------------------*- C++ -*-===//
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// This file defines op interfaces for the LLVM dialect in MLIR.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef MLIR_DIALECT_LLVMIR_LLVMINTERFACES_H_
14#define MLIR_DIALECT_LLVMIR_LLVMINTERFACES_H_
15
17
18#include <type_traits>
19
20namespace mlir {
21
23class RewriterBase;
24
25namespace LLVM {
26namespace detail {
27
28/// Verifies the access groups attribute of memory operations that implement the
29/// access group interface.
30LogicalResult verifyAccessGroupOpInterface(Operation *op);
31
32/// Verifies the alias analysis attributes of memory operations that implement
33/// the alias analysis interface.
34LogicalResult verifyAliasAnalysisOpInterface(Operation *op);
35
36/// Verifies that the tbaa.struct field offsets of memory operations that
37/// implement the tbaa.struct interface are non-decreasing.
38LogicalResult verifyTBAAStructOpInterface(Operation *op);
39
40/// Verifies that the operation implementing the dereferenceable interface has
41/// exactly one result of LLVM pointer type.
42LogicalResult verifyDereferenceableOpInterface(Operation *op);
43
44/// Verifies that the range of an operation implementing the range interface
45/// matches the bitwidth of its single integer (element) result.
46LogicalResult verifyRangeOpInterface(Operation *op);
47} // namespace detail
48} // namespace LLVM
49} // namespace mlir
50
51#include "mlir/Dialect/LLVMIR/LLVMInterfaces.h.inc"
52
53#endif // MLIR_DIALECT_LLVMIR_LLVMINTERFACES_H_
Conversion from types to the LLVM IR dialect.
This class coordinates the application of a rewrite on a set of IR, providing a way for clients to tr...
LogicalResult verifyAliasAnalysisOpInterface(Operation *op)
Verifies the alias analysis attributes of memory operations that implement the alias analysis interfa...
LogicalResult verifyTBAAStructOpInterface(Operation *op)
Verifies that the tbaa.struct field offsets of memory operations that implement the tbaa....
LogicalResult verifyRangeOpInterface(Operation *op)
Verifies that the range of an operation implementing the range interface matches the bitwidth of its ...
LogicalResult verifyAccessGroupOpInterface(Operation *op)
Verifies the access groups attribute of memory operations that implement the access group interface.
LogicalResult verifyDereferenceableOpInterface(Operation *op)
Verifies that the operation implementing the dereferenceable interface has exactly one result of LLVM...
Include the generated interface declarations.