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