def _bmm_parameters(self, bmm_op_name, batch_sizes, M, N, K):
        """
        Return a dict of parameters used for constructing bmm ops
        """
        B_dim = shape_utils.gen_int_var_min_max(batch_sizes, "batch_size")
        M_dim = shape_utils.gen_int_var_min_max(M) if isinstance(M, list) else IntImm(M)
        N_dim = shape_utils.gen_int_var_min_max(N) if isinstance(N, list) else IntImm(N)
        K_dim = shape_utils.gen_int_var_min_max(K) if isinstance(K, list) else IntImm(K)
        a_shape = {
            "r": [B_dim, M_dim, K_dim],
            "c": [B_dim, K_dim, M_dim],
        }
        b_shape = {
            "r": [B_dim, K_dim, N_dim],
            "c": [B_dim, N_dim, K_dim],
        }
        c_shape = {
            "r": [B_dim, M_dim, N_dim],
            "c": [B_dim, N_dim, M_dim],
        }
        permute = {
            "r": None,
            "c": [0, 2, 1],
        }
        bmm_op_name = bmm_op_name[:7]
        a_layout = bmm_op_name[4]
        b_layout = bmm_op_name[5]
        c_layout = bmm_op_name[6]
        bmm_dict = {}
        bmm_dict["a_shape"] = a_shape.get(a_layout)
        bmm_dict["b_shape"] = b_shape.get(b_layout)
        bmm_dict["c_shape"] = c_shape.get(c_layout)
        bmm_dict["a_permute"] = permute.get(a_layout)
        bmm_dict["b_permute"] = permute.get(b_layout)
        bmm_dict["c_permute"] = permute.get(c_layout)
        return bmm_dict

        Return a dict of parameters used for constructing bmm ops
        
tests/unittest/compiler/test_slice_bmm_fusion.py