Lines Matching +full:10 +full:base +full:- +full:t1
1 // SPDX-License-Identifier: GPL-2.0 OR MIT
4 * "Running tests with kunit_tool" at Documentation/dev-tools/kunit/start.rst
5 * ./tools/testing/kunit/kunit.py run overflow [--raw_output]
38 * Clang 13 and earlier generate unwanted libcalls for 64-bit tests on
39 * 32-bit hosts.
48 #define DEFINE_TEST_ARRAY_TYPED(t1, t2, t) \ argument
49 static const struct test_ ## t1 ## _ ## t2 ## __ ## t { \
50 t1 a; \
54 } t1 ## _ ## t2 ## __ ## t ## _tests[]
66 {U8_MAX, 1, 0, U8_MAX-1, U8_MAX, true, false, false},
67 {U8_MAX, U8_MAX, U8_MAX-1, 0, 1, true, false, true},
69 {U8_MAX, U8_MAX-1, U8_MAX-2, 1, 2, true, false, true},
70 {U8_MAX-1, U8_MAX, U8_MAX-2, U8_MAX, 2, true, true, true},
89 {U16_MAX, 1, 0, U16_MAX-1, U16_MAX, true, false, false},
90 {U16_MAX, U16_MAX, U16_MAX-1, 0, 1, true, false, true},
92 {U16_MAX, U16_MAX-1, U16_MAX-2, 1, 2, true, false, true},
93 {U16_MAX-1, U16_MAX, U16_MAX-2, U16_MAX, 2, true, true, true},
111 {U32_MAX, 1, 0, U32_MAX-1, U32_MAX, true, false, false},
112 {U32_MAX, U32_MAX, U32_MAX-1, 0, 1, true, false, true},
114 {U32_MAX, U32_MAX-1, U32_MAX-2, 1, 2, true, false, true},
115 {U32_MAX-1, U32_MAX, U32_MAX-2, U32_MAX, 2, true, true, true},
122 {-2U, 1U, -1U, -3U, -2U, false, false, false},
123 {-4U, 5U, 1U, -9U, -20U, true, false, true},
134 {U64_MAX, 1, 0, U64_MAX-1, U64_MAX, true, false, false},
135 {U64_MAX, U64_MAX, U64_MAX-1, 0, 1, true, false, true},
137 {U64_MAX, U64_MAX-1, U64_MAX-2, 1, 2, true, false, true},
138 {U64_MAX-1, U64_MAX, U64_MAX-2, U64_MAX, 2, true, true, true},
144 {1000000000ULL /* 10^9 */, 10000000000ULL /* 10^10 */,
147 {-15ULL, 10ULL, -5ULL, -25ULL, -150ULL, false, false, true},
153 {0, S8_MAX, S8_MAX, -S8_MAX, 0, false, false, false},
158 {-1, S8_MIN, S8_MAX, S8_MAX, S8_MIN, true, false, true},
159 {S8_MIN, -1, S8_MAX, -S8_MAX, S8_MIN, true, false, true},
160 {-1, S8_MAX, S8_MAX-1, S8_MIN, -S8_MAX, false, false, false},
161 {S8_MAX, -1, S8_MAX-1, S8_MIN, -S8_MAX, false, true, false},
162 {-1, -S8_MAX, S8_MIN, S8_MAX-1, S8_MAX, false, false, false},
163 {-S8_MAX, -1, S8_MIN, S8_MIN+2, S8_MAX, false, false, false},
165 {1, S8_MIN, -S8_MAX, -S8_MAX, S8_MIN, false, true, false},
166 {S8_MIN, 1, -S8_MAX, S8_MAX, S8_MIN, false, true, false},
168 {S8_MAX, 1, S8_MIN, S8_MAX-1, S8_MAX, true, false, false},
171 {S8_MAX, S8_MAX, -2, 0, 1, true, false, true},
173 {-4, -32, -36, 28, -128, false, false, true},
174 {-4, 32, 28, -36, -128, false, false, false},
180 {0, S16_MAX, S16_MAX, -S16_MAX, 0, false, false, false},
185 {-1, S16_MIN, S16_MAX, S16_MAX, S16_MIN, true, false, true},
186 {S16_MIN, -1, S16_MAX, -S16_MAX, S16_MIN, true, false, true},
187 {-1, S16_MAX, S16_MAX-1, S16_MIN, -S16_MAX, false, false, false},
188 {S16_MAX, -1, S16_MAX-1, S16_MIN, -S16_MAX, false, true, false},
189 {-1, -S16_MAX, S16_MIN, S16_MAX-1, S16_MAX, false, false, false},
190 {-S16_MAX, -1, S16_MIN, S16_MIN+2, S16_MAX, false, false, false},
192 {1, S16_MIN, -S16_MAX, -S16_MAX, S16_MIN, false, true, false},
193 {S16_MIN, 1, -S16_MAX, S16_MAX, S16_MIN, false, true, false},
195 {S16_MAX, 1, S16_MIN, S16_MAX-1, S16_MAX, true, false, false},
198 {S16_MAX, S16_MAX, -2, 0, 1, true, false, true},
203 {0, S32_MAX, S32_MAX, -S32_MAX, 0, false, false, false},
208 {-1, S32_MIN, S32_MAX, S32_MAX, S32_MIN, true, false, true},
209 {S32_MIN, -1, S32_MAX, -S32_MAX, S32_MIN, true, false, true},
210 {-1, S32_MAX, S32_MAX-1, S32_MIN, -S32_MAX, false, false, false},
211 {S32_MAX, -1, S32_MAX-1, S32_MIN, -S32_MAX, false, true, false},
212 {-1, -S32_MAX, S32_MIN, S32_MAX-1, S32_MAX, false, false, false},
213 {-S32_MAX, -1, S32_MIN, S32_MIN+2, S32_MAX, false, false, false},
215 {1, S32_MIN, -S32_MAX, -S32_MAX, S32_MIN, false, true, false},
216 {S32_MIN, 1, -S32_MAX, S32_MAX, S32_MIN, false, true, false},
218 {S32_MAX, 1, S32_MIN, S32_MAX-1, S32_MAX, true, false, false},
221 {S32_MAX, S32_MAX, -2, 0, 1, true, false, true},
227 {0, S64_MAX, S64_MAX, -S64_MAX, 0, false, false, false},
232 {-1, S64_MIN, S64_MAX, S64_MAX, S64_MIN, true, false, true},
233 {S64_MIN, -1, S64_MAX, -S64_MAX, S64_MIN, true, false, true},
234 {-1, S64_MAX, S64_MAX-1, S64_MIN, -S64_MAX, false, false, false},
235 {S64_MAX, -1, S64_MAX-1, S64_MIN, -S64_MAX, false, true, false},
236 {-1, -S64_MAX, S64_MIN, S64_MAX-1, S64_MAX, false, false, false},
237 {-S64_MAX, -1, S64_MIN, S64_MIN+2, S64_MAX, false, false, false},
239 {1, S64_MIN, -S64_MAX, -S64_MAX, S64_MIN, false, true, false},
240 {S64_MIN, 1, -S64_MAX, S64_MAX, S64_MIN, false, true, false},
242 {S64_MAX, 1, S64_MIN, S64_MAX-1, S64_MAX, true, false, false},
245 {S64_MAX, S64_MAX, -2, 0, 1, true, false, true},
247 {-1, -1, -2, 0, 1, false, false, false},
248 {-1, -128, -129, 127, 128, false, false, false},
249 {-128, -1, -129, -127, 128, false, false, false},
250 {0, -S64_MAX, -S64_MAX, S64_MAX, 0, false, false, false},
266 /* Check for internal macro side-effects. */ \
269 "Unexpected check " #op " macro side-effect!\n"); \
271 "Unexpected check " #op " macro side-effect!\n"); \
277 /* Check for internal macro side-effects. */ \
282 "Unexpected wrap " #op " macro side-effect!\n"); \
284 "Unexpected wrap " #op " macro side-effect!\n"); \
317 /* Check for internal macro side-effects. */ \
321 "Unexpected wrapping_" #op " macro side-effect on arg1!\n"); \
323 "Unexpected wrapping_" #op " macro side-effect on arg2!\n"); \
330 check_one_op(t, fmt, add, "+", p->a, p->b, p->sum, p->s_of); \
331 check_one_op(t, fmt, add, "+", p->b, p->a, p->sum, p->s_of); \
332 check_one_op(t, fmt, sub, "-", p->a, p->b, p->diff, p->d_of); \
333 check_one_op(t, fmt, mul, "*", p->a, p->b, p->prod, p->p_of); \
334 check_one_op(t, fmt, mul, "*", p->b, p->a, p->prod, p->p_of); \
336 check_self_op(fmt, assign_add, +=, p->a, p->b); \
337 check_self_op(fmt, assign_add, +=, p->b, p->a); \
338 check_self_op(fmt, assign_sub, -=, p->a, p->b); \
370 {U8_MAX, 2, 1, U8_MAX - 2, U8_MAX - 1, true, false, true},
377 {U32_MAX, 0, -1, -1, 0, true, true, false},
384 {1, 2, 3, -1, 2, false, false, false},
391 {-1, 0, U8_MAX, U8_MAX, 0, true, true, false},
410 if ((t)-1 < 0) \
428 TEST_ONE_SHIFT(1, 10, u16, 1 << 10, false); in shift_sane_test()
450 /* Sane shift: start and end with 0, without a too-wide shift. */ in shift_sane_test()
564 TEST_ONE_SHIFT(-1, 0, s8, 0, true); in shift_nonsense_test()
565 TEST_ONE_SHIFT(-1, 0, u8, 0, true); in shift_nonsense_test()
566 TEST_ONE_SHIFT(-5, 0, s16, 0, true); in shift_nonsense_test()
567 TEST_ONE_SHIFT(-5, 0, u16, 0, true); in shift_nonsense_test()
568 TEST_ONE_SHIFT(-10, 0, int, 0, true); in shift_nonsense_test()
569 TEST_ONE_SHIFT(-10, 0, unsigned int, 0, true); in shift_nonsense_test()
570 TEST_ONE_SHIFT(-100, 0, s32, 0, true); in shift_nonsense_test()
571 TEST_ONE_SHIFT(-100, 0, u32, 0, true); in shift_nonsense_test()
572 TEST_ONE_SHIFT(-10000, 0, s64, 0, true); in shift_nonsense_test()
573 TEST_ONE_SHIFT(-10000, 0, u64, 0, true); in shift_nonsense_test()
576 TEST_ONE_SHIFT(0, -5, s8, 0, true); in shift_nonsense_test()
577 TEST_ONE_SHIFT(0, -5, u8, 0, true); in shift_nonsense_test()
578 TEST_ONE_SHIFT(0, -10, s16, 0, true); in shift_nonsense_test()
579 TEST_ONE_SHIFT(0, -10, u16, 0, true); in shift_nonsense_test()
580 TEST_ONE_SHIFT(0, -15, int, 0, true); in shift_nonsense_test()
581 TEST_ONE_SHIFT(0, -15, unsigned int, 0, true); in shift_nonsense_test()
582 TEST_ONE_SHIFT(0, -20, s32, 0, true); in shift_nonsense_test()
583 TEST_ONE_SHIFT(0, -20, u32, 0, true); in shift_nonsense_test()
584 TEST_ONE_SHIFT(0, -30, s64, 0, true); in shift_nonsense_test()
585 TEST_ONE_SHIFT(0, -30, u64, 0, true); in shift_nonsense_test()
652 * Allocator uses a trailing node argument --------+ (e.g. kmalloc_node())
653 * Allocator uses the gfp_t argument -----------+ | (e.g. kmalloc())
679 /* Create dummy device for devm_kmalloc()-family tests. */ in overflow_allocation_test()
680 dev = kunit_device_register(test, "overflow-test"); in overflow_allocation_test()
736 check_one_size_helper(SIZE_MAX, size_mul, SIZE_MAX, -3); in overflow_size_helpers_test()
746 check_one_size_helper(SIZE_MAX, size_add, SIZE_MAX, -3); in overflow_size_helpers_test()
749 check_one_size_helper(1, size_sub, var--, 3); in overflow_size_helpers_test()
750 check_one_size_helper(1, size_sub, 4, var--); in overflow_size_helpers_test()
753 check_one_size_helper(SIZE_MAX, size_sub, 9, -3); in overflow_size_helpers_test()
757 check_one_size_helper(SIZE_MAX, size_sub, SIZE_MAX, 10); in overflow_size_helpers_test()
760 check_one_size_helper(SIZE_MAX - 2, size_sub, SIZE_MAX - 1, 1); in overflow_size_helpers_test()
761 check_one_size_helper(SIZE_MAX - 4, size_sub, SIZE_MAX - 1, 3); in overflow_size_helpers_test()
762 check_one_size_helper(1, size_sub, SIZE_MAX - 1, -3); in overflow_size_helpers_test()
765 check_one_size_helper(4 * sizeof(*obj->data), in overflow_size_helpers_test()
767 check_one_size_helper(5 * sizeof(*obj->data), in overflow_size_helpers_test()
770 check_one_size_helper(sizeof(*obj->data), in overflow_size_helpers_test()
772 check_one_size_helper(7 * sizeof(*obj->data), in overflow_size_helpers_test()
775 flex_array_size, obj, data, -1 + unconst); in overflow_size_helpers_test()
777 flex_array_size, obj, data, SIZE_MAX - 4 + unconst); in overflow_size_helpers_test()
780 check_one_size_helper(sizeof(*obj) + (4 * sizeof(*obj->data)), in overflow_size_helpers_test()
782 check_one_size_helper(sizeof(*obj) + (5 * sizeof(*obj->data)), in overflow_size_helpers_test()
785 check_one_size_helper(sizeof(*obj) + sizeof(*obj->data), in overflow_size_helpers_test()
788 struct_size, obj, data, -3 + unconst); in overflow_size_helpers_test()
790 struct_size, obj, data, SIZE_MAX - 3 + unconst); in overflow_size_helpers_test()
811 __t1 t1 = (v); \ in overflows_type_test()
813 __TEST_OVERFLOWS_TYPE(__overflows_type, t1, t2, of); \ in overflows_type_test()
814 __TEST_OVERFLOWS_TYPE(__overflows_type, t1, __t2, of); \ in overflows_type_test()
815 __TEST_OVERFLOWS_TYPE(__overflows_type_constexpr, t1, t2, of); \ in overflows_type_test()
816 __TEST_OVERFLOWS_TYPE(__overflows_type_constexpr, t1, __t2, of);\ in overflows_type_test()
826 TEST_OVERFLOWS_TYPE(s8, u8, -1, true); in overflows_type_test()
829 TEST_OVERFLOWS_TYPE(s8, u16, -1, true); in overflows_type_test()
832 TEST_OVERFLOWS_TYPE(s8, u32, -1, true); in overflows_type_test()
836 TEST_OVERFLOWS_TYPE(s8, u64, -1, true); in overflows_type_test()
856 TEST_OVERFLOWS_TYPE(s16, u8, -1, true); in overflows_type_test()
859 TEST_OVERFLOWS_TYPE(s16, u16, -1, true); in overflows_type_test()
862 TEST_OVERFLOWS_TYPE(s16, u32, -1, true); in overflows_type_test()
866 TEST_OVERFLOWS_TYPE(s16, u64, -1, true); in overflows_type_test()
872 TEST_OVERFLOWS_TYPE(s16, s8, (s16)S8_MIN - 1, true); in overflows_type_test()
902 TEST_OVERFLOWS_TYPE(s32, u8, -1, true); in overflows_type_test()
907 TEST_OVERFLOWS_TYPE(s32, u16, -1, true); in overflows_type_test()
910 TEST_OVERFLOWS_TYPE(s32, u32, -1, true); in overflows_type_test()
914 TEST_OVERFLOWS_TYPE(s32, u64, -1, true); in overflows_type_test()
920 TEST_OVERFLOWS_TYPE(s32, s8, (s32)S8_MIN - 1, true); in overflows_type_test()
926 TEST_OVERFLOWS_TYPE(s32, s16, (s32)S16_MIN - 1, true); in overflows_type_test()
958 TEST_OVERFLOWS_TYPE(s64, u8, -1, true); in overflows_type_test()
963 TEST_OVERFLOWS_TYPE(s64, u16, -1, true); in overflows_type_test()
968 TEST_OVERFLOWS_TYPE(s64, u32, -1, true); in overflows_type_test()
973 TEST_OVERFLOWS_TYPE(s64, u64, -1, true); in overflows_type_test()
977 TEST_OVERFLOWS_TYPE(s64, s8, (s64)S8_MIN - 1, true); in overflows_type_test()
982 TEST_OVERFLOWS_TYPE(s64, s16, (s64)S16_MIN - 1, true); in overflows_type_test()
987 TEST_OVERFLOWS_TYPE(s64, s32, (s64)S32_MIN - 1, true); in overflows_type_test()
993 /* Check for macro side-effects. */ in overflows_type_test()
994 var = INT_MAX - 1; in overflows_type_test()
998 var = INT_MAX - 1; in overflows_type_test()
1013 #define TEST_SAME_TYPE(t1, t2, same) do { \ in same_type_test() argument
1014 typeof(t1) __t1h = type_max(t1); \ in same_type_test()
1015 typeof(t1) __t1l = type_min(t1); \ in same_type_test()
1018 KUNIT_EXPECT_EQ(test, true, __same_type(t1, __t1h)); \ in same_type_test()
1019 KUNIT_EXPECT_EQ(test, true, __same_type(t1, __t1l)); \ in same_type_test()
1020 KUNIT_EXPECT_EQ(test, true, __same_type(__t1h, t1)); \ in same_type_test()
1021 KUNIT_EXPECT_EQ(test, true, __same_type(__t1l, t1)); \ in same_type_test()
1026 KUNIT_EXPECT_EQ(test, same, __same_type(t1, t2)); \ in same_type_test()
1031 KUNIT_EXPECT_EQ(test, same, __same_type(t1, __t2h)); \ in same_type_test()
1032 KUNIT_EXPECT_EQ(test, same, __same_type(t1, __t2l)); \ in same_type_test()
1033 KUNIT_EXPECT_EQ(test, same, __same_type(__t2h, t1)); \ in same_type_test()
1034 KUNIT_EXPECT_EQ(test, same, __same_type(__t2l, t1)); \ in same_type_test()
1038 # define TEST_SAME_TYPE64(base, t, m) TEST_SAME_TYPE(base, t, m) in same_type_test() argument
1040 # define TEST_SAME_TYPE64(base, t, m) do { } while (0) in same_type_test() argument
1043 #define TEST_TYPE_SETS(base, mu8, mu16, mu32, ms8, ms16, ms32, mu64, ms64) \ in same_type_test() argument
1045 TEST_SAME_TYPE(base, u8, mu8); \ in same_type_test()
1046 TEST_SAME_TYPE(base, u16, mu16); \ in same_type_test()
1047 TEST_SAME_TYPE(base, u32, mu32); \ in same_type_test()
1048 TEST_SAME_TYPE(base, s8, ms8); \ in same_type_test()
1049 TEST_SAME_TYPE(base, s16, ms16); \ in same_type_test()
1050 TEST_SAME_TYPE(base, s32, ms32); \ in same_type_test()
1051 TEST_SAME_TYPE64(base, u64, mu64); \ in same_type_test()
1052 TEST_SAME_TYPE64(base, s64, ms64); \ in same_type_test()
1066 /* Check for macro side-effects. */ in same_type_test()
1101 TEST_CASTABLE_TO_TYPE(-16, s8, true); in castable_to_type_test()
1102 TEST_CASTABLE_TO_TYPE(-16, s16, true); in castable_to_type_test()
1103 TEST_CASTABLE_TO_TYPE(-16, s32, true); in castable_to_type_test()
1106 TEST_CASTABLE_TO_TYPE(-16, s64, true); in castable_to_type_test()
1127 /* Non-constant expression with mismatched type. */ \ in castable_to_type_test()
1146 TEST_CASTABLE_TO_TYPE((signed long)S ## width ## _MIN - 1, s ## width, false); \ in castable_to_type_test()
1147 TEST_CASTABLE_TO_TYPE((signed long)S ## width ## _MIN - 1, s ## width ## var, false); \ in castable_to_type_test()
1148 /* Non-constant expression with mismatched type. */ \ in castable_to_type_test()
1195 /* Without annotation, it will always be on-stack size. */ in DEFINE_FLEX_test()