* fixed ppc compilation

This commit is contained in:
florian 2003-12-16 21:49:47 +00:00
parent 2258e941af
commit 2aeea741ed
7 changed files with 257 additions and 242 deletions

View File

@ -81,7 +81,7 @@ uses
function is_nop: boolean; override; function is_nop: boolean; override;
function is_move:boolean; override; function is_reg_move:boolean; override;
{ register spilling code } { register spilling code }
function spilling_get_operation_type(opnr: longint): topertype;override; function spilling_get_operation_type(opnr: longint): topertype;override;
@ -354,15 +354,15 @@ uses cutils,rgobj;
end; end;
function taicpu.is_move:boolean; function taicpu.is_reg_move:boolean;
begin begin
is_move := (opcode = A_MR) or result:=(opcode = A_MR) or
(opcode = A_EXTSB) or (opcode = A_EXTSB) or
(opcode = A_EXTSH) or (opcode = A_EXTSH) or
((opcode = A_RLWINM) and ((opcode = A_RLWINM) and
(oper[2]^.val = 0) and (oper[2]^.val = 0) and
(oper[4]^.val = 31) and (oper[4]^.val = 31) and
(oper[3]^.val in [31-8+1,31-16+1])); (oper[3]^.val in [31-8+1,31-16+1]));
end; end;
@ -406,7 +406,10 @@ uses cutils,rgobj;
end. end.
{ {
$Log$ $Log$
Revision 1.20 2003-12-06 22:16:13 jonas Revision 1.21 2003-12-16 21:49:47 florian
* fixed ppc compilation
Revision 1.20 2003/12/06 22:16:13 jonas
* completely overhauled and fixed generic spilling code. New method: * completely overhauled and fixed generic spilling code. New method:
spilling_get_operation_type(operand_number): returns the operation spilling_get_operation_type(operand_number): returns the operation
performed by the instruction on the operand: read/write/read+write. performed by the instruction on the operand: read/write/read+write.

View File

@ -1331,7 +1331,7 @@ const
begin begin
offset:= offset - 8; offset:= offset - 8;
reference_reset_base(href, NR_STACK_POINTER_REG, offset); reference_reset_base(href, NR_STACK_POINTER_REG, offset);
list.concat(taicpu.op_reg_ref(A_STFD, regcounter, href)); list.concat(taicpu.op_reg_ref(A_STFD, tregister(regcounter), href));
end; end;
(* Optimiztion in the future: a_call_name(list,'_savefXX'); *) (* Optimiztion in the future: a_call_name(list,'_savefXX'); *)
@ -1341,7 +1341,7 @@ const
begin begin
offset:= offset - 4 * (RS_R31 - firstreggpr + 1); offset:= offset - 4 * (RS_R31 - firstreggpr + 1);
reference_reset_base(href,NR_STACK_POINTER_REG,offset); reference_reset_base(href,NR_STACK_POINTER_REG,offset);
list.concat(taicpu.op_reg_ref(A_STMW,firstreggpr,href)); list.concat(taicpu.op_reg_ref(A_STMW,tregister(firstreggpr),href));
{STMW stores multiple registers} {STMW stores multiple registers}
end end
else else
@ -1412,7 +1412,7 @@ const
begin begin
offset:= offset - 4 * (RS_R31 - firstreggpr + 1); offset:= offset - 4 * (RS_R31 - firstreggpr + 1);
reference_reset_base(href,NR_STACK_POINTER_REG,offset); //-220 reference_reset_base(href,NR_STACK_POINTER_REG,offset); //-220
list.concat(taicpu.op_reg_ref(A_LMW,firstreggpr,href)); list.concat(taicpu.op_reg_ref(A_LMW,tregister(firstreggpr),href));
{LMW loads multiple registers} {LMW loads multiple registers}
end end
else else
@ -2314,7 +2314,10 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.147 2003-12-15 21:37:09 jonas Revision 1.148 2003-12-16 21:49:47 florian
* fixed ppc compilation
Revision 1.147 2003/12/15 21:37:09 jonas
* fixed compilation and simplified fixref, so it never has to reallocate * fixed compilation and simplified fixref, so it never has to reallocate
already freed registers anymore already freed registers anymore

View File

@ -131,7 +131,7 @@ uses
{$i rppcnum.inc} {$i rppcnum.inc}
); );
regstabs_table : array[tregisterindex] of tregister = ( regstabs_table : array[tregisterindex] of shortint = (
{$i rppcstab.inc} {$i rppcstab.inc}
); );
@ -694,7 +694,10 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.80 2003-12-09 20:39:43 jonas Revision 1.81 2003-12-16 21:49:47 florian
* fixed ppc compilation
Revision 1.80 2003/12/09 20:39:43 jonas
* forgot call to cg.g_overflowcheck() in nppcadd * forgot call to cg.g_overflowcheck() in nppcadd
* fixed overflow flag definition * fixed overflow flag definition
* fixed cg.g_overflowcheck() for signed numbers (jump over call to * fixed cg.g_overflowcheck() for signed numbers (jump over call to

View File

@ -190,7 +190,7 @@ unit cpupara;
procedure assignintreg; procedure assignintreg;
begin begin
if nextintreg<=NR_R10 then if nextintreg<=ord(NR_R10) then
begin begin
paraloc.loc:=LOC_REGISTER; paraloc.loc:=LOC_REGISTER;
paraloc.register:=newreg(R_INTREGISTER,nextintreg,R_SUBNONE); paraloc.register:=newreg(R_INTREGISTER,nextintreg,R_SUBNONE);
@ -360,7 +360,7 @@ unit cpupara;
p.funcret_paraloc[side]:=paraloc; p.funcret_paraloc[side]:=paraloc;
end; end;
function tppcparamanager.create_varargs_paraloc_info(p : tabstractprocdef; varargspara:tlinkedlist):longint; function tppcparamanager.create_varargs_paraloc_info(p : tabstractprocdef; varargspara:tlinkedlist):longint;
{$warning fixme!!!! tppcparamanager.create_varargs_paraloc_info} {$warning fixme!!!! tppcparamanager.create_varargs_paraloc_info}
var var
@ -398,7 +398,10 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.52 2003-12-07 22:35:05 florian Revision 1.53 2003-12-16 21:49:47 florian
* fixed ppc compilation
Revision 1.52 2003/12/07 22:35:05 florian
+ dummy tppcparamanager.create_varargs_paraloc_info added + dummy tppcparamanager.create_varargs_paraloc_info added
Revision 1.51 2003/11/29 16:27:19 jonas Revision 1.51 2003/11/29 16:27:19 jonas

View File

@ -1,111 +1,111 @@
{ don't edit, this file is generated from ppcreg.dat } { don't edit, this file is generated from ppcreg.dat }
NR_NO = $00000000; NR_NO = tregister($00000000);
NR_R0 = $01000000; NR_R0 = tregister($01000000);
NR_R1 = $01000001; NR_R1 = tregister($01000001);
NR_R2 = $01000002; NR_R2 = tregister($01000002);
NR_R3 = $01000003; NR_R3 = tregister($01000003);
NR_R4 = $01000004; NR_R4 = tregister($01000004);
NR_R5 = $01000005; NR_R5 = tregister($01000005);
NR_R6 = $01000006; NR_R6 = tregister($01000006);
NR_R7 = $01000007; NR_R7 = tregister($01000007);
NR_R8 = $01000008; NR_R8 = tregister($01000008);
NR_R9 = $01000009; NR_R9 = tregister($01000009);
NR_R10 = $0100000a; NR_R10 = tregister($0100000a);
NR_R11 = $0100000b; NR_R11 = tregister($0100000b);
NR_R12 = $0100000c; NR_R12 = tregister($0100000c);
NR_R13 = $0100000d; NR_R13 = tregister($0100000d);
NR_R14 = $0100000e; NR_R14 = tregister($0100000e);
NR_R15 = $0100000f; NR_R15 = tregister($0100000f);
NR_R16 = $01000010; NR_R16 = tregister($01000010);
NR_R17 = $01000011; NR_R17 = tregister($01000011);
NR_R18 = $01000012; NR_R18 = tregister($01000012);
NR_R19 = $01000013; NR_R19 = tregister($01000013);
NR_R20 = $01000014; NR_R20 = tregister($01000014);
NR_R21 = $01000015; NR_R21 = tregister($01000015);
NR_R22 = $01000016; NR_R22 = tregister($01000016);
NR_R23 = $01000017; NR_R23 = tregister($01000017);
NR_R24 = $01000018; NR_R24 = tregister($01000018);
NR_R25 = $01000019; NR_R25 = tregister($01000019);
NR_R26 = $0100001a; NR_R26 = tregister($0100001a);
NR_R27 = $0100001b; NR_R27 = tregister($0100001b);
NR_R28 = $0100001c; NR_R28 = tregister($0100001c);
NR_R29 = $0100001d; NR_R29 = tregister($0100001d);
NR_R30 = $0100001e; NR_R30 = tregister($0100001e);
NR_R31 = $0100001f; NR_R31 = tregister($0100001f);
NR_F0 = $02000000; NR_F0 = tregister($02000000);
NR_F1 = $02000001; NR_F1 = tregister($02000001);
NR_F2 = $02000002; NR_F2 = tregister($02000002);
NR_F3 = $02000003; NR_F3 = tregister($02000003);
NR_F4 = $02000004; NR_F4 = tregister($02000004);
NR_F5 = $02000005; NR_F5 = tregister($02000005);
NR_F6 = $02000006; NR_F6 = tregister($02000006);
NR_F7 = $02000007; NR_F7 = tregister($02000007);
NR_F8 = $02000008; NR_F8 = tregister($02000008);
NR_F9 = $02000009; NR_F9 = tregister($02000009);
NR_F10 = $0200000a; NR_F10 = tregister($0200000a);
NR_F11 = $0200000b; NR_F11 = tregister($0200000b);
NR_F12 = $0200000c; NR_F12 = tregister($0200000c);
NR_F13 = $0200000d; NR_F13 = tregister($0200000d);
NR_F14 = $0200000e; NR_F14 = tregister($0200000e);
NR_F15 = $0200000f; NR_F15 = tregister($0200000f);
NR_F16 = $02000010; NR_F16 = tregister($02000010);
NR_F17 = $02000011; NR_F17 = tregister($02000011);
NR_F18 = $02000012; NR_F18 = tregister($02000012);
NR_F19 = $02000013; NR_F19 = tregister($02000013);
NR_F20 = $02000014; NR_F20 = tregister($02000014);
NR_F21 = $02000015; NR_F21 = tregister($02000015);
NR_F22 = $02000016; NR_F22 = tregister($02000016);
NR_F23 = $02000017; NR_F23 = tregister($02000017);
NR_F24 = $02000018; NR_F24 = tregister($02000018);
NR_F25 = $02000019; NR_F25 = tregister($02000019);
NR_F26 = $0200001a; NR_F26 = tregister($0200001a);
NR_F27 = $0200001b; NR_F27 = tregister($0200001b);
NR_F28 = $0200001c; NR_F28 = tregister($0200001c);
NR_F29 = $0200001d; NR_F29 = tregister($0200001d);
NR_F30 = $0200001e; NR_F30 = tregister($0200001e);
NR_F31 = $0200001f; NR_F31 = tregister($0200001f);
NR_M0 = $03000000; NR_M0 = tregister($03000000);
NR_M1 = $03000001; NR_M1 = tregister($03000001);
NR_M2 = $03000002; NR_M2 = tregister($03000002);
NR_M3 = $03000003; NR_M3 = tregister($03000003);
NR_M4 = $03000004; NR_M4 = tregister($03000004);
NR_M5 = $03000005; NR_M5 = tregister($03000005);
NR_M6 = $03000006; NR_M6 = tregister($03000006);
NR_M7 = $03000007; NR_M7 = tregister($03000007);
NR_M8 = $03000008; NR_M8 = tregister($03000008);
NR_M9 = $03000009; NR_M9 = tregister($03000009);
NR_M10 = $0300000a; NR_M10 = tregister($0300000a);
NR_M11 = $0300000b; NR_M11 = tregister($0300000b);
NR_M12 = $0300000c; NR_M12 = tregister($0300000c);
NR_M13 = $0300000d; NR_M13 = tregister($0300000d);
NR_M14 = $0300000e; NR_M14 = tregister($0300000e);
NR_M15 = $0300000f; NR_M15 = tregister($0300000f);
NR_M16 = $03000010; NR_M16 = tregister($03000010);
NR_M17 = $03000011; NR_M17 = tregister($03000011);
NR_M18 = $03000012; NR_M18 = tregister($03000012);
NR_M19 = $03000013; NR_M19 = tregister($03000013);
NR_M20 = $03000014; NR_M20 = tregister($03000014);
NR_M21 = $03000015; NR_M21 = tregister($03000015);
NR_M22 = $03000016; NR_M22 = tregister($03000016);
NR_M23 = $03000017; NR_M23 = tregister($03000017);
NR_M24 = $03000018; NR_M24 = tregister($03000018);
NR_M25 = $03000019; NR_M25 = tregister($03000019);
NR_M26 = $0300001a; NR_M26 = tregister($0300001a);
NR_M27 = $0300001b; NR_M27 = tregister($0300001b);
NR_M28 = $0300001c; NR_M28 = tregister($0300001c);
NR_M29 = $0300001d; NR_M29 = tregister($0300001d);
NR_M30 = $0300001e; NR_M30 = tregister($0300001e);
NR_M31 = $0300001f; NR_M31 = tregister($0300001f);
NR_CR = $05000000; NR_CR = tregister($05000000);
NR_CR0 = $05000001; NR_CR0 = tregister($05000001);
NR_CR1 = $05000002; NR_CR1 = tregister($05000002);
NR_CR2 = $05000003; NR_CR2 = tregister($05000003);
NR_CR3 = $05000004; NR_CR3 = tregister($05000004);
NR_CR4 = $05000005; NR_CR4 = tregister($05000005);
NR_CR5 = $05000006; NR_CR5 = tregister($05000006);
NR_CR6 = $05000007; NR_CR6 = tregister($05000007);
NR_CR7 = $05000008; NR_CR7 = tregister($05000008);
NR_XER = $05000009; NR_XER = tregister($05000009);
NR_LR = $0500000a; NR_LR = tregister($0500000a);
NR_CTR = $0500000b; NR_CTR = tregister($0500000b);
NR_FPSCR = $0500000c; NR_FPSCR = tregister($0500000c);

View File

@ -1,111 +1,111 @@
{ don't edit, this file is generated from ppcreg.dat } { don't edit, this file is generated from ppcreg.dat }
NR_NO, tregister($00000000),
NR_R0, tregister($01000000),
NR_R1, tregister($01000001),
NR_R2, tregister($01000002),
NR_R3, tregister($01000003),
NR_R4, tregister($01000004),
NR_R5, tregister($01000005),
NR_R6, tregister($01000006),
NR_R7, tregister($01000007),
NR_R8, tregister($01000008),
NR_R9, tregister($01000009),
NR_R10, tregister($0100000a),
NR_R11, tregister($0100000b),
NR_R12, tregister($0100000c),
NR_R13, tregister($0100000d),
NR_R14, tregister($0100000e),
NR_R15, tregister($0100000f),
NR_R16, tregister($01000010),
NR_R17, tregister($01000011),
NR_R18, tregister($01000012),
NR_R19, tregister($01000013),
NR_R20, tregister($01000014),
NR_R21, tregister($01000015),
NR_R22, tregister($01000016),
NR_R23, tregister($01000017),
NR_R24, tregister($01000018),
NR_R25, tregister($01000019),
NR_R26, tregister($0100001a),
NR_R27, tregister($0100001b),
NR_R28, tregister($0100001c),
NR_R29, tregister($0100001d),
NR_R30, tregister($0100001e),
NR_R31, tregister($0100001f),
NR_F0, tregister($02000000),
NR_F1, tregister($02000001),
NR_F2, tregister($02000002),
NR_F3, tregister($02000003),
NR_F4, tregister($02000004),
NR_F5, tregister($02000005),
NR_F6, tregister($02000006),
NR_F7, tregister($02000007),
NR_F8, tregister($02000008),
NR_F9, tregister($02000009),
NR_F10, tregister($0200000a),
NR_F11, tregister($0200000b),
NR_F12, tregister($0200000c),
NR_F13, tregister($0200000d),
NR_F14, tregister($0200000e),
NR_F15, tregister($0200000f),
NR_F16, tregister($02000010),
NR_F17, tregister($02000011),
NR_F18, tregister($02000012),
NR_F19, tregister($02000013),
NR_F20, tregister($02000014),
NR_F21, tregister($02000015),
NR_F22, tregister($02000016),
NR_F23, tregister($02000017),
NR_F24, tregister($02000018),
NR_F25, tregister($02000019),
NR_F26, tregister($0200001a),
NR_F27, tregister($0200001b),
NR_F28, tregister($0200001c),
NR_F29, tregister($0200001d),
NR_F30, tregister($0200001e),
NR_F31, tregister($0200001f),
NR_M0, tregister($03000000),
NR_M1, tregister($03000001),
NR_M2, tregister($03000002),
NR_M3, tregister($03000003),
NR_M4, tregister($03000004),
NR_M5, tregister($03000005),
NR_M6, tregister($03000006),
NR_M7, tregister($03000007),
NR_M8, tregister($03000008),
NR_M9, tregister($03000009),
NR_M10, tregister($0300000a),
NR_M11, tregister($0300000b),
NR_M12, tregister($0300000c),
NR_M13, tregister($0300000d),
NR_M14, tregister($0300000e),
NR_M15, tregister($0300000f),
NR_M16, tregister($03000010),
NR_M17, tregister($03000011),
NR_M18, tregister($03000012),
NR_M19, tregister($03000013),
NR_M20, tregister($03000014),
NR_M21, tregister($03000015),
NR_M22, tregister($03000016),
NR_M23, tregister($03000017),
NR_M24, tregister($03000018),
NR_M25, tregister($03000019),
NR_M26, tregister($0300001a),
NR_M27, tregister($0300001b),
NR_M28, tregister($0300001c),
NR_M29, tregister($0300001d),
NR_M30, tregister($0300001e),
NR_M31, tregister($0300001f),
NR_CR, tregister($05000000),
NR_CR0, tregister($05000001),
NR_CR1, tregister($05000002),
NR_CR2, tregister($05000003),
NR_CR3, tregister($05000004),
NR_CR4, tregister($05000005),
NR_CR5, tregister($05000006),
NR_CR6, tregister($05000007),
NR_CR7, tregister($05000008),
NR_XER, tregister($05000009),
NR_LR, tregister($0500000a),
NR_CTR, tregister($0500000b),
NR_FPSCR tregister($0500000c)

View File

@ -342,9 +342,9 @@ begin
end end
else else
first:=false; first:=false;
writeln(confile,'NR_',names[i],' = ',numbers[i],';');
writeln(supfile,'RS_',names[i],' = ',supregs[i],';'); writeln(supfile,'RS_',names[i],' = ',supregs[i],';');
write(numfile,'NR_',names[i]); writeln(confile,'NR_'+names[i],' = ','tregister(',numbers[i],')',';');
write(numfile,'tregister(',numbers[i],')');
write(stdfile,'''',stdnames[i],''''); write(stdfile,'''',stdnames[i],'''');
write(gasfile,'''',gasnames[i],''''); write(gasfile,'''',gasnames[i],'''');
write(gssfile,'''',gssnames[i],''''); write(gssfile,'''',gssnames[i],'''');
@ -390,7 +390,10 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.6 2003-12-10 22:19:28 florian Revision 1.7 2003-12-16 21:49:47 florian
* fixed ppc compilation
Revision 1.6 2003/12/10 22:19:28 florian
+ short gas register names for smartlinking added + short gas register names for smartlinking added
Revision 1.5 2003/09/03 20:33:28 peter Revision 1.5 2003/09/03 20:33:28 peter