IMPORTANT: To view this page as Markdown, append `.md` to the URL (e.g. /get-started.md). For the complete documentation index, see llms.txt.
Skip to main content
For the complete documentation index, see llms.txt. Markdown versions of all pages are available by appending .md to any URL (e.g. /get-started.md).

Mojo function

row_major

def row_major(var shape: Coord) -> Layout[shape.element_types, TypeList[#kgen.param_list.reduce(#kgen.param_list.tabulate(len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), [idx: __mlir_type.index] shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values[(add (mul idx, -1), len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), -1)]), base=, reducer=[PrevV: KGENParamList[CoordLike], VA: KGENParamList[CoordLike], idx: __mlir_type.index] #kgen.param_list.concat(ComptimeInt[Int(1)] if identical(idx, 0) else Scalar[#kgen.param_list.tabulate(len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), [idx: __mlir_type.index] shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values[(add (mul idx, -1), len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), -1)])[(add idx, -1)].DTYPE if (xor #kgen.param_list.tabulate(len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), [idx: __mlir_type.index] shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values[(add (mul idx, -1), len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), -1)])[(add idx, -1)].is_static_value, True) else PrevV[0].DTYPE] if (xor #kgen.param_list.tabulate(len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), [idx: __mlir_type.index] shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values[(add (mul idx, -1), len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), -1)])[(add idx, -1)].is_static_value, True) if (xor #kgen.param_list.tabulate(len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), [idx: __mlir_type.index] shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values[(add (mul idx, -1), len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), -1)])[(add idx, -1)].is_static_value, True) else (xor PrevV[0].is_static_value, True) else ComptimeInt[Int((mul PrevV[0].static_value, #kgen.param_list.tabulate(len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), [idx: __mlir_type.index] shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values[(add (mul idx, -1), len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), -1)])[(add idx, -1)].static_value))], PrevV))]()]

Creates a row-major layout from a shape Coord.

Row-major means the rightmost dimension has stride 1, and each preceding dimension has stride equal to the product of all following dimensions.

For shape (M, N, K):

  • row_major strides: (N*K, K, 1)
  • col_major strides: (1, M, M*N)

Args:

  • ​shape (Coord): The shape as a Coord.

Returns:

Layout[shape.element_types, TypeList[#kgen.param_list.reduce(#kgen.param_list.tabulate(len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), [idx: __mlir_type.index] shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values[(add (mul idx, -1), len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), -1)]), base=, reducer=[PrevV: KGENParamList[CoordLike], VA: KGENParamList[CoordLike], idx: __mlir_type.index] #kgen.param_list.concat(ComptimeInt[Int(1)] if identical(idx, 0) else Scalar[#kgen.param_list.tabulate(len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), [idx: __mlir_type.index] shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values[(add (mul idx, -1), len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), -1)])[(add idx, -1)].DTYPE if (xor #kgen.param_list.tabulate(len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), [idx: __mlir_type.index] shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values[(add (mul idx, -1), len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), -1)])[(add idx, -1)].is_static_value, True) else PrevV[0].DTYPE] if (xor #kgen.param_list.tabulate(len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), [idx: __mlir_type.index] shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values[(add (mul idx, -1), len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), -1)])[(add idx, -1)].is_static_value, True) if (xor #kgen.param_list.tabulate(len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), [idx: __mlir_type.index] shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values[(add (mul idx, -1), len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), -1)])[(add idx, -1)].is_static_value, True) else (xor PrevV[0].is_static_value, True) else ComptimeInt[Int((mul PrevV[0].static_value, #kgen.param_list.tabulate(len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), [idx: __mlir_type.index] shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values[(add (mul idx, -1), len(shape.element_types.values[0]._ParamListType if shape.element_types.values[0].is_tuple if identical(len(shape.element_types.values), 1) else identical(len(shape.element_types.values), 1) else shape.element_types.values), -1)])[(add idx, -1)].static_value))], PrevV))]()]: A Layout with row-major strides.

def row_major[*element_types: CoordLike](var *elements: *element_types.values) -> Layout[element_types, TypeList[#kgen.param_list.reduce(#kgen.param_list.tabulate(len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), [idx: __mlir_type.index] element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values[(add (mul idx, -1), len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), -1)]), base=, reducer=[PrevV: KGENParamList[CoordLike], VA: KGENParamList[CoordLike], idx: __mlir_type.index] #kgen.param_list.concat(ComptimeInt[Int(1)] if identical(idx, 0) else Scalar[#kgen.param_list.tabulate(len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), [idx: __mlir_type.index] element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values[(add (mul idx, -1), len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), -1)])[(add idx, -1)].DTYPE if (xor #kgen.param_list.tabulate(len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), [idx: __mlir_type.index] element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values[(add (mul idx, -1), len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), -1)])[(add idx, -1)].is_static_value, True) else PrevV[0].DTYPE] if (xor #kgen.param_list.tabulate(len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), [idx: __mlir_type.index] element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values[(add (mul idx, -1), len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), -1)])[(add idx, -1)].is_static_value, True) if (xor #kgen.param_list.tabulate(len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), [idx: __mlir_type.index] element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values[(add (mul idx, -1), len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), -1)])[(add idx, -1)].is_static_value, True) else (xor PrevV[0].is_static_value, True) else ComptimeInt[Int((mul PrevV[0].static_value, #kgen.param_list.tabulate(len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), [idx: __mlir_type.index] element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values[(add (mul idx, -1), len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), -1)])[(add idx, -1)].static_value))], PrevV))]()]

Creates a row-major layout from a shape Coord.

Row-major means the rightmost dimension has stride 1, and each preceding dimension has stride equal to the product of all following dimensions.

Parameters:

  • ​*element_types (CoordLike): The variadic pack of element types that implement CoordLike.

Args:

  • ​*elements (*element_types.values): The shape as a Coord.

Returns:

Layout[element_types, TypeList[#kgen.param_list.reduce(#kgen.param_list.tabulate(len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), [idx: __mlir_type.index] element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values[(add (mul idx, -1), len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), -1)]), base=, reducer=[PrevV: KGENParamList[CoordLike], VA: KGENParamList[CoordLike], idx: __mlir_type.index] #kgen.param_list.concat(ComptimeInt[Int(1)] if identical(idx, 0) else Scalar[#kgen.param_list.tabulate(len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), [idx: __mlir_type.index] element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values[(add (mul idx, -1), len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), -1)])[(add idx, -1)].DTYPE if (xor #kgen.param_list.tabulate(len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), [idx: __mlir_type.index] element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values[(add (mul idx, -1), len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), -1)])[(add idx, -1)].is_static_value, True) else PrevV[0].DTYPE] if (xor #kgen.param_list.tabulate(len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), [idx: __mlir_type.index] element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values[(add (mul idx, -1), len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), -1)])[(add idx, -1)].is_static_value, True) if (xor #kgen.param_list.tabulate(len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), [idx: __mlir_type.index] element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values[(add (mul idx, -1), len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), -1)])[(add idx, -1)].is_static_value, True) else (xor PrevV[0].is_static_value, True) else ComptimeInt[Int((mul PrevV[0].static_value, #kgen.param_list.tabulate(len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), [idx: __mlir_type.index] element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values[(add (mul idx, -1), len(element_types.values[0]._ParamListType if element_types.values[0].is_tuple if identical(len(element_types.values), 1) else identical(len(element_types.values), 1) else element_types.values), -1)])[(add idx, -1)].static_value))], PrevV))]()]: A Layout with row-major strides.

def row_major[*idxs: Int]() -> Layout[TypeList[#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])](), TypeList[#kgen.param_list.reduce(#kgen.param_list.tabulate(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), [idx: __mlir_type.index] #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[(add (mul idx, -1), len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), -1)]), base=, reducer=[PrevV: KGENParamList[CoordLike], VA: KGENParamList[CoordLike], idx: __mlir_type.index] #kgen.param_list.concat(ComptimeInt[Int(1)] if identical(idx, 0) else Scalar[#kgen.param_list.tabulate(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), [idx: __mlir_type.index] #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[(add (mul idx, -1), len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), -1)])[(add idx, -1)].DTYPE if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), [idx: __mlir_type.index] #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[(add (mul idx, -1), len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), -1)])[(add idx, -1)].is_static_value, True) else PrevV[0].DTYPE] if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), [idx: __mlir_type.index] #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[(add (mul idx, -1), len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), -1)])[(add idx, -1)].is_static_value, True) if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), [idx: __mlir_type.index] #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[(add (mul idx, -1), len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), -1)])[(add idx, -1)].is_static_value, True) else (xor PrevV[0].is_static_value, True) else ComptimeInt[Int((mul PrevV[0].static_value, #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), [idx: __mlir_type.index] #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[(add (mul idx, -1), len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), -1)])[(add idx, -1)].static_value))], PrevV))]()]

Creates a row-major layout from compile-time shape dimensions.

Parameters:

  • ​*idxs (Int): The shape dimensions as compile-time integers.

Returns:

Layout[TypeList[#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])](), TypeList[#kgen.param_list.reduce(#kgen.param_list.tabulate(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), [idx: __mlir_type.index] #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[(add (mul idx, -1), len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), -1)]), base=, reducer=[PrevV: KGENParamList[CoordLike], VA: KGENParamList[CoordLike], idx: __mlir_type.index] #kgen.param_list.concat(ComptimeInt[Int(1)] if identical(idx, 0) else Scalar[#kgen.param_list.tabulate(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), [idx: __mlir_type.index] #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[(add (mul idx, -1), len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), -1)])[(add idx, -1)].DTYPE if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), [idx: __mlir_type.index] #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[(add (mul idx, -1), len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), -1)])[(add idx, -1)].is_static_value, True) else PrevV[0].DTYPE] if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), [idx: __mlir_type.index] #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[(add (mul idx, -1), len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), -1)])[(add idx, -1)].is_static_value, True) if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), [idx: __mlir_type.index] #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[(add (mul idx, -1), len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), -1)])[(add idx, -1)].is_static_value, True) else (xor PrevV[0].is_static_value, True) else ComptimeInt[Int((mul PrevV[0].static_value, #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), [idx: __mlir_type.index] #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[(add (mul idx, -1), len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0]._ParamListType if #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])[0].is_tuple if identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else identical(len(#kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), 1) else #kgen.param_list.tabulate(len(idxs.values), [idx: __mlir_type.index] ComptimeInt[idxs.values[idx]])), -1)])[(add idx, -1)].static_value))], PrevV))]()]: A Layout with row-major strides.

Was this page helpful?