typegpu 0.11.9 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/builtin.d.ts +51 -53
- package/builtin.js +30 -34
- package/common/fullScreenTriangle.d.ts +2 -10
- package/common/fullScreenTriangle.js +20 -28
- package/common/index.d.ts +2 -9
- package/common/index.js +3 -12
- package/common/writeSoA.d.ts +11 -12
- package/common/writeSoA.js +88 -76
- package/core/buffer/buffer.d.ts +79 -62
- package/core/buffer/buffer.js +279 -205
- package/core/buffer/bufferBinding.d.ts +71 -0
- package/core/buffer/bufferBinding.js +154 -0
- package/core/buffer/bufferUsage.d.ts +14 -45
- package/core/buffer/bufferUsage.js +1 -171
- package/core/buffer/laidOutBuffer.d.ts +25 -0
- package/core/buffer/laidOutBuffer.js +55 -0
- package/core/commandEncoder/attachments.d.ts +125 -0
- package/core/commandEncoder/attachments.js +29 -0
- package/core/commandEncoder/commandEncoder.d.ts +53 -0
- package/core/commandEncoder/commandEncoder.js +56 -0
- package/core/commandEncoder/computePass.d.ts +58 -0
- package/core/commandEncoder/computePass.js +63 -0
- package/core/commandEncoder/renderPass.d.ts +121 -0
- package/core/commandEncoder/renderPass.js +196 -0
- package/core/constant/tgpuConstant.d.ts +26 -26
- package/core/constant/tgpuConstant.js +76 -65
- package/core/declare/tgpuDeclare.d.ts +3 -6
- package/core/declare/tgpuDeclare.js +36 -36
- package/core/function/autoIO.d.ts +61 -33
- package/core/function/autoIO.js +68 -73
- package/core/function/comptime.d.ts +11 -13
- package/core/function/comptime.js +60 -52
- package/core/function/createCallableSchema.d.ts +16 -0
- package/core/function/createCallableSchema.js +50 -40
- package/core/function/dualImpl.d.ts +44 -0
- package/core/function/dualImpl.js +71 -50
- package/core/function/entryInputRouter.d.ts +26 -0
- package/core/function/entryInputRouter.js +31 -33
- package/core/function/extractArgs.d.ts +38 -0
- package/core/function/extractArgs.js +202 -200
- package/core/function/fnCore.d.ts +44 -5
- package/core/function/fnCore.js +148 -93
- package/core/function/fnTypes.d.ts +31 -29
- package/core/function/fnTypes.js +1 -0
- package/core/function/ioSchema.d.ts +12 -10
- package/core/function/ioSchema.js +65 -47
- package/core/function/shelllessImpl.d.ts +9 -12
- package/core/function/shelllessImpl.js +17 -22
- package/core/function/templateUtils.d.ts +2 -0
- package/core/function/templateUtils.js +9 -8
- package/core/function/tgpuComputeFn.d.ts +26 -28
- package/core/function/tgpuComputeFn.js +47 -48
- package/core/function/tgpuFn.d.ts +34 -37
- package/core/function/tgpuFn.js +179 -153
- package/core/function/tgpuFragmentFn.d.ts +52 -53
- package/core/function/tgpuFragmentFn.js +63 -56
- package/core/function/tgpuVertexFn.d.ts +36 -39
- package/core/function/tgpuVertexFn.js +56 -53
- package/core/pipeline/computePipeline.d.ts +141 -53
- package/core/pipeline/computePipeline.js +291 -225
- package/core/pipeline/connectAttachmentToShader.d.ts +4 -0
- package/core/pipeline/connectAttachmentToShader.js +25 -22
- package/core/pipeline/connectTargetsToShader.d.ts +3 -0
- package/core/pipeline/connectTargetsToShader.js +29 -27
- package/core/pipeline/drawState.d.ts +52 -0
- package/core/pipeline/drawState.js +225 -0
- package/core/pipeline/limitsOverflow.d.ts +2 -0
- package/core/pipeline/limitsOverflow.js +13 -10
- package/core/pipeline/performanceTracker.d.ts +14 -0
- package/core/pipeline/performanceTracker.js +34 -0
- package/core/pipeline/pipelineUtils.d.ts +18 -0
- package/core/pipeline/pipelineUtils.js +54 -25
- package/core/pipeline/priors.d.ts +1 -0
- package/core/pipeline/priors.js +12 -0
- package/core/pipeline/renderPipeline.d.ts +246 -261
- package/core/pipeline/renderPipeline.js +487 -480
- package/core/pipeline/timeable.d.ts +28 -18
- package/core/pipeline/timeable.js +90 -52
- package/core/pipeline/typeGuards.d.ts +17 -0
- package/core/pipeline/typeGuards.js +52 -22
- package/core/querySet/querySet.d.ts +26 -21
- package/core/querySet/querySet.js +127 -103
- package/core/rawCodeSnippet/tgpuRawCodeSnippet.d.ts +13 -18
- package/core/rawCodeSnippet/tgpuRawCodeSnippet.js +89 -90
- package/core/resolve/externals.d.ts +25 -8
- package/core/resolve/externals.js +78 -54
- package/core/resolve/namespace.d.ts +22 -25
- package/core/resolve/namespace.js +16 -21
- package/core/resolve/resolvableString.d.ts +7 -0
- package/core/resolve/resolvableString.js +13 -0
- package/core/resolve/resolveData.d.ts +10 -0
- package/core/resolve/resolveData.js +162 -121
- package/core/resolve/stitch.d.ts +8 -0
- package/core/resolve/stitch.js +23 -21
- package/core/resolve/tgpuResolve.d.ts +55 -53
- package/core/resolve/tgpuResolve.js +106 -53
- package/core/root/configurableImpl.d.ts +10 -0
- package/core/root/configurableImpl.js +17 -19
- package/core/root/init.d.ts +76 -38
- package/core/root/init.js +346 -455
- package/core/root/rootTypes.d.ts +461 -636
- package/core/root/rootTypes.js +1 -0
- package/core/sampler/sampler.d.ts +50 -31
- package/core/sampler/sampler.js +120 -113
- package/core/simulate/tgpuSimulate.d.ts +9 -12
- package/core/simulate/tgpuSimulate.js +68 -71
- package/core/slot/accessor.d.ts +36 -13
- package/core/slot/accessor.js +138 -91
- package/core/slot/internalSlots.d.ts +2 -0
- package/core/slot/internalSlots.js +1 -6
- package/core/slot/lazy.d.ts +2 -6
- package/core/slot/lazy.js +71 -39
- package/core/slot/slot.d.ts +2 -6
- package/core/slot/slot.js +45 -38
- package/core/slot/slotTypes.d.ts +78 -80
- package/core/slot/slotTypes.js +11 -16
- package/core/texture/externalTexture.d.ts +20 -11
- package/core/texture/externalTexture.js +46 -46
- package/core/texture/texture.d.ts +152 -97
- package/core/texture/texture.js +407 -314
- package/core/texture/textureFormats.d.ts +42 -23
- package/core/texture/textureFormats.js +104 -75
- package/core/texture/textureProps.d.ts +7 -10
- package/core/texture/textureProps.js +1 -0
- package/core/texture/textureUtils.d.ts +8 -0
- package/core/texture/textureUtils.js +185 -179
- package/core/texture/usageExtension.d.ts +21 -18
- package/core/texture/usageExtension.js +13 -17
- package/core/unroll/tgpuUnroll.d.ts +20 -19
- package/core/unroll/tgpuUnroll.js +82 -91
- package/core/valueProxyUtils.d.ts +3 -0
- package/core/valueProxyUtils.js +52 -41
- package/core/variable/tgpuVariable.d.ts +26 -27
- package/core/variable/tgpuVariable.js +93 -96
- package/core/vertexLayout/connectAttributesToShader.d.ts +9 -0
- package/core/vertexLayout/connectAttributesToShader.js +61 -56
- package/core/vertexLayout/vertexAttribute.d.ts +21 -17
- package/core/vertexLayout/vertexAttribute.js +1 -0
- package/core/vertexLayout/vertexLayout.d.ts +24 -18
- package/core/vertexLayout/vertexLayout.js +130 -99
- package/core/whitespaces.d.ts +2 -0
- package/core/whitespaces.js +16 -0
- package/data/alignIO.d.ts +7 -0
- package/data/alignIO.js +13 -13
- package/data/alignmentOf.d.ts +5 -8
- package/data/alignmentOf.js +90 -75
- package/data/array.d.ts +6 -9
- package/data/array.js +48 -40
- package/data/atomic.d.ts +2 -7
- package/data/atomic.js +26 -23
- package/data/attributes.d.ts +19 -21
- package/data/attributes.js +192 -132
- package/data/autoStruct.d.ts +36 -3
- package/data/autoStruct.js +84 -81
- package/data/compiledIO.d.ts +5 -0
- package/data/compiledIO.js +231 -215
- package/data/dataIO.d.ts +13 -11
- package/data/dataIO.js +643 -589
- package/data/dataTypes.d.ts +83 -65
- package/data/dataTypes.js +66 -68
- package/data/deepEqual.d.ts +2 -7
- package/data/deepEqual.js +80 -55
- package/data/disarray.d.ts +6 -10
- package/data/disarray.js +52 -46
- package/data/float16Conversion.d.ts +4 -0
- package/data/float16Conversion.js +7 -0
- package/data/getLongestContiguousPrefix.d.ts +4 -8
- package/data/getLongestContiguousPrefix.js +6 -11
- package/data/index.d.ts +30 -31
- package/data/index.js +39 -172
- package/data/instanceToSchema.d.ts +24 -27
- package/data/instanceToSchema.js +1 -0
- package/data/isContiguous.d.ts +4 -8
- package/data/isContiguous.js +6 -11
- package/data/matrix.d.ts +21 -21
- package/data/matrix.js +513 -505
- package/data/numberOps.d.ts +6 -0
- package/data/numberOps.js +26 -20
- package/data/numeric.d.ts +21 -12
- package/data/numeric.js +287 -197
- package/data/offsetUtils.d.ts +9 -13
- package/data/offsetUtils.js +204 -144
- package/data/offsets.d.ts +8 -0
- package/data/offsets.js +33 -33
- package/data/partialIO.d.ts +13 -8
- package/data/partialIO.js +124 -113
- package/data/ptr.d.ts +12 -12
- package/data/ptr.js +42 -44
- package/data/ref.d.ts +40 -27
- package/data/ref.js +125 -95
- package/data/sampler.d.ts +99 -101
- package/data/sampler.js +17 -21
- package/data/schemaCallWrapper.d.ts +19 -0
- package/data/schemaCallWrapper.js +31 -26
- package/data/schemaMemoryLayout.d.ts +8 -0
- package/data/schemaMemoryLayout.js +213 -185
- package/data/sizeOf.d.ts +4 -8
- package/data/sizeOf.js +6 -11
- package/data/snippet.d.ts +96 -20
- package/data/snippet.js +75 -86
- package/data/struct.d.ts +4 -7
- package/data/struct.js +51 -39
- package/data/texture.d.ts +253 -250
- package/data/texture.js +238 -200
- package/data/unstruct.d.ts +2 -7
- package/data/unstruct.js +43 -37
- package/data/vector.d.ts +33 -21
- package/data/vector.js +234 -221
- package/data/vectorImpl.d.ts +231 -0
- package/data/vectorImpl.js +563 -515
- package/data/vectorOps.d.ts +63 -0
- package/data/vectorOps.js +642 -630
- package/data/vertexFormatData.d.ts +181 -184
- package/data/vertexFormatData.js +104 -106
- package/data/wgslTypes.d.ts +665 -600
- package/data/wgslTypes.js +220 -198
- package/errors.d.ts +50 -24
- package/errors.js +146 -126
- package/execMode.d.ts +16 -0
- package/execMode.js +47 -40
- package/extension.d.ts +13 -8
- package/extension.js +10 -16
- package/getGPUValue.d.ts +1 -0
- package/getGPUValue.js +2 -7
- package/index.d.ts +28 -68
- package/index.js +8 -28
- package/indexNamedExports.d.ts +69 -42
- package/indexNamedExports.js +25 -0
- package/internal.d.ts +16 -0
- package/internal.js +12 -0
- package/mathUtils.d.ts +5 -0
- package/mathUtils.js +7 -11
- package/memo.d.ts +11 -0
- package/memo.js +20 -22
- package/minify.d.ts +5 -0
- package/minify.js +93 -0
- package/nameUtils.d.ts +29 -0
- package/nameUtils.js +427 -394
- package/package.json +5 -1
- package/resolutionCtx.d.ts +162 -22
- package/resolutionCtx.js +911 -629
- package/serial/registry.d.ts +15 -0
- package/serial/registry.js +106 -0
- package/serial/restore.d.ts +49 -0
- package/serial/restore.js +68 -0
- package/serial/schema.d.ts +58 -0
- package/serial/schema.js +209 -0
- package/serial/types.d.ts +5 -0
- package/serial/types.js +1 -0
- package/shared/env.d.ts +9 -0
- package/shared/env.js +9 -12
- package/shared/generators.d.ts +4 -0
- package/shared/generators.js +10 -12
- package/shared/meta.d.ts +29 -14
- package/shared/meta.js +71 -55
- package/shared/normalizeMetadata.d.ts +32 -27
- package/shared/normalizeMetadata.js +23 -36
- package/shared/repr.d.ts +73 -55
- package/shared/repr.js +1 -0
- package/shared/soul.d.ts +17 -0
- package/shared/soul.js +1 -0
- package/shared/stringify.d.ts +2 -0
- package/shared/stringify.js +29 -20
- package/shared/symbols.d.ts +26 -20
- package/shared/symbols.js +79 -79
- package/shared/tseynit.d.ts +2 -0
- package/shared/tseynit.js +160 -75
- package/shared/utilityTypes.d.ts +30 -14
- package/shared/utilityTypes.js +2 -6
- package/shared/vertexFormat.d.ts +41 -43
- package/shared/vertexFormat.js +59 -62
- package/std/array.d.ts +2 -7
- package/std/array.js +18 -23
- package/std/atomic.d.ts +14 -18
- package/std/atomic.js +96 -95
- package/std/bitcast.d.ts +193 -10
- package/std/bitcast.js +309 -39
- package/std/boolean.d.ts +19 -33
- package/std/boolean.js +296 -288
- package/std/copy.d.ts +2 -7
- package/std/copy.js +27 -24
- package/std/derivative.d.ts +11 -15
- package/std/derivative.js +56 -79
- package/std/discard.d.ts +1 -6
- package/std/discard.js +7 -14
- package/std/environment.d.ts +19 -14
- package/std/environment.js +71 -51
- package/std/extensions.d.ts +2 -8
- package/std/extensions.js +10 -11
- package/std/index.d.ts +20 -24
- package/std/index.js +32 -187
- package/std/matrix.d.ts +6 -12
- package/std/matrix.js +60 -69
- package/std/numeric.d.ts +143 -146
- package/std/numeric.js +858 -749
- package/std/operators.d.ts +19 -27
- package/std/operators.js +227 -193
- package/std/packing.d.ts +5 -11
- package/std/packing.js +67 -75
- package/std/range.d.ts +6 -11
- package/std/range.js +48 -36
- package/std/subgroup.d.ts +33 -37
- package/std/subgroup.js +180 -217
- package/std/texture.d.ts +70 -38
- package/std/texture.js +176 -172
- package/taskQueue.d.ts +6 -0
- package/taskQueue.js +30 -0
- package/tgpu.d.ts +16 -0
- package/tgpu.js +17 -44
- package/tgpuBindGroupLayout.d.ts +132 -152
- package/tgpuBindGroupLayout.js +346 -268
- package/tgpuLogger.d.ts +34 -0
- package/tgpuLogger.js +63 -0
- package/tgpuUnstable.d.ts +16 -22
- package/tgpuUnstable.js +13 -35
- package/tgsl/accessIndex.d.ts +2 -0
- package/tgsl/accessIndex.js +76 -33
- package/tgsl/accessProp.d.ts +2 -0
- package/tgsl/accessProp.js +142 -101
- package/tgsl/accessStructProp.d.ts +5 -0
- package/tgsl/accessStructProp.js +13 -15
- package/tgsl/consoleLog/deserializers.d.ts +13 -0
- package/tgsl/consoleLog/deserializers.js +119 -103
- package/tgsl/consoleLog/logGenerator.d.ts +21 -0
- package/tgsl/consoleLog/logGenerator.js +85 -80
- package/tgsl/consoleLog/serializers.d.ts +21 -0
- package/tgsl/consoleLog/serializers.js +119 -100
- package/tgsl/consoleLog/types.d.ts +40 -39
- package/tgsl/consoleLog/types.js +1 -0
- package/tgsl/conversion.d.ts +33 -0
- package/tgsl/conversion.js +271 -216
- package/tgsl/forOfUtils.d.ts +15 -0
- package/tgsl/forOfUtils.js +85 -70
- package/tgsl/generationHelpers.d.ts +22 -39
- package/tgsl/generationHelpers.js +85 -58
- package/tgsl/infixDispatch.d.ts +70 -0
- package/tgsl/infixDispatch.js +48 -46
- package/tgsl/jsPolyfills.d.ts +16 -19
- package/tgsl/jsPolyfills.js +44 -42
- package/tgsl/makeDereferenceable.d.ts +48 -0
- package/tgsl/makeDereferenceable.js +86 -0
- package/tgsl/makeResolvable.d.ts +22 -0
- package/tgsl/makeResolvable.js +33 -0
- package/tgsl/shaderGenerator.d.ts +77 -17
- package/tgsl/shaderGenerator.js +1 -0
- package/tgsl/shellless.d.ts +6 -9
- package/tgsl/shellless.js +73 -43
- package/tgsl/wgslGenerator.d.ts +66 -59
- package/tgsl/wgslGenerator.js +1344 -760
- package/types.d.ts +287 -222
- package/types.js +61 -44
- package/unwrapper.d.ts +31 -26
- package/unwrapper.js +1 -0
- package/wgslExtensions.d.ts +3 -5
- package/wgslExtensions.js +12 -16
- package/_virtual/rolldown_runtime.js +0 -13
- package/core/buffer/bufferShorthand.d.ts +0 -50
- package/core/buffer/bufferShorthand.js +0 -55
- package/core/pipeline/applyPipelineState.js +0 -37
- package/package.js +0 -5
- package/tgsl/shaderGenerator_members.d.ts +0 -33
- package/tgsl/shaderGenerator_members.js +0 -12
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const smoothstepScalar: (edge0: number, edge1: number, x: number) => number;
|
|
2
|
+
export declare const clamp: (value: number, low: number, high: number) => number;
|
|
3
|
+
export declare const divInteger: (lhs: number, rhs: number) => number;
|
|
4
|
+
export declare function bitcastU32toF32Impl(n: number): number;
|
|
5
|
+
export declare function bitcastU32toI32Impl(n: number): number;
|
|
6
|
+
export declare function bitcastF32toU32Impl(n: number): number;
|
package/data/numberOps.js
CHANGED
|
@@ -1,24 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
export const smoothstepScalar = (edge0, edge1, x) => {
|
|
2
|
+
if (edge0 === edge1) {
|
|
3
|
+
return 0; // WGSL spec says this is an indeterminate value
|
|
4
|
+
}
|
|
5
|
+
const t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
|
|
6
|
+
return t * t * (3 - 2 * t);
|
|
6
7
|
};
|
|
7
|
-
const clamp = (value, low, high) => Math.min(Math.max(low, value), high);
|
|
8
|
-
const divInteger = (lhs, rhs) => {
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
export const clamp = (value, low, high) => Math.min(Math.max(low, value), high);
|
|
9
|
+
export const divInteger = (lhs, rhs) => {
|
|
10
|
+
if (rhs === 0) {
|
|
11
|
+
return lhs;
|
|
12
|
+
}
|
|
13
|
+
return Math.trunc(lhs / rhs);
|
|
11
14
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
const buf32 = new ArrayBuffer(4);
|
|
16
|
+
const f32arr = new Float32Array(buf32);
|
|
17
|
+
const u32arr = new Uint32Array(buf32);
|
|
18
|
+
const i32arr = new Int32Array(buf32);
|
|
19
|
+
export function bitcastU32toF32Impl(n) {
|
|
20
|
+
u32arr[0] = n;
|
|
21
|
+
return f32arr[0];
|
|
16
22
|
}
|
|
17
|
-
function bitcastU32toI32Impl(n) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
23
|
+
export function bitcastU32toI32Impl(n) {
|
|
24
|
+
u32arr[0] = n;
|
|
25
|
+
return i32arr[0];
|
|
26
|
+
}
|
|
27
|
+
export function bitcastF32toU32Impl(n) {
|
|
28
|
+
f32arr[0] = n;
|
|
29
|
+
return u32arr[0];
|
|
21
30
|
}
|
|
22
|
-
|
|
23
|
-
//#endregion
|
|
24
|
-
export { bitcastU32toF32Impl, bitcastU32toI32Impl, clamp, divInteger, smoothstepScalar };
|
package/data/numeric.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import { Bool, F16, F32, I32, U16, U32 } from
|
|
2
|
-
|
|
3
|
-
//#region src/data/numeric.d.ts
|
|
4
|
-
|
|
1
|
+
import { type AbstractFloat, type AbstractInt, type Bool, type F16, type F32, type I32, type U16, type U32 } from './wgslTypes.ts';
|
|
5
2
|
/**
|
|
6
3
|
* A schema that represents a boolean value. (equivalent to `bool` in WGSL)
|
|
7
4
|
*
|
|
@@ -16,7 +13,7 @@ import { Bool, F16, F32, I32, U16, U32 } from "./wgslTypes.js";
|
|
|
16
13
|
* @example
|
|
17
14
|
* const value = bool(21.37); // true
|
|
18
15
|
*/
|
|
19
|
-
declare const bool: Bool;
|
|
16
|
+
export declare const bool: Bool;
|
|
20
17
|
/**
|
|
21
18
|
* A schema that represents an unsigned 32-bit integer value. (equivalent to `u32` in WGSL)
|
|
22
19
|
*
|
|
@@ -33,8 +30,8 @@ declare const bool: Bool;
|
|
|
33
30
|
* @example
|
|
34
31
|
* const value = u32(-3.1); // 0
|
|
35
32
|
*/
|
|
36
|
-
declare const u32: U32;
|
|
37
|
-
declare const u16: U16;
|
|
33
|
+
export declare const u32: U32;
|
|
34
|
+
export declare const u16: U16;
|
|
38
35
|
/**
|
|
39
36
|
* A schema that represents a signed 32-bit integer value. (equivalent to `i32` in WGSL)
|
|
40
37
|
*
|
|
@@ -49,7 +46,7 @@ declare const u16: U16;
|
|
|
49
46
|
* @example
|
|
50
47
|
* const value = i32(10000000000) // 1410065408
|
|
51
48
|
*/
|
|
52
|
-
declare const i32: I32;
|
|
49
|
+
export declare const i32: I32;
|
|
53
50
|
/**
|
|
54
51
|
* A schema that represents a 32-bit float value. (equivalent to `f32` in WGSL)
|
|
55
52
|
*
|
|
@@ -62,7 +59,19 @@ declare const i32: I32;
|
|
|
62
59
|
* @example
|
|
63
60
|
* const value = f32(true); // 1
|
|
64
61
|
*/
|
|
65
|
-
declare const f32: F32;
|
|
62
|
+
export declare const f32: F32;
|
|
63
|
+
/**
|
|
64
|
+
* Convert a JavaScript number (treated as float32) to **binary16** bit pattern.
|
|
65
|
+
* @param x 32-bit floating-point value
|
|
66
|
+
* @returns 16-bit half-precision encoding (stored in a JS number)
|
|
67
|
+
*/
|
|
68
|
+
export declare function toHalfBits(x: number): number;
|
|
69
|
+
/**
|
|
70
|
+
* Convert a **binary16** encoded bit pattern back to JavaScript number.
|
|
71
|
+
* @param h 16-bit half-precision bits
|
|
72
|
+
* @returns JavaScript number (64-bit float) with same numerical value
|
|
73
|
+
*/
|
|
74
|
+
export declare function fromHalfBits(h: number): number;
|
|
66
75
|
/**
|
|
67
76
|
* A schema that represents a 16-bit float value. (equivalent to `f16` in WGSL)
|
|
68
77
|
*
|
|
@@ -77,6 +86,6 @@ declare const f32: F32;
|
|
|
77
86
|
* @example
|
|
78
87
|
* const value = f16(21877.5); // 21872
|
|
79
88
|
*/
|
|
80
|
-
declare const f16: F16;
|
|
81
|
-
|
|
82
|
-
export
|
|
89
|
+
export declare const f16: F16;
|
|
90
|
+
export declare const abstractInt: AbstractInt;
|
|
91
|
+
export declare const abstractFloat: AbstractFloat;
|
package/data/numeric.js
CHANGED
|
@@ -1,230 +1,320 @@
|
|
|
1
1
|
import { $internal } from "../shared/symbols.js";
|
|
2
|
-
import {
|
|
2
|
+
import { isBool, } from "./wgslTypes.js";
|
|
3
3
|
import { callableSchema } from "../core/function/createCallableSchema.js";
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { FiniteMathAssumptionError, SignatureNotSupportedError, WgslTypeError } from "../errors.js";
|
|
5
|
+
import { isSnippetNumeric } from "./snippet.js";
|
|
6
|
+
import { UnknownData } from "./dataTypes.js";
|
|
6
7
|
const boolCast = callableSchema({
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
name: 'bool',
|
|
9
|
+
schema: () => bool,
|
|
10
|
+
argTypes: (arg) => (arg ? [arg] : []),
|
|
11
|
+
normalImpl(v = false) {
|
|
12
|
+
if (typeof v === 'boolean') {
|
|
13
|
+
return v;
|
|
14
|
+
}
|
|
15
|
+
if (typeof v === 'number') {
|
|
16
|
+
if (!Number.isFinite(v)) {
|
|
17
|
+
throw new FiniteMathAssumptionError(v, bool);
|
|
18
|
+
}
|
|
19
|
+
return Boolean(v);
|
|
20
|
+
}
|
|
21
|
+
throw new Error(`Invalid argument type for 'd.bool'. Got '${typeof v}', expected number or boolean`);
|
|
22
|
+
},
|
|
23
|
+
codegenImpl: (ctx, [v]) => {
|
|
24
|
+
// check if zero arguments were passed
|
|
25
|
+
if (v === undefined) {
|
|
26
|
+
return ctx.gen.typeInstantiation(bool, []);
|
|
27
|
+
}
|
|
28
|
+
if (isBool(v.dataType) || isSnippetNumeric(v)) {
|
|
29
|
+
return ctx.gen.typeInstantiation(bool, [v]);
|
|
30
|
+
}
|
|
31
|
+
if (v.dataType === UnknownData) {
|
|
32
|
+
throw new WgslTypeError("Unknown argument type for 'd.bool'.");
|
|
33
|
+
}
|
|
34
|
+
throw new SignatureNotSupportedError([v.dataType], [bool, u32, i32, f32, f16]);
|
|
35
|
+
},
|
|
16
36
|
});
|
|
17
37
|
/**
|
|
18
|
-
* A schema that represents a boolean value. (equivalent to `bool` in WGSL)
|
|
19
|
-
*
|
|
20
|
-
* Can also be called to cast a value to a bool in accordance with WGSL casting rules.
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* const value = bool(); // false
|
|
24
|
-
* @example
|
|
25
|
-
* const value = bool(0); // false
|
|
26
|
-
* @example
|
|
27
|
-
* const value = bool(-0); // false
|
|
28
|
-
* @example
|
|
29
|
-
* const value = bool(21.37); // true
|
|
30
|
-
*/
|
|
31
|
-
const bool = Object.assign(boolCast, {
|
|
32
|
-
|
|
33
|
-
|
|
38
|
+
* A schema that represents a boolean value. (equivalent to `bool` in WGSL)
|
|
39
|
+
*
|
|
40
|
+
* Can also be called to cast a value to a bool in accordance with WGSL casting rules.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* const value = bool(); // false
|
|
44
|
+
* @example
|
|
45
|
+
* const value = bool(0); // false
|
|
46
|
+
* @example
|
|
47
|
+
* const value = bool(-0); // false
|
|
48
|
+
* @example
|
|
49
|
+
* const value = bool(21.37); // true
|
|
50
|
+
*/
|
|
51
|
+
export const bool = Object.assign(boolCast, {
|
|
52
|
+
[$internal]: {},
|
|
53
|
+
type: 'bool',
|
|
34
54
|
});
|
|
35
55
|
const u32Cast = callableSchema({
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
56
|
+
name: 'u32',
|
|
57
|
+
schema: () => u32,
|
|
58
|
+
argTypes: (arg) => (arg ? [arg] : []),
|
|
59
|
+
normalImpl(v) {
|
|
60
|
+
if (v === undefined) {
|
|
61
|
+
return 0;
|
|
62
|
+
}
|
|
63
|
+
if (typeof v === 'boolean') {
|
|
64
|
+
return v ? 1 : 0;
|
|
65
|
+
}
|
|
66
|
+
if (!Number.isFinite(v)) {
|
|
67
|
+
throw new FiniteMathAssumptionError(v, u32);
|
|
68
|
+
}
|
|
69
|
+
if (!Number.isInteger(v)) {
|
|
70
|
+
const truncated = Math.trunc(v);
|
|
71
|
+
if (truncated < 0) {
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
if (truncated > 0xffffffff) {
|
|
75
|
+
return 0xffffffff;
|
|
76
|
+
}
|
|
77
|
+
return truncated;
|
|
78
|
+
}
|
|
79
|
+
// Integer input: treat as bit reinterpretation (i32 -> u32)
|
|
80
|
+
return (v & 0xffffffff) >>> 0;
|
|
81
|
+
},
|
|
82
|
+
codegenImpl: (ctx, [v]) => ctx.gen.typeInstantiation(u32, v ? [v] : []),
|
|
52
83
|
});
|
|
53
84
|
/**
|
|
54
|
-
* A schema that represents an unsigned 32-bit integer value. (equivalent to `u32` in WGSL)
|
|
55
|
-
*
|
|
56
|
-
* Can also be called to cast a value to an u32 in accordance with WGSL casting rules.
|
|
57
|
-
*
|
|
58
|
-
* @example
|
|
59
|
-
* const value = u32(); // 0
|
|
60
|
-
* @example
|
|
61
|
-
* const value = u32(7); // 7
|
|
62
|
-
* @example
|
|
63
|
-
* const value = u32(3.14); // 3
|
|
64
|
-
* @example
|
|
65
|
-
* const value = u32(-1); // 4294967295
|
|
66
|
-
* @example
|
|
67
|
-
* const value = u32(-3.1); // 0
|
|
68
|
-
*/
|
|
69
|
-
const u32 = Object.assign(u32Cast, {
|
|
70
|
-
|
|
71
|
-
|
|
85
|
+
* A schema that represents an unsigned 32-bit integer value. (equivalent to `u32` in WGSL)
|
|
86
|
+
*
|
|
87
|
+
* Can also be called to cast a value to an u32 in accordance with WGSL casting rules.
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* const value = u32(); // 0
|
|
91
|
+
* @example
|
|
92
|
+
* const value = u32(7); // 7
|
|
93
|
+
* @example
|
|
94
|
+
* const value = u32(3.14); // 3
|
|
95
|
+
* @example
|
|
96
|
+
* const value = u32(-1); // 4294967295
|
|
97
|
+
* @example
|
|
98
|
+
* const value = u32(-3.1); // 0
|
|
99
|
+
*/
|
|
100
|
+
export const u32 = Object.assign(u32Cast, {
|
|
101
|
+
[$internal]: {},
|
|
102
|
+
type: 'u32',
|
|
72
103
|
});
|
|
73
104
|
const i32Cast = callableSchema({
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
105
|
+
name: 'i32',
|
|
106
|
+
schema: () => i32,
|
|
107
|
+
argTypes: (arg) => (arg ? [arg] : []),
|
|
108
|
+
normalImpl(v) {
|
|
109
|
+
if (v === undefined) {
|
|
110
|
+
return 0;
|
|
111
|
+
}
|
|
112
|
+
if (typeof v === 'boolean') {
|
|
113
|
+
return v ? 1 : 0;
|
|
114
|
+
}
|
|
115
|
+
if (!Number.isFinite(v)) {
|
|
116
|
+
throw new FiniteMathAssumptionError(v, i32);
|
|
117
|
+
}
|
|
118
|
+
return v | 0;
|
|
119
|
+
},
|
|
120
|
+
codegenImpl: (ctx, [v]) => ctx.gen.typeInstantiation(i32, v ? [v] : []),
|
|
84
121
|
});
|
|
85
|
-
const u16 = {
|
|
86
|
-
|
|
87
|
-
|
|
122
|
+
export const u16 = {
|
|
123
|
+
[$internal]: {},
|
|
124
|
+
type: 'u16',
|
|
88
125
|
};
|
|
89
126
|
/**
|
|
90
|
-
* A schema that represents a signed 32-bit integer value. (equivalent to `i32` in WGSL)
|
|
91
|
-
*
|
|
92
|
-
* Can also be called to cast a value to an i32 in accordance with WGSL casting rules.
|
|
93
|
-
*
|
|
94
|
-
* @example
|
|
95
|
-
* const value = i32(); // 0
|
|
96
|
-
* @example
|
|
97
|
-
* const value = i32(3.14); // 3
|
|
98
|
-
* @example
|
|
99
|
-
* const value = i32(-3.9); // -3
|
|
100
|
-
* @example
|
|
101
|
-
* const value = i32(10000000000) // 1410065408
|
|
102
|
-
*/
|
|
103
|
-
const i32 = Object.assign(i32Cast, {
|
|
104
|
-
|
|
105
|
-
|
|
127
|
+
* A schema that represents a signed 32-bit integer value. (equivalent to `i32` in WGSL)
|
|
128
|
+
*
|
|
129
|
+
* Can also be called to cast a value to an i32 in accordance with WGSL casting rules.
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* const value = i32(); // 0
|
|
133
|
+
* @example
|
|
134
|
+
* const value = i32(3.14); // 3
|
|
135
|
+
* @example
|
|
136
|
+
* const value = i32(-3.9); // -3
|
|
137
|
+
* @example
|
|
138
|
+
* const value = i32(10000000000) // 1410065408
|
|
139
|
+
*/
|
|
140
|
+
export const i32 = Object.assign(i32Cast, {
|
|
141
|
+
[$internal]: {},
|
|
142
|
+
type: 'i32',
|
|
106
143
|
});
|
|
107
144
|
const f32Cast = callableSchema({
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
145
|
+
name: 'f32',
|
|
146
|
+
schema: () => f32,
|
|
147
|
+
argTypes: (arg) => (arg ? [arg] : []),
|
|
148
|
+
normalImpl(v) {
|
|
149
|
+
if (v === undefined) {
|
|
150
|
+
return 0;
|
|
151
|
+
}
|
|
152
|
+
if (typeof v === 'boolean') {
|
|
153
|
+
return v ? 1 : 0;
|
|
154
|
+
}
|
|
155
|
+
if (!Number.isFinite(v)) {
|
|
156
|
+
throw new FiniteMathAssumptionError(v, f32);
|
|
157
|
+
}
|
|
158
|
+
return Math.fround(v);
|
|
159
|
+
},
|
|
160
|
+
codegenImpl: (ctx, [v]) => ctx.gen.typeInstantiation(f32, v ? [v] : []),
|
|
118
161
|
});
|
|
119
162
|
/**
|
|
120
|
-
* A schema that represents a 32-bit float value. (equivalent to `f32` in WGSL)
|
|
121
|
-
*
|
|
122
|
-
* Can also be called to cast a value to an f32.
|
|
123
|
-
*
|
|
124
|
-
* @example
|
|
125
|
-
* const value = f32(); // 0
|
|
126
|
-
* @example
|
|
127
|
-
* const value = f32(1.23); // 1.23
|
|
128
|
-
* @example
|
|
129
|
-
* const value = f32(true); // 1
|
|
130
|
-
*/
|
|
131
|
-
const f32 = Object.assign(f32Cast, {
|
|
132
|
-
|
|
133
|
-
|
|
163
|
+
* A schema that represents a 32-bit float value. (equivalent to `f32` in WGSL)
|
|
164
|
+
*
|
|
165
|
+
* Can also be called to cast a value to an f32.
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* const value = f32(); // 0
|
|
169
|
+
* @example
|
|
170
|
+
* const value = f32(1.23); // 1.23
|
|
171
|
+
* @example
|
|
172
|
+
* const value = f32(true); // 1
|
|
173
|
+
*/
|
|
174
|
+
export const f32 = Object.assign(f32Cast, {
|
|
175
|
+
[$internal]: {},
|
|
176
|
+
type: 'f32',
|
|
134
177
|
});
|
|
135
|
-
|
|
178
|
+
// helpers for floating point conversion
|
|
179
|
+
const buf32 = new ArrayBuffer(4);
|
|
136
180
|
const f32arr = new Float32Array(buf32);
|
|
137
181
|
const u32arr = new Uint32Array(buf32);
|
|
138
182
|
/**
|
|
139
|
-
* Convert a JavaScript number (treated as float32) to **binary16** bit pattern.
|
|
140
|
-
* @param x 32-bit floating-point value
|
|
141
|
-
* @returns 16-bit half-precision encoding (stored in a JS number)
|
|
142
|
-
*/
|
|
143
|
-
function toHalfBits(x) {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
183
|
+
* Convert a JavaScript number (treated as float32) to **binary16** bit pattern.
|
|
184
|
+
* @param x 32-bit floating-point value
|
|
185
|
+
* @returns 16-bit half-precision encoding (stored in a JS number)
|
|
186
|
+
*/
|
|
187
|
+
export function toHalfBits(x) {
|
|
188
|
+
f32arr[0] = x; // Write value; shared buffer now contains raw bits.
|
|
189
|
+
const bits = u32arr[0]; // Read those bits as unsigned int.
|
|
190
|
+
// 1. Extract sign, exponent, and mantissa from the 32‑bit layout.
|
|
191
|
+
const sign = (bits >>> 31) & 0x1; // Bit 31 is the sign.
|
|
192
|
+
let exp = (bits >>> 23) & 0xff; // Bits 30‑23 form the biased exponent.
|
|
193
|
+
const mant = bits & 0x7fffff; // Bits 22‑0 are the significand.
|
|
194
|
+
// 2. Handle special values (NaN, ±∞) before re‑biasing.
|
|
195
|
+
if (exp === 0xff) {
|
|
196
|
+
// Preserve the quiet‑NaN bit if mant≠0; otherwise this is ±∞.
|
|
197
|
+
return (sign << 15) | 0x7c00 | (mant ? 0x0200 : 0);
|
|
198
|
+
}
|
|
199
|
+
// 3. Re‑bias the exponent from 127 → 15 (binary32 → binary16).
|
|
200
|
+
exp = exp - 127 + 15;
|
|
201
|
+
// 4. Underflow: exponent ≤ 0 yields sub‑normals or signed zero.
|
|
202
|
+
if (exp <= 0) {
|
|
203
|
+
// Below the smallest representable subnormal magnitude, round to ±0.
|
|
204
|
+
if (exp < -10) {
|
|
205
|
+
return sign << 15;
|
|
206
|
+
}
|
|
207
|
+
// Produce a sub‑normal: prepend the hidden 1, then round to nearest,
|
|
208
|
+
// ties to even. `shift` is the number of low bits dropped from the
|
|
209
|
+
// 24‑bit significand; the bit just below it is the rounding bit and
|
|
210
|
+
// everything under that forms the sticky bit.
|
|
211
|
+
const full = mant | 0x800000; // 24-bit significand incl. the implicit 1.
|
|
212
|
+
const shift = 14 - exp; // in [14, 24]
|
|
213
|
+
const roundBit = (full >>> (shift - 1)) & 1;
|
|
214
|
+
const sticky = full & ((1 << (shift - 1)) - 1) ? 1 : 0;
|
|
215
|
+
let half = full >>> shift;
|
|
216
|
+
if (roundBit & (sticky | (half & 1))) {
|
|
217
|
+
half += 1; // A carry here promotes to the smallest normal — that's fine,
|
|
218
|
+
// the bit pattern (exp field 1, mant 0) is exactly 2^-14.
|
|
219
|
+
}
|
|
220
|
+
return (sign << 15) | half;
|
|
221
|
+
}
|
|
222
|
+
// 5. Overflow: if the biased exponent is 31 (0x1f) or higher, the number
|
|
223
|
+
// cannot be represented in half precision, so we return ±∞.
|
|
224
|
+
if (exp >= 0x1f) {
|
|
225
|
+
return (sign << 15) | 0x7c00; // ±∞
|
|
226
|
+
}
|
|
227
|
+
// 6. Normalised number: round mantissa to nearest, ties to even, then pack.
|
|
228
|
+
const roundBit = (mant >>> 12) & 1;
|
|
229
|
+
const sticky = mant & 0xfff ? 1 : 0;
|
|
230
|
+
let half = mant >>> 13;
|
|
231
|
+
if (roundBit & (sticky | (half & 1))) {
|
|
232
|
+
half += 1;
|
|
233
|
+
}
|
|
234
|
+
if (half === 0x400) {
|
|
235
|
+
// The carry propagated out of the 10‑bit mantissa; it overflowed.
|
|
236
|
+
half = 0; // Rounded up to 1.0 × 2^(exp+1).
|
|
237
|
+
++exp; // Increment exponent (may overflow to ±∞).
|
|
238
|
+
if (exp >= 0x1f) {
|
|
239
|
+
return (sign << 15) | 0x7c00;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return (sign << 15) | (exp << 10) | half;
|
|
165
243
|
}
|
|
166
244
|
/**
|
|
167
|
-
* Convert a **binary16** encoded bit pattern back to JavaScript number.
|
|
168
|
-
* @param h 16-bit half-precision bits
|
|
169
|
-
* @returns JavaScript number (64-bit float) with same numerical value
|
|
170
|
-
*/
|
|
171
|
-
function fromHalfBits(h) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
245
|
+
* Convert a **binary16** encoded bit pattern back to JavaScript number.
|
|
246
|
+
* @param h 16-bit half-precision bits
|
|
247
|
+
* @returns JavaScript number (64-bit float) with same numerical value
|
|
248
|
+
*/
|
|
249
|
+
export function fromHalfBits(h) {
|
|
250
|
+
const sign = h & 0x8000 ? -1 : 1; // Sign multiplier (preserves −0).
|
|
251
|
+
const exp = (h >> 10) & 0x1f; // 5‑bit exponent.
|
|
252
|
+
const mant = h & 0x03ff; // 10‑bit significand.
|
|
253
|
+
// 1. Zero and sub‑normals.
|
|
254
|
+
if (exp === 0) {
|
|
255
|
+
// oxlint-disable-next-line oxc/erasing-op -- negative zero exists
|
|
256
|
+
return mant ? sign * mant * 2 ** -24 : sign * 0;
|
|
257
|
+
}
|
|
258
|
+
// 2. Special cases (exp == 31).
|
|
259
|
+
if (exp === 0x1f) {
|
|
260
|
+
return mant ? Number.NaN : sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
|
|
261
|
+
}
|
|
262
|
+
// 3. Normalised numbers.
|
|
263
|
+
return sign * (1 + mant / 1024) * 2 ** (exp - 15);
|
|
178
264
|
}
|
|
179
265
|
function roundToF16(x) {
|
|
180
|
-
|
|
266
|
+
return fromHalfBits(toHalfBits(x));
|
|
181
267
|
}
|
|
182
268
|
const f16Cast = callableSchema({
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
269
|
+
name: 'f16',
|
|
270
|
+
schema: () => f16,
|
|
271
|
+
argTypes: (arg) => (arg ? [arg] : []),
|
|
272
|
+
normalImpl(v) {
|
|
273
|
+
if (v === undefined) {
|
|
274
|
+
return 0;
|
|
275
|
+
}
|
|
276
|
+
if (typeof v === 'boolean') {
|
|
277
|
+
return v ? 1 : 0;
|
|
278
|
+
}
|
|
279
|
+
if (!Number.isFinite(v)) {
|
|
280
|
+
throw new FiniteMathAssumptionError(v, f16);
|
|
281
|
+
}
|
|
282
|
+
return roundToF16(v);
|
|
283
|
+
},
|
|
284
|
+
// TODO: make usage of f16() in GPU mode check for feature availability and throw if not available
|
|
285
|
+
codegenImpl: (ctx, [v]) => ctx.gen.typeInstantiation(f16, v ? [v] : []),
|
|
193
286
|
});
|
|
194
287
|
/**
|
|
195
|
-
* A schema that represents a 16-bit float value. (equivalent to `f16` in WGSL)
|
|
196
|
-
*
|
|
197
|
-
* Can also be called to cast a value to an f16.
|
|
198
|
-
*
|
|
199
|
-
* @example
|
|
200
|
-
* const value = f16(); // 0
|
|
201
|
-
* @example
|
|
202
|
-
* const value = f32(1.23); // 1.23
|
|
203
|
-
* @example
|
|
204
|
-
* const value = f16(true); // 1
|
|
205
|
-
* @example
|
|
206
|
-
* const value = f16(21877.5); // 21872
|
|
207
|
-
*/
|
|
208
|
-
const f16 = Object.assign(f16Cast, {
|
|
209
|
-
|
|
210
|
-
|
|
288
|
+
* A schema that represents a 16-bit float value. (equivalent to `f16` in WGSL)
|
|
289
|
+
*
|
|
290
|
+
* Can also be called to cast a value to an f16.
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* const value = f16(); // 0
|
|
294
|
+
* @example
|
|
295
|
+
* const value = f32(1.23); // 1.23
|
|
296
|
+
* @example
|
|
297
|
+
* const value = f16(true); // 1
|
|
298
|
+
* @example
|
|
299
|
+
* const value = f16(21877.5); // 21872
|
|
300
|
+
*/
|
|
301
|
+
export const f16 = Object.assign(f16Cast, {
|
|
302
|
+
[$internal]: {},
|
|
303
|
+
type: 'f16',
|
|
211
304
|
});
|
|
212
|
-
const abstractInt = {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
305
|
+
export const abstractInt = {
|
|
306
|
+
[$internal]: {},
|
|
307
|
+
type: 'abstractInt',
|
|
308
|
+
toString() {
|
|
309
|
+
return 'abstractInt';
|
|
310
|
+
},
|
|
311
|
+
concretized: i32,
|
|
219
312
|
};
|
|
220
|
-
const abstractFloat = {
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
313
|
+
export const abstractFloat = {
|
|
314
|
+
[$internal]: {},
|
|
315
|
+
type: 'abstractFloat',
|
|
316
|
+
toString() {
|
|
317
|
+
return 'abstractFloat';
|
|
318
|
+
},
|
|
319
|
+
concretized: f32,
|
|
227
320
|
};
|
|
228
|
-
|
|
229
|
-
//#endregion
|
|
230
|
-
export { abstractFloat, abstractInt, bool, f16, f32, i32, u16, u32 };
|