#include "mlir/Dialect/ArmSME/Utils/Utils.h"
#include "mlir/Dialect/ArmSME/IR/ArmSME.h"
namespace mlir::arm_sme {
unsigned getSMETileSliceMinNumElts(Type type) { … }
bool isValidSMETileElementType(Type type) { … }
bool isValidSMETileVectorType(VectorType vType) { … }
std::optional<ArmSMETileType> getSMETileType(VectorType type) { … }
LogicalResult verifyOperationHasValidTileId(Operation *op) { … }
scf::ForOp createLoopOverTileSlices(
PatternRewriter &rewriter, Location loc, Value initTile,
std::function<Value(OpBuilder &, Location, Value, Value)> makeLoopBody) { … }
bool isMultipleOfSMETileVectorType(VectorType vType) { … }
VectorType getSMETileTypeForElement(Type elementType) { … }
void eraseTriviallyDeadTileOps(IRRewriter &rewriter,
FunctionOpInterface function) { … }
bool isTriviallyCloneableTileOp(arm_sme::ArmSMETileOpInterface tileOp) { … }
bool hasTileResult(arm_sme::ArmSMETileOpInterface tileOp) { … }
OpOperand *getTileOpOperand(arm_sme::ArmSMETileOpInterface tileOp) { … }
bool isTileTypeGreaterOrEqual(ArmSMETileType typeA, ArmSMETileType typeB) { … }
}