diff --git a/compiler/avr/aasmcpu.pas b/compiler/avr/aasmcpu.pas index b3d3088f1f..7d4f77e9c1 100644 --- a/compiler/avr/aasmcpu.pas +++ b/compiler/avr/aasmcpu.pas @@ -294,7 +294,8 @@ implementation procedure taicpu.ResetPass2; begin -{ { we are here in a second pass, check if the instruction can be optimized } + { we are here in a second pass, check if the instruction can be optimized } +{ if assigned(InsEntry) and ((InsEntry^.flags and IF_PASS2)<>0) then begin diff --git a/compiler/avr/cgcpu.pas b/compiler/avr/cgcpu.pas index d94c41f351..21d0d8a5b5 100644 --- a/compiler/avr/cgcpu.pas +++ b/compiler/avr/cgcpu.pas @@ -64,6 +64,11 @@ unit cgcpu; procedure a_load_ref_reg(list : TAsmList; fromsize, tosize : tcgsize;const Ref : treference;reg : tregister);override; procedure a_load_reg_reg(list : TAsmList; fromsize, tosize : tcgsize;reg1,reg2 : tregister);override; + { fpu move instructions } + procedure a_loadfpu_reg_reg(list: TAsmList; fromsize, tosize: tcgsize; reg1, reg2: tregister); override; + procedure a_loadfpu_ref_reg(list: TAsmList; fromsize, tosize: tcgsize; const ref: treference; reg: tregister); override; + procedure a_loadfpu_reg_ref(list: TAsmList; fromsize, tosize: tcgsize; reg: tregister; const ref: treference); override; + { comparison operations } procedure a_cmp_const_reg_label(list : TAsmList;size : tcgsize;cmp_op : topcmp;a : tcgint;reg : tregister; l : tasmlabel);override; @@ -94,11 +99,14 @@ unit cgcpu; tmpreg : tregister) : treference; procedure g_intf_wrapper(list: TAsmList; procdef: tprocdef; const labelname: string; ioffset: longint);override; + procedure g_stackpointer_alloc(list : TAsmList;size : longint);override; procedure emit_mov(list: TAsmList;reg2: tregister; reg1: tregister); procedure a_adjust_sp(list: TAsmList; value: longint); function GetLoad(const ref : treference) : tasmop; function GetStore(const ref: treference): tasmop; + + procedure a_bit_scan_reg_reg(list: TAsmList; reverse: boolean; size: TCGSize; src, dst: TRegister); override; end; tcg64favr = class(tcg64f32) @@ -1076,6 +1084,24 @@ unit cgcpu; end; + procedure tcgavr.a_loadfpu_reg_reg(list: TAsmList; fromsize,tosize: tcgsize; reg1, reg2: tregister); + begin + internalerror(2012010702); + end; + + + procedure tcgavr.a_loadfpu_ref_reg(list: TAsmList; fromsize,tosize: tcgsize; const ref: treference; reg: tregister); + begin + internalerror(2012010703); + end; + + + procedure tcgavr.a_loadfpu_reg_ref(list: TAsmList; fromsize, tosize: tcgsize; reg: tregister; const ref: treference); + begin + internalerror(2012010704); + end; + + { comparison operations } procedure tcgavr.a_cmp_const_reg_label(list : TAsmList;size : tcgsize; cmp_op : topcmp;a : tcgint;reg : tregister;l : tasmlabel); @@ -1180,6 +1206,12 @@ unit cgcpu; end; + procedure tcgavr.a_bit_scan_reg_reg(list: TAsmList; reverse: boolean; size: TCGSize; src, dst: TRegister); + begin + Comment(V_Error,'tcgarm.a_bit_scan_reg_reg method not implemented'); + end; + + procedure tcgavr.a_jmp_name(list : TAsmList;const s : string); var ai : taicpu; @@ -1675,6 +1707,12 @@ unit cgcpu; end; + procedure tcgavr.g_stackpointer_alloc(list: TAsmList; size: longint); + begin + internalerror(201201071); + end; + + procedure tcgavr.g_intf_wrapper(list: TAsmList; procdef: tprocdef; const labelname: string; ioffset: longint); begin internalerror(2011021324); diff --git a/compiler/avr/cpupi.pas b/compiler/avr/cpupi.pas index e6934f07c3..676fb27541 100644 --- a/compiler/avr/cpupi.pas +++ b/compiler/avr/cpupi.pas @@ -63,6 +63,7 @@ unit cpupi; function tavrprocinfo.calc_stackframe_size:longint; begin maxpushedparasize:=align(maxpushedparasize,max(current_settings.alignment.localalignmin,4)); + result:=0; end;