1*890232f2SAndroid Build Coastguard Workerimport { BitWidth } from './bit-width.js' 2*890232f2SAndroid Build Coastguard Worker 3*890232f2SAndroid Build Coastguard Workerexport function toByteWidth(bitWidth: BitWidth): number { 4*890232f2SAndroid Build Coastguard Worker return 1 << bitWidth; 5*890232f2SAndroid Build Coastguard Worker} 6*890232f2SAndroid Build Coastguard Worker 7*890232f2SAndroid Build Coastguard Workerexport function iwidth(value: number | bigint): BitWidth { 8*890232f2SAndroid Build Coastguard Worker if (value >= -128 && value <= 127) return BitWidth.WIDTH8; 9*890232f2SAndroid Build Coastguard Worker if (value >= -32768 && value <= 32767) return BitWidth.WIDTH16; 10*890232f2SAndroid Build Coastguard Worker if (value >= -2147483648 && value <= 2147483647) return BitWidth.WIDTH32; 11*890232f2SAndroid Build Coastguard Worker return BitWidth.WIDTH64; 12*890232f2SAndroid Build Coastguard Worker} 13*890232f2SAndroid Build Coastguard Worker 14*890232f2SAndroid Build Coastguard Workerexport function fwidth(value: number): BitWidth { 15*890232f2SAndroid Build Coastguard Worker return value === Math.fround(value) ? BitWidth.WIDTH32 : BitWidth.WIDTH64; 16*890232f2SAndroid Build Coastguard Worker} 17*890232f2SAndroid Build Coastguard Worker 18*890232f2SAndroid Build Coastguard Workerexport function uwidth(value: number): BitWidth { 19*890232f2SAndroid Build Coastguard Worker if (value <= 255) return BitWidth.WIDTH8; 20*890232f2SAndroid Build Coastguard Worker if (value <= 65535) return BitWidth.WIDTH16; 21*890232f2SAndroid Build Coastguard Worker if (value <= 4294967295) return BitWidth.WIDTH32; 22*890232f2SAndroid Build Coastguard Worker return BitWidth.WIDTH64; 23*890232f2SAndroid Build Coastguard Worker} 24*890232f2SAndroid Build Coastguard Worker 25*890232f2SAndroid Build Coastguard Workerexport function fromByteWidth(value: number): BitWidth { 26*890232f2SAndroid Build Coastguard Worker if (value === 1) return BitWidth.WIDTH8; 27*890232f2SAndroid Build Coastguard Worker if (value === 2) return BitWidth.WIDTH16; 28*890232f2SAndroid Build Coastguard Worker if (value === 4) return BitWidth.WIDTH32; 29*890232f2SAndroid Build Coastguard Worker return BitWidth.WIDTH64; 30*890232f2SAndroid Build Coastguard Worker} 31*890232f2SAndroid Build Coastguard Worker 32*890232f2SAndroid Build Coastguard Workerexport function paddingSize(bufSize: number, scalarSize: number): number { 33*890232f2SAndroid Build Coastguard Worker return (~bufSize + 1) & (scalarSize - 1); 34*890232f2SAndroid Build Coastguard Worker}