MLX
Loading...
Searching...
No Matches
Classes | Macros | Functions
indexing.h File Reference
#include <metal_stdlib>

Go to the source code of this file.

Classes

struct  Indices< IdxT, NIDX >
 

Macros

#define IDX_ARG_N(idx_t, n)   const device idx_t *idx##n [[buffer(n)]],
 
#define IDX_ARG_0(idx_t)
 
#define IDX_ARG_1(idx_t)   IDX_ARG_0(idx_t) IDX_ARG_N(idx_t, 21)
 
#define IDX_ARG_2(idx_t)   IDX_ARG_1(idx_t) IDX_ARG_N(idx_t, 22)
 
#define IDX_ARG_3(idx_t)   IDX_ARG_2(idx_t) IDX_ARG_N(idx_t, 23)
 
#define IDX_ARG_4(idx_t)   IDX_ARG_3(idx_t) IDX_ARG_N(idx_t, 24)
 
#define IDX_ARG_5(idx_t)   IDX_ARG_4(idx_t) IDX_ARG_N(idx_t, 25)
 
#define IDX_ARG_6(idx_t)   IDX_ARG_5(idx_t) IDX_ARG_N(idx_t, 26)
 
#define IDX_ARG_7(idx_t)   IDX_ARG_6(idx_t) IDX_ARG_N(idx_t, 27)
 
#define IDX_ARG_8(idx_t)   IDX_ARG_7(idx_t) IDX_ARG_N(idx_t, 28)
 
#define IDX_ARG_9(idx_t)   IDX_ARG_8(idx_t) IDX_ARG_N(idx_t, 29)
 
#define IDX_ARG_10(idx_t)   IDX_ARG_9(idx_t) IDX_ARG_N(idx_t, 30)
 
#define IDX_ARR_N(n)   idx##n,
 
#define IDX_ARR_0()
 
#define IDX_ARR_1()   IDX_ARR_0() IDX_ARR_N(21)
 
#define IDX_ARR_2()   IDX_ARR_1() IDX_ARR_N(22)
 
#define IDX_ARR_3()   IDX_ARR_2() IDX_ARR_N(23)
 
#define IDX_ARR_4()   IDX_ARR_3() IDX_ARR_N(24)
 
#define IDX_ARR_5()   IDX_ARR_4() IDX_ARR_N(25)
 
#define IDX_ARR_6()   IDX_ARR_5() IDX_ARR_N(26)
 
#define IDX_ARR_7()   IDX_ARR_6() IDX_ARR_N(27)
 
#define IDX_ARR_8()   IDX_ARR_7() IDX_ARR_N(28)
 
#define IDX_ARR_9()   IDX_ARR_8() IDX_ARR_N(29)
 
#define IDX_ARR_10()   IDX_ARR_9() IDX_ARR_N(30)
 

Functions

template<typename IdxT >
METAL_FUNC size_t offset_neg_idx (IdxT idx, size_t size)
 

Macro Definition Documentation

◆ IDX_ARG_0

#define IDX_ARG_0 ( idx_t)

◆ IDX_ARG_1

#define IDX_ARG_1 ( idx_t)    IDX_ARG_0(idx_t) IDX_ARG_N(idx_t, 21)

◆ IDX_ARG_10

#define IDX_ARG_10 ( idx_t)    IDX_ARG_9(idx_t) IDX_ARG_N(idx_t, 30)

◆ IDX_ARG_2

#define IDX_ARG_2 ( idx_t)    IDX_ARG_1(idx_t) IDX_ARG_N(idx_t, 22)

◆ IDX_ARG_3

#define IDX_ARG_3 ( idx_t)    IDX_ARG_2(idx_t) IDX_ARG_N(idx_t, 23)

◆ IDX_ARG_4

#define IDX_ARG_4 ( idx_t)    IDX_ARG_3(idx_t) IDX_ARG_N(idx_t, 24)

◆ IDX_ARG_5

#define IDX_ARG_5 ( idx_t)    IDX_ARG_4(idx_t) IDX_ARG_N(idx_t, 25)

◆ IDX_ARG_6

#define IDX_ARG_6 ( idx_t)    IDX_ARG_5(idx_t) IDX_ARG_N(idx_t, 26)

◆ IDX_ARG_7

#define IDX_ARG_7 ( idx_t)    IDX_ARG_6(idx_t) IDX_ARG_N(idx_t, 27)

◆ IDX_ARG_8

#define IDX_ARG_8 ( idx_t)    IDX_ARG_7(idx_t) IDX_ARG_N(idx_t, 28)

◆ IDX_ARG_9

#define IDX_ARG_9 ( idx_t)    IDX_ARG_8(idx_t) IDX_ARG_N(idx_t, 29)

◆ IDX_ARG_N

#define IDX_ARG_N ( idx_t,
n )   const device idx_t *idx##n [[buffer(n)]],

◆ IDX_ARR_0

#define IDX_ARR_0 ( )

◆ IDX_ARR_1

#define IDX_ARR_1 ( )    IDX_ARR_0() IDX_ARR_N(21)

◆ IDX_ARR_10

#define IDX_ARR_10 ( )    IDX_ARR_9() IDX_ARR_N(30)

◆ IDX_ARR_2

#define IDX_ARR_2 ( )    IDX_ARR_1() IDX_ARR_N(22)

◆ IDX_ARR_3

#define IDX_ARR_3 ( )    IDX_ARR_2() IDX_ARR_N(23)

◆ IDX_ARR_4

#define IDX_ARR_4 ( )    IDX_ARR_3() IDX_ARR_N(24)

◆ IDX_ARR_5

#define IDX_ARR_5 ( )    IDX_ARR_4() IDX_ARR_N(25)

◆ IDX_ARR_6

#define IDX_ARR_6 ( )    IDX_ARR_5() IDX_ARR_N(26)

◆ IDX_ARR_7

#define IDX_ARR_7 ( )    IDX_ARR_6() IDX_ARR_N(27)

◆ IDX_ARR_8

#define IDX_ARR_8 ( )    IDX_ARR_7() IDX_ARR_N(28)

◆ IDX_ARR_9

#define IDX_ARR_9 ( )    IDX_ARR_8() IDX_ARR_N(29)

◆ IDX_ARR_N

#define IDX_ARR_N ( n)    idx##n,

Function Documentation

◆ offset_neg_idx()

template<typename IdxT >
METAL_FUNC size_t offset_neg_idx ( IdxT idx,
size_t size )