libxmp/libxmpf in Omni Compiler
1.3.4
Main Page
Data Structures
Data Structures
Data Structure Index
Data Fields
All
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
Variables
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
Files
File List
Globals
All
_
a
b
c
d
e
f
g
h
i
k
m
n
o
p
r
s
t
u
x
Functions
_
a
b
c
d
f
g
i
p
r
u
x
Variables
_
c
d
e
g
h
m
n
t
Typedefs
_
c
m
p
r
s
t
x
Enumerations
Enumerator
b
c
o
s
t
Macros
_
b
c
d
f
i
k
m
n
o
p
r
s
t
x
•
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
xmp_index_macro.h
Go to the documentation of this file.
1
#ifndef _XMP_INDEX_MACRO
2
#define _XMP_INDEX_MACRO
3
4
// ------------------------------------------------------------------------------------------------------------------------------
5
#define _XMP_M_CEILi(a_, b_) (((a_) % (b_)) == 0 ? ((a_) / (b_)) : ((a_) / (b_)) + 1)
6
7
// ------------------------------------------------------------------------------------------------------------------------------
8
#define _XMP_M_LTOG_TEMPLATE_BLOCK(_l, _m, _N, _P, _p) \
9
(((_p) * _XMP_M_CEILi(_N, _P)) + (_l) + (_m))
10
11
#define _XMP_M_LTOG_TEMPLATE_CYCLIC(_l, _m, _P, _p) \
12
(((_l) * (_P)) + (_p) + (_m))
13
14
#define _XMP_M_LTOG_TEMPLATE_BLOCK_CYCLIC(_l, _b, _m, _P, _p) \
15
((((_l) / (_b)) * (_b) * (_P)) + ((_b) * (_p)) + ((_l) % (_b)) + (_m))
16
17
#define _XMP_M_LTOG_TEMPLATE_GBLOCK(_l, _x) \
18
((_l) + (_x))
19
20
// ------------------------------------------------------------------------------------------------------------------------------
21
#define _XMP_M_CALC_INDEX_BLOCK(_i, _x) \
22
((_i) - (_x))
23
24
#define _XMP_M_CALC_INDEX_CYCLIC(_i, _p) \
25
((_i) / (_p))
26
27
#define _XMP_M_CALC_INDEX_BLOCK_CYCLIC(_i, _p, _w) \
28
(((_w) * ((_i) / ((_p) * (_w)))) + ((_i) % (_w)))
29
30
#define _XMP_M_CALC_INDEX_GBLOCK(_i, _x) \
31
((_i) - (_x))
32
// ------------------------------------------------------------------------------------------------------------------------------
33
#define _XMP_M_GET_ELMT_1(_addr, _i1) \
34
(*((_addr) + (_i1)))
35
36
#define _XMP_M_GET_ELMT_2(_addr, _i1, _i2, _acc1) \
37
(*((_addr) + (_i1) * (_acc1) + (_i2)))
38
39
#define _XMP_M_GET_ELMT_3(_addr, _i1, _i2, _i3, _acc1, _acc2) \
40
(*((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2) + (_i3)))
41
42
#define _XMP_M_GET_ELMT_4(_addr, _i1, _i2, _i3, _i4, _acc1, _acc2, _acc3) \
43
(*((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2) + (_i3) * (_acc3) + (_i4)))
44
45
#define _XMP_M_GET_ELMT_5(_addr, _i1, _i2, _i3, _i4, _i5, _acc1, _acc2, _acc3, _acc4) \
46
(*((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2) + (_i3) * (_acc3) + (_i4) * (_acc4) + (_i5)))
47
48
#define _XMP_M_GET_ELMT_6(_addr, _i1, _i2, _i3, _i4, _i5, _i6, _acc1, _acc2, _acc3, _acc4, _acc5) \
49
(*((_addr) + (_acc1) + (_i2) * (_acc2) + (_i3) * (_acc3) + (_i4) * (_acc4) + (_i5) * (_acc5) + (_i6)))
50
51
#define _XMP_M_GET_ELMT_7(_addr, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _acc1, _acc2, _acc3, _acc4, _acc5, _acc6) \
52
(*((_addr) + (_acc1) + (_i2) * (_acc2) + (_i3) * (_acc3) + (_i4) * (_acc4) + (_i5) * (_acc5) + (_i6) * (_acc6) + (_i7)))
53
54
// ------------------------------------------------------------------------------------------------------------------------------
55
#define _XMP_M_GET_ADDR_E_1(_addr, _i1) \
56
((_addr) + (_i1))
57
58
#define _XMP_M_GET_ADDR_E_2(_addr, _i1, _i2, _acc1) \
59
((_addr) + (_i1) * (_acc1) + (_i2))
60
61
#define _XMP_M_GET_ADDR_E_3(_addr, _i1, _i2, _i3, _acc1, _acc2) \
62
((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2) + (_i3))
63
64
#define _XMP_M_GET_ADDR_E_4(_addr, _i1, _i2, _i3, _i4, _acc1, _acc2, _acc3) \
65
((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2) + (_i3) * (_acc3) + (_i4))
66
67
#define _XMP_M_GET_ADDR_E_5(_addr, _i1, _i2, _i3, _i4, _i5, _acc1, _acc2, _acc3, _acc4) \
68
((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2) + (_i3) * (_acc3) + (_i4) * (_acc4) + (_i5))
69
70
#define _XMP_M_GET_ADDR_E_6(_addr, _i1, _i2, _i3, _i4, _i5, _i6, _acc1, _acc2, _acc3, _acc4, _acc5) \
71
((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2) + (_i3) * (_acc3) + (_i4) * (_acc4) + (_i5) * (_acc5) + (_i6))
72
73
#define _XMP_M_GET_ADDR_E_7(_addr, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _acc1, _acc2, _acc3, _acc4, _acc5, _acc6) \
74
((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2) + (_i3) * (_acc3) + (_i4) * (_acc4) + (_i5) * (_acc5) + (_i6) * (_acc6) + (_i7))
75
76
// ------------------------------------------------------------------------------------------------------------------------------
77
#define _XMP_M_GET_ADDR_0(_addr) \
78
(_addr)
79
80
#define _XMP_M_GET_ADDR_1(_addr, _i1, _acc1) \
81
((_addr) + (_i1) * (_acc1)))
82
83
#define _XMP_M_GET_ADDR_2(_addr, _i1, _i2, _acc1, _acc2) \
84
((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2)))
85
86
#define _XMP_M_GET_ADDR_3(_addr, _i1, _i2, _i3, _acc1, _acc2, _acc3) \
87
((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2) + (_i3) * (_acc3)))
88
89
#define _XMP_M_GET_ADDR_4(_addr, _i1, _i2, _i3, _i4, _acc1, _acc2, _acc3, _acc4) \
90
((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2) + (_i3) * (_acc3) + (_i4) * (_acc4)))
91
92
#define _XMP_M_GET_ADDR_5(_addr, _i1, _i2, _i3, _i4, _i5, _acc1, _acc2, _acc3, _acc4, _acc5) \
93
((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2) + (_i3) * (_acc3) + (_i4) * (_acc4) + (_i5) * (_acc5)))
94
95
#define _XMP_M_GET_ADDR_6(_addr, _i1, _i2, _i3, _i4, _i5, _i6, _acc1, _acc2, _acc3, _acc4, _acc5, _acc6) \
96
((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2) + (_i3) * (_acc3) + (_i4) * (_acc4) + (_i5) * (_acc5) + (_i6) * (_acc6)))
97
98
#define _XMP_M_GET_ADDR_7(_addr, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _acc1, _acc2, _acc3, _acc4, _acc5, _acc6, _acc7) \
99
((_addr) + (_i1) * (_acc1) + (_i2) * (_acc2) + (_i3) * (_acc3) + (_i4) * (_acc4) + (_i5) * (_acc5) + (_i6) * (_acc6) + (_i7) * (_acc7)))
100
101
// ------------------------------------------------------------------------------------------------------------------------------
102
#define _XMP_M_TEMPLATE_INFO(_desc, _dim) \
103
(((struct _XMP_template_type *)(_desc))->info[(_dim)])
104
105
#define _XMP_M_ARRAY_INFO(_desc, _dim) \
106
(((struct _XMP_array_type *)(_desc))->info[(_dim)])
107
108
#endif // _XMP_INDEX_MACRO
libxmp
include
xmp_index_macro.h
Generated on Tue Nov 22 2022 23:55:55 for libxmp/libxmpf in Omni Compiler by
1.8.17