This affects both x86-64 and AArch64.
Most guard micro-ops are checking against 16 or 32 bit version numbers, so this is an important use case.
The code we generate is too large and, on AArch64, performs extra memory accesses.
| Constant |
x86-64 now |
x86-64 ideal |
AArch64 now |
AArch64 ideal |
| 16 bit |
1 10 byte instruction |
1 5 byte instruction |
2 instructions + 1 memory load |
1 instruction |
| 32 bit |
1 10 byte instruction |
1 5 byte instruction |
2 instructions + 1 memory load |
2 instructions |
Linked PRs
This affects both x86-64 and AArch64.
Most guard micro-ops are checking against 16 or 32 bit version numbers, so this is an important use case.
The code we generate is too large and, on AArch64, performs extra memory accesses.
Linked PRs