diff options
author | iximeow <me@iximeow.net> | 2021-03-21 14:09:41 -0700 |
---|---|---|
committer | iximeow <me@iximeow.net> | 2021-03-21 14:09:41 -0700 |
commit | 0591d78e5b1c1c232fd6c6e4c159fd428f19ade9 (patch) | |
tree | f70f65f47381adf06c8444711c6273aafa7d274b /src/long_mode | |
parent | 72d1231dd24f5682b0ac752abe8233d750b397e4 (diff) |
in real programs, having read_operands inlined hurts performance!
the in-repo benchmark got better with this inlined but it's probably
better to leave it up to the compiler when finally stitching stuff
together. i suspect that having read_operands inlined resulted in just
too many live values, and the compiler was inspired to play hijinks that
pipelined poorly. disas-bench shows a ~15% improvement from this change.
Diffstat (limited to 'src/long_mode')
-rw-r--r-- | src/long_mode/mod.rs | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs index cb3d699..5ca6542 100644 --- a/src/long_mode/mod.rs +++ b/src/long_mode/mod.rs @@ -6367,7 +6367,6 @@ fn read_instr<T: Iterator<Item=u8>>(decoder: &InstDecoder, mut bytes_iter: T, in OperandCode::ModRM_0x8f_Ev => 30 */ -#[inline(always)] fn read_operands<T: Iterator<Item=u8>>(decoder: &InstDecoder, mut bytes_iter: T, instruction: &mut Instruction, operand_code: OperandCode, length: &mut u8) -> Result<(), DecodeError> { instruction.operands[0] = OperandSpec::RegRRR; instruction.operand_count = 2; |