* USEINLINE directive added (not enabled yet)

This commit is contained in:
peter 2003-10-31 15:51:11 +00:00
parent a2cee9b843
commit bd96bacd81
3 changed files with 68 additions and 62 deletions

View File

@ -241,10 +241,10 @@ interface
var
mms_movescalar : pmmshuffle;
procedure supregset_reset(var regs:tsuperregisterset;setall:boolean);
procedure supregset_include(var regs:tsuperregisterset;s:tsuperregister);
procedure supregset_exclude(var regs:tsuperregisterset;s:tsuperregister);
function supregset_in(const regs:tsuperregisterset;s:tsuperregister):boolean;
procedure supregset_reset(var regs:tsuperregisterset;setall:boolean);{$ifdef USEINLINE}inline;{$endif}
procedure supregset_include(var regs:tsuperregisterset;s:tsuperregister);{$ifdef USEINLINE}inline;{$endif}
procedure supregset_exclude(var regs:tsuperregisterset;s:tsuperregister);{$ifdef USEINLINE}inline;{$endif}
function supregset_in(const regs:tsuperregisterset;s:tsuperregister):boolean;{$ifdef USEINLINE}inline;{$endif}
function newreg(rt:tregistertype;sr:tsuperregister;sb:tsubregister):tregister;{$ifdef USEINLINE}inline;{$endif}
function getsubreg(r:tregister):tsubregister;{$ifdef USEINLINE}inline;{$endif}
@ -260,10 +260,10 @@ interface
function int_cgsize(const a: aword): tcgsize;
{ return the inverse condition of opcmp }
function inverse_opcmp(opcmp: topcmp): topcmp;
function inverse_opcmp(opcmp: topcmp): topcmp;{$ifdef USEINLINE}inline;{$endif}
{ return whether op is commutative }
function commutativeop(op: topcg): boolean;
function commutativeop(op: topcg): boolean;{$ifdef USEINLINE}inline;{$endif}
{ returns true, if shuffle describes a real shuffle operation and not only a move }
function realshuffle(shuffle : pmmshuffle) : boolean;
@ -277,7 +277,7 @@ implementation
uses
verbose;
procedure supregset_reset(var regs:tsuperregisterset;setall:boolean);
procedure supregset_reset(var regs:tsuperregisterset;setall:boolean);{$ifdef USEINLINE}inline;{$endif}
var
b : byte;
begin
@ -289,19 +289,19 @@ implementation
end;
procedure supregset_include(var regs:tsuperregisterset;s:tsuperregister);
procedure supregset_include(var regs:tsuperregisterset;s:tsuperregister);{$ifdef USEINLINE}inline;{$endif}
begin
include(regs[s shr 8],(s and $ff))
include(regs[s shr 8],(s and $ff));
end;
procedure supregset_exclude(var regs:tsuperregisterset;s:tsuperregister);
procedure supregset_exclude(var regs:tsuperregisterset;s:tsuperregister);{$ifdef USEINLINE}inline;{$endif}
begin
exclude(regs[s shr 8],(s and $ff))
exclude(regs[s shr 8],(s and $ff));
end;
function supregset_in(const regs:tsuperregisterset;s:tsuperregister):boolean;
function supregset_in(const regs:tsuperregisterset;s:tsuperregister):boolean;{$ifdef USEINLINE}inline;{$endif}
begin
result:=(s and $ff) in regs[s shr 8];
end;
@ -411,7 +411,7 @@ implementation
end;
function inverse_opcmp(opcmp: topcmp): topcmp;
function inverse_opcmp(opcmp: topcmp): topcmp;{$ifdef USEINLINE}inline;{$endif}
const
list: array[TOpCmp] of TOpCmp =
(OC_NONE,OC_NE,OC_LTE,OC_GTE,OC_LT,OC_GT,OC_EQ,OC_A,OC_AE,
@ -421,7 +421,7 @@ implementation
end;
function commutativeop(op: topcg): boolean;
function commutativeop(op: topcg): boolean;{$ifdef USEINLINE}inline;{$endif}
const
list: array[topcg] of boolean =
(true,true,true,false,false,true,true,false,false,
@ -469,7 +469,10 @@ finalization
end.
{
$Log$
Revision 1.74 2003-10-30 14:56:40 mazen
Revision 1.75 2003-10-31 15:51:11 peter
* USEINLINE directive added (not enabled yet)
Revision 1.74 2003/10/30 14:56:40 mazen
+ add support for double float register vars
Revision 1.73 2003/10/29 15:07:01 mazen

View File

@ -35,15 +35,15 @@ interface
pstring = ^string;
{# Returns the minimal value between @var(a) and @var(b) }
function min(a,b : longint) : longint;
function min(a,b : longint) : longint;{$ifdef USEINLINE}inline;{$endif}
{# Returns the maximum value between @var(a) and @var(b) }
function max(a,b : longint) : longint;
function max(a,b : longint) : longint;{$ifdef USEINLINE}inline;{$endif}
{# Returns the value in @var(x) swapped to different endian }
function SwapLong(x : longint): longint;
function SwapLong(x : longint): longint;{$ifdef USEINLINE}inline;{$endif}
{# Returns the value in @va(x) swapped to different endian }
function SwapWord(x : word): word;
function SwapWord(x : word): word;{$ifdef USEINLINE}inline;{$endif}
{# Return value @var(i) aligned on @var(a) boundary }
function align(i,a:longint):longint;
function align(i,a:longint):longint;{$ifdef USEINLINE}inline;{$endif}
function used_align(varalign,minalign,maxalign:longint):longint;
function size_2_align(len : longint) : longint;
@ -58,15 +58,15 @@ interface
function GetToken(var s:string;endchar:char):string;
procedure uppervar(var s : string);
function hexstr(val : cardinal;cnt : cardinal) : string;
function tostru(i:cardinal) : string;
function tostr(i : longint) : string;
function realtostr(e:extended):string;
function int64tostr(i : int64) : string;
function tostr_with_plus(i : longint) : string;
function tostru(i:cardinal) : string;{$ifdef USEINLINE}inline;{$endif}
function tostr(i : longint) : string;{$ifdef USEINLINE}inline;{$endif}
function realtostr(e:extended):string;{$ifdef USEINLINE}inline;{$endif}
function int64tostr(i : int64) : string;{$ifdef USEINLINE}inline;{$endif}
function tostr_with_plus(i : longint) : string;{$ifdef USEINLINE}inline;{$endif}
function DStr(l:longint):string;
procedure valint(S : string;var V : longint;var code : integer);
{# Returns true if the string s is a number }
function is_number(const s : string) : boolean;
function is_number(const s : string) : boolean;{$ifdef USEINLINE}inline;{$endif}
{# Returns true if value is a power of 2, the actual
exponent value is returned in power.
}
@ -76,12 +76,12 @@ interface
{ releases the string p and assignes nil to p }
{ if p=nil then freemem isn't called }
procedure stringdispose(var p : pstring);
procedure stringdispose(var p : pstring);{$ifdef USEINLINE}inline;{$endif}
{ allocates mem for a copy of s, copies s to this mem and returns }
{ a pointer to this mem }
function stringdup(const s : string) : pstring;
function stringdup(const s : string) : pstring;{$ifdef USEINLINE}inline;{$endif}
{# Allocates memory for the string @var(s) and copies s as zero
terminated string to that allocated memory and returns a pointer
@ -132,7 +132,7 @@ uses
lowertbl : array[char] of char;
function min(a,b : longint) : longint;
function min(a,b : longint) : longint;{$ifdef USEINLINE}inline;{$endif}
{
return the minimal of a and b
}
@ -144,7 +144,7 @@ uses
end;
function max(a,b : longint) : longint;
function max(a,b : longint) : longint;{$ifdef USEINLINE}inline;{$endif}
{
return the maximum of a and b
}
@ -156,7 +156,7 @@ uses
end;
Function SwapLong(x : longint): longint;
Function SwapLong(x : longint): longint;{$ifdef USEINLINE}inline;{$endif}
var
y : word;
z : word;
@ -169,7 +169,7 @@ uses
End;
Function SwapWord(x : word): word;
Function SwapWord(x : word): word;{$ifdef USEINLINE}inline;{$endif}
var
z : byte;
Begin
@ -180,7 +180,7 @@ uses
End;
function align(i,a:longint):longint;
function align(i,a:longint):longint;{$ifdef USEINLINE}inline;{$endif}
{
return value <i> aligned <a> boundary
}
@ -359,7 +359,7 @@ uses
end;
function tostru(i:cardinal):string;
function tostru(i:cardinal):string;{$ifdef USEINLINE}inline;{$endif}
{
return string of value i, but for cardinals
}
@ -368,7 +368,7 @@ uses
end;
function tostr(i : longint) : string;
function tostr(i : longint) : string;{$ifdef USEINLINE}inline;{$endif}
{
return string of value i
}
@ -501,36 +501,29 @@ uses
end;
function realtostr(e:extended):string;
function realtostr(e:extended):string;{$ifdef USEINLINE}inline;{$endif}
begin
str(e,result);
end;
function int64tostr(i : int64) : string;
function int64tostr(i : int64) : string;{$ifdef USEINLINE}inline;{$endif}
{
return string of value i
}
var
hs : string;
begin
str(i,hs);
int64tostr:=hs;
str(i,result);
end;
function tostr_with_plus(i : longint) : string;
function tostr_with_plus(i : longint) : string;{$ifdef USEINLINE}inline;{$endif}
{
return string of value i, but always include a + when i>=0
}
var
hs : string;
begin
str(i,hs);
str(i,result);
if i>=0 then
tostr_with_plus:='+'+hs
else
tostr_with_plus:=hs;
result:='+'+result;
end;
@ -573,7 +566,7 @@ uses
{$endif not FPC}
function is_number(const s : string) : boolean;
function is_number(const s : string) : boolean;{$ifdef USEINLINE}inline;{$endif}
{
is string a correct number ?
}
@ -710,21 +703,20 @@ uses
end;
procedure stringdispose(var p : pstring);
procedure stringdispose(var p : pstring);{$ifdef USEINLINE}inline;{$endif}
begin
if assigned(p) then
freemem(p,length(p^)+1);
p:=nil;
begin
freemem(p,length(p^)+1);
p:=nil;
end;
end;
function stringdup(const s : string) : pstring;
var
p : pstring;
function stringdup(const s : string) : pstring;{$ifdef USEINLINE}inline;{$endif}
begin
getmem(p,length(s)+1);
p^:=s;
stringdup:=p;
getmem(result,length(s)+1);
result^:=s;
end;
@ -792,8 +784,10 @@ uses
procedure ansistringdispose(var p : pchar;length : longint);
begin
if assigned(p) then
freemem(p,length+1);
p:=nil;
begin
freemem(p,length+1);
p:=nil;
end;
end;
@ -863,7 +857,10 @@ initialization
end.
{
$Log$
Revision 1.28 2003-09-03 15:55:00 peter
Revision 1.29 2003-10-31 15:51:11 peter
* USEINLINE directive added (not enabled yet)
Revision 1.28 2003/09/03 15:55:00 peter
* NEWRA branch merged
Revision 1.27.2.2 2003/08/29 17:28:59 peter

View File

@ -6,6 +6,7 @@
{$mode objfpc}
{$H-}
{$goto on}
{$inline on}
{ This reduces the memory requirements a lot }
{$PACKENUM 1}
@ -14,6 +15,8 @@
exceptions in the constructors }
{$ifndef VER1_0}
{$IMPLICITEXCEPTIONS OFF}
//{$calling register}
//{$define USEINLINE}
{$endif VER1_0}
{$define FPCPROCVAR}
@ -82,7 +85,10 @@
{
$Log$
Revision 1.25 2003-09-06 16:47:24 florian
Revision 1.26 2003-10-31 15:51:11 peter
* USEINLINE directive added (not enabled yet)
Revision 1.25 2003/09/06 16:47:24 florian
+ support of NaN and Inf in the compiler as values of real constants
Revision 1.24 2003/09/03 15:55:00 peter