[11] RFR(M) 8201193: Use XMM/YMM for objects initialization
Vladimir Kozlov
vladimir.kozlov at oracle.com
Mon Jun 11 22:04:25 UTC 2018
Hi John,
thank you for looking on it.
AD files have only 'format' code which produce output for
PrintOptoAssembly flag. $$emit$$ is a new way to produce format %{ %}
when you have conditions (global flags checks).
All AD files calls the same one method MacroAssembler::clear_mem().
Yes, 'format' (PrintOptoAssembly) output will be different from
generated assembly. But I thought that it is pseudo-assembly anyway (we
never promised it will match assembly) and we can have slightly
different output but make it simple in AD file.
Regards,
Vladimir
On 6/11/18 2:09 PM, John Rose wrote:
> On Jun 11, 2018, at 1:57 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com
> <mailto:vladimir.kozlov at oracle.com>> wrote:
>>
>> AMD processors don't have ERMS (Enhanced REP MOVSB/STOSB) support. To
>> have good performance it is suggested to use SSE/AVX wide registers
>> stores instead of 'rep stosq'. It shows better performance on AMD cpus.
>>
>> Tested with jdk-tier1, hs-tier1, hs-tier2, hs-precheckin-comp
>> (-Xcomp), hs-graal on all x86 OSs. And using '-XX:-UseFastStosb
>> -XX:+UseXMMForObjInit' flags combination to force new code generation.
>
> Good stuff. I have one suggestion: If possible, let's use
> macroassembler to generate the code from the AD files.
> It is a maintainability problem to have three copies of
> the same algorithm. I notice in particular that the AD
> file versions don't support UseAVX==1 while the assembler
> does. That's going to give some maintainer nightmares
> in a few years.
>
> — John
More information about the hotspot-compiler-dev
mailing list