<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Hi,<br>
<br>
They are reasonable questions.<br>
<br>
If the number of live vector instances used exceeds the number of vector registers available for the compiled application code then the compiler will spill the vectors registers on the stack i.e., same behavior as non-vector registers.<br>
<br>
There are no plans to implement such explicit register blocking.<br>
<br>
The closest I got to this was prototyping a matrix multiply kernel, where Hotspot’s register allocator managed to do quite a good job, and where IIRC it could not fully eliminate all the bounds checks. See attached,<br>
<br>
Paul.<br>
<br>
 </div>
</span></font></div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText"><br>
<br>
> On May 9, 2024, at 11:07 PM, Andrii Lomakin <andrii0lomakin@gmail.com> wrote:<br>
> <br>
> Hi guys.<br>
> My question is probably naive, but I decided to ask it. <br>
> <br>
> Is it possible to implement so-called register blocking using the current Vector API?<br>
> Is it possible, for example, to create 12 FloatVectors as an indexed array?<br>
> If not, are there any plans to implement this feature on the API level, for example?<br>
> <br>
> What happens if the number of vectors exceeds the number of SIMD registers? <br>
> If, for example, I have 10 SIMD registers but created 12 vector instances as variables, how will that be processed?<br>
<br>
</div>
</span></font></div>
</body>
</html>