code: def sddmm(
      A: SparseMatrix, X1: torch.Tensor, X2: torch.Tensor
  ) -> SparseMatrix:
      r"""Sampled-Dense-Dense Matrix Multiplication (SDDMM).
  
      ``sddmm`` matrix-multiplies two dense matrices :attr:`X1` and :attr:`X2`,
      then elementwise-multiplies the result with sparse matrix :attr:`A` at the
      nonzero locations.
  
      Mathematically ``sddmm`` is formulated as:
  
      .. math::
          out = (X1 @ X2) * A
  
      In particular, :attr:`X1` and :attr:`X2` can be 1-D, then ``X1 @ X2``
      becomes the out-product of the two vectors (which results in a matrix).
  
      Parameters
      ----------
      A : SparseMatrix
          Sparse matrix of shape ``(L, N)``
      X1 : torch.Tensor
          Dense matrix of shape ``(L, M)`` or ``(L,)``
      X2 : torch.Tensor
          Dense matrix of shape ``(M, N)`` or ``(N,)``
  
      Returns
      -------
      SparseMatrix
          Sparse matrix of shape ``(L, N)``
  
      Examples
      --------
  
      >>> indices = torch.tensor([[1, 1, 2], [2, 3, 3]])
      >>> val = torch.arange(1, 4).float()
      >>> A = dglsp.spmatrix(indices, val, (3, 4))
      >>> X1 = torch.randn(3, 5)
      >>> X2 = torch.randn(5, 4)
      >>> dglsp.sddmm(A, X1, X2)
      SparseMatrix(indices=tensor([[1, 1, 2],
                                   [2, 3, 3]]),
                   values=tensor([-1.6585, -3.9714, -0.5406]),
                   shape=(3, 4), nnz=3)
      """
      return SparseMatrix(
          torch.ops.dgl_sparse.sddmm(A.c_sparse_matrix, X1, X2)
      )
  
label_desc: Use image node_id 1 for calling a global function with example usage: sddmm(A, X1, X2) and returns: SparseMatrix