newCTFE Status August 2017
Stefan Koch via Digitalmars-d
digitalmars-d at puremagic.com
Sat Aug 5 15:59:10 PDT 2017
On Tuesday, 1 August 2017 at 21:27:32 UTC, Stefan Koch wrote:
> [ ... ]
The following code does now compile with newCTFE,
and it's a little faster then the old interpreter.
Not much though since that is not a pathological case.
pure nothrow @nogc @safe uint[256][8] genTables32(uint
polynomial)
{
uint[256][8] res = 0u;
{
int __key479 = 0;
int __limit480 = 256;
for (; __key479 < __limit480; __key479 += 1)
{
int i = __key479;
uint crc = cast(uint)i;
{
int __key481 = 0;
int __limit482 = 8;
for (; __key481 < __limit482; __key481 += 1)
{
int _ = __key481;
crc = crc >> 1 ^ cast(uint)-cast(int)(crc
& 1u) & polynomial;
}
}
res[0][i] = crc;
}
}
{
int __key483 = 0;
int __limit484 = 256;
for (; __key483 < __limit484; __key483 += 1)
{
int i = __key483;
res[1][i] = res[0][i] >> 8 ^ res[0][(res[0][i] &
255u)];
res[2][i] = res[1][i] >> 8 ^ res[0][(res[1][i] &
255u)];
res[3][i] = res[2][i] >> 8 ^ res[0][(res[2][i] &
255u)];
res[4][i] = res[3][i] >> 8 ^ res[0][(res[3][i] &
255u)];
res[5][i] = res[4][i] >> 8 ^ res[0][(res[4][i] &
255u)];
res[6][i] = res[5][i] >> 8 ^ res[0][(res[5][i] &
255u)];
res[7][i] = res[6][i] >> 8 ^ res[0][(res[6][i] &
255u)];
}
}
return res;
}
static immutable tables = genTables32(0xEDB88320);
static assert(tables[0][0] == 0x00000000 && tables[0][$ - 1]
== 0x2d02ef8d && tables[7][$ - 1] == 0x264b06e6);
More information about the Digitalmars-d
mailing list