X-Git-Url: https://git.llucax.com/software/druntime.git/blobdiff_plain/5a07183e26b7ca151959629420a83f59af5339f3..11034b79381400b2f6ed6548468b329a811f9e19:/import/std/intrinsic.di
diff --git a/import/std/intrinsic.di b/import/std/intrinsic.di
index c5c8110..b82f07c 100644
--- a/import/std/intrinsic.di
+++ b/import/std/intrinsic.di
@@ -1,176 +1,176 @@
-/**
- * These functions are built-in intrinsics to the compiler.
- *
- * Intrinsic functions are functions built in to the compiler, usually to take
- * advantage of specific CPU features that are inefficient to handle via
- * external functions. The compiler's optimizer and code generator are fully
- * integrated in with intrinsic functions, bringing to bear their full power on
- * them. This can result in some surprising speedups.
- *
- * Copyright: Public Domain
- * License: Public Domain
- * Authors: Walter Bright
- */
-module std.intrinsic;
-
-
-/**
- * Scans the bits in v starting with bit 0, looking
- * for the first set bit.
- * Returns:
- * The bit number of the first bit set.
- * The return value is undefined if v is zero.
- */
-int bsf( uint v );
-
-
-/**
- * Scans the bits in v from the most significant bit
- * to the least significant bit, looking
- * for the first set bit.
- * Returns:
- * The bit number of the first bit set.
- * The return value is undefined if v is zero.
- * Example:
- * ---
- * import std.intrinsic;
- *
- * int main()
- * {
- * uint v;
- * int x;
- *
- * v = 0x21;
- * x = bsf(v);
- * printf("bsf(x%x) = %d\n", v, x);
- * x = bsr(v);
- * printf("bsr(x%x) = %d\n", v, x);
- * return 0;
- * }
- * ---
- * Output:
- * bsf(x21) = 0
- * bsr(x21) = 5
- */
-int bsr( uint v );
-
-
-/**
- * Tests the bit.
- */
-int bt( uint* p, uint bitnum );
-
-
-/**
- * Tests and complements the bit.
- */
-int btc( uint* p, uint bitnum );
-
-
-/**
- * Tests and resets (sets to 0) the bit.
- */
-int btr( uint* p, uint bitnum );
-
-
-/**
- * Tests and sets the bit.
- * Params:
- * p = a non-NULL pointer to an array of uints.
- * index = a bit number, starting with bit 0 of p[0],
- * and progressing. It addresses bits like the expression:
----
-p[index / (uint.sizeof*8)] & (1 << (index & ((uint.sizeof*8) - 1)))
----
- * Returns:
- * A non-zero value if the bit was set, and a zero
- * if it was clear.
- *
- * Example:
- * ---
-import std.intrinsic;
-
-int main()
-{
- uint array[2];
-
- array[0] = 2;
- array[1] = 0x100;
-
- printf("btc(array, 35) = %d\n", btc(array, 35));
- printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]);
-
- printf("btc(array, 35) = %d\n", btc(array, 35));
- printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]);
-
- printf("bts(array, 35) = %d\n", bts(array, 35));
- printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]);
-
- printf("btr(array, 35) = %d\n", btr(array, 35));
- printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]);
-
- printf("bt(array, 1) = %d\n", bt(array, 1));
- printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]);
-
- return 0;
-}
- * ---
- * Output:
-
-btc(array, 35) = 0 -array = [0]:x2, [1]:x108 -btc(array, 35) = -1 -array = [0]:x2, [1]:x100 -bts(array, 35) = 0 -array = [0]:x2, [1]:x108 -btr(array, 35) = -1 -array = [0]:x2, [1]:x100 -bt(array, 1) = -1 -array = [0]:x2, [1]:x100 -- */ -int bts( uint* p, uint bitnum ); - - -/** - * Swaps bytes in a 4 byte uint end-to-end, i.e. byte 0 becomes - * byte 3, byte 1 becomes byte 2, byte 2 becomes byte 1, byte 3 - * becomes byte 0. - */ -uint bswap( uint v ); - - -/** - * Reads I/O port at port_address. - */ -ubyte inp( uint port_address ); - - -/** - * ditto - */ -ushort inpw( uint port_address ); - - -/** - * ditto - */ -uint inpl( uint port_address ); - - -/** - * Writes and returns value to I/O port at port_address. - */ -ubyte outp( uint port_address, ubyte value ); - - -/** - * ditto - */ -ushort outpw( uint port_address, ushort value ); - - -/** - * ditto - */ -uint outpl( uint port_address, uint value ); +/** + * These functions are built-in intrinsics to the compiler. + * + * Intrinsic functions are functions built in to the compiler, usually to take + * advantage of specific CPU features that are inefficient to handle via + * external functions. The compiler's optimizer and code generator are fully + * integrated in with intrinsic functions, bringing to bear their full power on + * them. This can result in some surprising speedups. + * + * Copyright: Public Domain + * License: Public Domain + * Authors: Walter Bright + */ +module std.intrinsic; + + +/** + * Scans the bits in v starting with bit 0, looking + * for the first set bit. + * Returns: + * The bit number of the first bit set. + * The return value is undefined if v is zero. + */ +int bsf( uint v ); + + +/** + * Scans the bits in v from the most significant bit + * to the least significant bit, looking + * for the first set bit. + * Returns: + * The bit number of the first bit set. + * The return value is undefined if v is zero. + * Example: + * --- + * import std.intrinsic; + * + * int main() + * { + * uint v; + * int x; + * + * v = 0x21; + * x = bsf(v); + * printf("bsf(x%x) = %d\n", v, x); + * x = bsr(v); + * printf("bsr(x%x) = %d\n", v, x); + * return 0; + * } + * --- + * Output: + * bsf(x21) = 0
+btc(array, 35) = 0 +array = [0]:x2, [1]:x108 +btc(array, 35) = -1 +array = [0]:x2, [1]:x100 +bts(array, 35) = 0 +array = [0]:x2, [1]:x108 +btr(array, 35) = -1 +array = [0]:x2, [1]:x100 +bt(array, 1) = -1 +array = [0]:x2, [1]:x100 ++ */ +int bts( uint* p, uint bitnum ); + + +/** + * Swaps bytes in a 4 byte uint end-to-end, i.e. byte 0 becomes + * byte 3, byte 1 becomes byte 2, byte 2 becomes byte 1, byte 3 + * becomes byte 0. + */ +uint bswap( uint v ); + + +/** + * Reads I/O port at port_address. + */ +ubyte inp( uint port_address ); + + +/** + * ditto + */ +ushort inpw( uint port_address ); + + +/** + * ditto + */ +uint inpl( uint port_address ); + + +/** + * Writes and returns value to I/O port at port_address. + */ +ubyte outp( uint port_address, ubyte value ); + + +/** + * ditto + */ +ushort outpw( uint port_address, ushort value ); + + +/** + * ditto + */ +uint outpl( uint port_address, uint value );