Skip to content

Commit 338dee0

Browse files
authored
[NFC][libclc] Refactor _CLC_*_VECTORIZE macros to functions in .inc files (#145678)
With this PR, if we have customized implementation for scalar or vector length = 2, we don't need to write new macros, e.g. https://github.com/intel/llvm/blob/fb18321705f6/libclc/clc/include/clc/clcmacro.h#L15 Undef __HALF_ONLY, __FLOAT_ONLY and __DOUBLE_ONLY at the end of clc/include/clc/math/gentype.inc llvm-diff shows no change to nvptx64--nvidiacl.bc and amdgcn--amdhsa.bc
1 parent 1dfc3e8 commit 338dee0

File tree

90 files changed

+590
-276
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+590
-276
lines changed

libclc/clc/include/clc/clcmacro.h

Lines changed: 0 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -12,111 +12,6 @@
1212
#include <clc/internal/clc.h>
1313
#include <clc/utils.h>
1414

15-
#define _CLC_UNARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE) \
16-
DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x) { \
17-
return (RET_TYPE##2)(FUNCTION(x.s0), FUNCTION(x.s1)); \
18-
} \
19-
\
20-
DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x) { \
21-
return (RET_TYPE##3)(FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2)); \
22-
} \
23-
\
24-
DECLSPEC RET_TYPE##4 FUNCTION(ARG1_TYPE##4 x) { \
25-
return (RET_TYPE##4)(FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), \
26-
FUNCTION(x.s3)); \
27-
} \
28-
\
29-
DECLSPEC RET_TYPE##8 FUNCTION(ARG1_TYPE##8 x) { \
30-
return (RET_TYPE##8)(FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), \
31-
FUNCTION(x.s3), FUNCTION(x.s4), FUNCTION(x.s5), \
32-
FUNCTION(x.s6), FUNCTION(x.s7)); \
33-
} \
34-
\
35-
DECLSPEC RET_TYPE##16 FUNCTION(ARG1_TYPE##16 x) { \
36-
return (RET_TYPE##16)( \
37-
FUNCTION(x.s0), FUNCTION(x.s1), FUNCTION(x.s2), FUNCTION(x.s3), \
38-
FUNCTION(x.s4), FUNCTION(x.s5), FUNCTION(x.s6), FUNCTION(x.s7), \
39-
FUNCTION(x.s8), FUNCTION(x.s9), FUNCTION(x.sa), FUNCTION(x.sb), \
40-
FUNCTION(x.sc), FUNCTION(x.sd), FUNCTION(x.se), FUNCTION(x.sf)); \
41-
}
42-
43-
#define _CLC_BINARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \
44-
ARG2_TYPE) \
45-
DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x, ARG2_TYPE##2 y) { \
46-
return (RET_TYPE##2)(FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1)); \
47-
} \
48-
\
49-
DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x, ARG2_TYPE##3 y) { \
50-
return (RET_TYPE##3)(FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), \
51-
FUNCTION(x.s2, y.s2)); \
52-
} \
53-
\
54-
DECLSPEC RET_TYPE##4 FUNCTION(ARG1_TYPE##4 x, ARG2_TYPE##4 y) { \
55-
return (RET_TYPE##4)(FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), \
56-
FUNCTION(x.s2, y.s2), FUNCTION(x.s3, y.s3)); \
57-
} \
58-
\
59-
DECLSPEC RET_TYPE##8 FUNCTION(ARG1_TYPE##8 x, ARG2_TYPE##8 y) { \
60-
return (RET_TYPE##8)(FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), \
61-
FUNCTION(x.s2, y.s2), FUNCTION(x.s3, y.s3), \
62-
FUNCTION(x.s4, y.s4), FUNCTION(x.s5, y.s5), \
63-
FUNCTION(x.s6, y.s6), FUNCTION(x.s7, y.s7)); \
64-
} \
65-
\
66-
DECLSPEC RET_TYPE##16 FUNCTION(ARG1_TYPE##16 x, ARG2_TYPE##16 y) { \
67-
return (RET_TYPE##16)( \
68-
FUNCTION(x.s0, y.s0), FUNCTION(x.s1, y.s1), FUNCTION(x.s2, y.s2), \
69-
FUNCTION(x.s3, y.s3), FUNCTION(x.s4, y.s4), FUNCTION(x.s5, y.s5), \
70-
FUNCTION(x.s6, y.s6), FUNCTION(x.s7, y.s7), FUNCTION(x.s8, y.s8), \
71-
FUNCTION(x.s9, y.s9), FUNCTION(x.sa, y.sa), FUNCTION(x.sb, y.sb), \
72-
FUNCTION(x.sc, y.sc), FUNCTION(x.sd, y.sd), FUNCTION(x.se, y.se), \
73-
FUNCTION(x.sf, y.sf)); \
74-
}
75-
76-
#define _CLC_TERNARY_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \
77-
ARG2_TYPE, ARG3_TYPE) \
78-
DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x, ARG2_TYPE##2 y, \
79-
ARG3_TYPE##2 z) { \
80-
return (RET_TYPE##2)(FUNCTION(x.s0, y.s0, z.s0), \
81-
FUNCTION(x.s1, y.s1, z.s1)); \
82-
} \
83-
\
84-
DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x, ARG2_TYPE##3 y, \
85-
ARG3_TYPE##3 z) { \
86-
return (RET_TYPE##3)(FUNCTION(x.s0, y.s0, z.s0), \
87-
FUNCTION(x.s1, y.s1, z.s1), \
88-
FUNCTION(x.s2, y.s2, z.s2)); \
89-
} \
90-
\
91-
DECLSPEC RET_TYPE##4 FUNCTION(ARG1_TYPE##4 x, ARG2_TYPE##4 y, \
92-
ARG3_TYPE##4 z) { \
93-
return (RET_TYPE##4)( \
94-
FUNCTION(x.s0, y.s0, z.s0), FUNCTION(x.s1, y.s1, z.s1), \
95-
FUNCTION(x.s2, y.s2, z.s2), FUNCTION(x.s3, y.s3, z.s3)); \
96-
} \
97-
\
98-
DECLSPEC RET_TYPE##8 FUNCTION(ARG1_TYPE##8 x, ARG2_TYPE##8 y, \
99-
ARG3_TYPE##8 z) { \
100-
return (RET_TYPE##8)( \
101-
FUNCTION(x.s0, y.s0, z.s0), FUNCTION(x.s1, y.s1, z.s1), \
102-
FUNCTION(x.s2, y.s2, z.s2), FUNCTION(x.s3, y.s3, z.s3), \
103-
FUNCTION(x.s4, y.s4, z.s4), FUNCTION(x.s5, y.s5, z.s5), \
104-
FUNCTION(x.s6, y.s6, z.s6), FUNCTION(x.s7, y.s7, z.s7)); \
105-
} \
106-
\
107-
DECLSPEC RET_TYPE##16 FUNCTION(ARG1_TYPE##16 x, ARG2_TYPE##16 y, \
108-
ARG3_TYPE##16 z) { \
109-
return (RET_TYPE##16)( \
110-
FUNCTION(x.s0, y.s0, z.s0), FUNCTION(x.s1, y.s1, z.s1), \
111-
FUNCTION(x.s2, y.s2, z.s2), FUNCTION(x.s3, y.s3, z.s3), \
112-
FUNCTION(x.s4, y.s4, z.s4), FUNCTION(x.s5, y.s5, z.s5), \
113-
FUNCTION(x.s6, y.s6, z.s6), FUNCTION(x.s7, y.s7, z.s7), \
114-
FUNCTION(x.s8, y.s8, z.s8), FUNCTION(x.s9, y.s9, z.s9), \
115-
FUNCTION(x.sa, y.sa, z.sa), FUNCTION(x.sb, y.sb, z.sb), \
116-
FUNCTION(x.sc, y.sc, z.sc), FUNCTION(x.sd, y.sd, z.sd), \
117-
FUNCTION(x.se, y.se, z.se), FUNCTION(x.sf, y.sf, z.sf)); \
118-
}
119-
12015
#define _CLC_V_V_VP_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, \
12116
ADDR_SPACE, ARG2_TYPE) \
12217
DECLSPEC __CLC_XCONCAT(RET_TYPE, 2) \
@@ -171,12 +66,4 @@
17166
FUNCTION(x.sf, ptr + 15)); \
17267
}
17368

174-
#define _CLC_DEFINE_BINARY_BUILTIN(RET_TYPE, FUNCTION, BUILTIN, ARG1_TYPE, \
175-
ARG2_TYPE) \
176-
_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y) { \
177-
return BUILTIN(x, y); \
178-
} \
179-
_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, RET_TYPE, FUNCTION, ARG1_TYPE, \
180-
ARG2_TYPE)
181-
18269
#endif // __CLC_CLCMACRO_H__

libclc/clc/include/clc/geometric/clc_fast_distance.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
#include <clc/math/gentype.inc>
1717

18-
#undef __FLOAT_ONLY
1918
#undef __CLC_FUNCTION
2019

2120
#endif // __CLC_GEOMETRIC_CLC_FAST_DISTANCE_H__

libclc/clc/include/clc/geometric/clc_fast_length.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
#include <clc/math/gentype.inc>
1717

18-
#undef __FLOAT_ONLY
1918
#undef __CLC_FUNCTION
2019

2120
#endif // __CLC_GEOMETRIC_CLC_FAST_LENGTH_H__

libclc/clc/include/clc/geometric/clc_fast_normalize.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,5 @@
1717

1818
#undef __CLC_FUNCTION
1919
#undef __CLC_GEOMETRIC_RET_GENTYPE
20-
#undef __FLOAT_ONLY
2120

2221
#endif // __CLC_GEOMETRIC_CLC_FAST_NORMALIZE_H__

libclc/clc/include/clc/math/clc_exp_helper.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,4 @@
1414

1515
#include <clc/math/gentype.inc>
1616

17-
#undef __DOUBLE_ONLY
18-
1917
#endif // __CLC_MATH_CLC_EXP_HELPER

libclc/clc/include/clc/math/clc_half_cos.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_COS_H__

libclc/clc/include/clc/math/clc_half_divide.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_DIVIDE_H__

libclc/clc/include/clc/math/clc_half_exp.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_EXP_H__

libclc/clc/include/clc/math/clc_half_exp10.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_EXP10_H__

libclc/clc/include/clc/math/clc_half_exp2.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_EXP2_H__

libclc/clc/include/clc/math/clc_half_log.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_LOG_H__

libclc/clc/include/clc/math/clc_half_log10.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_LOG10_H__

libclc/clc/include/clc/math/clc_half_log2.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_LOG2_H__

libclc/clc/include/clc/math/clc_half_powr.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_POWR_H__

libclc/clc/include/clc/math/clc_half_recip.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_RECIP_H__

libclc/clc/include/clc/math/clc_half_rsqrt.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_RSQRT_H__

libclc/clc/include/clc/math/clc_half_sin.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_SIN_H__

libclc/clc/include/clc/math/clc_half_sqrt.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_SQRT_H__

libclc/clc/include/clc/math/clc_half_tan.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_HALF_TAN_H__

libclc/clc/include/clc/math/clc_native_cos.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_COS_H__

libclc/clc/include/clc/math/clc_native_divide.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_DIVIDE_H__

libclc/clc/include/clc/math/clc_native_exp.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_EXP_H__

libclc/clc/include/clc/math/clc_native_exp10.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_EXP10_H__

libclc/clc/include/clc/math/clc_native_exp2.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_EXP2_H__

libclc/clc/include/clc/math/clc_native_log.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_LOG_H__

libclc/clc/include/clc/math/clc_native_log10.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_LOG10_H__

libclc/clc/include/clc/math/clc_native_log2.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_LOG2_H__

libclc/clc/include/clc/math/clc_native_powr.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_POWR_H__

libclc/clc/include/clc/math/clc_native_recip.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_RECIP_H__

libclc/clc/include/clc/math/clc_native_rsqrt.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_RSQRT_H__

libclc/clc/include/clc/math/clc_native_sin.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_SIN_H__

libclc/clc/include/clc/math/clc_native_sqrt.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_SQRT_H__

libclc/clc/include/clc/math/clc_native_tan.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,5 @@
1616
#include <clc/math/gentype.inc>
1717

1818
#undef __CLC_FUNCTION
19-
#undef __FLOAT_ONLY
2019

2120
#endif // __CLC_MATH_CLC_NATIVE_TAN_H__

libclc/clc/include/clc/math/clc_sincos_helpers.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,9 @@
1414

1515
#include <clc/math/gentype.inc>
1616

17-
#undef __FLOAT_ONLY
18-
1917
#define __DOUBLE_ONLY
2018
#define __CLC_BODY <clc/math/clc_sincos_helpers_fp64.inc>
2119

2220
#include <clc/math/gentype.inc>
2321

24-
#undef __DOUBLE_ONLY
25-
2622
#endif // __CLC_MATH_CLC_SINCOS_HELPERS_H__

libclc/clc/include/clc/math/gentype.inc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,3 +349,7 @@
349349

350350
#undef __CLC_AS_GENTYPE
351351
#undef __CLC_CONVERT_GENTYPE
352+
353+
#undef __HALF_ONLY
354+
#undef __FLOAT_ONLY
355+
#undef __DOUBLE_ONLY

0 commit comments

Comments
 (0)