[Intel-gfx] [PATCH i-g-t] lib: Add 64-bit version of igt_assert_cmp

Michel Thierry michel.thierry at intel.com
Tue Jun 30 05:03:03 PDT 2015


On 6/30/2015 12:42 PM, Chris Wilson wrote:
> On Tue, Jun 30, 2015 at 12:31:46PM +0100, Michel Thierry wrote:
>> igt_assert_cmp64 and its derivatives:
>> - igt_assert_eq64
>> - igt_assert_neq64
>> - igt_assert_lte64
>> - igt_assert_lt64
>>
>> Signed-off-by: Michel Thierry <michel.thierry at intel.com>
>> ---
>>   lib/igt_core.h | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
>>   1 file changed, 63 insertions(+), 6 deletions(-)
>>
>> diff --git a/lib/igt_core.h b/lib/igt_core.h
>> index 2b2b6e9..dd39521 100644
>> --- a/lib/igt_core.h
>> +++ b/lib/igt_core.h
>> @@ -333,6 +333,7 @@ void igt_exit(void) __attribute__((noreturn));
>>    * Fails (sub-)test if the condition is not met
>>    *
>>    * Should be used everywhere where a test compares two integer values.
>> + * For 64-bit values use igt_assert_cmp64().
>>    *
>>    * Like igt_assert(), but displays the values being compared on failure instead
>>    * of simply printing the stringified expression.
>> @@ -365,6 +366,24 @@ void igt_exit(void) __attribute__((noreturn));
>>   	} while (0)
>>
>>   /**
>> + * igt_assert_cmp64:
>> + * @n1: first value
>> + * @cmp: compare operator
>> + * @ncmp: negated version of @cmp
>> + * @n2: second value
>> + *
>> + * Like igt_assert_cmpint(), but for long longs;
>> + */
>> +#define igt_assert_cmp64(n1, cmp, ncmp, n2) \
>> +	do { \
>> +		long long __n1 = (n1), __n2 = (n2); \
>> +		if (__n1 cmp __n2) ; else \
>> +		__igt_fail_assert(IGT_LOG_DOMAIN, __FILE__, __LINE__, __func__, \
>> +				  #n1 " " #cmp " " #n2, \
>> +				  "error: %#llx " #ncmp " %#llx\n", __n1, __n2); \
>> +	} while (0)
>
> A new igt_assert_cmp_t?
>
> 	#define igt_assert_cmp_t(T, n1, cmp, ncmp, n2) do {\
> 		T __n1 = (n1), __n2 = (n2); \
> 		if (!(__n1 cmp __n2)) \	
> 		__igt_fail_assert(IGT_LOG_DOMAIN, __FILE__, __LINE__, __func__, \
> 				  #n1 " " #cmp " " #n2, \
> 				  "error: %#llx " #ncmp " %#llx\n", __n1, __n2); \

I'll also need to cast __n1 and __n2 to long long, or it will throw 
warnings about format '%llx' getting an uint32. Ok?

> 	} while (0)
>
> 	#define igt_assert_cmpint(n1, cmp, ncmp, n2) \
> 		igt_assert_cmp_t(int, n1, cmp, ncmp, n2)
>
> 	#define igt_assert_cmp64(n1, cmp, ncmp, n2) \
> 		igt_assert_cmp_t(long long, n1, cmp, ncmp, n2)
>
> That at least hides the ugliest of macros and stops it reproducing at an
> alarming rate. Whether it is worth creating igt_assert_eq_t and friends
> just to avoid duplicating the (cmp, ncmp) is debatable.
> -Chris
>


More information about the Intel-gfx mailing list