[EXT] [PATCH 6/7] powerpc: Remove modf optimization
Adhemerval Zanella Netto
adhemerval.zanella@linaro.org
Thu May 29 13:46:46 GMT 2025
On 28/05/25 17:31, Peter Bergner wrote:
> On 5/28/25 7:59 AM, Adhemerval Zanella wrote:
>> The generic implementation is slight more optimized than the powerpc
>> one, where it has a more optimized inf/nan check (by not using FP
>> unit checks, along with branch prediction hints), and removed one
>> branch by issuing trunc instead of a combination of floor/ceil (which
>> also generated less code).
>>
>> On power10 with gcc 14.2.1:
>>
>> reciprocal-throughput master patch difference
>> workload-0_1 1.1351 0.9067 20.12%
>> workload-1_maxint 1.4230 0.9040 36.47%
>> workload-maxint_maxfloat 1.5038 0.9076 39.65%
>> workload-integral 1.1280 0.9111 19.23%
>>
>> latency master patch difference
>> workload-0_1 1.1440 2.7117 -137.03%
>> workload-1_maxint 4.0556 2.7070 33.25%
>> workload-maxint_maxfloat 3.2122 2.7164 15.43%
>> workload-integral 3.2381 2.7281 15.75%
>
> I like the idea of using an optimized generic routine over an arch
> specific routine, but I'm confused by your data. For the data above,
> it looks like the throughput is less with the patch (ie, smaller number)
> and the latency is longer with the patch (ie, bigger number). ...and not
> just on Power, but x86 as well. Is that just my confusion? If so, what
> are these data values actually specifying?
You are right and I think I messed up the number with a wrong assumption
about the reciprocal-throughput. I think the powerpc might the best
implementation, the final copysign is indeed hurting performance even
on aarch64. Let me recheck everything.
More information about the Libc-alpha
mailing list