mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-06 23:47:23 +01:00
* x86: Added new emit_reg_ref_reg routine and related methods to support BMI2 instructions
This commit is contained in:
parent
95f94a279c
commit
e748e4c7ab
@ -578,6 +578,7 @@ interface
|
||||
constructor op_reg_reg_reg(op : tasmop;_size : topsize;_op1,_op2,_op3 : tregister);
|
||||
constructor op_const_reg_reg(op : tasmop;_size : topsize;_op1 : aint;_op2 : tregister;_op3 : tregister);
|
||||
constructor op_const_ref_reg(op : tasmop;_size : topsize;_op1 : aint;const _op2 : treference;_op3 : tregister);
|
||||
constructor op_reg_ref_reg(op : tasmop;_size : topsize;_op1 : tregister; const _op2 : treference;_op3 : tregister);
|
||||
constructor op_ref_reg_reg(op : tasmop;_size : topsize;const _op1 : treference;_op2,_op3 : tregister);
|
||||
constructor op_const_reg_ref(op : tasmop;_size : topsize;_op1 : aint;_op2 : tregister;const _op3 : treference);
|
||||
constructor op_reg_reg_ref(op : tasmop;_size : topsize;_op1,_op2 : tregister;const _op3 : treference);
|
||||
@ -1159,6 +1160,17 @@ implementation
|
||||
end;
|
||||
|
||||
|
||||
constructor taicpu.op_reg_ref_reg(op : tasmop;_size : topsize;_op1 : tregister; const _op2 : treference;_op3 : tregister);
|
||||
begin
|
||||
inherited create(op);
|
||||
init(_size);
|
||||
ops:=3;
|
||||
loadreg(0,_op1);
|
||||
loadref(1,_op2);
|
||||
loadreg(2,_op3);
|
||||
end;
|
||||
|
||||
|
||||
constructor taicpu.op_ref_reg_reg(op : tasmop;_size : topsize;const _op1 : treference;_op2,_op3 : tregister);
|
||||
begin
|
||||
inherited create(op);
|
||||
|
||||
@ -45,7 +45,7 @@ interface
|
||||
procedure emit_const_reg_reg(i : tasmop;s : topsize;c : longint;reg1,reg2 : tregister);
|
||||
procedure emit_reg_reg_reg(i : tasmop;s : topsize;reg1,reg2,reg3 : tregister);
|
||||
procedure emit_ref_reg_reg(i : tasmop;s : topsize;ref : treference;reg1,reg2 : tregister);
|
||||
|
||||
procedure emit_reg_ref_reg(i : tasmop;s : topsize; reg1 : tregister; ref : treference; reg2 : tregister);
|
||||
|
||||
procedure emit_sym(i : tasmop;s : topsize;op : tasmsymbol);
|
||||
|
||||
@ -130,6 +130,12 @@ implementation
|
||||
current_asmdata.CurrAsmList.concat(Taicpu.Op_ref_reg_reg(i,s,ref,reg1,reg2));
|
||||
end;
|
||||
|
||||
procedure emit_reg_ref_reg(i : tasmop;s : topsize; reg1 : tregister; ref : treference; reg2 : tregister);
|
||||
begin
|
||||
tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList,ref);
|
||||
current_asmdata.CurrAsmList.concat(Taicpu.Op_reg_ref_reg(i,s,reg1,ref,reg2));
|
||||
end;
|
||||
|
||||
procedure emit_sym(i : tasmop;s : topsize;op : tasmsymbol);
|
||||
begin
|
||||
current_asmdata.CurrAsmList.concat(Taicpu.Op_sym(i,s,op));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user