aboutsummaryrefslogtreecommitdiff
path: root/src/long_mode/evex
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2023-01-28 21:00:08 -0800
committeriximeow <me@iximeow.net>2023-07-04 19:01:38 -0700
commitf9d3ce1f2f447b55a003ec273642de63d7aa988f (patch)
tree089af66cf37975f23cef28caeb35344aede9efb3 /src/long_mode/evex
parentb577312dd61edaac2551794578ace22287031bdb (diff)
store non-rex expected bank when first witnessing operand size prefix
the expectation here is that we can set a default `vqp_size` pretty cheaply (Prefixes::new is one store, on x86_64 anyway...). then, when we see an `operand_size` prefix, it's rare enough we can pay a little extra to speculate on *likely* implication, and update some state (`vqp_size` is *probably* going to be 2 because of it) accordingly. the cases where `vqp_size` would go unused and this was wasted effort are relativlely rare. on the other hand, we can't profitably give `rex` this treatment: `rex.w` would set `vqp_size` to `qword`, but rex-prefixed instructions are so often byte-size registers that updating `vqp_size` (conditionally, no less), is only break-even. so, keep a check for `rex.w` at use site, where it's only a choice between `qword` or `whatver-size-a-non-rex.w-prefixed-instruction-would-be-sized`, which has been kept up to date by speculation when detecting `operand_size`.
Diffstat (limited to 'src/long_mode/evex')
0 files changed, 0 insertions, 0 deletions