src/dst register for andI_rReg_imm255 and andI_rReg_imm65535

Christian Thalinger Christian.Thalinger at Sun.COM
Tue Sep 22 01:34:52 PDT 2009


Tom Rodriguez wrote:
> On Sep 21, 2009, at 12:06 PM, Christian Thalinger wrote:
> 
>> Vladimir Kozlov wrote:
>>> Christian,
>>>
>>> Can you tell more about the problem you see?
>>> The instructions you pointing use dst register only:
>>>
>>> "movzbl  $dst, $dst\t# int & 0xFF"
>> Right.  Well, it's not a problem, I just wonder why it does not use  
>> the
>> src register:
>>
>> "movzbl  $dst, $src\t# int & 0xFF"
>>
>> but instead we have to emit a spill instruction to move src to dst.
> 
> That will occur if there are other users of src.  If it's the last use  
> then we shouldn't emit the spill.

I was looking at some assembly output while testing something else and I
noticed that it's not the case.  Maybe LoopUnrollLimit=1 changes the way
code is emitted, but in this small loop there is no other use of src and
we have a spill:

042   B2: #	B2 B3 <- B1 B2 	Loop: B2-B2 inner stride: not constant
Freq: 1e+06
042   	movl    R11, RBP	# spill
045   	movzbl  R11, R11	# int & 0xFF
049   	addl    RBX, R11	# int
04c   	incl    RBP	# int
04e   	cmpl    RBP, #2147483647
054   	jl,s   B2	# loop end  P=1.000000 C=809121.000000

-- Christian


More information about the hotspot-compiler-dev mailing list