[PATCH][v5] Support Intel USER_MSR
Hu, Lin1
lin1.hu@intel.com
Tue Oct 31 01:43:09 GMT 2023
> On 30.10.2023 06:50, Hu, Lin1 wrote:
> >>> @@ -5232,8 +5244,23 @@ md_assemble (char *line)
> >>> && (t->mnem_off == MN_extrq || t->mnem_off == MN_insertq))
> >>> swap_2_operands (0, 1);
> >>
> >> Did you, btw, consider extending this to cater for UWRMSR as well, in
> >> place of the new construct at the bottom of match_template()? (I'm
> >> not saying it needs to be that way; if you decide to leave things as
> >> is, I may later see about folding
> >> both.)
> >>
> >
> > For this part, my current changes are
> >
> > @@ -5400,6 +5388,38 @@ md_assemble (char *line)
> > return;
> > }
> >
> > + /* The order of the immediates should be reversed
> > + for 2 immediates extrq and insertq instructions.
> > + And This pattern aims to put the unusually placed imm operand to a usual
> > + place. The constraints are currently only adapted to uwrmsr, and may
> > + need further tweaking when new similar instructions become
> > + available. */ if (i.imm_operands && i.imm_operands < i.operands
> > + && ((t->mnem_off == MN_extrq || t->mnem_off == MN_insertq)
> > + || operand_type_check (i.tm.operand_types[1], imm)))
> > + {
> > + i386_operand_type tmp_operand_type = i.tm.operand_types[0];
> > + i.tm.operand_types[0] = i.tm.operand_types[1];
> > + i.tm.operand_types[1] = tmp_operand_type;
> > + swap_2_operands(0, 1);
> > + }
> >
> > after match_template. Some generalization has been reduced to save on code
> size.
> > What's your opinion?
>
> Hmm, why this way, rather than indeed merely extending (without moving)
> what's there? (Anyway, as said, I'm not going to insist on this folding; if you
> don't want to deal with that right here, I'll see to make a follow-on change later.)
>
I think I can't just extend it. If I swap the unusual immediate operand before match_template, I need a new opcode_modifier whose function is like D to match the correct template. And the instruction "out" will be affected by this change (of course the problem can be solved by adding a constraint).
More information about the Binutils
mailing list