code: def philox_impl(
      c0, c1, c2, c3, k0, k1, n_rounds: tl.constexpr = N_ROUNDS_DEFAULT
  ):
      """
      Run `n_rounds` rounds of Philox for state (c0, c1, c2, c3) and key (k0, k1).
      """
      if c0.dtype == tl.uint32:
          PHILOX_KEY_A: tl.constexpr = 0x9E3779B9
          PHILOX_KEY_B: tl.constexpr = 0xBB67AE85
          PHILOX_ROUND_A: tl.constexpr = 0xD2511F53
          PHILOX_ROUND_B: tl.constexpr = 0xCD9E8D57
      else:
          tl.static_assert(
              c0.dtype == tl.uint64,
              "dtype not supported in philox_impl",
          )
          PHILOX_KEY_A: tl.constexpr = 0x9E3779B97F4A7C15
          PHILOX_KEY_B: tl.constexpr = 0xBB67AE8584CAA73B
          PHILOX_ROUND_A: tl.constexpr = 0xD2E7470EE14C6C93
          PHILOX_ROUND_B: tl.constexpr = 0xCA5A826395121157
  
      for _ in tl.static_range(n_rounds):
          # for _ in range(n_rounds):
          # update random state
          A = PHILOX_ROUND_A
          B = PHILOX_ROUND_B
          _c0, _c2 = c0, c2
          c0 = tl.umulhi(B, _c2) ^ c1 ^ k0
          c2 = tl.umulhi(A, _c0) ^ c3 ^ k1
          c1 = B * _c2
          c3 = A * _c0
          # raise key
          k0 = k0 + PHILOX_KEY_A
          k1 = k1 + PHILOX_KEY_B
      return c0, c1, c2, c3
  
file_path: triton/python/triton/language/random.py
imports: from ..runtime.jit import jit
  from .None import core
  from .None import standard
label_desc: Use image node_id 1 for calling a global function with example usage: philox_impl(c0, c1, c2, c3, k0, k1, n_rounds) and returns: c0,  c1,  c2,  c3