[Mesa-dev] [PATCH] gallium/r600: Replace ALIGN_DIVUP with DIV_ROUND_UP

Nicolai Hähnle nhaehnle at gmail.com
Wed Dec 30 18:43:22 PST 2015


On 30.12.2015 13:44, Krzysztof A. Sobiecki wrote:
> Nicolai Hähnle <nhaehnle at gmail.com> writes:
>
>> On 30.12.2015 08:42, Krzysztof A. Sobiecki wrote:
>>> Nicolai Hähnle <nhaehnle at gmail.com> writes:
>>>
>>>> On 29.12.2015 14:27, Krzysztof A. Sobiecki wrote:
>>>>> From: Krzysztof Sobiecki <sobkas at gmail.com>
>>>>>
>>>>> ALIGN_DIVUP is a driver specific(r600g) macro that duplicates DIV_ROUND_UP functionality.
>>>>> Replacing it with DIV_ROUND_UP eliminates this problems.
>>>>
>>>> Those macros are actually slightly different, and the assembly
>>>> generated by the ALIGN_DIVUP looks clearly better to me.
>>>>
>>>> I remember seeing a very long thread about this not so long ago - what
>>>> was the resolution there?
>>>>
>>>> Cheers,
>>>> Nicolai
>>>>
>>> I would like to remove ALIGN_DIVUP first and then debate with
>>> implementation DIV_ROUND_UP should use.
>>>
>>> btw. I prefer 1 + ((x - 1) / y)
>>
>> That produces an incorrect result when x is an unsigned type and equal
>> to 0 -- and that is something that existing code definitely relies on.
>>
>> Cheers,
>> Nicolai
>>
> Then what about (x / y) + (i % y != 0)

Generates similar assembly to the DIV_ROUND_UP version.

Anyway, now that I look at it again I'd say just go ahead and add my 
R-b. Yes, the assembly looks slightly worse, but only slightly, and 
avoiding surprises with overflows down the line seems like a good idea.

Cheers,
Nicolai


More information about the mesa-dev mailing list