Browse Source

+ trivial implementation of tcgmos6502.a_op_const_reg_internal via delegating to op_reg_reg

Nikolay Nikolov 1 year ago
parent
commit
0ded708a33
1 changed files with 46 additions and 46 deletions
  1. 46 46
      compiler/mos6502/cgcpu.pas

+ 46 - 46
compiler/mos6502/cgcpu.pas

@@ -917,31 +917,31 @@ unit cgcpu;
              reg:=GetNextReg(reg);
          end;
 
-       //var
+       var
        //  mask : qword;
        //  shift : byte;
        //  curvalue : byte;
        //  tmpop: TAsmOp;
        //  l1: TAsmLabel;
        //  instr: taicpu;
-       //  tmpreg : tregister;
-       //  tmpreg64 : tregister64;
+         tmpreg : tregister;
+         tmpreg64 : tregister64;
 
        begin
-       //  optimize_op_const(size,op,a);
+         optimize_op_const(size,op,a);
        //  mask:=$ff;
        //  shift:=0;
        //  l1:=nil;
-       //  case op of
-       //    OP_NONE:
-       //      begin
-       //        { Opcode is optimized away }
-       //      end;
-       //    OP_MOVE:
-       //      begin
-       //        { Optimized, replaced with a simple load }
-       //        a_load_const_reg(list,size,a,reg);
-       //      end;
+         case op of
+           OP_NONE:
+             begin
+               { Opcode is optimized away }
+             end;
+           OP_MOVE:
+             begin
+               { Optimized, replaced with a simple load }
+               a_load_const_reg(list,size,a,reg);
+             end;
        //    OP_AND:
        //      begin
        //        curvalue:=a and mask;
@@ -1187,38 +1187,38 @@ unit cgcpu;
        //              end;
        //          end;
        //      end;
-       //  else
-       //    begin
-       //      if size in [OS_64,OS_S64] then
-       //        begin
-       //          tmpreg64.reglo:=getintregister(list,OS_32);
-       //          tmpreg64.reghi:=getintregister(list,OS_32);
-       //          cg64.a_load64_const_reg(list,a,tmpreg64);
-       //          cg64.a_op64_reg_reg(list,op,size,tmpreg64,joinreg64(reg,reghi));
-       //        end
-       //      else
-       //        begin
-{$if 0}//
-       //          { code not working yet }
-       //          if (op=OP_SAR) and (a=31) and (size in [OS_32,OS_S32]) then
-       //            begin
-       //              tmpreg:=reg;
-       //              for i:=1 to 4 do
-       //                begin
-       //                  list.concat(taicpu.op_reg_reg(A_MOV,tmpreg,NR_R1));
-       //                  tmpreg:=GetNextReg(tmpreg);
-       //                end;
-       //            end
-       //          else
-{$endif//}
-       //            begin
-       //              tmpreg:=getintregister(list,size);
-       //              a_load_const_reg(list,size,a,tmpreg);
-       //              a_op_reg_reg(list,op,size,tmpreg,reg);
-       //            end;
-       //        end;
-       //    end;
-       //end;
+         else
+           begin
+             if size in [OS_64,OS_S64] then
+               begin
+                 tmpreg64.reglo:=getintregister(list,OS_32);
+                 tmpreg64.reghi:=getintregister(list,OS_32);
+                 cg64.a_load64_const_reg(list,a,tmpreg64);
+                 cg64.a_op64_reg_reg(list,op,size,tmpreg64,joinreg64(reg,reghi));
+               end
+             else
+               begin
+{$if 0}
+                 { code not working yet }
+                 if (op=OP_SAR) and (a=31) and (size in [OS_32,OS_S32]) then
+                   begin
+                     tmpreg:=reg;
+                     for i:=1 to 4 do
+                       begin
+                         list.concat(taicpu.op_reg_reg(A_MOV,tmpreg,NR_R1));
+                         tmpreg:=GetNextReg(tmpreg);
+                       end;
+                   end
+                 else
+{$endif}
+                   begin
+                     tmpreg:=getintregister(list,size);
+                     a_load_const_reg(list,size,a,tmpreg);
+                     a_op_reg_reg(list,op,size,tmpreg,reg);
+                   end;
+               end;
+           end;
+       end;
      end;