This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH v3] combine: perform jump threading at the end



> Am 17.09.2018 um 19:11 schrieb Segher Boessenkool <segher@kernel.crashing.org>:
> 
> On Mon, Sep 17, 2018 at 10:50:58AM +0200, Ilya Leoshkevich wrote:
>>> Am 14.09.2018 um 23:35 schrieb Segher Boessenkool <segher@kernel.crashing.org>:
>>> Could you please show generated code before and after this patch?
>>> I mean generated assembler code.  What -S gives you.
>> 
>> Before:
>> 
>> foo4:
>> .LFB0:
>> 	.cfi_startproc
>> 	lt	%r1,0(%r2)
>> 	jne	.L2
>> 	lhi	%r3,1
>> 	cs	%r1,%r3,0(%r2)
>> .L2:
>> 	jne	.L5
>> 	br	%r14
>> .L5:
>> 	jg	bar
>> 
>> After:
>> 
>> foo4:
>> .LFB0:
>> 	.cfi_startproc
>> 	lt	%r1,0(%r2)
>> 	jne	.L4
>> 	lhi	%r3,1
>> 	cs	%r1,%r3,0(%r2)
>> 	jne	.L4
>> 	br	%r14
>> .L4:
>> 	jg	bar
> 
> Ah.  And a compiler of some weeks old gives
> 
> foo4:
> .LFB0:
> 	.cfi_startproc
> 	lhi	%r3,0
> 	lhi	%r4,1
> 	cs	%r3,%r4,0(%r2)
> 	jne	.L4
> 	br	%r14
> .L4:
> 	jg	bar
> 
> so this is all caused by the recent optimisation that avoids the "cs" if
> it can.

Could you please try building with -march=z13?  I don’t see the „lt“ 
instruction in your output.  On z196+ we try to speed up the code by
jumping around the „cs“ when possible.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]