code: def setdiff1d(
      ar1, ar2, assume_unique=False, *, size=None, fill_value=None
  ):
      fill_value = ivy.array(
          0 if fill_value is None else fill_value, dtype=ar1.dtype
      )
      if ar1.size == 0:
          return ivy.full(size or 0, fill_value, dtype=ar1.dtype)
      if not assume_unique:
          val = (
              ivy.to_scalar(ivy.all(ar1))
              if ivy.is_bool_dtype(ar1.dtype)
              else ivy.to_scalar(ivy.min(ar1))
          )
          ar1 = jnp_frontend.unique(
              ar1, size=size and ar1.size, fill_value=val
          ).ivy_array
      mask = in1d(ar1, ar2, invert=True).ivy_array
      if size is None:
          return ar1[mask]
      else:
          if not assume_unique:
              # Set mask to zero at locations corresponding to unique() padding.
              n_unique = (
                  ar1.size + 1 - (ar1 == ar1[0]).sum(dtype=ivy.int64)
              )
              mask = ivy.where(
                  ivy.arange(ar1.size) < n_unique, mask, False
              )
          return ivy.where(
              ivy.arange(size) < mask.sum(dtype=ivy.int64),
              ar1[jnp_frontend.where(mask, size=size)[0].ivy_array],
              fill_value,
          )
  
imports: import ivy
  from ivy.func_wrapper import with_unsupported_dtypes
  from ivy.functional.frontends.jax.array import Array
  import ivy.functional.frontends.jax.numpy
  from ivy.functional.frontends.jax.func_wrapper import to_ivy_arrays_and_back, outputs_to_frontend_arrays, handle_jax_dtype, inputs_to_ivy_arrays
  from ivy.func_wrapper import handle_out_argument
  from ivy import with_unsupported_device_and_dtypes
label_desc: Use image node_id 28 for calling a global function with example usage: setdiff1d(ar1, ar2, assume_unique) and returns: ivy, ar1, ivy