[fpc-devel] x86_64 question

Nikolay Nikolov nickysn at gmail.com
Thu Oct 1 20:43:51 CEST 2020

On 10/1/20 8:17 PM, J. Gareth Moreton via fpc-devel wrote:
> Hi everyone,
> I have a small question with assembler size optimisation that maybe 
> one of you guys can give me a second opinion on:
> If you are using the "test" instruction to test some of the lower bits 
> of an instruction, e.g. TEST RCX, $2, is there a penalty with calling 
> TEST CL, $2 instead? The instruction size is a lot smaller on account 
> of the immediate only being 1 byte long instead of 4 bytes, and are 
> mathematically equivalent.  I know you have to be careful with partial 
> write penalties, but partial reads seem to be a bit more nebulous (the 
> register is not modified with TEST).

Yes, I think the shorter TEST CL, $2 is preferred over TEST RCX, $2 on 
every x86_64 CPU. AFAIK, there's no penalty for using 8-bit subregisters 
(except perhaps AH, BH, CH and DH, but the FPC code generator doesn't 
use them). Others can correct me if I'm wrong.


More information about the fpc-devel mailing list