| 455 | assert in_tuple.op is Ops.TUPLE, f"gettuple requires FUNCTION or TUPLE source, got {self.op}" |
| 456 | return UOp(Ops.GETTUPLE, in_tuple.src[idx].dtype, (self,), idx) |
| 457 | def group(*srcs:UOp|None): # pylint: disable=no-self-argument |
| 458 | if len(srcs) == 1 and isinstance(srcs[0], UOp): return srcs[0] |
| 459 | return UOp(Ops.GROUP, dtypes.void, tuple([x for x in srcs if x is not None])) |
| 460 | def vectorize(self, *srcs): |
| 461 | return UOp(Ops.STACK, self.dtype.vec(len(srcs)+1), (self,)+srcs) |
| 462 | def index(self, *srcs:UOp|None, ptr=False, **kwargs): |