|
@@ -120,6 +120,9 @@ interface
|
|
{ e.g. dst = invoke retsize reg (paras) to label <normal label> unwind label <exception label> }
|
|
{ e.g. dst = invoke retsize reg (paras) to label <normal label> unwind label <exception label> }
|
|
constructor invoke_size_reg_paras_retlab_exceptlab(callpd: tdef; dst: tregister; retsize: tdef; reg: tregister; paras: tfplist; retlab, exceptlab:TAsmLabel);
|
|
constructor invoke_size_reg_paras_retlab_exceptlab(callpd: tdef; dst: tregister; retsize: tdef; reg: tregister; paras: tfplist; retlab, exceptlab:TAsmLabel);
|
|
|
|
|
|
|
|
+ { e.g. dst := extractvalue srcsize src, 0 (note: no type for the index) }
|
|
|
|
+ constructor extract(op: tllvmop; dst: tregister; srcsize: tdef; src: tregister; idx: longint);
|
|
|
|
+
|
|
{ inline function-level assembler code and parameters }
|
|
{ inline function-level assembler code and parameters }
|
|
constructor asm_paras(asmlist: tasmlist; paras: tfplist);
|
|
constructor asm_paras(asmlist: tasmlist; paras: tfplist);
|
|
|
|
|
|
@@ -1144,6 +1147,17 @@ uses
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
+ constructor taillvm.extract(op: tllvmop; dst: tregister; srcsize: tdef; src: tregister; idx: longint);
|
|
|
|
+ begin
|
|
|
|
+ create_llvm(op);
|
|
|
|
+ ops:=4;
|
|
|
|
+ loadreg(0,dst);
|
|
|
|
+ loaddef(1,srcsize);
|
|
|
|
+ loadreg(2,src);
|
|
|
|
+ loadconst(3,idx)
|
|
|
|
+ end;
|
|
|
|
+
|
|
|
|
+
|
|
constructor taillvm.asm_paras(asmlist: tasmlist; paras: tfplist);
|
|
constructor taillvm.asm_paras(asmlist: tasmlist; paras: tfplist);
|
|
begin
|
|
begin
|
|
create_llvm(la_asmblock);
|
|
create_llvm(la_asmblock);
|