"KVM: x86:" for the shortlog. On Tue, Sep 06, 2022, Liam Ni wrote: > From: Liam Ni <zhiguangni01@xxxxxxxxx> > > If the condition is met, Please describe this specific code change, "If the condition is met" is extremely generic and doesn't help the reader understand what change is being made. > reduce the execution of one instruction. This is highly speculative, e.g. clang will generate identical output since it's trivial for the compiler to observe that ctxt->modrm_reg doesn't need to be read. And similar to the above "If the condition is met", the shortlog is too generic even if it were 100% accurate. I do think this change is a net positive, but it's beneficial only in making the code easier to read. Shaving a single cheap instruction in a relatively slow path isn't sufficient justification even if the compiler isn't clever enough to optimize away the load in the first place. E.g. something like: KVM: x86: Clean up ModR/M "reg" initialization in reg op decoding Refactor decode_register_operand() to get the ModR/M register if and only if the instruction uses a ModR/M encoding to make it more obvious how the register operand is retrieved. > Signed-off-by: Liam Ni <zhiguangni01@xxxxxxxxx> > --- > arch/x86/kvm/emulate.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c > index f8382abe22ff..ebb95f3f9862 100644 > --- a/arch/x86/kvm/emulate.c > +++ b/arch/x86/kvm/emulate.c > @@ -1139,10 +1139,12 @@ static int em_fnstsw(struct x86_emulate_ctxt *ctxt) > static void decode_register_operand(struct x86_emulate_ctxt *ctxt, > struct operand *op) > { > - unsigned reg = ctxt->modrm_reg; > + unsigned int reg; > > if (!(ctxt->d & ModRM)) > reg = (ctxt->b & 7) | ((ctxt->rex_prefix & 1) << 3); > + else > + reg = ctxt->modrm_reg; I'd prefer to write this as: unsigned int reg; if (ctxt->d & ModRM) reg = ctxt->modrm_reg; else reg = (ctxt->b & 7) | ((ctxt->rex_prefix & 1) << 3); so that "is ModRM" check is immediately followed by "get ModRM". > > if (ctxt->d & Sse) { > op->type = OP_XMM; > -- > 2.25.1 >