The CSE package was changed recently from tracking CSEs using an int64 type to represent the CSE bitvector, to using our standard bitvector package. However, the CSE bitvector size was still set at 64. That means, for x86, using the “long” form of the bitvector: each one is a 32-bit pointer to a 64-bit array of bits, and all access is via a pointer indirection. This is much more costly than previously (and in JIT32).
Perhaps for x86 the CSE bitvector size should start at 32, so the "short" form of bitvector is used, and possibly that size change to something larger based on IR characteristics.
category:throughput
theme:ir
skill-level:intermediate
cost:small
The CSE package was changed recently from tracking CSEs using an int64 type to represent the CSE bitvector, to using our standard bitvector package. However, the CSE bitvector size was still set at 64. That means, for x86, using the “long” form of the bitvector: each one is a 32-bit pointer to a 64-bit array of bits, and all access is via a pointer indirection. This is much more costly than previously (and in JIT32).
Perhaps for x86 the CSE bitvector size should start at 32, so the "short" form of bitvector is used, and possibly that size change to something larger based on IR characteristics.
category:throughput
theme:ir
skill-level:intermediate
cost:small