@@ -30,12 +30,14 @@ limitations under the License.
3030#include " absl/types/span.h"
3131#include " llvm/ADT/STLExtras.h"
3232#include " llvm/ADT/SmallVector.h"
33+ #include " llvm/ADT/bit.h"
3334#include " llvm/Support/Casting.h"
3435#include " llvm/Support/MathExtras.h"
3536#include " mlir/Dialect/Arith/IR/Arith.h"
3637#include " mlir/Dialect/Arith/Utils/Utils.h"
3738#include " mlir/Dialect/Math/IR/Math.h"
3839#include " mlir/Dialect/Tensor/IR/Tensor.h"
40+ #include " mlir/IR/AffineExpr.h"
3941#include " mlir/IR/Builders.h"
4042#include " mlir/IR/BuiltinAttributes.h"
4143#include " mlir/IR/BuiltinOps.h"
@@ -93,6 +95,12 @@ namespace mm = ::mlir::math;
9395namespace {
9496using TensorValue = mlir::TypedValue<mlir::RankedTensorType>;
9597
98+ bool ArePowersOfTwo (ArrayRef<int64_t > values) {
99+ return llvm::all_of (values, [](int64_t size) {
100+ return size > 0 && llvm::has_single_bit (static_cast <uint64_t >(size));
101+ });
102+ }
103+
96104// Emit a value as Index clamped to [lower, upper].
97105Value EmitClampedIndex (mlir::ImplicitLocOpBuilder& b, Value value,
98106 int64_t lower, int64_t upper) {
@@ -543,7 +551,8 @@ Value Bitcast(mlir::ImplicitLocOpBuilder& b, Value value, Type type) {
543551 tiled_hlo.tile ().GetStaticTileSizes ());
544552 ASSIGN_OR_RETURN (SmallVector<int64_t > tile_strides,
545553 tiled_hlo.tile ().GetStaticTileStrides ());
546- auto padded_tile_sizes = GetPaddedTileSizes (tile_sizes);
554+ DCHECK (ArePowersOfTwo (tile_sizes)) << " Tile sizes must be a power of 2." ;
555+
547556 const Shape& shape = tiled_hlo.hlo ()->shape ();
548557 SmallVector<int64_t > original_shape;
549558 original_shape.assign (shape.dimensions ().begin (), shape.dimensions ().end ());
@@ -554,7 +563,7 @@ Value Bitcast(mlir::ImplicitLocOpBuilder& b, Value value, Type type) {
554563
555564 auto minor_to_major_layout = llvm::to_vector (LayoutUtil::MinorToMajor (shape));
556565
557- return TileInfo (offsets, tile_strides, original_shape, padded_tile_sizes ,
566+ return TileInfo (offsets, tile_strides, original_shape, tile_sizes ,
558567 minor_to_major_layout, storage_type);
559568}
560569
0 commit comments