Repository URL to install this package:
|
Version:
3.0.0 ▾
|
{$IFDEF OGC_INTERFACE}
const
// GQR2 = 914;
// GQR3 = 915;
// GQR4 = 916;
// GQR5 = 917;
// GQR6 = 918;
// GQR7 = 919;
GQR_TYPE_F32 = 0;
GQR_TYPE_U8 = 4;
GQR_TYPE_U16 = 5;
GQR_TYPE_S8 = 6;
GQR_TYPE_S16 = 7;
GQR_CAST_U8 = 2;
GQR_CAST_U16 = 3;
GQR_CAST_S8 = 4;
GQR_CAST_S16 = 5;
{$ifdef GEKKO}
procedure __set_gqr(_reg,_val: cint); inline;
procedure CAST_Init(); inline;
procedure CAST_SetGQR2(_type, scale: cuint32); inline;
procedure CAST_SetGQR3(_type, scale: cuint32); inline;
procedure CAST_SetGQR4(_type, scale: cuint32); inline;
procedure CAST_SetGQR5(_type, scale: cuint32); inline;
procedure CAST_SetGQR6(_type, scale: cuint32); inline;
procedure CAST_SetGQR7(_type, scale: cuint32); inline;
function __castu8f32(_in: pcuint8): f32; inline;
function __castu16f32(_in: pcuint16): f32; inline;
function __casts8f32(_in: pcint8): f32; inline
function __casts16f32(register s16 *in): f32; inline;
procedure castu8f32(_in: pcuint8; out _out: pf32); inline;
procedure castu16f32(_in: pcuint16; out _out: pf32); inline;
procedure casts8f32(_in: pcint8; out _out: pf32); inline;
procedure casts16f32(_in: pcint16; out _out: pf32); inline;
function __castf32u8(_in: f32): cuint8; inline;
function __castf32u16(_in: f32): cuint16; inline;
function __castf32s8(_in: f32): cint8; inline;
function __castf32s16(_in: f32): cint16; inline;
procedure castf32u8(_in: pf32; out _out: pcuint8); inline;
procedure castf32u16(_in: pf32; out _out: pcuint16); inline;
procedure castf32s8(_in: pf32; out _out: pcint8); inline;
procedure castf32s16(_in: pf32; out _out: pcint16); inline;
{$endif GEKKO}
{$ENDIF OGC_INTERFACE}
{$IFDEF OGC_IMPLEMENTATION}
{$ifdef GEKKO}
procedure __set_gqr(_reg,_val: cint); inline;
begin
asm
mtspr r3,r4
end;
end;
// does a default init
procedure CAST_Init(); inline;
begin
asm
li 3,0x0004
oris 3,3,0x0004
mtspr 914,3
li 3,0x0005
oris 3,3,0x0005
mtspr 915,3
li 3,0x0006
oris 3,3,0x0006
mtspr 916,3
li 3,0x0007
oris 3,3,0x0007
mtspr 917,3
end;
end;
procedure CAST_SetGQR2(_type, scale: cuint32); inline;
var
val: cuint32;
begin
val := (((((scale) shl 8) or (_type)) shl 16) or (((scale) shl 8) or (_type)));
__set_gqr(GQR2,val);
end;
procedure CAST_SetGQR3(_type, scale: cuint32); inline;
var
val: cuint32;
begin
val := (((((scale) shl 8) or (_type)) shl 16) or (((scale) shl 8) or (_type)));
__set_gqr(GQR3,val);
end;
procedure CAST_SetGQR4(_type, scale: cuint32); inline;
var
val: cuint32;
begin
val := (((((scale) shl 8) or (_type)) shl 16) or (((scale) shl 8) or (_type)));
__set_gqr(GQR4,val);
end;
procedure CAST_SetGQR5(_type, scale: cuint32); inline;
var
val: cuint32;
begin
val := (((((scale) shl 8) or (_type)) shl 16) or (((scale) shl 8) or (_type)));
__set_gqr(GQR5,val);
end;
procedure CAST_SetGQR6(_type, scale: cuint32); inline;
var
val: cuint32;
begin
val := (((((scale) shl 8) or (_type)) shl 16) or (((scale) shl 8) or (_type)));
__set_gqr(GQR6,val);
end;
procedure CAST_SetGQR7(_type, scale: cuint32); inline;
var
val: cuint32;
begin
val := (((((scale) shl 8) or (_type)) shl 16) or (((scale) shl 8) or (_type)));
__set_gqr(GQR7,val);
end;
function __castu8f32(_in: pcuint8): f32; inline;
var
rval: f32;
begin
asm
psq_l %[rval],0(%[_in]),1,2
end;
result := rval;
end;
function __castu16f32(_in: pcuint16): f32; inline;
var
rval: f32;
begin
asm
psq_l %[rval],0(%[in]),1,3
end;
result := rval;
end;
function __casts8f32(_in: pcint8): f32; inline
var
rval: f32;
begin
asm
psq_l %[rval],0(%[in]),1,4
end;
result := rval;
end;
function __casts16f32(register s16 *in): f32; inline;
var
rval: f32;
begin
asm
psq_l %[rval],0(%[in]),1,5
end;
result := rval;
end;
procedure castu8f32(_in: pcuint8; out _out: pf32); inline;
begin
_out^ := __castu8f32(_in);
end;
procedure castu16f32(_in: pcuint16; out _out: pf32); inline;
begin
_out^ := __castu16f32(_in);
end;
procedure casts8f32(_in: pcint8; out _out: pf32); inline;
begin
_out^ := __casts8f32(_in);
end;
procedure casts16f32(_in: pcint16; out _out: pf32); inline;
begin
_out^ := __casts16f32(_in);
end;
function __castf32u8(_in: f32): cuint8; inline;
var
a: f32;
rval: cuint8;
ptr: pf32;
begin
ptr := @a;
asm
psq_st %[in],0(%[ptr]),1,2
lbz %[out],0(%[ptr])
end;
result := rval;
end;
function __castf32u16(_in: f32): cuint16; inline;
var
a: f32;
rval: cuint16;
ptr: pf32;
begin
ptr := @a;
asm
psq_st %[in],0(%[ptr]),1,3
lhz %[out],0(%[ptr])
end;
result := rval;
end;
function __castf32s8(_in: f32): cint8; inline;
var
a: f32;
rval: cint8;
ptr: pf32;
begin
ptr := @a;
asm
psq_st %[in],0(%[ptr]),1,4
lbz %[out],0(%[ptr])
end;
result := rval;
end;
function __castf32s16(_in: f32): cint16; inline;
var
a: f32;
rval: cint16;
ptr: pf32;
begin
ptr := @a;
asm
psq_st %[in],0(%[ptr]),1,5
lha %[out],0(%[ptr])
end;
result := rval;
end;
procedure castf32u8(_in: pf32; out _out: pcuint8); inline;
begin
_out^ := __castf32u8(_in^);
end;
procedure castf32u16(_in: pf32; out _out: pcuint16); inline;
begin
_out^ := __castf32u16(_in^);
end;
procedure castf32s8(_in: pf32; out _out: pcint8); inline;
begin
_out^ := __castf32s8(_in^);
end;
procedure castf32s16(_in: pf32; out _out: pcint16); inline;
begin
_out^ := __castf32s16(_in^);
end;
{$endif GEKKO}
{$endif OGC_IMPLEMENTATION}