[PATCH] hppa: Improve expansion of ashldi3 when !TARGET_64BIT
John David Anglin
dave.anglin@bell.net
Thu Aug 27 00:31:53 GMT 2020
On 2020-08-26 5:23 p.m., Roger Sayle wrote:
> These more accurate target rtx_costs are used by the gimple-ssa-strength-reduction.c
> (via a call to mult_by_coeff_cost) to decide whether applying strength reduction would
> be profitable. This test case, slsr-13.c, assumes that two multiplications by four are
> cheaper than two multiplications by five. (I believe) This is not the case on hppa which
> has a sh2add instruction, that performs a multiplication by five in one cycle, or exactly
> the same cost as performing a left shift by two (i.e. a multiplication by four). Oddly, I
> also believe this isn't the case on x86_64, where the similar lea instruction is (sometimes)
> as efficient as left shift by two bits.
This looks like a regression.
gcc-10 (prepatch):
addl %r25,%r26,%r28
sh2addl %r25,%r28,%r25
sh2addl %r26,%r28,%r26
addl %r26,%r28,%r28
bv %r0(%r2)
addl %r28,%r25,%r28
<bb 2> [local count: 1073741824]:
x1_4 = c_2(D) + s_3(D);
slsr_11 = s_3(D) * 4;
x2_6 = x1_4 + slsr_11;
slsr_12 = c_2(D) * 4;
x3_8 = x1_4 + slsr_12;
_1 = x1_4 + x2_6;
x_9 = _1 + x3_8;
return x_9;
gcc-11 (with patch):
addl %r25,%r26,%r19
sh2addl %r26,%r26,%r28
addl %r28,%r25,%r28
sh2addl %r25,%r25,%r25
addl %r28,%r19,%r28
addl %r25,%r26,%r26
bv %r0(%r2)
addl %r28,%r26,%r28
<bb 2> [local count: 1073741824]:
x1_4 = c_2(D) + s_3(D);
a2_5 = s_3(D) * 5;
x2_6 = c_2(D) + a2_5;
a3_7 = c_2(D) * 5;
x3_8 = s_3(D) + a3_7;
_1 = x1_4 + x2_6;
x_9 = _1 + x3_8;
return x_9;
Regards,
Dave
--
John David Anglin dave.anglin@bell.net
More information about the Gcc-patches
mailing list