[15] RFR(S): 8240905: assert(mem == (Node*)1 || mem == mem2) failed: multiple Memories being matched at once?
Tobias Hartmann
tobias.hartmann at oracle.com
Mon Mar 23 08:02:44 UTC 2020
Hi Vladimir,
thanks for the review!
On 20.03.20 21:22, Vladimir Kozlov wrote:
>> Since JDK-8031321 which added support for Intel's bit manipulation instructions to JDK 8u20, we have
>> rules in the .ad file that are matching two LoadNodes and therefore two memory inputs to a single
>> instruction (for example, blsiI_rReg_mem [1]). As of today, these BMI1 instructions are still the
>> only ones that match multiple memory.
>
> Correction: multiple *uses* of a memory input.
Right.
> I thought we can't have 2 memory inputs in mach instructions but to my surprise I found 3 cases in
> x86_32.ad. But they are exceptions - they handle FPU instructions: addFPR24_mem_*,
> mulFPR24_mem_mem. There are few other in x86_32.ad which moves data between memory and stackSlot.
> But I don't see anything like that in x86_64.ad or other architectures .ad files.
Yes and these are not affected by my patch.
> I agree with this solution. We will fallback to Register version of instructions for such cases.
Thanks, I'm currently running some performance benchmarks for sanity.
> And someone have to test 32-bit build with these changes.
Any volunteers? :)
Best regards,
Tobias
More information about the hotspot-compiler-dev
mailing list