Add basic bit types

This commit is contained in:
Folkert Kevelam 2025-06-27 20:46:07 +02:00
parent c4ebe23f73
commit 5e42b68f47

View File

@ -1,18 +1,29 @@
package Interfaces
with Pure is
type Integer_32 is range -2**31 .. 2**31 - 1;
type Unsigned_32 is mod 2**32;
type Bit_1 is mod 2**1
with Size => 1;
type Bit_2 is mod 2**2
with Size => 2;
type Bit_3 is mod 2**3
with Size => 3;
type Bit_4 is mod 2**4
with Size => 4;
function Shift_Left (Value : Unsigned_32; Amount : Natural)
return Unsigned_32 with Import, Convention => Intrinsic;
function Shift_Right (Value : Unsigned_32; Amount : Natural)
return Unsigned_32 with Import, Convention => Intrinsic;
function Shift_Right_Arithmetic (Value : Unsigned_32; Amount : Natural)
return Unsigned_32 with Import, Convention => Intrinsic;
function Rotate_Left (Value : Unsigned_32; Amount : Natural)
return Unsigned_32 with Import, Convention => Intrinsic;
function Rotate_Right (Value : Unsigned_32; Amount : Natural)
return Unsigned_32 with Import, Convention => Intrinsic;
type Bit_31 is mod 2**32
with Size => 31;
type Bit_32 is mod 2**32
with Size => 32;
function Shift_Left (Value : Bit_32; Amount : Natural)
return Bit_32 with Import, Convention => Intrinsic;
function Shift_Right (Value : Bit_32; Amount : Natural)
return Bit_32 with Import, Convention => Intrinsic;
function Shift_Right_Arithmetic (Value : Bit_32; Amount : Natural)
return Bit_32 with Import, Convention => Intrinsic;
function Rotate_Left (Value : Bit_32; Amount : Natural)
return Bit_32 with Import, Convention => Intrinsic;
function Rotate_Right (Value : Bit_32; Amount : Natural)
return Bit_32 with Import, Convention => Intrinsic;
end Interfaces;