MLIR 22.0.0git
SPIRVCanonicalization.cpp File Reference
#include <optional>
#include <utility>
#include "mlir/Dialect/SPIRV/IR/SPIRVOps.h"
#include "mlir/Dialect/CommonFolders.h"
#include "mlir/Dialect/SPIRV/IR/SPIRVTypes.h"
#include "mlir/Dialect/UB/IR/UBOps.h"
#include "mlir/IR/Matchers.h"
#include "mlir/IR/PatternMatch.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVectorExtras.h"
#include "SPIRVCanonicalization.inc"

Go to the source code of this file.

Classes

struct  IAddCarryFold
struct  MulExtendedFold< MulOp, IsSigned >
struct  UMulExtendedOpXOne
struct  UModSimplification

Typedefs

using SMulExtendedOpFold = MulExtendedFold<spirv::SMulExtendedOp, true>
using UMulExtendedOpFold = MulExtendedFold<spirv::UMulExtendedOp, false>

Functions

static std::optional< boolgetScalarOrSplatBoolAttr (Attribute attr)
 Returns the boolean value under the hood if the given boolAttr is a scalar or splat vector bool constant.
static Attribute extractCompositeElement (Attribute composite, ArrayRef< unsigned > indices)
static bool isDivZeroOrOverflow (const APInt &a, const APInt &b)

Typedef Documentation

◆ SMulExtendedOpFold

using SMulExtendedOpFold = MulExtendedFold<spirv::SMulExtendedOp, true>

Definition at line 280 of file SPIRVCanonicalization.cpp.

◆ UMulExtendedOpFold

using UMulExtendedOpFold = MulExtendedFold<spirv::UMulExtendedOp, false>

Definition at line 309 of file SPIRVCanonicalization.cpp.

Function Documentation

◆ extractCompositeElement()

Attribute extractCompositeElement ( Attribute composite,
ArrayRef< unsigned > indices )
static

Definition at line 48 of file SPIRVCanonicalization.cpp.

References extractCompositeElement(), and indices.

Referenced by extractCompositeElement().

◆ getScalarOrSplatBoolAttr()

std::optional< bool > getScalarOrSplatBoolAttr ( Attribute attr)
static

Returns the boolean value under the hood if the given boolAttr is a scalar or splat vector bool constant.

Definition at line 34 of file SPIRVCanonicalization.cpp.

◆ isDivZeroOrOverflow()

bool isDivZeroOrOverflow ( const APInt & a,
const APInt & b )
static

Definition at line 71 of file SPIRVCanonicalization.cpp.

References b.