Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/xe: Rename few xe_args.h macros

To minimize the risk of future name collisions, rename macros to
always include the ARG or ARGS tag:

DROP_FIRST to DROP_FIRST_ARG
PICK_FIRST to FIRST_ARG
PICK_LAST to LAST_ARG

Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> #v2
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240508171000.1864-1-michal.wajdeczko@intel.com

+119 -66
+66 -35
drivers/gpu/drm/xe/tests/xe_args_test.c
··· 21 21 #undef buz 22 22 } 23 23 24 - static void drop_first_example(struct kunit *test) 24 + static void drop_first_arg_example(struct kunit *test) 25 25 { 26 26 #define foo X, Y, Z, Q 27 - #define bar CALL_ARGS(COUNT_ARGS, DROP_FIRST(foo)) 27 + #define bar CALL_ARGS(COUNT_ARGS, DROP_FIRST_ARG(foo)) 28 28 29 29 KUNIT_EXPECT_EQ(test, bar, 3); 30 30 ··· 32 32 #undef bar 33 33 } 34 34 35 - static void pick_first_example(struct kunit *test) 35 + static void first_arg_example(struct kunit *test) 36 36 { 37 37 int X = 1; 38 38 39 39 #define foo X, Y, Z, Q 40 - #define bar PICK_FIRST(foo) 40 + #define bar FIRST_ARG(foo) 41 41 42 42 KUNIT_EXPECT_EQ(test, bar, X); 43 43 KUNIT_EXPECT_STREQ(test, __stringify(bar), "X"); ··· 46 46 #undef bar 47 47 } 48 48 49 - static void pick_last_example(struct kunit *test) 49 + static void last_arg_example(struct kunit *test) 50 50 { 51 51 int Q = 1; 52 52 53 53 #define foo X, Y, Z, Q 54 - #define bar PICK_LAST(foo) 54 + #define bar LAST_ARG(foo) 55 55 56 56 KUNIT_EXPECT_EQ(test, bar, Q); 57 57 KUNIT_EXPECT_STREQ(test, __stringify(bar), "Q"); ··· 60 60 #undef bar 61 61 } 62 62 63 + static void pick_arg_example(struct kunit *test) 64 + { 65 + int Y = 1, Z = 2; 66 + 67 + #define foo X, Y, Z, Q 68 + #define bar PICK_ARG(2, foo) 69 + #define buz PICK_ARG3(foo) 70 + 71 + KUNIT_EXPECT_EQ(test, bar, Y); 72 + KUNIT_EXPECT_STREQ(test, __stringify(bar), "Y"); 73 + KUNIT_EXPECT_EQ(test, buz, Z); 74 + KUNIT_EXPECT_STREQ(test, __stringify(buz), "Z"); 75 + 76 + #undef foo 77 + #undef bar 78 + #undef buz 79 + } 80 + 63 81 static void sep_comma_example(struct kunit *test) 64 82 { 65 83 #define foo(f) f(X) f(Y) f(Z) f(Q) 66 - #define bar DROP_FIRST(foo(ARGS_SEP_COMMA __stringify)) 67 - #define buz CALL_ARGS(COUNT_ARGS, DROP_FIRST(foo(ARGS_SEP_COMMA))) 84 + #define bar DROP_FIRST_ARG(foo(ARGS_SEP_COMMA __stringify)) 85 + #define buz CALL_ARGS(COUNT_ARGS, DROP_FIRST_ARG(foo(ARGS_SEP_COMMA))) 68 86 69 87 static const char * const a[] = { bar }; 70 88 ··· 141 123 KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, MAX_ARGS), 12); 142 124 } 143 125 144 - static void drop_first_test(struct kunit *test) 126 + static void drop_first_arg_test(struct kunit *test) 145 127 { 146 128 int Y = -2, Z = -3, Q = -4; 147 - int a[] = { DROP_FIRST(FOO_ARGS) }; 129 + int a[] = { DROP_FIRST_ARG(FOO_ARGS) }; 148 130 149 - KUNIT_EXPECT_EQ(test, DROP_FIRST(0, -1), -1); 150 - KUNIT_EXPECT_EQ(test, DROP_FIRST(DROP_FIRST(0, -1, -2)), -2); 131 + KUNIT_EXPECT_EQ(test, DROP_FIRST_ARG(0, -1), -1); 132 + KUNIT_EXPECT_EQ(test, DROP_FIRST_ARG(DROP_FIRST_ARG(0, -1, -2)), -2); 151 133 152 - KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, DROP_FIRST(FOO_ARGS)), 3); 153 - KUNIT_EXPECT_EQ(test, DROP_FIRST(DROP_FIRST(DROP_FIRST(FOO_ARGS))), -4); 134 + KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, DROP_FIRST_ARG(FOO_ARGS)), 3); 135 + KUNIT_EXPECT_EQ(test, DROP_FIRST_ARG(DROP_FIRST_ARG(DROP_FIRST_ARG(FOO_ARGS))), -4); 154 136 KUNIT_EXPECT_EQ(test, a[0], -2); 155 137 KUNIT_EXPECT_EQ(test, a[1], -3); 156 138 KUNIT_EXPECT_EQ(test, a[2], -4); 157 - KUNIT_EXPECT_STREQ(test, __stringify(DROP_FIRST(DROP_FIRST(DROP_FIRST(FOO_ARGS)))), "Q"); 139 + 140 + #define foo DROP_FIRST_ARG(FOO_ARGS) 141 + #define bar DROP_FIRST_ARG(DROP_FIRST_ARG(FOO_ARGS)) 142 + #define buz DROP_FIRST_ARG(DROP_FIRST_ARG(DROP_FIRST_ARG(FOO_ARGS))) 143 + 144 + KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, foo), 3); 145 + KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, bar), 2); 146 + KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, buz), 1); 147 + KUNIT_EXPECT_STREQ(test, __stringify(buz), "Q"); 148 + 149 + #undef foo 150 + #undef bar 151 + #undef buz 158 152 } 159 153 160 - static void pick_first_test(struct kunit *test) 154 + static void first_arg_test(struct kunit *test) 161 155 { 162 156 int X = -1; 163 - int a[] = { PICK_FIRST(FOO_ARGS) }; 157 + int a[] = { FIRST_ARG(FOO_ARGS) }; 164 158 165 - KUNIT_EXPECT_EQ(test, PICK_FIRST(-1, -2), -1); 159 + KUNIT_EXPECT_EQ(test, FIRST_ARG(-1, -2), -1); 166 160 167 - KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, PICK_FIRST(FOO_ARGS)), 1); 168 - KUNIT_EXPECT_EQ(test, PICK_FIRST(FOO_ARGS), -1); 161 + KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, FIRST_ARG(FOO_ARGS)), 1); 162 + KUNIT_EXPECT_EQ(test, FIRST_ARG(FOO_ARGS), -1); 169 163 KUNIT_EXPECT_EQ(test, a[0], -1); 170 - KUNIT_EXPECT_STREQ(test, __stringify(PICK_FIRST(FOO_ARGS)), "X"); 164 + KUNIT_EXPECT_STREQ(test, __stringify(FIRST_ARG(FOO_ARGS)), "X"); 171 165 } 172 166 173 - static void pick_last_test(struct kunit *test) 167 + static void last_arg_test(struct kunit *test) 174 168 { 175 169 int Q = -4; 176 - int a[] = { PICK_LAST(FOO_ARGS) }; 170 + int a[] = { LAST_ARG(FOO_ARGS) }; 177 171 178 - KUNIT_EXPECT_EQ(test, PICK_LAST(-1, -2), -2); 172 + KUNIT_EXPECT_EQ(test, LAST_ARG(-1, -2), -2); 179 173 180 - KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, PICK_LAST(FOO_ARGS)), 1); 181 - KUNIT_EXPECT_EQ(test, PICK_LAST(FOO_ARGS), -4); 174 + KUNIT_EXPECT_EQ(test, CALL_ARGS(COUNT_ARGS, LAST_ARG(FOO_ARGS)), 1); 175 + KUNIT_EXPECT_EQ(test, LAST_ARG(FOO_ARGS), -4); 182 176 KUNIT_EXPECT_EQ(test, a[0], -4); 183 - KUNIT_EXPECT_STREQ(test, __stringify(PICK_LAST(FOO_ARGS)), "Q"); 177 + KUNIT_EXPECT_STREQ(test, __stringify(LAST_ARG(FOO_ARGS)), "Q"); 184 178 185 - KUNIT_EXPECT_EQ(test, PICK_LAST(MAX_ARGS), -12); 186 - KUNIT_EXPECT_STREQ(test, __stringify(PICK_LAST(MAX_ARGS)), "-12"); 179 + KUNIT_EXPECT_EQ(test, LAST_ARG(MAX_ARGS), -12); 180 + KUNIT_EXPECT_STREQ(test, __stringify(LAST_ARG(MAX_ARGS)), "-12"); 187 181 } 188 182 189 183 static struct kunit_case args_tests[] = { 190 184 KUNIT_CASE(count_args_test), 191 185 KUNIT_CASE(call_args_example), 192 186 KUNIT_CASE(call_args_test), 193 - KUNIT_CASE(drop_first_example), 194 - KUNIT_CASE(drop_first_test), 195 - KUNIT_CASE(pick_first_example), 196 - KUNIT_CASE(pick_first_test), 197 - KUNIT_CASE(pick_last_example), 198 - KUNIT_CASE(pick_last_test), 187 + KUNIT_CASE(drop_first_arg_example), 188 + KUNIT_CASE(drop_first_arg_test), 189 + KUNIT_CASE(first_arg_example), 190 + KUNIT_CASE(first_arg_test), 191 + KUNIT_CASE(last_arg_example), 192 + KUNIT_CASE(last_arg_test), 193 + KUNIT_CASE(pick_arg_example), 199 194 KUNIT_CASE(sep_comma_example), 200 195 {} 201 196 };
+47 -25
drivers/gpu/drm/xe/xe_args.h
··· 35 35 #define __CALL_ARGS(f, args...) f(args) 36 36 37 37 /** 38 - * DROP_FIRST - Returns all arguments except the first one. 38 + * DROP_FIRST_ARG - Returns all arguments except the first one. 39 39 * @args: arguments 40 40 * 41 41 * This helper macro allows manipulation the argument list before passing it ··· 44 44 * Example: 45 45 * 46 46 * #define foo X,Y,Z,Q 47 - * #define bar CALL_ARGS(COUNT_ARGS, DROP_FIRST(foo)) 47 + * #define bar CALL_ARGS(COUNT_ARGS, DROP_FIRST_ARG(foo)) 48 48 * 49 49 * With above definitions bar expands to 3. 50 50 */ 51 - #define DROP_FIRST(args...) __DROP_FIRST(args) 52 - #define __DROP_FIRST(a, b...) b 51 + #define DROP_FIRST_ARG(args...) __DROP_FIRST_ARG(args) 52 + #define __DROP_FIRST_ARG(a, b...) b 53 53 54 54 /** 55 - * PICK_FIRST - Returns the first argument. 55 + * FIRST_ARG - Returns the first argument. 56 56 * @args: arguments 57 57 * 58 58 * This helper macro allows manipulation the argument list before passing it ··· 61 61 * Example: 62 62 * 63 63 * #define foo X,Y,Z,Q 64 - * #define bar PICK_FIRST(foo) 64 + * #define bar FIRST_ARG(foo) 65 65 * 66 66 * With above definitions bar expands to X. 67 67 */ 68 - #define PICK_FIRST(args...) __PICK_FIRST(args) 69 - #define __PICK_FIRST(a, b...) a 68 + #define FIRST_ARG(args...) __FIRST_ARG(args) 69 + #define __FIRST_ARG(a, b...) a 70 70 71 71 /** 72 - * PICK_LAST - Returns the last argument. 72 + * LAST_ARG - Returns the last argument. 73 73 * @args: arguments 74 74 * 75 75 * This helper macro allows manipulation the argument list before passing it ··· 80 80 * Example: 81 81 * 82 82 * #define foo X,Y,Z,Q 83 - * #define bar PICK_LAST(foo) 83 + * #define bar LAST_ARG(foo) 84 84 * 85 85 * With above definitions bar expands to Q. 86 86 */ 87 - #define PICK_LAST(args...) __PICK_ARG(COUNT_ARGS(args), args) 87 + #define LAST_ARG(args...) __LAST_ARG(args) 88 + #define __LAST_ARG(args...) PICK_ARG(COUNT_ARGS(args), args) 89 + 90 + /** 91 + * PICK_ARG - Returns the n-th argument. 92 + * @n: argument number to be returned 93 + * @args: arguments 94 + * 95 + * This helper macro allows manipulation the argument list before passing it 96 + * to the next level macro. 97 + * 98 + * Like COUNT_ARGS() this macro supports n up to 12. 99 + * Specialized macros PICK_ARG1() to PICK_ARG12() are also available. 100 + * 101 + * Example: 102 + * 103 + * #define foo X,Y,Z,Q 104 + * #define bar PICK_ARG(2, foo) 105 + * #define buz PICK_ARG3(foo) 106 + * 107 + * With above definitions bar expands to Y and buz expands to Z. 108 + */ 109 + #define PICK_ARG(n, args...) __PICK_ARG(n, args) 88 110 #define __PICK_ARG(n, args...) CALL_ARGS(CONCATENATE(PICK_ARG, n), args) 89 - #define PICK_ARG1(args...) PICK_FIRST(args) 90 - #define PICK_ARG2(args...) PICK_ARG1(DROP_FIRST(args)) 91 - #define PICK_ARG3(args...) PICK_ARG2(DROP_FIRST(args)) 92 - #define PICK_ARG4(args...) PICK_ARG3(DROP_FIRST(args)) 93 - #define PICK_ARG5(args...) PICK_ARG4(DROP_FIRST(args)) 94 - #define PICK_ARG6(args...) PICK_ARG5(DROP_FIRST(args)) 95 - #define PICK_ARG7(args...) PICK_ARG6(DROP_FIRST(args)) 96 - #define PICK_ARG8(args...) PICK_ARG7(DROP_FIRST(args)) 97 - #define PICK_ARG9(args...) PICK_ARG8(DROP_FIRST(args)) 98 - #define PICK_ARG10(args...) PICK_ARG9(DROP_FIRST(args)) 99 - #define PICK_ARG11(args...) PICK_ARG10(DROP_FIRST(args)) 100 - #define PICK_ARG12(args...) PICK_ARG11(DROP_FIRST(args)) 111 + #define PICK_ARG1(args...) FIRST_ARG(args) 112 + #define PICK_ARG2(args...) PICK_ARG1(DROP_FIRST_ARG(args)) 113 + #define PICK_ARG3(args...) PICK_ARG2(DROP_FIRST_ARG(args)) 114 + #define PICK_ARG4(args...) PICK_ARG3(DROP_FIRST_ARG(args)) 115 + #define PICK_ARG5(args...) PICK_ARG4(DROP_FIRST_ARG(args)) 116 + #define PICK_ARG6(args...) PICK_ARG5(DROP_FIRST_ARG(args)) 117 + #define PICK_ARG7(args...) PICK_ARG6(DROP_FIRST_ARG(args)) 118 + #define PICK_ARG8(args...) PICK_ARG7(DROP_FIRST_ARG(args)) 119 + #define PICK_ARG9(args...) PICK_ARG8(DROP_FIRST_ARG(args)) 120 + #define PICK_ARG10(args...) PICK_ARG9(DROP_FIRST_ARG(args)) 121 + #define PICK_ARG11(args...) PICK_ARG10(DROP_FIRST_ARG(args)) 122 + #define PICK_ARG12(args...) PICK_ARG11(DROP_FIRST_ARG(args)) 101 123 102 124 /** 103 125 * ARGS_SEP_COMMA - Definition of a comma character. ··· 131 109 * Example: 132 110 * 133 111 * #define foo(f) f(X) f(Y) f(Z) f(Q) 134 - * #define bar DROP_FIRST(foo(ARGS_SEP_COMMA __stringify)) 135 - * #define buz CALL_ARGS(COUNT_ARGS, DROP_FIRST(foo(ARGS_SEP_COMMA))) 112 + * #define bar DROP_FIRST_ARG(foo(ARGS_SEP_COMMA __stringify)) 113 + * #define buz CALL_ARGS(COUNT_ARGS, DROP_FIRST_ARG(foo(ARGS_SEP_COMMA))) 136 114 * 137 115 * With above definitions bar expands to 138 116 * "X", "Y", "Z", "Q"
+6 -6
drivers/gpu/drm/xe/xe_rtp_helpers.h
··· 17 17 */ 18 18 #define _XE_ESC(...) __VA_ARGS__ 19 19 20 - #define _XE_TUPLE_TAIL(...) (DROP_FIRST(__VA_ARGS__)) 20 + #define _XE_TUPLE_TAIL(...) (DROP_FIRST_ARG(__VA_ARGS__)) 21 21 22 22 #define _XE_RTP_CONCAT(a, b) CONCATENATE(XE_RTP_, CONCATENATE(a, b)) 23 23 ··· 54 54 * XE_RTP_TEST_FOO BANANA XE_RTP_TEST_BAR 55 55 */ 56 56 #define XE_RTP_PASTE_FOREACH(prefix_, sep_, args_) _XE_RTP_CONCAT(PASTE_, COUNT_ARGS args_)(prefix_, sep_, args_) 57 - #define XE_RTP_PASTE_1(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, PICK_FIRST args_) 58 - #define XE_RTP_PASTE_2(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, PICK_FIRST args_) __XE_RTP_PASTE_SEP_ ## sep_ XE_RTP_PASTE_1(prefix_, sep_, _XE_TUPLE_TAIL args_) 59 - #define XE_RTP_PASTE_3(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, PICK_FIRST args_) __XE_RTP_PASTE_SEP_ ## sep_ XE_RTP_PASTE_2(prefix_, sep_, _XE_TUPLE_TAIL args_) 60 - #define XE_RTP_PASTE_4(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, PICK_FIRST args_) __XE_RTP_PASTE_SEP_ ## sep_ XE_RTP_PASTE_3(prefix_, sep_, _XE_TUPLE_TAIL args_) 57 + #define XE_RTP_PASTE_1(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, FIRST_ARG args_) 58 + #define XE_RTP_PASTE_2(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, FIRST_ARG args_) __XE_RTP_PASTE_SEP_ ## sep_ XE_RTP_PASTE_1(prefix_, sep_, _XE_TUPLE_TAIL args_) 59 + #define XE_RTP_PASTE_3(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, FIRST_ARG args_) __XE_RTP_PASTE_SEP_ ## sep_ XE_RTP_PASTE_2(prefix_, sep_, _XE_TUPLE_TAIL args_) 60 + #define XE_RTP_PASTE_4(prefix_, sep_, args_) _XE_RTP_CONCAT(prefix_, FIRST_ARG args_) __XE_RTP_PASTE_SEP_ ## sep_ XE_RTP_PASTE_3(prefix_, sep_, _XE_TUPLE_TAIL args_) 61 61 62 62 /* 63 63 * XE_RTP_DROP_CAST - Drop cast to convert a compound statement to a initializer ··· 70 70 * 71 71 * { .a = 10 } 72 72 */ 73 - #define XE_RTP_DROP_CAST(...) _XE_ESC(DROP_FIRST _XE_ESC __VA_ARGS__) 73 + #define XE_RTP_DROP_CAST(...) _XE_ESC(DROP_FIRST_ARG _XE_ESC __VA_ARGS__) 74 74 75 75 #endif