Needs explanation of an assembly snippet

Hello,

I am having trouble understanding the goal of the second add.w instruction in the snippet below:

...
add.w r1, r4, r5
add.w r1, r1, r1, lsr #0x1f
asr r1, r1, #1
...

I imagine it may have to do with a potential overflow on the first addition. The asr indicates a signed division.
So, assuming the following signed variables, it would be:

signed int r1
r1 = r4 + r5
r1 = r1 + (r1<0 ? 1: 0)
r1 = r1 / 2

I do not understand the reason for that check. As anyone seen this kind of idiom before? What could it be used for?

Thank you.

More questions in this forum