<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60043>60043</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Add slow LEA schedule information for Intel CPUs
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
phoebewang
</td>
</tr>
</table>
<pre>
According to Intel SOM, different microarchitectures have different limitations in the use of LEA instructions, aka slow LEA in some cases. But none of current Intel schedule model describes it. It would be helpful if we model them correctly.
There are 3 major different slow cases:
- LEA with three source operands: base, index, and offset. This case exists in Core microarchitectures since Sandybridge till Icelake;
- LEA with valid index. This case exists in Atom microarchitectures Silvermont, Goldmont and Goldmont Plus;
- LEAs without a scaled index and with only two sources among base, index, and displacement. This case exists in Gracemont;
There are also other limitations with some microarchitecture, e.g., base/index registers, partial register smaller than 4 bytes, index is on the critical path etc. I think it's hard to model such granularity in schedule model.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0lM9y2zgMxp9GumCqUST_PejgpOtOZnZnO5PuA1AkJKKhSA8AxfXb74h20mabvVi2CQK_D8AnI0JjROyK9X2x_lyaWX3i7uQT9ng2cSz75C7dwdrEjuIImuAxKgZ4-vuvonkAR8OAjFFhIsvJsPWkaHVmFPDmBX-JCDSRGqUUBSiCeoRZENIAf_5xAIqiPNt8vGQ2zwYkpPPtECRNCNYISgX3s0JMMd-1M-fsVyyxHt0cEKbkMIBDsUw9CpBW8KhwTnNw0CN4DKdhDkADnF-j1eMENjGj1XCpivpzUR--eWQEwwgtTOZ74l8UZb7MVLSHa_j181OmPpN6UM-IIGlmi5BOyCa6JRx6I7gIpejwR1YcHaRhENQKvnmSnBnwB4nmhj0kxo_aLBQtwpOJ7tIzuRFBKQR4tBjMMxbt_W9MLyaQuxb-uNRB0_RRqScKL8hTiroAf0nBLd8z-duPr2GW90UlV02zggGxJuCtdr6XgVIMF9BzuvVJwEwpjh-3yJGcgrE4YfyfRn3h5XiBfMX47yhNkARJPfK7rcwsedF-075Ux2qslucV63jVwDiSKHJe2pNhJRPe_gSZTAjIoN5EWEF_UZQ3RUAC6WoEy6RkTYCTUQ-otoJHUE_xGUiLZruYid1iv-uqymw9jGziHAyTXrJD3u1-Vbqudft2b0rs7jbbdrtZ77dN6bvdatts9rv6brttrF2jcS3u98NmvdutnNm1JXVN3bT13d263qz3bVPtsDGrdjDrTb9Z7XdYrGqcDIUqhJepSjyWJDJjt6nrVVsG02OQ11cKd0vQp34epVjVYZnRz2tKGrA7OPfT6m8qKA6JpzwZGBLfDP7w9R8pZw6dVz1l2zXHojmOpH7uK5umojku6W-PTydO39HqMq4FUYrmmCn_DQAA__-oSLZs">