diff --git a/package-lock.json b/package-lock.json index 869ab4bad3..deeab73a07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "100.0.0-nightly.20210413", + "binaryen": "101.0.0-nightly.20210527", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" @@ -708,9 +708,9 @@ } }, "node_modules/binaryen": { - "version": "100.0.0-nightly.20210413", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-100.0.0-nightly.20210413.tgz", - "integrity": "sha512-EeGLIxQmJS0xnYl+SH34mNBqVMoixKd9nsE7S7z+CtS9A4eoWn3Qjav+XElgunUgXIHAI5yLnYT2TUGnLX2f1w==", + "version": "101.0.0-nightly.20210527", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-101.0.0-nightly.20210527.tgz", + "integrity": "sha512-dbKentJwA6H0LfI+pRuzNNzAooJwYFNrg1L8rRw8j6rlfkU815ytNLO+uDzGNcltYehUa5ERZFJHPIdqX12n0w==", "bin": { "wasm-opt": "bin/wasm-opt" } @@ -3558,9 +3558,9 @@ "dev": true }, "binaryen": { - "version": "100.0.0-nightly.20210413", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-100.0.0-nightly.20210413.tgz", - "integrity": "sha512-EeGLIxQmJS0xnYl+SH34mNBqVMoixKd9nsE7S7z+CtS9A4eoWn3Qjav+XElgunUgXIHAI5yLnYT2TUGnLX2f1w==" + "version": "101.0.0-nightly.20210527", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-101.0.0-nightly.20210527.tgz", + "integrity": "sha512-dbKentJwA6H0LfI+pRuzNNzAooJwYFNrg1L8rRw8j6rlfkU815ytNLO+uDzGNcltYehUa5ERZFJHPIdqX12n0w==" }, "brace-expansion": { "version": "1.1.11", diff --git a/package.json b/package.json index b22f298e59..da8fcc5781 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "100.0.0-nightly.20210413", + "binaryen": "101.0.0-nightly.20210527", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" diff --git a/src/builtins.ts b/src/builtins.ts index e55a462d1f..b47284e9a5 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -58,6 +58,8 @@ import { SIMDReplaceOp, SIMDShiftOp, SIMDTernaryOp, + SIMDLoadOp, + SIMDLoadStoreLaneOp, RefIsOp, NativeType, ExpressionRef, @@ -69,7 +71,6 @@ import { getConstValueI32, getConstValueF32, getConstValueF64, - SIMDLoadOp, getLocalGetIndex, createType, ExpressionRunnerFlags @@ -353,6 +354,9 @@ export namespace BuiltinNames { export const v128_swizzle = "~lib/builtins/v128.swizzle"; export const v128_load_splat = "~lib/builtins/v128.load_splat"; export const v128_load_ext = "~lib/builtins/v128.load_ext"; + export const v128_load_zero = "~lib/builtins/v128.load_zero"; + export const v128_load_lane = "~lib/builtins/v128.load_lane"; + export const v128_store_lane = "~lib/builtins/v128.store_lane"; export const v128_load = "~lib/builtins/v128.load"; export const v128_load8x8_s = "~lib/builtins/v128.load8x8_s"; export const v128_load8x8_u = "~lib/builtins/v128.load8x8_u"; @@ -364,6 +368,16 @@ export namespace BuiltinNames { export const v128_load16_splat = "~lib/builtins/v128.load16_splat"; export const v128_load32_splat = "~lib/builtins/v128.load32_splat"; export const v128_load64_splat = "~lib/builtins/v128.load64_splat"; + export const v128_load32_zero = "~lib/builtins/v128.load32_zero"; + export const v128_load64_zero = "~lib/builtins/v128.load64_zero"; + export const v128_load8_lane = "~lib/builtins/v128.load8_lane"; + export const v128_load16_lane = "~lib/builtins/v128.load16_lane"; + export const v128_load32_lane = "~lib/builtins/v128.load32_lane"; + export const v128_load64_lane = "~lib/builtins/v128.load64_lane"; + export const v128_store8_lane = "~lib/builtins/v128.store8_lane"; + export const v128_store16_lane = "~lib/builtins/v128.store16_lane"; + export const v128_store32_lane = "~lib/builtins/v128.store32_lane"; + export const v128_store64_lane = "~lib/builtins/v128.store64_lane"; export const v128_store = "~lib/builtins/v128.store"; export const v128_add = "~lib/builtins/v128.add"; export const v128_sub = "~lib/builtins/v128.sub"; @@ -403,10 +417,18 @@ export namespace BuiltinNames { export const v128_gt = "~lib/builtins/v128.gt"; export const v128_ge = "~lib/builtins/v128.ge"; export const v128_convert = "~lib/builtins/v128.convert"; + export const v128_convert_low = "~lib/builtins/v128.convert_low"; export const v128_trunc_sat = "~lib/builtins/v128.trunc_sat"; + export const v128_trunc_sat_zero = "~lib/builtins/v128.trunc_sat_zero"; export const v128_narrow = "~lib/builtins/v128.narrow"; export const v128_extend_low = "~lib/builtins/v128.extend_low"; export const v128_extend_high = "~lib/builtins/v128.extend_high"; + export const v128_extadd_pairwise = "~lib/builtins/v128.extadd_pairwise"; + export const v128_demote_zero = "~lib/builtins/v128.demote_zero"; + export const v128_promote_low = "~lib/builtins/v128.promote_low"; + export const v128_q15mulr_sat = "~lib/builtins/v128.q15mulr_sat"; + export const v128_extmul_low = "~lib/builtins/v128.extmul_low"; + export const v128_extmul_high = "~lib/builtins/v128.extmul_high"; export const i8x16 = "~lib/builtins/i8x16"; export const i16x8 = "~lib/builtins/i16x8"; @@ -493,6 +515,13 @@ export namespace BuiltinNames { export const i16x8_extend_low_i8x16_u = "~lib/builtins/i16x8.extend_low_i8x16_u"; export const i16x8_extend_high_i8x16_s = "~lib/builtins/i16x8.extend_high_i8x16_s"; export const i16x8_extend_high_i8x16_u = "~lib/builtins/i16x8.extend_high_i8x16_u"; + export const i16x8_extadd_pairwise_i8x16_s = "~lib/builtins/i16x8.extadd_pairwise_i8x16_s"; + export const i16x8_extadd_pairwise_i8x16_u = "~lib/builtins/i16x8.extadd_pairwise_i8x16_u"; + export const i16x8_q15mulr_sat_s = "~lib/builtins/i16x8.q15mulr_sat_s"; + export const i16x8_extmul_low_i8x16_s = "~lib/builtins/i16x8.extmul_low_i8x16_s"; + export const i16x8_extmul_low_i8x16_u = "~lib/builtins/i16x8.extmul_low_i8x16_u"; + export const i16x8_extmul_high_i8x16_s = "~lib/builtins/i16x8.extmul_high_i8x16_s"; + export const i16x8_extmul_high_i8x16_u = "~lib/builtins/i16x8.extmul_high_i8x16_u"; export const i32x4_splat = "~lib/builtins/i32x4.splat"; export const i32x4_extract_lane = "~lib/builtins/i32x4.extract_lane"; @@ -524,10 +553,18 @@ export namespace BuiltinNames { export const i32x4_ge_u = "~lib/builtins/i32x4.ge_u"; export const i32x4_trunc_sat_f32x4_s = "~lib/builtins/i32x4.trunc_sat_f32x4_s"; export const i32x4_trunc_sat_f32x4_u = "~lib/builtins/i32x4.trunc_sat_f32x4_u"; + export const i32x4_trunc_sat_f64x2_s_zero = "~lib/builtins/i32x4.trunc_sat_f64x2_s_zero"; + export const i32x4_trunc_sat_f64x2_u_zero = "~lib/builtins/i32x4.trunc_sat_f64x2_u_zero"; export const i32x4_extend_low_i16x8_s = "~lib/builtins/i32x4.extend_low_i16x8_s"; export const i32x4_extend_low_i16x8_u = "~lib/builtins/i32x4.extend_low_i16x8_u"; export const i32x4_extend_high_i16x8_s = "~lib/builtins/i32x4.extend_high_i16x8_s"; export const i32x4_extend_high_i16x8_u = "~lib/builtins/i32x4.extend_high_i16x8_u"; + export const i32x4_extadd_pairwise_i16x8_s = "~lib/builtins/i32x4.extadd_pairwise_i16x8_s"; + export const i32x4_extadd_pairwise_i16x8_u = "~lib/builtins/i32x4.extadd_pairwise_i16x8_u"; + export const i32x4_extmul_low_i16x8_s = "~lib/builtins/i32x4.extmul_low_i16x8_s"; + export const i32x4_extmul_low_i16x8_u = "~lib/builtins/i32x4.extmul_low_i16x8_u"; + export const i32x4_extmul_high_i16x8_s = "~lib/builtins/i32x4.extmul_high_i16x8_s"; + export const i32x4_extmul_high_i16x8_u = "~lib/builtins/i32x4.extmul_high_i16x8_u"; export const i64x2_splat = "~lib/builtins/i64x2.splat"; export const i64x2_extract_lane = "~lib/builtins/i64x2.extract_lane"; @@ -556,6 +593,10 @@ export namespace BuiltinNames { export const i64x2_extend_low_i32x4_u = "~lib/builtins/i64x2.extend_low_i32x4_u"; export const i64x2_extend_high_i32x4_s = "~lib/builtins/i64x2.extend_high_i32x4_s"; export const i64x2_extend_high_i32x4_u = "~lib/builtins/i64x2.extend_high_i32x4_u"; + export const i64x2_extmul_low_i32x4_s = "~lib/builtins/i64x2.extmul_low_i32x4_s"; + export const i64x2_extmul_low_i32x4_u = "~lib/builtins/i64x2.extmul_low_i32x4_u"; + export const i64x2_extmul_high_i32x4_s = "~lib/builtins/i64x2.extmul_high_i32x4_s"; + export const i64x2_extmul_high_i32x4_u = "~lib/builtins/i64x2.extmul_high_i32x4_u"; export const f32x4_splat = "~lib/builtins/f32x4.splat"; export const f32x4_extract_lane = "~lib/builtins/f32x4.extract_lane"; @@ -583,6 +624,7 @@ export namespace BuiltinNames { export const f32x4_ge = "~lib/builtins/f32x4.ge"; export const f32x4_convert_i32x4_s = "~lib/builtins/f32x4.convert_i32x4_s"; export const f32x4_convert_i32x4_u = "~lib/builtins/f32x4.convert_i32x4_u"; + export const f32x4_demote_f64x2_zero = "~lib/builtins/f32x4.demote_f64x2_zero"; export const f64x2_splat = "~lib/builtins/f64x2.splat"; export const f64x2_extract_lane = "~lib/builtins/f64x2.extract_lane"; @@ -608,6 +650,9 @@ export namespace BuiltinNames { export const f64x2_le = "~lib/builtins/f64x2.le"; export const f64x2_gt = "~lib/builtins/f64x2.gt"; export const f64x2_ge = "~lib/builtins/f64x2.ge"; + export const f64x2_convert_low_i32x4_s = "~lib/builtins/f64x2.convert_low_i32x4_s"; + export const f64x2_convert_low_i32x4_u = "~lib/builtins/f64x2.convert_low_i32x4_u"; + export const f64x2_promote_low_f32x4 = "~lib/builtins/f64x2.promote_low_f32x4"; export const i31_new = "~lib/builtins/i31.new"; export const i31_get = "~lib/builtins/i31.get"; @@ -2093,7 +2138,7 @@ function builtin_load(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.load, builtin_load); -// store(offset: usize, value: T*, offset?: usize, align?: usize) -> void +// store(ptr: usize, value: T*, immOffset?: usize, immAlign?: usize) -> void function builtin_store(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; @@ -4081,6 +4126,201 @@ function builtin_v128_load_ext(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_load_ext, builtin_v128_load_ext); +// v128.load_zero(ptr: usize, immOffset?: usize, immAlign?: usize) -> v128 +function builtin_v128_load_zero(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkFeatureEnabled(ctx, Feature.SIMD) | + checkTypeRequired(ctx, true) | + checkArgsOptional(ctx, 1, 3) + ) return module.unreachable(); + var operands = ctx.operands; + var typeArguments = ctx.typeArguments!; + var type = typeArguments[0]; + var arg0 = compiler.compileExpression(operands[0], compiler.options.usizeType, Constraints.CONV_IMPLICIT); + var numOperands = operands.length; + var immOffset = 0; + var immAlign = type.byteSize; + if (numOperands >= 2) { + immOffset = evaluateImmediateOffset(operands[1], compiler); // reports + if (immOffset < 0) { + compiler.currentType = Type.v128; + return module.unreachable(); + } + if (numOperands == 3) { + immAlign = evaluateImmediateAlign(operands[2], immAlign, compiler); // reports + if (immAlign < 0) { + compiler.currentType = Type.v128; + return module.unreachable(); + } + } + } + compiler.currentType = Type.v128; + if (type.isValue) { + switch (type.kind) { + case TypeKind.I32: + case TypeKind.U32: return module.simd_load(SIMDLoadOp.Load32Zero, arg0, immOffset, immAlign); + case TypeKind.I64: + case TypeKind.U64: return module.simd_load(SIMDLoadOp.Load64Zero, arg0, immOffset, immAlign); + case TypeKind.ISIZE: + case TypeKind.USIZE: return module.simd_load(compiler.options.isWasm64 ? SIMDLoadOp.Load64Zero : SIMDLoadOp.Load32Zero, arg0, immOffset, immAlign); + } + } + compiler.error( + DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, + ctx.reportNode.typeArgumentsRange, "v128.load_zero", type.toString() + ); + return module.unreachable(); +} +builtins.set(BuiltinNames.v128_load_zero, builtin_v128_load_zero); + +// v128.load_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize) -> v128 +function builtin_v128_load_lane(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkFeatureEnabled(ctx, Feature.SIMD) | + checkTypeRequired(ctx, true) | + checkArgsOptional(ctx, 3, 5) + ) return module.unreachable(); + var operands = ctx.operands; + var typeArguments = ctx.typeArguments!; + var type = typeArguments[0]; + var arg0 = compiler.compileExpression(operands[0], compiler.options.usizeType, Constraints.CONV_IMPLICIT); + var arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); + var arg2 = compiler.compileExpression(operands[2], Type.u8, Constraints.CONV_IMPLICIT); + var idx = 0; + var precomp = module.runExpression(arg2, ExpressionRunnerFlags.PreserveSideeffects); + if (precomp) { + idx = getConstValueI32(precomp); + } else { + compiler.error( + DiagnosticCode.Expression_must_be_a_compile_time_constant, + operands[2].range + ); + } + var numOperands = operands.length; + var immOffset = 0; + var immAlign = type.byteSize; + if (numOperands >= 4) { + immOffset = evaluateImmediateOffset(operands[3], compiler); // reports + if (immOffset < 0) { + compiler.currentType = Type.v128; + return module.unreachable(); + } + if (numOperands == 5) { + immAlign = evaluateImmediateAlign(operands[4], immAlign, compiler); // reports + if (immAlign < 0) { + compiler.currentType = Type.v128; + return module.unreachable(); + } + } + } + compiler.currentType = Type.v128; + if (type.isValue) { + let maxIdx = (16 / assert(type.byteSize)) - 1; + if (idx < 0 || idx > maxIdx) { + compiler.error( + DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive, + operands[1].range, "Lane index", "0", maxIdx.toString() + ); + idx = 0; + } + switch (type.kind) { + case TypeKind.I8: + case TypeKind.U8: return module.simd_loadstorelane(SIMDLoadStoreLaneOp.Load8Lane, arg0, immOffset, immAlign, idx, arg1); + case TypeKind.I16: + case TypeKind.U16: return module.simd_loadstorelane(SIMDLoadStoreLaneOp.Load16Lane, arg0, immOffset, immAlign, idx, arg1); + case TypeKind.I32: + case TypeKind.U32: return module.simd_loadstorelane(SIMDLoadStoreLaneOp.Load32Lane, arg0, immOffset, immAlign, idx, arg1); + case TypeKind.I64: + case TypeKind.U64: return module.simd_loadstorelane(SIMDLoadStoreLaneOp.Load64Lane, arg0, immOffset, immAlign, idx, arg1); + case TypeKind.ISIZE: + case TypeKind.USIZE: return module.simd_loadstorelane(compiler.options.isWasm64 ? SIMDLoadStoreLaneOp.Load64Lane : SIMDLoadStoreLaneOp.Load32Lane, arg0, immOffset, immAlign, idx, arg1); + } + } + compiler.error( + DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, + ctx.reportNode.typeArgumentsRange, "v128.load_lane", type.toString() + ); + return module.unreachable(); +} +builtins.set(BuiltinNames.v128_load_lane, builtin_v128_load_lane); + +// v128.store_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize) -> v128 +function builtin_v128_store_lane(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkFeatureEnabled(ctx, Feature.SIMD) | + checkTypeRequired(ctx, true) | + checkArgsOptional(ctx, 3, 5) + ) return module.unreachable(); + var operands = ctx.operands; + var typeArguments = ctx.typeArguments!; + var type = typeArguments[0]; + var arg0 = compiler.compileExpression(operands[0], compiler.options.usizeType, Constraints.CONV_IMPLICIT); + var arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); + var arg2 = compiler.compileExpression(operands[2], Type.u8, Constraints.CONV_IMPLICIT); + var idx = 0; + var precomp = module.runExpression(arg2, ExpressionRunnerFlags.PreserveSideeffects); + if (precomp) { + idx = getConstValueI32(precomp); + } else { + compiler.error( + DiagnosticCode.Expression_must_be_a_compile_time_constant, + operands[2].range + ); + } + var numOperands = operands.length; + var immOffset = 0; + var immAlign = type.byteSize; + if (numOperands >= 4) { + immOffset = evaluateImmediateOffset(operands[3], compiler); // reports + if (immOffset < 0) { + compiler.currentType = Type.v128; + return module.unreachable(); + } + if (numOperands == 5) { + immAlign = evaluateImmediateAlign(operands[4], immAlign, compiler); // reports + if (immAlign < 0) { + compiler.currentType = Type.v128; + return module.unreachable(); + } + } + } + compiler.currentType = Type.v128; + if (type.isValue) { + let maxIdx = (16 / assert(type.byteSize)) - 1; + if (idx < 0 || idx > maxIdx) { + compiler.error( + DiagnosticCode._0_must_be_a_value_between_1_and_2_inclusive, + operands[1].range, "Lane index", "0", maxIdx.toString() + ); + idx = 0; + } + switch (type.kind) { + case TypeKind.I8: + case TypeKind.U8: return module.simd_loadstorelane(SIMDLoadStoreLaneOp.Store8Lane, arg0, immOffset, immAlign, idx, arg1); + case TypeKind.I16: + case TypeKind.U16: return module.simd_loadstorelane(SIMDLoadStoreLaneOp.Store16Lane, arg0, immOffset, immAlign, idx, arg1); + case TypeKind.I32: + case TypeKind.U32: return module.simd_loadstorelane(SIMDLoadStoreLaneOp.Store32Lane, arg0, immOffset, immAlign, idx, arg1); + case TypeKind.I64: + case TypeKind.U64: return module.simd_loadstorelane(SIMDLoadStoreLaneOp.Store64Lane, arg0, immOffset, immAlign, idx, arg1); + case TypeKind.ISIZE: + case TypeKind.USIZE: return module.simd_loadstorelane(compiler.options.isWasm64 ? SIMDLoadStoreLaneOp.Store64Lane : SIMDLoadStoreLaneOp.Store32Lane, arg0, immOffset, immAlign, idx, arg1); + } + } + compiler.error( + DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, + ctx.reportNode.typeArgumentsRange, "v128.store_lane", type.toString() + ); + return module.unreachable(); +} +builtins.set(BuiltinNames.v128_store_lane, builtin_v128_store_lane); + // v128.add(a: v128, b: v128) -> v128 function builtin_v128_add(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; @@ -5092,6 +5332,44 @@ function builtin_v128_convert(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_convert, builtin_v128_convert); +// v128.convert_low(a: v128) -> v128 +function builtin_v128_convert_low(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkFeatureEnabled(ctx, Feature.SIMD) | + checkTypeRequired(ctx) | + checkArgsRequired(ctx, 1) + ) { + compiler.currentType = Type.v128; + return module.unreachable(); + } + var operands = ctx.operands; + var typeArguments = ctx.typeArguments!; + var type = typeArguments[0]; + var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); + if (type.isValue) { + switch (type.kind) { + case TypeKind.ISIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } + case TypeKind.I32: return module.unary(UnaryOp.ConvertLowI32x4ToF64x2, arg0); + case TypeKind.USIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } + case TypeKind.U32: return module.unary(UnaryOp.ConvertLowU32x4ToF64x2, arg0); + } + } + compiler.error( + DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, + ctx.reportNode.typeArgumentsRange, "v128.convert_low", type.toString() + ); + return module.unreachable(); +} +builtins.set(BuiltinNames.v128_convert_low, builtin_v128_convert_low); + // v128.trunc_sat(a: v128) -> v128 function builtin_v128_trunc_sat(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; @@ -5130,6 +5408,44 @@ function builtin_v128_trunc_sat(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_trunc_sat, builtin_v128_trunc_sat); +// v128.trunc_sat_zero(a: v128) -> v128 +function builtin_v128_trunc_sat_zero(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkFeatureEnabled(ctx, Feature.SIMD) | + checkTypeRequired(ctx) | + checkArgsRequired(ctx, 1) + ) { + compiler.currentType = Type.v128; + return module.unreachable(); + } + var operands = ctx.operands; + var typeArguments = ctx.typeArguments!; + var type = typeArguments[0]; + var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); + if (type.isValue) { + switch (type.kind) { + case TypeKind.ISIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } + case TypeKind.I32: return module.unary(UnaryOp.TruncSatF64x2ToI32x4Zero, arg0); + case TypeKind.USIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } + case TypeKind.U32: return module.unary(UnaryOp.TruncSatF64x2ToU32x4Zero, arg0); + } + } + compiler.error( + DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, + ctx.reportNode.typeArgumentsRange, "v128.trunc_sat_zero", type.toString() + ); + return module.unreachable(); +} +builtins.set(BuiltinNames.v128_trunc_sat_zero, builtin_v128_trunc_sat_zero); + // v128.extend_low(a: v128) -> v128 function builtin_v128_extend_low(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; @@ -5527,36 +5843,228 @@ function builtin_v128_popcnt(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_popcnt, builtin_v128_popcnt); -// === Internal runtime ======================================================================= - -// __visit_globals(cookie: u32) -> void -function builtin_visit_globals(ctx: BuiltinContext): ExpressionRef { +// v128.extadd_pairwise(a: v128) -> v128 +function builtin_v128_extadd_pairwise(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; if ( - checkTypeAbsent(ctx) | - checkArgsRequired(ctx, 1) // cookie + checkFeatureEnabled(ctx, Feature.SIMD) | + checkTypeRequired(ctx) | + checkArgsRequired(ctx, 1) ) { - compiler.currentType = Type.void; + compiler.currentType = Type.v128; return module.unreachable(); } var operands = ctx.operands; - var arg0 = compiler.compileExpression(operands[0], Type.u32, Constraints.CONV_IMPLICIT); - compiler.runtimeFeatures |= RuntimeFeatures.visitGlobals; - compiler.currentType = Type.void; - return module.call(BuiltinNames.visit_globals, [ arg0 ], NativeType.None); + var type = ctx.typeArguments![0]; + var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); + compiler.currentType = Type.v128; + if (type.isValue) { + switch (type.kind) { + case TypeKind.I8: return module.unary(UnaryOp.ExtaddPairwiseI8x16ToI16x8, arg0); + case TypeKind.U8: return module.unary(UnaryOp.ExtaddPairwiseU8x16ToU16x8, arg0); + case TypeKind.I16: return module.unary(UnaryOp.ExtaddPairwiseI16x8ToI32x4, arg0); + case TypeKind.U16: return module.unary(UnaryOp.ExtaddPairwiseU16x8ToU32x4, arg0); + } + } + compiler.error( + DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, + ctx.reportNode.typeArgumentsRange, "v128.extadd_pairwise", type.toString() + ); + return module.unreachable(); } -builtins.set(BuiltinNames.visit_globals, builtin_visit_globals); +builtins.set(BuiltinNames.v128_extadd_pairwise, builtin_v128_extadd_pairwise); -// __visit_members(ref: usize, cookie: u32) -> void -function builtin_visit_members(ctx: BuiltinContext): ExpressionRef { +// v128.demote_zero(a: v128) -> v128 +function builtin_v128_demote_zero(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; if ( - checkTypeAbsent(ctx) | - checkArgsRequired(ctx, 2) // ref, cookie + checkFeatureEnabled(ctx, Feature.SIMD) | + checkTypeOptional(ctx) | + checkArgsRequired(ctx, 1) ) { - compiler.currentType = Type.void; + compiler.currentType = Type.v128; + return module.unreachable(); + } + var operands = ctx.operands; + var typeArguments = ctx.typeArguments; + var type = typeArguments ? typeArguments[0] : Type.f64; + var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); + compiler.currentType = Type.v128; + if (type.isValue) { + switch (type.kind) { + case TypeKind.F64: return module.unary(UnaryOp.DemoteZeroF64x2ToF32x4, arg0); + } + } + compiler.error( + DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, + ctx.reportNode.typeArgumentsRange, "v128.demote_zero", type.toString() + ); + return module.unreachable(); +} +builtins.set(BuiltinNames.v128_demote_zero, builtin_v128_demote_zero); + +// v128.promote_low(a: v128) -> v128 +function builtin_v128_promote_low(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkFeatureEnabled(ctx, Feature.SIMD) | + checkTypeOptional(ctx) | + checkArgsRequired(ctx, 1) + ) { + compiler.currentType = Type.v128; + return module.unreachable(); + } + var operands = ctx.operands; + var typeArguments = ctx.typeArguments; + var type = typeArguments ? typeArguments[0] : Type.f32; + var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); + compiler.currentType = Type.v128; + if (type.isValue) { + switch (type.kind) { + case TypeKind.F32: return module.unary(UnaryOp.PromoteLowF32x4ToF64x2, arg0); + } + } + compiler.error( + DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, + ctx.reportNode.typeArgumentsRange, "v128.promote_low", type.toString() + ); + return module.unreachable(); +} +builtins.set(BuiltinNames.v128_promote_low, builtin_v128_promote_low); + +// v128.q15mulr_sat(a: v128, b: v128) -> v128 +function builtin_v128_q15mulr_sat(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkFeatureEnabled(ctx, Feature.SIMD) | + checkTypeRequired(ctx) | + checkArgsRequired(ctx, 2) + ) { + compiler.currentType = Type.v128; + return module.unreachable(); + } + var operands = ctx.operands; + var typeArguments = ctx.typeArguments!; + var type = typeArguments[0]; + var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); + var arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); + if (type.isValue) { + switch (type.kind) { + case TypeKind.I16: return module.binary(BinaryOp.Q15mulrSatI16x8, arg0, arg1); + } + } + compiler.error( + DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, + ctx.reportNode.typeArgumentsRange, "v128.q15mulr_sat", type.toString() + ); + return module.unreachable(); +} +builtins.set(BuiltinNames.v128_q15mulr_sat, builtin_v128_q15mulr_sat); + +// v128.extmul_low(a: v128, b: v128) -> v128 +function builtin_v128_extmul_low(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkFeatureEnabled(ctx, Feature.SIMD) | + checkTypeRequired(ctx) | + checkArgsRequired(ctx, 2) + ) { + compiler.currentType = Type.v128; + return module.unreachable(); + } + var operands = ctx.operands; + var typeArguments = ctx.typeArguments!; + var type = typeArguments[0]; + var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); + var arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); + if (type.isValue) { + switch (type.kind) { + case TypeKind.I8: return module.binary(BinaryOp.ExtmulLowI16x8, arg0, arg1); + case TypeKind.U8: return module.binary(BinaryOp.ExtmulLowU16x8, arg0, arg1); + case TypeKind.I16: return module.binary(BinaryOp.ExtmulLowI32x4, arg0, arg1); + case TypeKind.U16: return module.binary(BinaryOp.ExtmulLowU32x4, arg0, arg1); + case TypeKind.I32: return module.binary(BinaryOp.ExtmulLowI64x2, arg0, arg1); + case TypeKind.U32: return module.binary(BinaryOp.ExtmulLowU64x2, arg0, arg1); + } + } + compiler.error( + DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, + ctx.reportNode.typeArgumentsRange, "v128.extmul_low", type.toString() + ); + return module.unreachable(); +} +builtins.set(BuiltinNames.v128_extmul_low, builtin_v128_extmul_low); + +// v128.extmul_high(a: v128, b: v128) -> v128 +function builtin_v128_extmul_high(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkFeatureEnabled(ctx, Feature.SIMD) | + checkTypeRequired(ctx) | + checkArgsRequired(ctx, 2) + ) { + compiler.currentType = Type.v128; + return module.unreachable(); + } + var operands = ctx.operands; + var typeArguments = ctx.typeArguments!; + var type = typeArguments[0]; + var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); + var arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); + if (type.isValue) { + switch (type.kind) { + case TypeKind.I8: return module.binary(BinaryOp.ExtmulHighI16x8, arg0, arg1); + case TypeKind.U8: return module.binary(BinaryOp.ExtmulHighU16x8, arg0, arg1); + case TypeKind.I16: return module.binary(BinaryOp.ExtmulHighI32x4, arg0, arg1); + case TypeKind.U16: return module.binary(BinaryOp.ExtmulHighU32x4, arg0, arg1); + case TypeKind.I32: return module.binary(BinaryOp.ExtmulHighI64x2, arg0, arg1); + case TypeKind.U32: return module.binary(BinaryOp.ExtmulHighU64x2, arg0, arg1); + } + } + compiler.error( + DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, + ctx.reportNode.typeArgumentsRange, "v128.extmul_high", type.toString() + ); + return module.unreachable(); +} +builtins.set(BuiltinNames.v128_extmul_high, builtin_v128_extmul_high); + +// === Internal runtime ======================================================================= + +// __visit_globals(cookie: u32) -> void +function builtin_visit_globals(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkTypeAbsent(ctx) | + checkArgsRequired(ctx, 1) // cookie + ) { + compiler.currentType = Type.void; + return module.unreachable(); + } + var operands = ctx.operands; + var arg0 = compiler.compileExpression(operands[0], Type.u32, Constraints.CONV_IMPLICIT); + compiler.runtimeFeatures |= RuntimeFeatures.visitGlobals; + compiler.currentType = Type.void; + return module.call(BuiltinNames.visit_globals, [ arg0 ], NativeType.None); +} +builtins.set(BuiltinNames.visit_globals, builtin_visit_globals); + +// __visit_members(ref: usize, cookie: u32) -> void +function builtin_visit_members(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkTypeAbsent(ctx) | + checkArgsRequired(ctx, 2) // ref, cookie + ) { + compiler.currentType = Type.void; return module.unreachable(); } var operands = ctx.operands; @@ -6980,6 +7488,96 @@ function builtin_v128_load64_splat(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_load64_splat, builtin_v128_load64_splat); +// v128.load32_zero -> v128.load_zero +function builtin_v128_load32_zero(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_zero(ctx); +} +builtins.set(BuiltinNames.v128_load32_zero, builtin_v128_load32_zero); + +// v128.load64_zero -> v128.load_zero +function builtin_v128_load64_zero(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_zero(ctx); +} +builtins.set(BuiltinNames.v128_load64_zero, builtin_v128_load64_zero); + +// v128.load8_lane -> v128.load_lane +function builtin_v128_load8_lane(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_lane(ctx); +} +builtins.set(BuiltinNames.v128_load8_lane, builtin_v128_load8_lane); + +// v128.load16_lane -> v128.load_lane +function builtin_v128_load16_lane(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_lane(ctx); +} +builtins.set(BuiltinNames.v128_load16_lane, builtin_v128_load16_lane); + +// v128.load32_lane -> v128.load_lane +function builtin_v128_load32_lane(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_lane(ctx); +} +builtins.set(BuiltinNames.v128_load32_lane, builtin_v128_load32_lane); + +// v128.load64_lane -> v128.load_lane +function builtin_v128_load64_lane(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_lane(ctx); +} +builtins.set(BuiltinNames.v128_load64_lane, builtin_v128_load64_lane); + +// v128.store8_lane -> v128.store_lane +function builtin_v128_store8_lane(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_store_lane(ctx); +} +builtins.set(BuiltinNames.v128_store8_lane, builtin_v128_store8_lane); + +// v128.store16_lane -> v128.store_lane +function builtin_v128_store16_lane(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_store_lane(ctx); +} +builtins.set(BuiltinNames.v128_store16_lane, builtin_v128_store16_lane); + +// v128.store32_lane -> v128.store_lane +function builtin_v128_store32_lane(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_store_lane(ctx); +} +builtins.set(BuiltinNames.v128_store32_lane, builtin_v128_store32_lane); + +// v128.store64_lane -> v128.store_lane +function builtin_v128_store64_lane(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_store_lane(ctx); +} +builtins.set(BuiltinNames.v128_store64_lane, builtin_v128_store64_lane); + // v128.store -> store function builtin_v128_store(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -7674,6 +8272,69 @@ function builtin_i16x8_extend_high_i8x16_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i16x8_extend_high_i8x16_u, builtin_i16x8_extend_high_i8x16_u); +// i16x8.extadd_pairwise_i8x16_s -> v128.extadd_pairwise +function builtin_i16x8_extadd_pairwise_i8x16_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extadd_pairwise(ctx); +} +builtins.set(BuiltinNames.i16x8_extadd_pairwise_i8x16_s, builtin_i16x8_extadd_pairwise_i8x16_s); + +// i16x8.extadd_pairwise_i8x16_u -> v128.extadd_pairwise +function builtin_i16x8_extadd_pairwise_i8x16_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extadd_pairwise(ctx); +} +builtins.set(BuiltinNames.i16x8_extadd_pairwise_i8x16_u, builtin_i16x8_extadd_pairwise_i8x16_u); + +// i16x8.q15mulr_sat_s -> v128.q15mulr_sat +function builtin_i16x8_q15mulr_sat_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_q15mulr_sat(ctx); +} +builtins.set(BuiltinNames.i16x8_q15mulr_sat_s, builtin_i16x8_q15mulr_sat_s); + +// i16x8.extmul_low_i8x16_s -> v128.extmul_low +function builtin_i16x8_extmul_low_i8x16_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extmul_low(ctx); +} +builtins.set(BuiltinNames.i16x8_extmul_low_i8x16_s, builtin_i16x8_extmul_low_i8x16_s); + +// i16x8.extmul_low_i8x16_u -> v128.extmul_low +function builtin_i16x8_extmul_low_i8x16_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extmul_low(ctx); +} +builtins.set(BuiltinNames.i16x8_extmul_low_i8x16_u, builtin_i16x8_extmul_low_i8x16_u); + +// i16x8.extmul_high_i8x16_s -> v128.extmul_high +function builtin_i16x8_extmul_high_i8x16_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extmul_high(ctx); +} +builtins.set(BuiltinNames.i16x8_extmul_high_i8x16_s, builtin_i16x8_extmul_high_i8x16_s); + +// i16x8.extmul_high_i8x16_u -> v128.extmul_high +function builtin_i16x8_extmul_high_i8x16_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extmul_high(ctx); +} +builtins.set(BuiltinNames.i16x8_extmul_high_i8x16_u, builtin_i16x8_extmul_high_i8x16_u); + // i32x4.splat -> v128.splat function builtin_i32x4_splat(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -7944,6 +8605,24 @@ function builtin_i32x4_trunc_sat_f32x4_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i32x4_trunc_sat_f32x4_u, builtin_i32x4_trunc_sat_f32x4_u); +// i32x4.trunc_sat_f64x2_s_zero -> v128.trunc_sat_zero +function builtin_i32x4_trunc_sat_f64x2_s_zero(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_trunc_sat_zero(ctx); +} +builtins.set(BuiltinNames.i32x4_trunc_sat_f64x2_s_zero, builtin_i32x4_trunc_sat_f64x2_s_zero); + +// i32x4.trunc_sat_f64x2_u_zero -> v128.trunc_sat_zero +function builtin_i32x4_trunc_sat_f64x2_u_zero(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_trunc_sat_zero(ctx); +} +builtins.set(BuiltinNames.i32x4_trunc_sat_f64x2_u_zero, builtin_i32x4_trunc_sat_f64x2_u_zero); + // i32x4.extend_low_i16x8_s -> // v128.extend_low function builtin_i32x4_extend_low_i16x8_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -7980,6 +8659,60 @@ function builtin_i32x4_extend_high_i16x8_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i32x4_extend_high_i16x8_u, builtin_i32x4_extend_high_i16x8_u); +// i32x4.extadd_pairwise_i16x8_s -> v128.extadd_pairwise +function builtin_i32x4_extadd_pairwise_i16x8_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extadd_pairwise(ctx); +} +builtins.set(BuiltinNames.i32x4_extadd_pairwise_i16x8_s, builtin_i32x4_extadd_pairwise_i16x8_s); + +// i32x4.extadd_pairwise_i16x8_u -> v128.extadd_pairwise +function builtin_i32x4_extadd_pairwise_i16x8_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extadd_pairwise(ctx); +} +builtins.set(BuiltinNames.i32x4_extadd_pairwise_i16x8_u, builtin_i32x4_extadd_pairwise_i16x8_u); + +// i32x4.extmul_low_i16x8_s -> v128.extmul_low +function builtin_i32x4_extmul_low_i16x8_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extmul_low(ctx); +} +builtins.set(BuiltinNames.i32x4_extmul_low_i16x8_s, builtin_i32x4_extmul_low_i16x8_s); + +// i32x4.extmul_low_i16x8_u -> v128.extmul_low +function builtin_i32x4_extmul_low_i16x8_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extmul_low(ctx); +} +builtins.set(BuiltinNames.i32x4_extmul_low_i16x8_u, builtin_i32x4_extmul_low_i16x8_u); + +// i32x4.extmul_high_i16x8_s -> v128.extmul_high +function builtin_i32x4_extmul_high_i16x8_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extmul_high(ctx); +} +builtins.set(BuiltinNames.i32x4_extmul_high_i16x8_s, builtin_i32x4_extmul_high_i16x8_s); + +// i32x4.extmul_high_i16x8_u -> v128.extmul_high +function builtin_i32x4_extmul_high_i16x8_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extmul_high(ctx); +} +builtins.set(BuiltinNames.i32x4_extmul_high_i16x8_u, builtin_i32x4_extmul_high_i16x8_u); + // i64x2.splat -> v128.splat function builtin_i64x2_splat(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -8187,6 +8920,42 @@ function builtin_i64x2_extend_high_i32x4_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i64x2_extend_high_i32x4_u, builtin_i64x2_extend_high_i32x4_u); +// i64x2.extmul_low_i32x4_s -> v128.extmul_low +function builtin_i64x2_extmul_low_i32x4_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extmul_low(ctx); +} +builtins.set(BuiltinNames.i64x2_extmul_low_i32x4_s, builtin_i64x2_extmul_low_i32x4_s); + +// i64x2.extmul_low_i32x4_u -> v128.extmul_low +function builtin_i64x2_extmul_low_i32x4_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extmul_low(ctx); +} +builtins.set(BuiltinNames.i64x2_extmul_low_i32x4_u, builtin_i64x2_extmul_low_i32x4_u); + +// i64x2.extmul_high_i32x4_s -> v128.extmul_high +function builtin_i64x2_extmul_high_i32x4_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extmul_high(ctx); +} +builtins.set(BuiltinNames.i64x2_extmul_high_i32x4_s, builtin_i64x2_extmul_high_i32x4_s); + +// i64x2.extmul_high_i32x4_u -> v128.extmul_high +function builtin_i64x2_extmul_high_i32x4_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extmul_high(ctx); +} +builtins.set(BuiltinNames.i64x2_extmul_high_i32x4_u, builtin_i64x2_extmul_high_i32x4_u); + // f32x4.splat -> v128.splat function builtin_f32x4_splat(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -8421,6 +9190,15 @@ function builtin_f32x4_convert_i32x4_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.f32x4_convert_i32x4_u, builtin_f32x4_convert_i32x4_u); +// f32x4.demote_f64x2_zero -> v128.demote_zero +function builtin_f32x4_demote_f64x2_zero(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.f64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_demote_zero(ctx); +} +builtins.set(BuiltinNames.f32x4_demote_f64x2_zero, builtin_f32x4_demote_f64x2_zero); + // f64x2.splat -> v128.splat function builtin_f64x2_splat(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -8637,6 +9415,33 @@ function builtin_f64x2_ge(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.f64x2_ge, builtin_f64x2_ge); +// f64x2.convert_low_i32x4_s -> v128.convert_low +function builtin_f64x2_convert_low_i32x4_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_convert_low(ctx); +} +builtins.set(BuiltinNames.f64x2_convert_low_i32x4_s, builtin_f64x2_convert_low_i32x4_s); + +// f64x2.convert_low_i32x4_u -> v128.convert_low +function builtin_f64x2_convert_low_i32x4_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_convert_low(ctx); +} +builtins.set(BuiltinNames.f64x2_convert_low_i32x4_u, builtin_f64x2_convert_low_i32x4_u); + +// f64x2.promote_low_f32x4 -> v128.promote_low +function builtin_f64x4_promote_low_f32x4(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.f32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_promote_low(ctx); +} +builtins.set(BuiltinNames.f64x2_promote_low_f32x4, builtin_f64x4_promote_low_f32x4); + // === Internal helpers ======================================================================= /** Compiles the `visit_globals` function. */ diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index 4aeba07035..1e7ff0a5de 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -769,6 +769,21 @@ export declare function _BinaryenSIMDLoadSetAlign(expr: BinaryenExpressionRef, a export declare function _BinaryenSIMDLoadGetPtr(expr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenSIMDLoadSetPtr(expr: BinaryenExpressionRef, ptrExpr: BinaryenExpressionRef): void; +export declare function _BinaryenSIMDLoadStoreLane(module: BinaryenModuleRef, op: BinaryenOp, offset: u32, align: u32, index: u8, ptr: BinaryenExpressionRef, vec: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSIMDLoadStoreLaneGetOp(expr: BinaryenExpressionRef): BinaryenOp; +export declare function _BinaryenSIMDLoadStoreLaneSetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; +export declare function _BinaryenSIMDLoadStoreLaneGetOffset(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenSIMDLoadStoreLaneSetOffset(expr: BinaryenExpressionRef, offset: u32): void; +export declare function _BinaryenSIMDLoadStoreLaneGetAlign(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenSIMDLoadStoreLaneSetAlign(expr: BinaryenExpressionRef, align: u32): void; +export declare function _BinaryenSIMDLoadStoreLaneGetIndex(expr: BinaryenExpressionRef): u8; +export declare function _BinaryenSIMDLoadStoreLaneSetIndex(expr: BinaryenExpressionRef, index: u8): void; +export declare function _BinaryenSIMDLoadStoreLaneGetPtr(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSIMDLoadStoreLaneSetPtr(expr: BinaryenExpressionRef, ptrExpr: BinaryenExpressionRef): void; +export declare function _BinaryenSIMDLoadStoreLaneGetVec(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSIMDLoadStoreLaneSetVec(expr: BinaryenExpressionRef, vecExpr: BinaryenExpressionRef): void; +export declare function _BinaryenSIMDLoadStoreLaneIsStore(expr: BinaryenExpressionRef): bool; + export declare function _BinaryenMemoryInit(module: BinaryenModuleRef, segmentIndex: u32, destExpr: BinaryenExpressionRef, offsetExpr: BinaryenExpressionRef, sizeExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenMemoryInitGetSegment(expr: BinaryenExpressionRef): u32; export declare function _BinaryenMemoryInitSetSegment(expr: BinaryenExpressionRef, segmentIndex: u32): void; diff --git a/src/module.ts b/src/module.ts index 3fc3bddd80..6ebe246108 100644 --- a/src/module.ts +++ b/src/module.ts @@ -298,7 +298,7 @@ export enum UnaryOp { /** i8x16.bitmask */ BitmaskI8x16 = 71 /* _BinaryenBitmaskVecI8x16 */, /** i8x16.popcnt */ - PopcntI8x16 = 72 /* _BinaryenPopcntVecI8x16 */, // UNIMP + PopcntI8x16 = 72 /* _BinaryenPopcntVecI8x16 */, /** i16x8.abs */ AbsI16x8 = 73 /* _BinaryenAbsVecI16x8 */, /** i16x8.neg */ @@ -322,7 +322,7 @@ export enum UnaryOp { /** i64x2.all_true */ AllTrueI64x2 = 83 /* _BinaryenAllTrueVecI64x2 */, /** i64x2.bitmask */ - BitmaskI64x2 = 84 /* _BinaryenBitmaskVecI64x2 */, // UNIMP + BitmaskI64x2 = 84 /* _BinaryenBitmaskVecI64x2 */, /** f32x4.abs */ AbsF32x4 = 85 /* _BinaryenAbsVecF32x4 */, /** f32x4.neg */ @@ -352,13 +352,13 @@ export enum UnaryOp { /** f64x2.nearest */ NearestF64x2 = 98 /* _BinaryenNearestVecF64x2 */, /** i16x8.extadd_pairwise_i8x16_s */ - ExtaddPairwiseI8x16ToI16x8 = 99 /* _BinaryenExtAddPairwiseSVecI8x16ToI16x8 */, // UNIMP + ExtaddPairwiseI8x16ToI16x8 = 99 /* _BinaryenExtAddPairwiseSVecI8x16ToI16x8 */, /** i16x8.extadd_pairwise.i8x16_u */ - ExtaddPairwiseU8x16ToU16x8 = 100 /* _BinaryenExtAddPairwiseUVecI8x16ToI16x8 */, // UNIMP + ExtaddPairwiseU8x16ToU16x8 = 100 /* _BinaryenExtAddPairwiseUVecI8x16ToI16x8 */, /** i32x4.extadd_pairwise.i16x8_s */ - ExtaddPairwiseI16x8ToI32x4 = 101 /* _BinaryenExtAddPairwiseSVecI16x8ToI32x4 */, // UNIMP + ExtaddPairwiseI16x8ToI32x4 = 101 /* _BinaryenExtAddPairwiseSVecI16x8ToI32x4 */, /** i32x4.extadd_pairwise.i64x8_u */ - ExtaddPairwiseU16x8ToU32x4 = 102 /* _BinaryenExtAddPairwiseUVecI16x8ToI32x4 */, // UNIMP + ExtaddPairwiseU16x8ToU32x4 = 102 /* _BinaryenExtAddPairwiseUVecI16x8ToI32x4 */, /** i32x4.trunc_sat_f32x4_s */ TruncSatF32x4ToI32x4 = 103 /* _BinaryenTruncSatSVecF32x4ToVecI32x4 */, /** i32x4.trunc_sat_f32x4_u */ @@ -392,17 +392,17 @@ export enum UnaryOp { /** i64x2.extend_high_i32x4_u */ ExtendHighU32x4ToU64x2 = 118 /* _BinaryenExtendHighUVecI32x4ToVecI64x2 */, /** f32x4.convert_i32x4_s */ - ConvertLowI32x4ToF64x2 = 119 /* _BinaryenConvertLowSVecI32x4ToVecF64x2 */, // UNIMP + ConvertLowI32x4ToF64x2 = 119 /* _BinaryenConvertLowSVecI32x4ToVecF64x2 */, /** f32x4.convert_i32x4_u */ - ConvertLowU32x4ToF64x2 = 120 /* _BinaryenConvertLowUVecI32x4ToVecF64x2 */, // UNIMP + ConvertLowU32x4ToF64x2 = 120 /* _BinaryenConvertLowUVecI32x4ToVecF64x2 */, /** i32x4.trunc_sat_f64x2_s_zero */ - TruncSatF64x2ToI32x4Zero = 121 /* _BinaryenTruncSatZeroSVecF64x2ToVecI32x4 */, // UNIMP + TruncSatF64x2ToI32x4Zero = 121 /* _BinaryenTruncSatZeroSVecF64x2ToVecI32x4 */, /** i32x4.trunc_sat_f64x2_u_zero */ - TruncSatF64x2ToU32x4Zero = 122 /* _BinaryenTruncSatZeroUVecF64x2ToVecI32x4 */, // UNIMP + TruncSatF64x2ToU32x4Zero = 122 /* _BinaryenTruncSatZeroUVecF64x2ToVecI32x4 */, /** f32x4.demote_f64x2_zero */ - DemoteZeroF64x2ToF32x4 = 123 /* _BinaryenDemoteZeroVecF64x2ToVecF32x4 */, // UNIMP + DemoteZeroF64x2ToF32x4 = 123 /* _BinaryenDemoteZeroVecF64x2ToVecF32x4 */, /** f64x2.promote_low_f32x4 */ - PromoteLowF32x4ToF64x2 = 124 /* _BinaryenPromoteLowVecF32x4ToVecF64x2 */, // UNIMP + PromoteLowF32x4ToF64x2 = 124 /* _BinaryenPromoteLowVecF32x4ToVecF64x2 */, _last = PromoteLowF32x4ToF64x2, @@ -725,15 +725,15 @@ export enum BinaryOp { /** i16x8.avgr_u */ AvgrU16x8 = 150 /* _BinaryenAvgrUVecI16x8 */, /** i16x8.q15mulr_sat_s */ - Q15mulrSatI16x8 = 151 /* _BinaryenQ15MulrSatSVecI16x8 */, // UNIMP + Q15mulrSatI16x8 = 151 /* _BinaryenQ15MulrSatSVecI16x8 */, /** i16x8.extmul_low_i8x16_s */ - ExtmulLowI16x8 = 152 /* _BinaryenExtMulLowSVecI16x8 */, // UNIMP + ExtmulLowI16x8 = 152 /* _BinaryenExtMulLowSVecI16x8 */, /** i16x8.extmul_high_i8x16_s */ - ExtmulHighI16x8 = 153 /* _BinaryenExtMulHighSVecI16x8 */, // UNIMP + ExtmulHighI16x8 = 153 /* _BinaryenExtMulHighSVecI16x8 */, /** i16x8.extmul_low_i8x16_u */ - ExtmulLowU16x8 = 154 /* _BinaryenExtMulLowUVecI16x8 */, // UNIMP + ExtmulLowU16x8 = 154 /* _BinaryenExtMulLowUVecI16x8 */, /** i16x8.extmul_high_i8x16_u */ - ExtmulHighU16x8 = 155 /* _BinaryenExtMulHighUVecI16x8 */, // UNIMP + ExtmulHighU16x8 = 155 /* _BinaryenExtMulHighUVecI16x8 */, /** i32x4.add */ AddI32x4 = 156 /* _BinaryenAddVecI32x4 */, /** i32x4.sub */ @@ -751,13 +751,13 @@ export enum BinaryOp { /** i32x4.dot_i16x8_s */ DotI16x8 = 163 /* _BinaryenDotSVecI16x8ToVecI32x4 */, /** i32x4.extmul_low_i16x8_s */ - ExtmulLowI32x4 = 164 /* _BinaryenExtMulLowSVecI32x4 */, // UNIMP + ExtmulLowI32x4 = 164 /* _BinaryenExtMulLowSVecI32x4 */, /** i32x4.extmul_high_i16x8_s */ - ExtmulHighI32x4 = 165 /* _BinaryenExtMulHighSVecI32x4 */, // UNIMP + ExtmulHighI32x4 = 165 /* _BinaryenExtMulHighSVecI32x4 */, /** i32x4.extmul_low_i16x8_u */ - ExtmulLowU32x4 = 166 /* _BinaryenExtMulLowUVecI32x4 */, // UNIMP + ExtmulLowU32x4 = 166 /* _BinaryenExtMulLowUVecI32x4 */, /** i32x4.extmul_high_i16x8_u */ - ExtmulHighU32x4 = 167 /* _BinaryenExtMulHighUVecI32x4 */, // UNIMP + ExtmulHighU32x4 = 167 /* _BinaryenExtMulHighUVecI32x4 */, /** i64x2.add */ AddI64x2 = 168 /* _BinaryenAddVecI64x2 */, /** i64x2.sub */ @@ -765,13 +765,13 @@ export enum BinaryOp { /** i64x2.mul */ MulI64x2 = 170 /* _BinaryenMulVecI64x2 */, /** i64x2.extmul_low_i32x4_s */ - ExtmulLowI64x2 = 171 /* _BinaryenExtMulLowSVecI64x2 */, // UNIMP + ExtmulLowI64x2 = 171 /* _BinaryenExtMulLowSVecI64x2 */, /** i64x2.extmul_high_i32x4_s */ - ExtmulHighI64x2 = 172 /* _BinaryenExtMulHighSVecI64x2 */, // UNIMP + ExtmulHighI64x2 = 172 /* _BinaryenExtMulHighSVecI64x2 */, /** i64x2.extmul_low_i32x4_u */ - ExtmulLowU64x2 = 173 /* _BinaryenExtMulLowUVecI64x2 */, // UNIMP + ExtmulLowU64x2 = 173 /* _BinaryenExtMulLowUVecI64x2 */, /** i64x2.extmul_high_i32x4_u */ - ExtmulHighU64x2 = 174 /* _BinaryenExtMulHighUVecI64x2 */, // UNIMP + ExtmulHighU64x2 = 174 /* _BinaryenExtMulHighUVecI64x2 */, /** f32x4.add */ AddF32x4 = 175 /* _BinaryenAddVecF32x4 */, /** f32x4.sub */ @@ -969,28 +969,28 @@ export enum SIMDLoadOp { /** v128.load32x2_u */ Load32x2U = 9 /* _BinaryenLoad32x2UVec128 */, /** v128.load32_zero */ - Load32Zero = 10 /* _BinaryenLoad32ZeroVec128 */, // UNIMP + Load32Zero = 10 /* _BinaryenLoad32ZeroVec128 */, /** v128.load64_zero */ - Load64Zero = 11 /* _BinaryenLoad64ZeroVec128 */, // UNIMP + Load64Zero = 11 /* _BinaryenLoad64ZeroVec128 */, } export enum SIMDLoadStoreLaneOp { /** v128.load8_lane */ - Load8Lane = 0 /* _BinaryenLoad8LaneVec128 */, // UNIMP + Load8Lane = 0 /* _BinaryenLoad8LaneVec128 */, /** v128.load16_lane */ - Load16Lane = 1 /* _BinaryenLoad16LaneVec128 */, // UNIMP + Load16Lane = 1 /* _BinaryenLoad16LaneVec128 */, /** v128.load32_lane */ - Load32Lane = 2 /* _BinaryenLoad32LaneVec128 */, // UNIMP + Load32Lane = 2 /* _BinaryenLoad32LaneVec128 */, /** v128.load64_lane */ - Load64Lane = 3 /* _BinaryenLoad64LaneVec128 */, // UNIMP + Load64Lane = 3 /* _BinaryenLoad64LaneVec128 */, /** v128.store8_lane */ - Store8Lane = 4 /* _BinaryenStore8LaneVec128 */, // UNIMP + Store8Lane = 4 /* _BinaryenStore8LaneVec128 */, /** v128.store16_lane */ - Store16Lane = 5 /* _BinaryenStore16LaneVec128 */, // UNIMP + Store16Lane = 5 /* _BinaryenStore16LaneVec128 */, /** v128.store32_lane */ - Store32Lane = 6 /* _BinaryenStore32LaneVec128 */, // UNIMP + Store32Lane = 6 /* _BinaryenStore32LaneVec128 */, /** v128.store64_lane */ - Store64Lane = 7 /* _BinaryenStore64LaneVec128 */, // UNIMP + Store64Lane = 7 /* _BinaryenStore64LaneVec128 */, } export enum SIMDTernaryOp { @@ -1666,6 +1666,17 @@ export class Module { return binaryen._BinaryenSIMDLoad(this.ref, op, offset, align, ptr); } + simd_loadstorelane( + op: SIMDLoadStoreLaneOp, + ptr: ExpressionRef, + offset: u32, + align: u32, + index: u8, + vec: ExpressionRef + ): ExpressionRef { + return binaryen._BinaryenSIMDLoadStoreLane(this.ref, op, offset, align, index, ptr, vec); + } + // reference types / gc ref_is( diff --git a/src/passes/pass.ts b/src/passes/pass.ts index 733c3906a0..dcb8c3b589 100644 --- a/src/passes/pass.ts +++ b/src/passes/pass.ts @@ -134,6 +134,10 @@ import { _BinaryenSIMDShiftSetVec, _BinaryenSIMDShiftSetShift, _BinaryenSIMDLoadSetPtr, + _BinaryenSIMDLoadStoreLaneGetPtr, + _BinaryenSIMDLoadStoreLaneGetVec, + _BinaryenSIMDLoadStoreLaneSetPtr, + _BinaryenSIMDLoadStoreLaneSetVec, _BinaryenMemoryInitSetDest, _BinaryenMemoryInitSetOffset, _BinaryenMemoryInitSetSize, @@ -342,6 +346,10 @@ export abstract class Visitor { // unimp } + visitSIMDLoadStoreLane(expr: ExpressionRef): void { + // unimp + } + visitMemoryInit(expr: ExpressionRef): void { // unimp } @@ -760,7 +768,14 @@ export abstract class Visitor { this.visitSIMDLoad(expr); break; } - // TODO: SIMDLoadStoreLane + case ExpressionId.SIMDLoadStoreLane: { + this.stack.push(expr); + this.visit(_BinaryenSIMDLoadStoreLaneGetPtr(expr)); + this.visit(_BinaryenSIMDLoadStoreLaneGetVec(expr)); + assert(this.stack.pop() == expr); + this.visitSIMDLoadStoreLane(expr); + break; + } case ExpressionId.MemoryInit: { this.stack.push(expr); this.visit(_BinaryenMemoryInitGetDest(expr)); @@ -1425,7 +1440,19 @@ export function replaceChild( } break; } - // TODO: SIMDLoadStoreLane + case ExpressionId.SIMDLoadStoreLane: { + let ptr = _BinaryenSIMDLoadStoreLaneGetPtr(parent); + if (ptr == search) { + _BinaryenSIMDLoadStoreLaneSetPtr(parent, replacement); + return ptr; + } + let vec = _BinaryenSIMDLoadStoreLaneGetVec(parent); + if (vec == search) { + _BinaryenSIMDLoadStoreLaneSetVec(parent, replacement); + return ptr; + } + break; + } case ExpressionId.MemoryInit: { let dest = _BinaryenMemoryInitGetDest(parent); if (dest == search) { diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 4be40eba64..92326564b5 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1123,6 +1123,18 @@ export namespace v128 { @unsafe @builtin export declare function load_ext(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + // @ts-ignore: decorator + @unsafe @builtin + export declare function load_zero(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function load_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function store_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128; + // @ts-ignore: decorator @builtin export declare function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; @@ -1167,6 +1179,46 @@ export namespace v128 { @unsafe @builtin export declare function load64_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + // @ts-ignore: decorator + @unsafe @builtin + export declare function load32_zero(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function load64_zero(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function load8_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function load16_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function load32_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function load64_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function store8_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function store16_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function store32_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function store64_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): v128; + // @ts-ignore: decorator @unsafe @builtin export declare function store(ptr: usize, value: v128, immOffset?: usize, immAlign?: usize): void; @@ -1323,10 +1375,18 @@ export namespace v128 { @builtin export declare function convert(a: v128): v128; + // @ts-ignore: decorator + @builtin + export declare function convert_low(a: v128): v128; + // @ts-ignore: decorator @builtin export declare function trunc_sat(a: v128): v128; + // @ts-ignore: decorator + @builtin + export declare function trunc_sat_zero(a: v128): v128; + // @ts-ignore: decorator @builtin export declare function narrow(a: v128, b: v128): v128; @@ -1338,6 +1398,30 @@ export namespace v128 { // @ts-ignore: decorator @builtin export declare function extend_high(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extadd_pairwise(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function demote_zero(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function promote_low(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function q15mulr_sat(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_low(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_high(a: v128, b: v128): v128; } // @ts-ignore: decorator @@ -1663,6 +1747,34 @@ export namespace i16x8 { // @ts-ignore: decorator @builtin export declare function extend_high_i8x16_u(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extadd_pairwise_i8x16_s(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extadd_pairwise_i8x16_u(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function q15mulr_sat_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_low_i8x16_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_low_i8x16_u(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_high_i8x16_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_high_i8x16_u(a: v128, b: v128): v128; } // @ts-ignore: decorator @@ -1791,6 +1903,14 @@ export namespace i32x4 { @builtin export declare function trunc_sat_f32x4_u(a: v128): v128; + // @ts-ignore: decorator + @builtin + export declare function trunc_sat_f64x2_s_zero(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function trunc_sat_f64x2_u_zero(a: v128): v128; + // @ts-ignore: decorator @builtin export declare function extend_low_i16x8_s(a: v128): v128; @@ -1806,6 +1926,30 @@ export namespace i32x4 { // @ts-ignore: decorator @builtin export declare function extend_high_i16x8_u(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extadd_pairwise_i16x8_s(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extadd_pairwise_i16x8_u(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_low_i16x8_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_low_i16x8_u(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_high_i16x8_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_high_i16x8_u(a: v128, b: v128): v128; } // @ts-ignore: decorator @@ -1905,6 +2049,22 @@ export namespace i64x2 { // @ts-ignore: decorator @builtin export declare function extend_high_i32x4_u(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_low_i32x4_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_low_i32x4_u(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_high_i32x4_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extmul_high_i32x4_u(a: v128, b: v128): v128; } // @ts-ignore: decorator @@ -2016,6 +2176,10 @@ export namespace f32x4 { // @ts-ignore: decorator @builtin export declare function convert_i32x4_u(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function demote_f64x2_zero(a: v128): v128; } // @ts-ignore: decorator @@ -2119,6 +2283,18 @@ export namespace f64x2 { // @ts-ignore: decorator @builtin export declare function ge(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function convert_low_i32x4_s(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function convert_low_i32x4_u(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function promote_low_f32x4(a: v128): v128; } @final diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 65386bf6bf..73495ffac5 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -100,45 +100,45 @@ declare const ASC_VERSION_PATCH: i32; // Builtins /** Performs the sign-agnostic count leading zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered leading if the value is zero. */ -declare function clz(value: T): T; +declare function clz(value: T): T; /** Performs the sign-agnostic count tailing zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered trailing if the value is zero. */ -declare function ctz(value: T): T; +declare function ctz(value: T): T; /** Performs the sign-agnostic count number of one bits operation on a 32-bit or 64-bit integer. */ -declare function popcnt(value: T): T; +declare function popcnt(value: T): T; /** Performs the sign-agnostic rotate left operation on a 32-bit or 64-bit integer. */ -declare function rotl(value: T, shift: T): T; +declare function rotl(value: T, shift: T): T; /** Performs the sign-agnostic rotate right operation on a 32-bit or 64-bit integer. */ -declare function rotr(value: T, shift: T): T; +declare function rotr(value: T, shift: T): T; /** Computes the absolute value of an integer or float. */ -declare function abs(value: T): T; +declare function abs(value: T): T; /** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */ -declare function max(left: T, right: T): T; +declare function max(left: T, right: T): T; /** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */ -declare function min(left: T, right: T): T; +declare function min(left: T, right: T): T; /** Performs the ceiling operation on a 32-bit or 64-bit float. */ -declare function ceil(value: T): T; +declare function ceil(value: T): T; /** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */ -declare function copysign(x: T, y: T): T; +declare function copysign(x: T, y: T): T; /** Performs the floor operation on a 32-bit or 64-bit float. */ -declare function floor(value: T): T; +declare function floor(value: T): T; /** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */ -declare function nearest(value: T): T; +declare function nearest(value: T): T; /** Reinterprets the bits of the specified value as type `T`. Valid reinterpretations are u32/i32 to/from f32 and u64/i64 to/from f64. */ -declare function reinterpret(value: number): T; +declare function reinterpret(value: number): T; /** Selects one of two pre-evaluated values depending on the condition. */ declare function select(ifTrue: T, ifFalse: T, condition: bool): T; /** Calculates the square root of a 32-bit or 64-bit float. */ -declare function sqrt(value: T): T; +declare function sqrt(value: T): T; /** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */ -declare function trunc(value: T): T; +declare function trunc(value: T): T; /** Computes the sum of two integers or floats. */ -declare function add(left: T, right: T): T; +declare function add(left: T, right: T): T; /** Computes the difference of two integers or floats. */ -declare function sub(left: T, right: T): T; +declare function sub(left: T, right: T): T; /** Computes the product of two integers or floats. */ -declare function mul(left: T, right: T): T; +declare function mul(left: T, right: T): T; /** Computes the quotient of two integers or floats. */ -declare function div(left: T, right: T): T; +declare function div(left: T, right: T): T; /** Loads a value of the specified type from memory. Equivalent to dereferncing a pointer in other languages. */ declare function load(ptr: usize, immOffset?: usize, immAlign?: usize): T; /** Stores a value of the specified type to memory. Equivalent to dereferencing a pointer in other languages when assigning a value. */ @@ -179,9 +179,9 @@ declare function call_indirect(index: u32, ...args: unknown[]): T; /** Instantiates a new instance of `T` using the specified constructor arguments. */ declare function instantiate(...args: any[]): T; /** Tests if a 32-bit or 64-bit float is `NaN`. */ -declare function isNaN(value: T): bool; +declare function isNaN(value: T): bool; /** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */ -declare function isFinite(value: T): bool; +declare function isFinite(value: T): bool; /** Tests if the specified type *or* expression is of an integer type and not a reference. Compiles to a constant. */ declare function isInteger(value?: any): value is number; /** Tests if the specified type *or* expression is of a float type. Compiles to a constant. */ @@ -709,6 +709,12 @@ declare namespace v128 { export function load(ptr: usize, immOffset?: usize, immAlign?: usize): v128; /** Creates a vector by loading the lanes of the specified type and extending each to the next larger type. */ export function load_ext(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Creates a vector by loading a value of the specified type into the lowest bits and initializing all other bits of the vector to zero. */ + export function load_zero(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Loads a single lane from memory into the specified lane of the given vector. Other lanes are bypassed as is. */ + export function load_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128; + /** Stores the single lane at the specified index of the given vector to memory. */ + export function store_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128; /** Creates a vector with eight 16-bit integer lanes by loading and sign extending eight 8-bit integers. */ export function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; /** Creates a vector with eight 16-bit integer lanes by loading and zero extending eight 8-bit integers. */ @@ -731,6 +737,26 @@ declare namespace v128 { export function load32_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; /** Loads a 64-bit integer and splats it two times forming a new vector. */ export function load64_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Creates a vector by loading a 32-bit value into the lowest bits and initializing all other bits of the vector to zero. */ + export function load32_zero(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Creates a vector by loading a 64-bit value into the lowest bits and initializing all other bits of the vector to zero. */ + export function load64_zero(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Loads a single 8-bit lane from memory into the specified lane of the given vector. Other lanes are bypassed as is. */ + export function load8_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128; + /** Loads a single 16-bit lane from memory into the specified lane of the given vector. Other lanes are bypassed as is. */ + export function load16_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128; + /** Loads a single 32-bit lane from memory into the specified lane of the given vector. Other lanes are bypassed as is. */ + export function load32_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128; + /** Loads a single 64-bit lane from memory into the specified lane of the given vector. Other lanes are bypassed as is. */ + export function load64_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128; + /** Stores the 8-bit lane at the specified lane of the given vector to memory. */ + export function store8_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128; + /** Stores the 16-bit lane at the specified lane of the given vector to memory. */ + export function store16_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128; + /** Stores the 32-bit lane at the specified lane of the given vector to memory. */ + export function store32_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128; + /** Stores the 64-bit lane at the specified lane of the given vector to memory. */ + export function store64_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128; /** Stores a vector to memory. */ export function store(ptr: usize, value: v128, immOffset?: usize, immAlign?: usize): void; /** Adds each lane. */ @@ -740,7 +766,7 @@ declare namespace v128 { /** Multiplies each lane. */ export function mul(a: v128, b: v128): v128; // except i64 /** Divides each lane. */ - export function div(a: v128, b: v128): v128; + export function div(a: v128, b: v128): v128; /** Negates each lane of a vector. */ export function neg(a: v128): v128; /** Adds each lane using saturation. */ @@ -780,21 +806,21 @@ declare namespace v128 { /** Computes the pseudo-maximum of each lane. */ export function pmax(a: v128, b: v128): v128; /** Computes the dot product of two lanes each, yielding lanes one size wider than the input. */ - export function dot(a: v128, b: v128): v128; + export function dot(a: v128, b: v128): v128; /** Computes the average of each lane. */ - export function avgr(a: v128, b: v128): v128; + export function avgr(a: v128, b: v128): v128; /** Computes the absolute value of each lane. */ - export function abs(a: v128): v128; + export function abs(a: v128): v128; /** Computes the square root of each lane. */ - export function sqrt(a: v128): v128; + export function sqrt(a: v128): v128; /** Performs the ceiling operation on each lane. */ - export function ceil(a: v128): v128; + export function ceil(a: v128): v128; /** Performs the floor operation on each lane. */ - export function floor(a: v128): v128; + export function floor(a: v128): v128; /** Rounds to the nearest integer towards zero of each lane. */ - export function trunc(a: v128): v128; + export function trunc(a: v128): v128; /** Rounds to the nearest integer tied to even of each lane. */ - export function nearest(a: v128): v128; + export function nearest(a: v128): v128; /** Computes which lanes are equal. */ export function eq(a: v128, b: v128): v128; /** Computes which lanes are not equal. */ @@ -807,16 +833,32 @@ declare namespace v128 { export function gt(a: v128, b: v128): v128; /** Computes which lanes of the first vector are greater than or equal those of the second. */ export function ge(a: v128, b: v128): v128; - /** Converts each lane of a vector from integer to floating point. */ - export function convert(a: v128): v128; - /** Truncates each lane of a vector from floating point to integer with saturation. Takes the target type. */ - export function trunc_sat(a: v128): v128; + /** Converts each lane of a vector from integer to single-precision floating point. */ + export function convert(a: v128): v128; + /** Converts the low lanes of a vector from integer to double-precision floating point. */ + export function convert_low(a: v128): v128; + /** Truncates each lane of a vector from single-precision floating point to integer with saturation. Takes the target type. */ + export function trunc_sat(a: v128): v128; + /** Truncates each lane of a vector from double-precision floating point to integer with saturation. Takes the target type. */ + export function trunc_sat_zero(a: v128): v128; /** Narrows each lane to their respective narrower lanes. */ - export function narrow(a: v128, b: v128): v128; + export function narrow(a: v128, b: v128): v128; /** Extends the low lanes of a vector to their respective wider lanes. */ - export function extend_low(a: v128): v128; + export function extend_low(a: v128): v128; /** Extends the high lanes of a vector to their respective wider lanes. */ - export function extend_high(a: v128): v128; + export function extend_high(a: v128): v128; + /** Adds lanes pairwise producing twice wider extended results. */ + export function extadd_pairwise(a: v128): v128; + /** Demotes each float lane to lower precision. The higher lanes of the result are initialized to zero. */ + export function demote_zero(a: v128): v128; + /** Promotes the lower float lanes to higher precision. */ + export function promote_low(a: v128): v128; + /** Performs the line-wise saturating rounding multiplication in Q15 format. */ + export function q15mulr_sat(a: v128, b: v128): v128; + /** Performs the lane-wise integer extended multiplication of the lower lanes producing a twice wider result than the inputs. */ + export function extmul_low(a: v128, b: v128): v128; + /** Performs the lane-wise integer extended multiplication of the higher lanes producing a twice wider result than the inputs. */ + export function extmul_high(a: v128, b: v128): v128; } /** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */ declare function i8x16(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128; @@ -977,6 +1019,20 @@ declare namespace i16x8 { export function extend_high_i8x16_s(a: v128): v128; /** Extends the high 8-bit unsigned integer lanes to 16-bit unsigned integer lanes. */ export function extend_high_i8x16_u(a: v128): v128; + /** Adds the sixteen 8-bit signed integer lanes pairwise producing eight 16-bit signed integer results. */ + export function extadd_pairwise_i8x16_s(a: v128): v128; + /** Adds the sixteen 8-bit unsigned integer lanes pairwise producing eight 16-bit unsigned integer results. */ + export function extadd_pairwise_i8x16_u(a: v128): v128; + /** Performs the line-wise 16-bit signed integer saturating rounding multiplication in Q15 format. */ + export function q15mulr_sat_s(a: v128, b: v128): v128; + /** Performs the lane-wise 8-bit signed integer extended multiplication of the eight lower lanes producing twice wider 16-bit integer results. */ + export function extmul_low_i8x16_s(a: v128, b: v128): v128; + /** Performs the lane-wise 8-bit unsigned integer extended multiplication of the eight lower lanes producing twice wider 16-bit integer results. */ + export function extmul_low_i8x16_u(a: v128, b: v128): v128; + /** Performs the lane-wise 8-bit signed integer extended multiplication of the eight higher lanes producing twice wider 16-bit integer results. */ + export function extmul_high_i8x16_s(a: v128, b: v128): v128; + /** Performs the lane-wise 8-bit unsigned integer extended multiplication of the eight higher lanes producing twice wider 16-bit integer results. */ + export function extmul_high_i8x16_u(a: v128, b: v128): v128; } /** Initializes a 128-bit vector from four 32-bit integer values. Arguments must be compile-time constants. */ declare function i32x4(a: i32, b: i32, c: i32, d: i32): v128; @@ -1041,6 +1097,10 @@ declare namespace i32x4 { export function trunc_sat_f32x4_s(a: v128): v128; /** Truncates each 32-bit float lane to an unsigned integer with saturation. */ export function trunc_sat_f32x4_u(a: v128): v128; + /** Truncates the two 64-bit float lanes to the two lower signed integer lanes with saturation. The two higher integer lanes of the result are initialized to zero. */ + export function trunc_sat_f64x2_s_zero(a: v128): v128; + /** Truncates the two 64-bit float lanes to the two lower unsigned integer lanes with saturation. The two higher integer lanes of the result are initialized to zero. */ + export function trunc_sat_f64x2_u_zero(a: v128): v128; /** Extends the low 16-bit signed integer lanes to 32-bit signed integer lanes. */ export function extend_low_i16x8_s(a: v128): v128; /** Extends the low 16-bit unsigned integer lane to 32-bit unsigned integer lanes. */ @@ -1049,6 +1109,18 @@ declare namespace i32x4 { export function extend_high_i16x8_s(a: v128): v128; /** Extends the high 16-bit unsigned integer lanes to 32-bit unsigned integer lanes. */ export function extend_high_i16x8_u(a: v128): v128; + /** Adds the eight 16-bit signed integer lanes pairwise producing four 32-bit signed integer results. */ + export function extadd_pairwise_i16x8_s(a: v128): v128; + /** Adds the eight 16-bit unsigned integer lanes pairwise producing four 32-bit unsigned integer results. */ + export function extadd_pairwise_i16x8_u(a: v128): v128; + /** Performs the lane-wise 16-bit signed integer extended multiplication of the four lower lanes producing twice wider 32-bit integer results. */ + export function extmul_low_i16x8_s(a: v128, b: v128): v128; + /** Performs the lane-wise 16-bit unsigned integer extended multiplication of the four lower lanes producing twice wider 32-bit integer results. */ + export function extmul_low_i16x8_u(a: v128, b: v128): v128; + /** Performs the lane-wise 16-bit signed integer extended multiplication of the four higher lanes producing twice wider 32-bit integer results. */ + export function extmul_high_i16x8_s(a: v128, b: v128): v128; + /** Performs the lane-wise 16-bit unsigned integer extended multiplication of the four higher lanes producing twice wider 32-bit integer results. */ + export function extmul_high_i16x8_u(a: v128, b: v128): v128; } /** Initializes a 128-bit vector from two 64-bit integer values. Arguments must be compile-time constants. */ declare function i64x2(a: i64, b: i64): v128; @@ -1099,6 +1171,14 @@ declare namespace i64x2 { export function extend_high_i32x4_s(a: v128): v128; /** Extends the high 32-bit unsigned integer lanes to 64-bit unsigned integer lanes. */ export function extend_high_i32x4_u(a: v128): v128; + /** Performs the lane-wise 32-bit signed integer extended multiplication of the two lower lanes producing twice wider 64-bit integer results. */ + export function extmul_low_i32x4_s(a: v128, b: v128): v128; + /** Performs the lane-wise 32-bit unsigned integer extended multiplication of the two lower lanes producing twice wider 64-bit integer results. */ + export function extmul_low_i32x4_u(a: v128, b: v128): v128; + /** Performs the lane-wise 32-bit signed integer extended multiplication of the two higher lanes producing twice wider 64-bit integer results. */ + export function extmul_high_i32x4_s(a: v128, b: v128): v128; + /** Performs the lane-wise 32-bit unsigned integer extended multiplication of the two higher lanes producing twice wider 64-bit integer results. */ + export function extmul_high_i32x4_u(a: v128, b: v128): v128; } /** Initializes a 128-bit vector from four 32-bit float values. Arguments must be compile-time constants. */ declare function f32x4(a: f32, b: f32, c: f32, d: f32): v128; @@ -1151,10 +1231,12 @@ declare namespace f32x4 { export function gt(a: v128, b: v128): v128; /** Computes which 32-bit float lanes of the first vector are greater than or equal those of the second. */ export function ge(a: v128, b: v128): v128; - /** Converts each 32-bit signed integer lane of a vector to floating point. */ + /** Converts each 32-bit signed integer lane of a vector to single-precision floating point. */ export function convert_i32x4_s(a: v128): v128; - /** Converts each 32-bit unsigned integer lane of a vector to floating point. */ + /** Converts each 32-bit unsigned integer lane of a vector to single-precision floating point. */ export function convert_i32x4_u(a: v128): v128; + /** Demotes each 64-bit float lane of a vector to single-precision. The higher lanes of the result are initialized to zero. */ + export function demote_f64x2_zero(a: v128): v128; } /** Initializes a 128-bit vector from two 64-bit float values. Arguments must be compile-time constants. */ declare function f64x2(a: f64, b: f64): v128; @@ -1207,6 +1289,12 @@ declare namespace f64x2 { export function gt(a: v128, b: v128): v128; /** Computes which 64-bit float lanes of the first vector are greater than or equal those of the second. */ export function ge(a: v128, b: v128): v128; + /** Converts the low 32-bit signed integer lanes of a vector to double-precision floating point. */ + export function convert_low_i32x4_s(a: v128): v128; + /** Converts the low 32-bit unsigned integer lanes of a vector to double-precision floating point. */ + export function convert_low_i32x4_u(a: v128): v128; + /** Promotes the low 32-bit float lanes of a vector to double-precision. */ + export function promote_low_f32x4(a: v128): v128; } declare abstract class i31 { @@ -1310,9 +1398,9 @@ declare function INFO(message?: any): void; // Polyfills /** Performs the sign-agnostic reverse bytes **/ -declare function bswap(value: T): T; +declare function bswap(value: T): T; /** Performs the sign-agnostic reverse bytes only for last 16-bit **/ -declare function bswap16(value: T): T; +declare function bswap16(value: T): T; // Standard library @@ -1363,17 +1451,17 @@ declare namespace table { } declare namespace Atomics { - export function load(array: TypedArray, index: i32): T; - export function store(array: TypedArray, index: i32, value: T): void; - export function add(array: TypedArray, index: i32, value: T): T; - export function sub(array: TypedArray, index: i32, value: T): T; - export function and(array: TypedArray, index: i32, value: T): T; - export function or(array: TypedArray, index: i32, value: T): T; - export function xor(array: TypedArray, index: i32, value: T): T; - export function exchange(array: TypedArray, index: i32, value: T): T; - export function compareExchange(array: TypedArray, index: i32, expectedValue: T, replacementValue: T): T; - export function wait(array: TypedArray, value: T, timeout?: i64): AtomicWaitResult; - export function notify(array: TypedArray, index: i32, count?: i32): i32; + export function load(array: TypedArray, index: i32): T; + export function store(array: TypedArray, index: i32, value: T): void; + export function add(array: TypedArray, index: i32, value: T): T; + export function sub(array: TypedArray, index: i32, value: T): T; + export function and(array: TypedArray, index: i32, value: T): T; + export function or(array: TypedArray, index: i32, value: T): T; + export function xor(array: TypedArray, index: i32, value: T): T; + export function exchange(array: TypedArray, index: i32, value: T): T; + export function compareExchange(array: TypedArray, index: i32, expectedValue: T, replacementValue: T): T; + export function wait(array: TypedArray, value: T, timeout?: i64): AtomicWaitResult; + export function notify(array: TypedArray, index: i32, count?: i32): i32; /** The static Atomics.isLockFree() method is used to determine whether to use locks or atomic operations. It returns true, if the given size is one of the BYTES_PER_ELEMENT */ export function isLockFree(size: usize): bool; } diff --git a/tests/compiler/ReturnType.untouched.wat b/tests/compiler/ReturnType.untouched.wat index 7295676a6a..2b4b16b344 100644 --- a/tests/compiler/ReturnType.untouched.wat +++ b/tests/compiler/ReturnType.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:ReturnType diff --git a/tests/compiler/abi.untouched.wat b/tests/compiler/abi.untouched.wat index 7fc1dbbd14..5fe9545b1c 100644 --- a/tests/compiler/abi.untouched.wat +++ b/tests/compiler/abi.untouched.wat @@ -11,6 +11,7 @@ (memory $0 1) (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "exported" (func $abi/exported)) (export "exportedExported" (func $abi/exportedExported)) (export "exportedInternal" (func $abi/exportedInternal)) diff --git a/tests/compiler/asc-constants.untouched.wat b/tests/compiler/asc-constants.untouched.wat index 84c9b96c7b..c5c864dad8 100644 --- a/tests/compiler/asc-constants.untouched.wat +++ b/tests/compiler/asc-constants.untouched.wat @@ -22,6 +22,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:asc-constants diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index d964c72f7f..e2dc3c48a5 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17788)) (memory $0 1) diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index b36eed7921..1f7d895881 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -2,8 +2,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 380)) @@ -16,6 +16,7 @@ (data (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") (data (i32.const 252) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "testVar" (func $export:assert-nonnull/testVar)) (export "testObj" (func $export:assert-nonnull/testObj)) diff --git a/tests/compiler/assert.untouched.wat b/tests/compiler/assert.untouched.wat index e3cc57ce06..ed6a12d7d9 100644 --- a/tests/compiler/assert.untouched.wat +++ b/tests/compiler/assert.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:assert diff --git a/tests/compiler/binary.untouched.wat b/tests/compiler/binary.untouched.wat index a04f652302..ae76893ff6 100644 --- a/tests/compiler/binary.untouched.wat +++ b/tests/compiler/binary.untouched.wat @@ -1,7 +1,7 @@ (module - (type $none_=>_none (func)) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) + (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (global $binary/b (mut i32) (i32.const 0)) (global $binary/i (mut i32) (i32.const 0)) @@ -19,6 +19,7 @@ (data (i32.const 6152) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\0d\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") (data (i32.const 6408) "\00\00\00\00\00\00\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/bool.untouched.wat b/tests/compiler/bool.untouched.wat index 83b137716c..686fff0312 100644 --- a/tests/compiler/bool.untouched.wat +++ b/tests/compiler/bool.untouched.wat @@ -47,6 +47,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:bool diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 7fbac2e998..484aed31d6 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -2,8 +2,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (global $builtins/i (mut i32) (i32.const 0)) @@ -88,10 +88,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -123,13 +123,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 0a159788a5..41be717f90 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -4,8 +4,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (global $builtins/b (mut i32) (i32.const 0)) diff --git a/tests/compiler/call-inferred.untouched.wat b/tests/compiler/call-inferred.untouched.wat index c1e3dcf85a..11ec525b28 100644 --- a/tests/compiler/call-inferred.untouched.wat +++ b/tests/compiler/call-inferred.untouched.wat @@ -1,8 +1,8 @@ (module (type $f32_=>_f32 (func (param f32) (result f32))) (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $f64_=>_f64 (func (param f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) @@ -12,6 +12,7 @@ (memory $0 1) (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $call-inferred/foo (param $0 i32) (result i32) diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 0b47c2ca02..c5d0255ba3 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -1060,20 +1060,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1440 diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 6befd92c6d..8a4cce9c44 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -37,6 +37,7 @@ (data (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 464) "\0d\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\08\00\00\00 \00\00\00\00\00\00\00 \00\00\00\n\00\00\00 \00\00\00\00\00\00\00 \00\00\00\0c\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/class-extends.optimized.wat b/tests/compiler/class-extends.optimized.wat index e8ebfd1dce..c847b7d897 100644 --- a/tests/compiler/class-extends.optimized.wat +++ b/tests/compiler/class-extends.optimized.wat @@ -1,6 +1,6 @@ (module - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17408)) (memory $0 0) diff --git a/tests/compiler/class-extends.untouched.wat b/tests/compiler/class-extends.untouched.wat index 1a712a8ccf..7aaa540a05 100644 --- a/tests/compiler/class-extends.untouched.wat +++ b/tests/compiler/class-extends.untouched.wat @@ -1,14 +1,15 @@ (module - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__data_end i32 (i32.const 8)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "test" (func $export:class-extends/test)) (func $class-extends/A#set:a (param $0 i32) (param $1 i32) diff --git a/tests/compiler/class-implements.optimized.wat b/tests/compiler/class-implements.optimized.wat index 2f9bd4d153..d5f3ded218 100644 --- a/tests/compiler/class-implements.optimized.wat +++ b/tests/compiler/class-implements.optimized.wat @@ -1081,20 +1081,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/class-implements.untouched.wat b/tests/compiler/class-implements.untouched.wat index c800f325e9..b2fd1e69c1 100644 --- a/tests/compiler/class-implements.untouched.wat +++ b/tests/compiler/class-implements.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -41,6 +41,7 @@ (data (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00c\00l\00a\00s\00s\00-\00i\00m\00p\00l\00e\00m\00e\00n\00t\00s\00.\00t\00s\00\00\00\00\00\00\00") (data (i32.const 480) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\06\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "A" (global $class-implements/A)) (export "C" (global $class-implements/C)) (export "memory" (memory $0)) diff --git a/tests/compiler/class-overloading.optimized.wat b/tests/compiler/class-overloading.optimized.wat index 5567d28bdf..ab12f7647f 100644 --- a/tests/compiler/class-overloading.optimized.wat +++ b/tests/compiler/class-overloading.optimized.wat @@ -1119,20 +1119,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1424 @@ -1455,10 +1452,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -1490,13 +1487,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index d9b04b79c2..7030572e97 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $class-overloading/which (mut i32) (i32.const 32)) @@ -53,6 +53,7 @@ (data (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00n\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 768) "\11\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\03\00\00\00 \00\00\00\04\00\00\00 \00\00\00\04\00\00\00 \00\00\00\06\00\00\00 \00\00\00\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\t\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\0d\00\00\00 \00\00\00\10\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/class-static-function.optimized.wat b/tests/compiler/class-static-function.optimized.wat index e4453d54f3..0eb6807c75 100644 --- a/tests/compiler/class-static-function.optimized.wat +++ b/tests/compiler/class-static-function.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17532)) (memory $0 1) diff --git a/tests/compiler/class-static-function.untouched.wat b/tests/compiler/class-static-function.untouched.wat index a3e990ebad..1801c0100c 100644 --- a/tests/compiler/class-static-function.untouched.wat +++ b/tests/compiler/class-static-function.untouched.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 124)) diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index 00e4505136..21459e7b31 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -3,8 +3,8 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1067,20 +1067,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index 2e5c230a4d..ac65a7b27a 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -6,10 +6,10 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) + (type $i32_f32_f32_=>_f32 (func (param i32 f32 f32) (result f32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_f32_f32_=>_f32 (func (param i32 f32 f32) (result f32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $class/Animal.ONE (mut i32) (i32.const 1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -41,6 +41,7 @@ (data (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") (data (i32.const 512) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "testGenericInitializer" (func $class/testGenericInitializer)) (export "memory" (memory $0)) (export "test" (func $export:class/test)) diff --git a/tests/compiler/comma.untouched.wat b/tests/compiler/comma.untouched.wat index 0d51475231..df51ba253e 100644 --- a/tests/compiler/comma.untouched.wat +++ b/tests/compiler/comma.untouched.wat @@ -10,6 +10,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:comma diff --git a/tests/compiler/const-folding.untouched.wat b/tests/compiler/const-folding.untouched.wat index 08bab6bef5..7c4b547684 100644 --- a/tests/compiler/const-folding.untouched.wat +++ b/tests/compiler/const-folding.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "test" (func $const-folding/test)) (export "memory" (memory $0)) (func $const-folding/test (param $0 i64) (result i64) diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 4ee18b30f0..021c1d63c3 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -5,8 +5,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -1128,20 +1128,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index 789c4e77c3..b5949afb5d 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -47,6 +47,7 @@ (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 416) "\0d\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/continue.untouched.wat b/tests/compiler/continue.untouched.wat index d761e26421..30208a4fa3 100644 --- a/tests/compiler/continue.untouched.wat +++ b/tests/compiler/continue.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "testInherit" (func $continue/testInherit)) (export "memory" (memory $0)) (func $continue/testInherit (param $0 i32) diff --git a/tests/compiler/converge.untouched.wat b/tests/compiler/converge.untouched.wat index edbd3984ae..ef7546254f 100644 --- a/tests/compiler/converge.untouched.wat +++ b/tests/compiler/converge.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "test" (func $converge/test)) (export "memory" (memory $0)) (func $converge/test diff --git a/tests/compiler/declare.untouched.wat b/tests/compiler/declare.untouched.wat index 64ab9172a6..e2944babc5 100644 --- a/tests/compiler/declare.untouched.wat +++ b/tests/compiler/declare.untouched.wat @@ -12,6 +12,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:declare diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index ff4499d9e7..e76a121bf4 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1059,20 +1059,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1424 diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index c46b54bd39..8f777ea54e 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -3,8 +3,8 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -38,6 +38,7 @@ (data (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 448) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $do/testSimple diff --git a/tests/compiler/empty-exportruntime.optimized.wat b/tests/compiler/empty-exportruntime.optimized.wat index 384c13ef9e..747c93b33d 100644 --- a/tests/compiler/empty-exportruntime.optimized.wat +++ b/tests/compiler/empty-exportruntime.optimized.wat @@ -1,10 +1,10 @@ (module - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1078,20 +1078,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/empty-exportruntime.untouched.wat b/tests/compiler/empty-exportruntime.untouched.wat index 44b8e896a9..ab3b34728b 100644 --- a/tests/compiler/empty-exportruntime.untouched.wat +++ b/tests/compiler/empty-exportruntime.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -38,6 +38,7 @@ (data (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") (data (i32.const 544) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "__new" (func $~lib/rt/itcms/__new)) (export "__pin" (func $~lib/rt/itcms/__pin)) (export "__unpin" (func $~lib/rt/itcms/__unpin)) diff --git a/tests/compiler/empty-new.optimized.wat b/tests/compiler/empty-new.optimized.wat index 5fbdc37ce1..484a9d20b8 100644 --- a/tests/compiler/empty-new.optimized.wat +++ b/tests/compiler/empty-new.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -1055,20 +1055,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/empty-new.untouched.wat b/tests/compiler/empty-new.untouched.wat index 1c448c7157..01f6f1e0ac 100644 --- a/tests/compiler/empty-new.untouched.wat +++ b/tests/compiler/empty-new.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -36,6 +36,7 @@ (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 416) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/empty.untouched.wat b/tests/compiler/empty.untouched.wat index 700fa1f9a6..f4d95ad56d 100644 --- a/tests/compiler/empty.untouched.wat +++ b/tests/compiler/empty.untouched.wat @@ -4,5 +4,6 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) ) diff --git a/tests/compiler/enum.untouched.wat b/tests/compiler/enum.untouched.wat index e829591565..5a2b7f189c 100644 --- a/tests/compiler/enum.untouched.wat +++ b/tests/compiler/enum.untouched.wat @@ -37,6 +37,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "Implicit.ZERO" (global $enum/Implicit.ZERO)) (export "Implicit.ONE" (global $enum/Implicit.ONE)) (export "Implicit.TWO" (global $enum/Implicit.TWO)) diff --git a/tests/compiler/export-default.untouched.wat b/tests/compiler/export-default.untouched.wat index 592f90a931..649647c6a1 100644 --- a/tests/compiler/export-default.untouched.wat +++ b/tests/compiler/export-default.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "theDefault" (func $export-default/theDefault)) (export "default" (func $export-default/theDefault)) (export "memory" (memory $0)) diff --git a/tests/compiler/export.untouched.wat b/tests/compiler/export.untouched.wat index 938d6b7541..75fdad29c7 100644 --- a/tests/compiler/export.untouched.wat +++ b/tests/compiler/export.untouched.wat @@ -9,6 +9,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "add" (func $export/add)) (export "sub" (func $export/sub)) (export "renamed_mul" (func $export/mul)) diff --git a/tests/compiler/exportimport-table.optimized.wat b/tests/compiler/exportimport-table.optimized.wat index fa1ffca691..d2ea0fc1a9 100644 --- a/tests/compiler/exportimport-table.optimized.wat +++ b/tests/compiler/exportimport-table.optimized.wat @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) (import "env" "table" (table $0 2 funcref)) - (elem $0 (i32.const 1) $start:exportimport-table~anonymous|0) (memory $0 1) (data (i32.const 1036) "\1c") (data (i32.const 1048) "\03\00\00\00\08\00\00\00\01") + (elem $0 (i32.const 1) $start:exportimport-table~anonymous|0) (export "memory" (memory $0)) (export "table" (table $0)) (func $start:exportimport-table~anonymous|0 diff --git a/tests/compiler/exportimport-table.untouched.wat b/tests/compiler/exportimport-table.untouched.wat index 05ce6bc9db..421b929e98 100644 --- a/tests/compiler/exportimport-table.untouched.wat +++ b/tests/compiler/exportimport-table.untouched.wat @@ -1,13 +1,13 @@ (module (type $none_=>_none (func)) (import "env" "table" (table $0 2 funcref)) - (elem $0 (i32.const 1) $start:exportimport-table~anonymous|0) (global $exportimport-table/f (mut i32) (i32.const 32)) (global $~lib/memory/__data_end i32 (i32.const 44)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16428)) (global $~lib/memory/__heap_base i32 (i32.const 16428)) (memory $0 1) (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (elem $0 (i32.const 1) $start:exportimport-table~anonymous|0) (export "memory" (memory $0)) (export "table" (table $0)) (start $~start) diff --git a/tests/compiler/exports-lazy.untouched.wat b/tests/compiler/exports-lazy.untouched.wat index e00bcae142..4a986f6f5a 100644 --- a/tests/compiler/exports-lazy.untouched.wat +++ b/tests/compiler/exports-lazy.untouched.wat @@ -8,6 +8,7 @@ (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") (data (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00 \00\00\00 \00\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "lazyGlobalUsed" (global $exports-lazy/lazyGlobalUsed)) (export "memory" (memory $0)) (start $~start) diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 6fb24412b0..2cf25a16cf 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -1,11 +1,11 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $exports/Animal.CAT i32 (i32.const 0)) @@ -1109,20 +1109,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 2cbadeb9c2..ba6f0c0360 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -4,8 +4,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -49,6 +49,7 @@ (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 416) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "add" (func $exports/add)) (export "subOpt" (func $exports/subOpt@varargs)) (export "math.sub" (func $exports/math.sub)) diff --git a/tests/compiler/exportstar-rereexport.optimized.wat b/tests/compiler/exportstar-rereexport.optimized.wat index 3a4fed4ce2..bcd18ce5fb 100644 --- a/tests/compiler/exportstar-rereexport.optimized.wat +++ b/tests/compiler/exportstar-rereexport.optimized.wat @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1110,20 +1110,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1440 diff --git a/tests/compiler/exportstar-rereexport.untouched.wat b/tests/compiler/exportstar-rereexport.untouched.wat index 541d842408..a5edbf7713 100644 --- a/tests/compiler/exportstar-rereexport.untouched.wat +++ b/tests/compiler/exportstar-rereexport.untouched.wat @@ -6,8 +6,8 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -47,6 +47,7 @@ (data (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00") (data (i32.const 512) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "a" (global $export/a)) (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) diff --git a/tests/compiler/exportstar.untouched.wat b/tests/compiler/exportstar.untouched.wat index 938d6b7541..75fdad29c7 100644 --- a/tests/compiler/exportstar.untouched.wat +++ b/tests/compiler/exportstar.untouched.wat @@ -9,6 +9,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "add" (func $export/add)) (export "sub" (func $export/sub)) (export "renamed_mul" (func $export/mul)) diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index d9ed3e5763..9a9a7d655a 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -5,8 +5,8 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -1074,20 +1074,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1552 @@ -1765,14 +1762,11 @@ i32.eqz i32.eq if + local.get $0 + local.get $1 local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + select + call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index 40892c936a..89042890f3 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -7,8 +7,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_f64_=>_none (func (param i32 f64))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $extends-baseaggregate/poolB i32 (i32.const 64)) (global $extends-baseaggregate/poolA i32 (i32.const 144)) @@ -45,6 +45,7 @@ (data (i32.const 620) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") (data (i32.const 672) "\t\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/extends-recursive.optimized.wat b/tests/compiler/extends-recursive.optimized.wat index 55a6862b84..af4f07d9b4 100644 --- a/tests/compiler/extends-recursive.optimized.wat +++ b/tests/compiler/extends-recursive.optimized.wat @@ -1,6 +1,6 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -1062,20 +1062,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/extends-recursive.untouched.wat b/tests/compiler/extends-recursive.untouched.wat index 818f5cd865..dabc4a9489 100644 --- a/tests/compiler/extends-recursive.untouched.wat +++ b/tests/compiler/extends-recursive.untouched.wat @@ -2,12 +2,12 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -37,6 +37,7 @@ (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 416) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "Child" (global $extends-recursive/Child)) (export "memory" (memory $0)) (export "Child#get:child" (func $export:extends-recursive/Parent#get:child)) diff --git a/tests/compiler/external.untouched.wat b/tests/compiler/external.untouched.wat index 20a24519ae..8931a5f95f 100644 --- a/tests/compiler/external.untouched.wat +++ b/tests/compiler/external.untouched.wat @@ -10,6 +10,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "foo" (func $external/foo)) (export "foo.bar" (func $external/foo.bar)) (export "two" (func $external/two)) diff --git a/tests/compiler/features/gc.untouched.wat b/tests/compiler/features/gc.untouched.wat index db88d87b6e..cedb0b1868 100644 --- a/tests/compiler/features/gc.untouched.wat +++ b/tests/compiler/features/gc.untouched.wat @@ -9,6 +9,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00g\00c\00.\00t\00s\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $features/gc/test_i31 diff --git a/tests/compiler/features/js-bigint-integration.optimized.wat b/tests/compiler/features/js-bigint-integration.optimized.wat index 4231515e14..66c0fd825a 100644 --- a/tests/compiler/features/js-bigint-integration.optimized.wat +++ b/tests/compiler/features/js-bigint-integration.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_i64 (func (result i64))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "js-bigint-integration" "externalValue" (global $features/js-bigint-integration/externalValue i64)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "js-bigint-integration" "getExternalValue" (func $features/js-bigint-integration/getExternalValue (result i64))) diff --git a/tests/compiler/features/js-bigint-integration.untouched.wat b/tests/compiler/features/js-bigint-integration.untouched.wat index d628812e98..6701fd6e66 100644 --- a/tests/compiler/features/js-bigint-integration.untouched.wat +++ b/tests/compiler/features/js-bigint-integration.untouched.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $none_=>_i64 (func (result i64))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "js-bigint-integration" "externalValue" (global $features/js-bigint-integration/externalValue i64)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -13,6 +13,7 @@ (memory $0 1) (data (i32.const 12) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00B\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00j\00s\00-\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "internalValue" (global $features/js-bigint-integration/internalValue)) (export "getInternalValue" (func $features/js-bigint-integration/getInternalValue)) (export "memory" (memory $0)) diff --git a/tests/compiler/features/mutable-globals.optimized.wat b/tests/compiler/features/mutable-globals.optimized.wat index 1998b865b1..3830fabfa0 100644 --- a/tests/compiler/features/mutable-globals.optimized.wat +++ b/tests/compiler/features/mutable-globals.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "mutable-globals" "external" (global $features/mutable-globals/external (mut i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $features/mutable-globals/internal (mut i32) (i32.const 124)) diff --git a/tests/compiler/features/mutable-globals.untouched.wat b/tests/compiler/features/mutable-globals.untouched.wat index 9fe4547333..9138b7a324 100644 --- a/tests/compiler/features/mutable-globals.untouched.wat +++ b/tests/compiler/features/mutable-globals.untouched.wat @@ -11,6 +11,7 @@ (memory $0 1) (data (i32.const 12) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "external" (global $features/mutable-globals/external)) (export "internal" (global $features/mutable-globals/internal)) (export "memory" (memory $0)) diff --git a/tests/compiler/features/nontrapping-f2i.untouched.wat b/tests/compiler/features/nontrapping-f2i.untouched.wat index 41322cd1b1..0b8a046ea5 100644 --- a/tests/compiler/features/nontrapping-f2i.untouched.wat +++ b/tests/compiler/features/nontrapping-f2i.untouched.wat @@ -18,6 +18,7 @@ (global $~started (mut i32) (i32.const 0)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $start:features/nontrapping-f2i diff --git a/tests/compiler/features/reference-types.optimized.wat b/tests/compiler/features/reference-types.optimized.wat index ad1aeab5ba..08cc0284c4 100644 --- a/tests/compiler/features/reference-types.optimized.wat +++ b/tests/compiler/features/reference-types.optimized.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $none_=>_externref (func (result externref))) (type $externref_=>_externref (func (param externref) (result externref))) - (type $externref_=>_none (func (param externref))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $externref_externref_=>_i32 (func (param externref externref) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $externref_=>_none (func (param externref))) (type $externref_externref_=>_externref (func (param externref externref) (result externref))) (import "reference-types" "someObject" (global $features/reference-types/someObject externref)) (import "reference-types" "someKey" (global $features/reference-types/someKey externref)) diff --git a/tests/compiler/features/reference-types.untouched.wat b/tests/compiler/features/reference-types.untouched.wat index 513ece05f6..2d1c5e28d6 100644 --- a/tests/compiler/features/reference-types.untouched.wat +++ b/tests/compiler/features/reference-types.untouched.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $none_=>_externref (func (result externref))) (type $externref_=>_externref (func (param externref) (result externref))) - (type $externref_=>_none (func (param externref))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $externref_externref_=>_i32 (func (param externref externref) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $externref_=>_none (func (param externref))) (type $externref_externref_=>_externref (func (param externref externref) (result externref))) (import "reference-types" "someObject" (global $features/reference-types/someObject externref)) (import "reference-types" "someKey" (global $features/reference-types/someKey externref)) @@ -28,6 +28,7 @@ (memory $0 1) (data (i32.const 12) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (elem declare func $features/reference-types/someFunc) (export "external" (func $features/reference-types/external)) (export "somethingReal" (func $features/reference-types/somethingReal)) diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index 23951f2632..858a098d31 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -2,10 +2,10 @@ (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (memory $0 1) @@ -974,20 +974,17 @@ local.get $0 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $0 select if (result i32) + i32.const 1 + else local.get $1 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1056 @@ -1099,12 +1096,54 @@ end local.get $0 call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 42 + i32.store + local.get $0 + v128.load32_zero + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x0000002a + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 99 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i64.const 42 + i64.store + local.get $0 + v128.load64_zero + v128.const i32x4 0x00000000 0x00000000 0x0000002a 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 109 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free ) (func $~start call $features/simd/test_v128 i32.const 0 i32.const 1184 - i32.const 225 + i32.const 255 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index a392ccaef0..82479c7825 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -93,6 +93,36 @@ function test_v128(): void { ); __free(ptr); } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load32_zero(ptr) + == + v128(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0) + ); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load64_zero(ptr) + == + v128(0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0) + ); + __free(ptr); + } + // TODO: missing C-API in Binaryen (see also passes/pass.ts) + // v128.load8_lane + // v128.load16_lane + // v128.load32_lane + // v128.load64_lane + // v128.store8_lane + // v128.store16_lane + // v128.store32_lane + // v128.store64_lane + // generic operations are tested by the aliases below already } @@ -363,6 +393,15 @@ function test_i16x8(): void { ); __free(ptr); } + + // TODO: unimp in Binaryen's interpreter + i16x8.extadd_pairwise_i8x16_s(a); + i16x8.extadd_pairwise_i8x16_u(a); + i16x8.q15mulr_sat_s(a, a); + i16x8.extmul_low_i8x16_s(a, a); + i16x8.extmul_low_i8x16_u(a, a); + i16x8.extmul_high_i8x16_s(a, a); + i16x8.extmul_high_i8x16_u(a, a); } function test_i32x4(): void { @@ -482,6 +521,16 @@ function test_i32x4(): void { ); __free(ptr); } + + // TODO: unimp in Binaryen's interpreter + i32x4.extadd_pairwise_i16x8_s(a); + i32x4.extadd_pairwise_i16x8_u(a); + i32x4.trunc_sat_f64x2_s_zero(a); + i32x4.trunc_sat_f64x2_u_zero(a); + i32x4.extmul_low_i16x8_s(a, a); + i32x4.extmul_low_i16x8_u(a, a); + i32x4.extmul_high_i16x8_s(a, a); + i32x4.extmul_high_i16x8_u(a, a); } function test_i64x2(): void { @@ -531,6 +580,10 @@ function test_i64x2(): void { ); __free(ptr); } + i64x2.extmul_low_i32x4_s(a, a); + i64x2.extmul_low_i32x4_u(a, a); + i64x2.extmul_high_i32x4_s(a, a); + i64x2.extmul_high_i32x4_u(a, a); } function test_f32x4(): void { @@ -582,6 +635,9 @@ function test_f32x4(): void { == f32x4.splat(4294967296.0) ); + + // TODO: unimp in Binaryen's interpreter + f32x4.demote_f64x2_zero(a); } function test_f64x2(): void { @@ -623,6 +679,11 @@ function test_f64x2(): void { assert(f64x2.max(negOne, one) == one); assert(f64x2.abs(negOne) == one); assert(f64x2.sqrt(f64x2(4.0, 9.0)) == f64x2(2.0, 3.0)); + + // TODO: unimp in Binaryen's interpreter + f64x2.convert_low_i32x4_s(a); + f64x2.convert_low_i32x4_u(a); + f64x2.promote_low_f32x4(a); } function test_const(): v128 { diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index dc3cbaac59..cd31cbe413 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -3,10 +3,10 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_v128 (func (result v128))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 1)) @@ -25,6 +25,7 @@ (data (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") (data (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) @@ -1622,6 +1623,54 @@ end local.get $0 call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $0 + local.get $0 + i32.const 42 + i32.store + local.get $0 + v128.load32_zero + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x0000002a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 99 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $0 + local.get $0 + i64.const 42 + i64.store + local.get $0 + v128.load64_zero + v128.const i32x4 0x00000000 0x00000000 0x0000002a 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 109 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free ) (func $features/simd/test_i8x16 (local $0 v128) @@ -1646,7 +1695,7 @@ if i32.const 0 i32.const 160 - i32.const 101 + i32.const 131 i32.const 3 call $~lib/builtins/abort unreachable @@ -1664,7 +1713,7 @@ if i32.const 0 i32.const 160 - i32.const 103 + i32.const 133 i32.const 3 call $~lib/builtins/abort unreachable @@ -1683,7 +1732,7 @@ if i32.const 0 i32.const 160 - i32.const 105 + i32.const 135 i32.const 3 call $~lib/builtins/abort unreachable @@ -1700,7 +1749,7 @@ if i32.const 0 i32.const 160 - i32.const 106 + i32.const 136 i32.const 3 call $~lib/builtins/abort unreachable @@ -1761,7 +1810,7 @@ if i32.const 0 i32.const 160 - i32.const 147 + i32.const 177 i32.const 3 call $~lib/builtins/abort unreachable @@ -1778,7 +1827,7 @@ if i32.const 0 i32.const 160 - i32.const 152 + i32.const 182 i32.const 3 call $~lib/builtins/abort unreachable @@ -1795,7 +1844,7 @@ if i32.const 0 i32.const 160 - i32.const 153 + i32.const 183 i32.const 3 call $~lib/builtins/abort unreachable @@ -1810,7 +1859,7 @@ if i32.const 0 i32.const 160 - i32.const 154 + i32.const 184 i32.const 3 call $~lib/builtins/abort unreachable @@ -1827,7 +1876,7 @@ if i32.const 0 i32.const 160 - i32.const 155 + i32.const 185 i32.const 3 call $~lib/builtins/abort unreachable @@ -1844,7 +1893,7 @@ if i32.const 0 i32.const 160 - i32.const 160 + i32.const 190 i32.const 3 call $~lib/builtins/abort unreachable @@ -1968,7 +2017,7 @@ if i32.const 0 i32.const 160 - i32.const 198 + i32.const 228 i32.const 3 call $~lib/builtins/abort unreachable @@ -1985,7 +2034,7 @@ if i32.const 0 i32.const 160 - i32.const 199 + i32.const 229 i32.const 3 call $~lib/builtins/abort unreachable @@ -2002,7 +2051,7 @@ if i32.const 0 i32.const 160 - i32.const 200 + i32.const 230 i32.const 3 call $~lib/builtins/abort unreachable @@ -2019,7 +2068,7 @@ if i32.const 0 i32.const 160 - i32.const 201 + i32.const 231 i32.const 3 call $~lib/builtins/abort unreachable @@ -2036,7 +2085,7 @@ if i32.const 0 i32.const 160 - i32.const 202 + i32.const 232 i32.const 3 call $~lib/builtins/abort unreachable @@ -2053,7 +2102,7 @@ if i32.const 0 i32.const 160 - i32.const 203 + i32.const 233 i32.const 3 call $~lib/builtins/abort unreachable @@ -2070,7 +2119,7 @@ if i32.const 0 i32.const 160 - i32.const 204 + i32.const 234 i32.const 3 call $~lib/builtins/abort unreachable @@ -2087,7 +2136,7 @@ if i32.const 0 i32.const 160 - i32.const 205 + i32.const 235 i32.const 3 call $~lib/builtins/abort unreachable @@ -2104,7 +2153,7 @@ if i32.const 0 i32.const 160 - i32.const 206 + i32.const 236 i32.const 3 call $~lib/builtins/abort unreachable @@ -2121,7 +2170,7 @@ if i32.const 0 i32.const 160 - i32.const 207 + i32.const 237 i32.const 3 call $~lib/builtins/abort unreachable @@ -2166,7 +2215,7 @@ if i32.const 0 i32.const 160 - i32.const 213 + i32.const 243 i32.const 5 call $~lib/builtins/abort unreachable @@ -2185,7 +2234,7 @@ if i32.const 0 i32.const 160 - i32.const 219 + i32.const 249 i32.const 5 call $~lib/builtins/abort unreachable @@ -2201,7 +2250,7 @@ if i32.const 0 i32.const 160 - i32.const 225 + i32.const 255 i32.const 3 call $~lib/builtins/abort unreachable @@ -2228,7 +2277,7 @@ if i32.const 0 i32.const 160 - i32.const 230 + i32.const 260 i32.const 3 call $~lib/builtins/abort unreachable @@ -2246,7 +2295,7 @@ if i32.const 0 i32.const 160 - i32.const 232 + i32.const 262 i32.const 3 call $~lib/builtins/abort unreachable @@ -2265,7 +2314,7 @@ if i32.const 0 i32.const 160 - i32.const 234 + i32.const 264 i32.const 3 call $~lib/builtins/abort unreachable @@ -2282,7 +2331,7 @@ if i32.const 0 i32.const 160 - i32.const 235 + i32.const 265 i32.const 3 call $~lib/builtins/abort unreachable @@ -2299,7 +2348,7 @@ if i32.const 0 i32.const 160 - i32.const 236 + i32.const 266 i32.const 3 call $~lib/builtins/abort unreachable @@ -2360,7 +2409,7 @@ if i32.const 0 i32.const 160 - i32.const 277 + i32.const 307 i32.const 3 call $~lib/builtins/abort unreachable @@ -2377,7 +2426,7 @@ if i32.const 0 i32.const 160 - i32.const 282 + i32.const 312 i32.const 3 call $~lib/builtins/abort unreachable @@ -2394,7 +2443,7 @@ if i32.const 0 i32.const 160 - i32.const 283 + i32.const 313 i32.const 3 call $~lib/builtins/abort unreachable @@ -2409,7 +2458,7 @@ if i32.const 0 i32.const 160 - i32.const 284 + i32.const 314 i32.const 3 call $~lib/builtins/abort unreachable @@ -2426,7 +2475,7 @@ if i32.const 0 i32.const 160 - i32.const 285 + i32.const 315 i32.const 3 call $~lib/builtins/abort unreachable @@ -2443,7 +2492,7 @@ if i32.const 0 i32.const 160 - i32.const 290 + i32.const 320 i32.const 3 call $~lib/builtins/abort unreachable @@ -2567,7 +2616,7 @@ if i32.const 0 i32.const 160 - i32.const 328 + i32.const 358 i32.const 3 call $~lib/builtins/abort unreachable @@ -2584,7 +2633,7 @@ if i32.const 0 i32.const 160 - i32.const 329 + i32.const 359 i32.const 3 call $~lib/builtins/abort unreachable @@ -2601,7 +2650,7 @@ if i32.const 0 i32.const 160 - i32.const 330 + i32.const 360 i32.const 3 call $~lib/builtins/abort unreachable @@ -2618,7 +2667,7 @@ if i32.const 0 i32.const 160 - i32.const 331 + i32.const 361 i32.const 3 call $~lib/builtins/abort unreachable @@ -2635,7 +2684,7 @@ if i32.const 0 i32.const 160 - i32.const 332 + i32.const 362 i32.const 3 call $~lib/builtins/abort unreachable @@ -2652,7 +2701,7 @@ if i32.const 0 i32.const 160 - i32.const 333 + i32.const 363 i32.const 3 call $~lib/builtins/abort unreachable @@ -2669,7 +2718,7 @@ if i32.const 0 i32.const 160 - i32.const 334 + i32.const 364 i32.const 3 call $~lib/builtins/abort unreachable @@ -2686,7 +2735,7 @@ if i32.const 0 i32.const 160 - i32.const 335 + i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable @@ -2703,7 +2752,7 @@ if i32.const 0 i32.const 160 - i32.const 336 + i32.const 366 i32.const 3 call $~lib/builtins/abort unreachable @@ -2720,7 +2769,7 @@ if i32.const 0 i32.const 160 - i32.const 337 + i32.const 367 i32.const 3 call $~lib/builtins/abort unreachable @@ -2835,7 +2884,7 @@ if i32.const 0 i32.const 160 - i32.const 354 + i32.const 384 i32.const 5 call $~lib/builtins/abort unreachable @@ -2851,13 +2900,39 @@ if i32.const 0 i32.const 160 - i32.const 359 + i32.const 389 i32.const 5 call $~lib/builtins/abort unreachable end local.get $7 call $~lib/rt/tlsf/__free + local.get $0 + i16x8.extadd_pairwise_i8x16_s + drop + local.get $0 + i16x8.extadd_pairwise_i8x16_u + drop + local.get $0 + local.get $0 + i16x8.q15mulr_sat_s + drop + local.get $0 + local.get $0 + i16x8.extmul_low_i8x16_s + drop + local.get $0 + local.get $0 + i16x8.extmul_low_i8x16_u + drop + local.get $0 + local.get $0 + i16x8.extmul_high_i8x16_s + drop + local.get $0 + local.get $0 + i16x8.extmul_high_i8x16_u + drop ) (func $features/simd/test_i32x4 (local $0 v128) @@ -2880,7 +2955,7 @@ if i32.const 0 i32.const 160 - i32.const 370 + i32.const 409 i32.const 3 call $~lib/builtins/abort unreachable @@ -2898,7 +2973,7 @@ if i32.const 0 i32.const 160 - i32.const 372 + i32.const 411 i32.const 3 call $~lib/builtins/abort unreachable @@ -2917,7 +2992,7 @@ if i32.const 0 i32.const 160 - i32.const 374 + i32.const 413 i32.const 3 call $~lib/builtins/abort unreachable @@ -2934,7 +3009,7 @@ if i32.const 0 i32.const 160 - i32.const 375 + i32.const 414 i32.const 3 call $~lib/builtins/abort unreachable @@ -2951,7 +3026,7 @@ if i32.const 0 i32.const 160 - i32.const 376 + i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable @@ -3012,7 +3087,7 @@ if i32.const 0 i32.const 160 - i32.const 417 + i32.const 456 i32.const 3 call $~lib/builtins/abort unreachable @@ -3025,7 +3100,7 @@ if i32.const 0 i32.const 160 - i32.const 422 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable @@ -3038,7 +3113,7 @@ if i32.const 0 i32.const 160 - i32.const 423 + i32.const 462 i32.const 3 call $~lib/builtins/abort unreachable @@ -3055,7 +3130,7 @@ if i32.const 0 i32.const 160 - i32.const 424 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable @@ -3072,7 +3147,7 @@ if i32.const 0 i32.const 160 - i32.const 429 + i32.const 468 i32.const 3 call $~lib/builtins/abort unreachable @@ -3152,7 +3227,7 @@ if i32.const 0 i32.const 160 - i32.const 443 + i32.const 482 i32.const 3 call $~lib/builtins/abort unreachable @@ -3169,7 +3244,7 @@ if i32.const 0 i32.const 160 - i32.const 444 + i32.const 483 i32.const 3 call $~lib/builtins/abort unreachable @@ -3186,7 +3261,7 @@ if i32.const 0 i32.const 160 - i32.const 445 + i32.const 484 i32.const 3 call $~lib/builtins/abort unreachable @@ -3203,7 +3278,7 @@ if i32.const 0 i32.const 160 - i32.const 446 + i32.const 485 i32.const 3 call $~lib/builtins/abort unreachable @@ -3220,7 +3295,7 @@ if i32.const 0 i32.const 160 - i32.const 447 + i32.const 486 i32.const 3 call $~lib/builtins/abort unreachable @@ -3237,7 +3312,7 @@ if i32.const 0 i32.const 160 - i32.const 448 + i32.const 487 i32.const 3 call $~lib/builtins/abort unreachable @@ -3254,7 +3329,7 @@ if i32.const 0 i32.const 160 - i32.const 449 + i32.const 488 i32.const 3 call $~lib/builtins/abort unreachable @@ -3271,7 +3346,7 @@ if i32.const 0 i32.const 160 - i32.const 450 + i32.const 489 i32.const 3 call $~lib/builtins/abort unreachable @@ -3288,7 +3363,7 @@ if i32.const 0 i32.const 160 - i32.const 451 + i32.const 490 i32.const 3 call $~lib/builtins/abort unreachable @@ -3305,7 +3380,7 @@ if i32.const 0 i32.const 160 - i32.const 452 + i32.const 491 i32.const 3 call $~lib/builtins/abort unreachable @@ -3404,7 +3479,7 @@ if i32.const 0 i32.const 160 - i32.const 473 + i32.const 512 i32.const 5 call $~lib/builtins/abort unreachable @@ -3420,13 +3495,41 @@ if i32.const 0 i32.const 160 - i32.const 478 + i32.const 517 i32.const 5 call $~lib/builtins/abort unreachable end local.get $7 call $~lib/rt/tlsf/__free + local.get $0 + i32x4.extadd_pairwise_i16x8_s + drop + local.get $0 + i32x4.extadd_pairwise_i16x8_u + drop + local.get $0 + i32x4.trunc_sat_f64x2_s_zero + drop + local.get $0 + i32x4.trunc_sat_f64x2_u_zero + drop + local.get $0 + local.get $0 + i32x4.extmul_low_i16x8_s + drop + local.get $0 + local.get $0 + i32x4.extmul_low_i16x8_u + drop + local.get $0 + local.get $0 + i32x4.extmul_high_i16x8_s + drop + local.get $0 + local.get $0 + i32x4.extmul_high_i16x8_u + drop ) (func $features/simd/test_i64x2 (local $0 v128) @@ -3445,7 +3548,7 @@ if i32.const 0 i32.const 160 - i32.const 489 + i32.const 538 i32.const 3 call $~lib/builtins/abort unreachable @@ -3463,7 +3566,7 @@ if i32.const 0 i32.const 160 - i32.const 491 + i32.const 540 i32.const 3 call $~lib/builtins/abort unreachable @@ -3482,7 +3585,7 @@ if i32.const 0 i32.const 160 - i32.const 493 + i32.const 542 i32.const 3 call $~lib/builtins/abort unreachable @@ -3499,7 +3602,7 @@ if i32.const 0 i32.const 160 - i32.const 494 + i32.const 543 i32.const 3 call $~lib/builtins/abort unreachable @@ -3516,7 +3619,7 @@ if i32.const 0 i32.const 160 - i32.const 495 + i32.const 544 i32.const 3 call $~lib/builtins/abort unreachable @@ -3532,7 +3635,7 @@ if i32.const 0 i32.const 160 - i32.const 496 + i32.const 545 i32.const 3 call $~lib/builtins/abort unreachable @@ -3545,7 +3648,7 @@ if i32.const 0 i32.const 160 - i32.const 501 + i32.const 550 i32.const 3 call $~lib/builtins/abort unreachable @@ -3558,7 +3661,7 @@ if i32.const 0 i32.const 160 - i32.const 502 + i32.const 551 i32.const 3 call $~lib/builtins/abort unreachable @@ -3575,7 +3678,7 @@ if i32.const 0 i32.const 160 - i32.const 503 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable @@ -3592,7 +3695,7 @@ if i32.const 0 i32.const 160 - i32.const 508 + i32.const 557 i32.const 3 call $~lib/builtins/abort unreachable @@ -3665,7 +3768,7 @@ if i32.const 0 i32.const 160 - i32.const 522 + i32.const 571 i32.const 5 call $~lib/builtins/abort unreachable @@ -3681,13 +3784,29 @@ if i32.const 0 i32.const 160 - i32.const 527 + i32.const 576 i32.const 5 call $~lib/builtins/abort unreachable end local.get $3 call $~lib/rt/tlsf/__free + local.get $0 + local.get $0 + i64x2.extmul_low_i32x4_s + drop + local.get $0 + local.get $0 + i64x2.extmul_low_i32x4_u + drop + local.get $0 + local.get $0 + i64x2.extmul_high_i32x4_s + drop + local.get $0 + local.get $0 + i64x2.extmul_high_i32x4_u + drop ) (func $features/simd/test_f32x4 (local $0 v128) @@ -3710,7 +3829,7 @@ if i32.const 0 i32.const 160 - i32.const 538 + i32.const 591 i32.const 3 call $~lib/builtins/abort unreachable @@ -3728,7 +3847,7 @@ if i32.const 0 i32.const 160 - i32.const 540 + i32.const 593 i32.const 3 call $~lib/builtins/abort unreachable @@ -3747,7 +3866,7 @@ if i32.const 0 i32.const 160 - i32.const 542 + i32.const 595 i32.const 3 call $~lib/builtins/abort unreachable @@ -3764,7 +3883,7 @@ if i32.const 0 i32.const 160 - i32.const 543 + i32.const 596 i32.const 3 call $~lib/builtins/abort unreachable @@ -3781,7 +3900,7 @@ if i32.const 0 i32.const 160 - i32.const 544 + i32.const 597 i32.const 3 call $~lib/builtins/abort unreachable @@ -3802,7 +3921,7 @@ if i32.const 0 i32.const 160 - i32.const 546 + i32.const 599 i32.const 3 call $~lib/builtins/abort unreachable @@ -3819,7 +3938,7 @@ if i32.const 0 i32.const 160 - i32.const 547 + i32.const 600 i32.const 3 call $~lib/builtins/abort unreachable @@ -3835,7 +3954,7 @@ if i32.const 0 i32.const 160 - i32.const 548 + i32.const 601 i32.const 3 call $~lib/builtins/abort unreachable @@ -3848,7 +3967,7 @@ if i32.const 0 i32.const 160 - i32.const 549 + i32.const 602 i32.const 3 call $~lib/builtins/abort unreachable @@ -3861,7 +3980,7 @@ if i32.const 0 i32.const 160 - i32.const 550 + i32.const 603 i32.const 3 call $~lib/builtins/abort unreachable @@ -3878,7 +3997,7 @@ if i32.const 0 i32.const 160 - i32.const 551 + i32.const 604 i32.const 3 call $~lib/builtins/abort unreachable @@ -3895,7 +4014,7 @@ if i32.const 0 i32.const 160 - i32.const 556 + i32.const 609 i32.const 3 call $~lib/builtins/abort unreachable @@ -3926,7 +4045,7 @@ if i32.const 0 i32.const 160 - i32.const 565 + i32.const 618 i32.const 3 call $~lib/builtins/abort unreachable @@ -3943,7 +4062,7 @@ if i32.const 0 i32.const 160 - i32.const 566 + i32.const 619 i32.const 3 call $~lib/builtins/abort unreachable @@ -3960,7 +4079,7 @@ if i32.const 0 i32.const 160 - i32.const 567 + i32.const 620 i32.const 3 call $~lib/builtins/abort unreachable @@ -3977,7 +4096,7 @@ if i32.const 0 i32.const 160 - i32.const 568 + i32.const 621 i32.const 3 call $~lib/builtins/abort unreachable @@ -3994,7 +4113,7 @@ if i32.const 0 i32.const 160 - i32.const 569 + i32.const 622 i32.const 3 call $~lib/builtins/abort unreachable @@ -4011,7 +4130,7 @@ if i32.const 0 i32.const 160 - i32.const 570 + i32.const 623 i32.const 3 call $~lib/builtins/abort unreachable @@ -4028,7 +4147,7 @@ if i32.const 0 i32.const 160 - i32.const 571 + i32.const 624 i32.const 3 call $~lib/builtins/abort unreachable @@ -4045,7 +4164,7 @@ if i32.const 0 i32.const 160 - i32.const 572 + i32.const 625 i32.const 3 call $~lib/builtins/abort unreachable @@ -4061,7 +4180,7 @@ if i32.const 0 i32.const 160 - i32.const 573 + i32.const 626 i32.const 3 call $~lib/builtins/abort unreachable @@ -4094,6 +4213,9 @@ i32.const 0 i32.ne drop + local.get $0 + f32x4.demote_f64x2_zero + drop ) (func $features/simd/test_f64x2 (local $0 v128) @@ -4116,7 +4238,7 @@ if i32.const 0 i32.const 160 - i32.const 589 + i32.const 645 i32.const 3 call $~lib/builtins/abort unreachable @@ -4134,7 +4256,7 @@ if i32.const 0 i32.const 160 - i32.const 591 + i32.const 647 i32.const 3 call $~lib/builtins/abort unreachable @@ -4153,7 +4275,7 @@ if i32.const 0 i32.const 160 - i32.const 593 + i32.const 649 i32.const 3 call $~lib/builtins/abort unreachable @@ -4170,7 +4292,7 @@ if i32.const 0 i32.const 160 - i32.const 594 + i32.const 650 i32.const 3 call $~lib/builtins/abort unreachable @@ -4187,7 +4309,7 @@ if i32.const 0 i32.const 160 - i32.const 595 + i32.const 651 i32.const 3 call $~lib/builtins/abort unreachable @@ -4208,7 +4330,7 @@ if i32.const 0 i32.const 160 - i32.const 597 + i32.const 653 i32.const 3 call $~lib/builtins/abort unreachable @@ -4225,7 +4347,7 @@ if i32.const 0 i32.const 160 - i32.const 598 + i32.const 654 i32.const 3 call $~lib/builtins/abort unreachable @@ -4241,7 +4363,7 @@ if i32.const 0 i32.const 160 - i32.const 599 + i32.const 655 i32.const 3 call $~lib/builtins/abort unreachable @@ -4254,7 +4376,7 @@ if i32.const 0 i32.const 160 - i32.const 600 + i32.const 656 i32.const 3 call $~lib/builtins/abort unreachable @@ -4267,7 +4389,7 @@ if i32.const 0 i32.const 160 - i32.const 601 + i32.const 657 i32.const 3 call $~lib/builtins/abort unreachable @@ -4284,7 +4406,7 @@ if i32.const 0 i32.const 160 - i32.const 602 + i32.const 658 i32.const 3 call $~lib/builtins/abort unreachable @@ -4301,7 +4423,7 @@ if i32.const 0 i32.const 160 - i32.const 607 + i32.const 663 i32.const 3 call $~lib/builtins/abort unreachable @@ -4332,7 +4454,7 @@ if i32.const 0 i32.const 160 - i32.const 616 + i32.const 672 i32.const 3 call $~lib/builtins/abort unreachable @@ -4349,7 +4471,7 @@ if i32.const 0 i32.const 160 - i32.const 617 + i32.const 673 i32.const 3 call $~lib/builtins/abort unreachable @@ -4366,7 +4488,7 @@ if i32.const 0 i32.const 160 - i32.const 618 + i32.const 674 i32.const 3 call $~lib/builtins/abort unreachable @@ -4383,7 +4505,7 @@ if i32.const 0 i32.const 160 - i32.const 619 + i32.const 675 i32.const 3 call $~lib/builtins/abort unreachable @@ -4400,7 +4522,7 @@ if i32.const 0 i32.const 160 - i32.const 620 + i32.const 676 i32.const 3 call $~lib/builtins/abort unreachable @@ -4417,7 +4539,7 @@ if i32.const 0 i32.const 160 - i32.const 621 + i32.const 677 i32.const 3 call $~lib/builtins/abort unreachable @@ -4434,7 +4556,7 @@ if i32.const 0 i32.const 160 - i32.const 622 + i32.const 678 i32.const 3 call $~lib/builtins/abort unreachable @@ -4451,7 +4573,7 @@ if i32.const 0 i32.const 160 - i32.const 623 + i32.const 679 i32.const 3 call $~lib/builtins/abort unreachable @@ -4467,7 +4589,7 @@ if i32.const 0 i32.const 160 - i32.const 624 + i32.const 680 i32.const 3 call $~lib/builtins/abort unreachable @@ -4480,6 +4602,15 @@ i32.const 0 i32.ne drop + local.get $0 + f64x2.convert_low_i32x4_s + drop + local.get $0 + f64x2.convert_low_i32x4_u + drop + local.get $0 + f64x2.promote_low_f32x4 + drop ) (func $features/simd/test_const (result v128) (local $0 v128) diff --git a/tests/compiler/features/threads.untouched.wat b/tests/compiler/features/threads.untouched.wat index 4b8d9838ef..8bffb922ca 100644 --- a/tests/compiler/features/threads.untouched.wat +++ b/tests/compiler/features/threads.untouched.wat @@ -6,6 +6,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 (shared 1 10)) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $features/threads/testAtomic diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index c8f0db0016..0522d0d41b 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -2,9 +2,9 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1080,20 +1080,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 @@ -1815,10 +1812,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -1850,13 +1847,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/field-initialization.untouched.wat b/tests/compiler/field-initialization.untouched.wat index 3ea7f9b150..ccd54580ff 100644 --- a/tests/compiler/field-initialization.untouched.wat +++ b/tests/compiler/field-initialization.untouched.wat @@ -6,8 +6,8 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -45,6 +45,7 @@ (data (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00c\00c\00\00\00\00\00\00\00\00\00") (data (i32.const 768) "\19\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index 74e868b799..bd850f3ba3 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1059,20 +1059,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1424 diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index 504a5402a2..2b0be62bd9 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -38,6 +38,7 @@ (data (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 448) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $for/testInitExpression diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.optimized.wat index def29ea0ce..40c16929d7 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.optimized.wat @@ -1097,20 +1097,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1616 diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index fa566e3d0a..5f41094331 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) @@ -1126,20 +1126,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1936 diff --git a/tests/compiler/function-types.untouched.wat b/tests/compiler/function-types.untouched.wat index b7e8e09cd2..68a8396c6f 100644 --- a/tests/compiler/function-types.untouched.wat +++ b/tests/compiler/function-types.untouched.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) diff --git a/tests/compiler/function.untouched.wat b/tests/compiler/function.untouched.wat index af02fbb84d..e177b73e98 100644 --- a/tests/compiler/function.untouched.wat +++ b/tests/compiler/function.untouched.wat @@ -3,22 +3,23 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_i64 (func (result i64))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i64_i32_=>_i64 (func (param i64 i32) (result i64))) (type $none_=>_f32 (func (result f32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (type $none_=>_f64 (func (result f64))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i64_=>_i64 (func (param i64) (result i64))) + (type $f32_=>_f32 (func (param f32) (result f32))) (type $f64_=>_f64 (func (param f64) (result f64))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i64_i32_=>_i64 (func (param i64 i32) (result i64))) + (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (global $~lib/memory/__data_end i32 (i32.const 8)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $function/_ diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 2f816c7b2d..5e17b0b4de 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -2,8 +2,8 @@ (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1062,20 +1062,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/getter-setter.optimized.wat b/tests/compiler/getter-setter.optimized.wat index 79f2faf0bf..cc065dee2c 100644 --- a/tests/compiler/getter-setter.optimized.wat +++ b/tests/compiler/getter-setter.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) (memory $0 1) diff --git a/tests/compiler/getter-setter.untouched.wat b/tests/compiler/getter-setter.untouched.wat index 39963933ec..7667899ca0 100644 --- a/tests/compiler/getter-setter.untouched.wat +++ b/tests/compiler/getter-setter.untouched.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 76)) @@ -11,6 +11,7 @@ (memory $0 1) (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $getter-setter/Foo.get:bar (result i32) diff --git a/tests/compiler/heap.optimized.wat b/tests/compiler/heap.optimized.wat index d2fd08628b..de42bcadb2 100644 --- a/tests/compiler/heap.optimized.wat +++ b/tests/compiler/heap.optimized.wat @@ -1,12 +1,12 @@ (module - (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $heap/ptr (mut i32) (i32.const 0)) @@ -980,20 +980,17 @@ local.get $0 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $0 select if (result i32) + i32.const 1 + else local.get $1 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1056 diff --git a/tests/compiler/heap.untouched.wat b/tests/compiler/heap.untouched.wat index 94215c8e03..2673f79c6d 100644 --- a/tests/compiler/heap.untouched.wat +++ b/tests/compiler/heap.untouched.wat @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -21,6 +21,7 @@ (data (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "heap.alloc" (func $~lib/memory/heap.alloc)) (export "heap.realloc" (func $~lib/memory/heap.realloc)) (export "heap.free" (func $~lib/memory/heap.free)) diff --git a/tests/compiler/if.untouched.wat b/tests/compiler/if.untouched.wat index c1bf1dd30d..66c8766dda 100644 --- a/tests/compiler/if.untouched.wat +++ b/tests/compiler/if.untouched.wat @@ -10,6 +10,7 @@ (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00i\00f\00.\00t\00s\00\00\00") (data (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "ifThenElse" (func $if/ifThenElse)) (export "ifThen" (func $if/ifThen)) (export "ifThenElseBlock" (func $if/ifThenElseBlock)) diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index a46e7011d0..a36623eb2b 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -1068,20 +1068,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/implicit-getter-setter.untouched.wat b/tests/compiler/implicit-getter-setter.untouched.wat index c5437b355c..238e45538d 100644 --- a/tests/compiler/implicit-getter-setter.untouched.wat +++ b/tests/compiler/implicit-getter-setter.untouched.wat @@ -3,11 +3,11 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -38,6 +38,7 @@ (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 416) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "Basic" (global $implicit-getter-setter/Basic)) (export "Managed" (global $implicit-getter-setter/Managed)) (export "memory" (memory $0)) diff --git a/tests/compiler/import.untouched.wat b/tests/compiler/import.untouched.wat index 05f3b40d0e..83f253388e 100644 --- a/tests/compiler/import.untouched.wat +++ b/tests/compiler/import.untouched.wat @@ -9,6 +9,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $export/add (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/indexof-valueof.untouched.wat b/tests/compiler/indexof-valueof.untouched.wat index 3709c5ce16..914888e72d 100644 --- a/tests/compiler/indexof-valueof.untouched.wat +++ b/tests/compiler/indexof-valueof.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:indexof-valueof diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index a6e56a9b2e..63cd697284 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -1095,20 +1095,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1424 @@ -1959,14 +1956,11 @@ i32.eqz i32.eq if + local.get $0 + local.get $1 local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + select + call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index 048d2cf2dd..58ec5bd189 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -8,9 +8,9 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -55,6 +55,7 @@ (data (i32.const 956) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 1088) "\0c\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\19\00\00\00\00\00\00 \00\00\00\00\00\00\00\02a\00\00\00\00\00\00\02a\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index 72e3ccc3ad..9cb99d6bf5 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -1,11 +1,11 @@ (module + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) + (type $i32_f32_i32_i32_=>_i32 (func (param i32 f32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_f32_i32_i32_=>_i32 (func (param i32 f32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $f32_=>_f32 (func (param f32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1084,20 +1084,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1568 diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index f3476f986b..79b87293f0 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -5,12 +5,12 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_f32_i32_i32_=>_i32 (func (param i32 f32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $f32_=>_f32 (func (param f32) (result f32))) + (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $infer-generic/arr i32 (i32.const 128)) (global $~argumentsLength (mut i32) (i32.const 0)) diff --git a/tests/compiler/infer-type.untouched.wat b/tests/compiler/infer-type.untouched.wat index 398d9c9e4b..59c61e82fc 100644 --- a/tests/compiler/infer-type.untouched.wat +++ b/tests/compiler/infer-type.untouched.wat @@ -18,6 +18,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $infer-type/locals diff --git a/tests/compiler/inlining-blocklocals.optimized.wat b/tests/compiler/inlining-blocklocals.optimized.wat index 22b0b2d69e..3f736dff7d 100644 --- a/tests/compiler/inlining-blocklocals.optimized.wat +++ b/tests/compiler/inlining-blocklocals.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $inlining-blocklocals/b (mut i32) (i32.const 2)) (global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0)) diff --git a/tests/compiler/inlining-blocklocals.untouched.wat b/tests/compiler/inlining-blocklocals.untouched.wat index 6056cd3d55..bf10d68e90 100644 --- a/tests/compiler/inlining-blocklocals.untouched.wat +++ b/tests/compiler/inlining-blocklocals.untouched.wat @@ -12,6 +12,7 @@ (memory $0 1) (data (i32.const 12) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $inlining-blocklocals/test diff --git a/tests/compiler/inlining-recursive.untouched.wat b/tests/compiler/inlining-recursive.untouched.wat index 9ef7fa3071..9293419782 100644 --- a/tests/compiler/inlining-recursive.untouched.wat +++ b/tests/compiler/inlining-recursive.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "foo" (func $inlining-recursive/foo)) (export "bar" (func $inlining-recursive/bar)) (export "baz" (func $inlining-recursive/baz)) diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index c3b020fa85..9ad6f8f8a0 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -1071,20 +1071,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1472 diff --git a/tests/compiler/instanceof-class.optimized.wat b/tests/compiler/instanceof-class.optimized.wat index 0bb1d2ae34..81e4bf8b0d 100644 --- a/tests/compiler/instanceof-class.optimized.wat +++ b/tests/compiler/instanceof-class.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1074,20 +1074,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/instanceof-class.untouched.wat b/tests/compiler/instanceof-class.untouched.wat index e28a73e2c2..0d7ced0f57 100644 --- a/tests/compiler/instanceof-class.untouched.wat +++ b/tests/compiler/instanceof-class.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -39,6 +39,7 @@ (data (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00-\00c\00l\00a\00s\00s\00.\00t\00s\00\00\00\00\00\00\00") (data (i32.const 480) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\05\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/instanceof.optimized.wat b/tests/compiler/instanceof.optimized.wat index edd8c5042f..ae2a8f756f 100644 --- a/tests/compiler/instanceof.optimized.wat +++ b/tests/compiler/instanceof.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $instanceof/an (mut i32) (i32.const 0)) (memory $0 1) diff --git a/tests/compiler/instanceof.untouched.wat b/tests/compiler/instanceof.untouched.wat index 95decea0c1..49f7d42622 100644 --- a/tests/compiler/instanceof.untouched.wat +++ b/tests/compiler/instanceof.untouched.wat @@ -17,6 +17,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $instanceof/isI32 (param $0 i32) (result i32) diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat index 41584547c6..8e581be84a 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1062,20 +1062,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/issues/1095.untouched.wat b/tests/compiler/issues/1095.untouched.wat index 7abd437ea0..607298b673 100644 --- a/tests/compiler/issues/1095.untouched.wat +++ b/tests/compiler/issues/1095.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -39,6 +39,7 @@ (data (i32.const 508) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s\00") (data (i32.const 560) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat index 51e533ae1e..4b51b46fa8 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1068,20 +1068,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/issues/1225.untouched.wat b/tests/compiler/issues/1225.untouched.wat index e6517cf44c..4823771c9e 100644 --- a/tests/compiler/issues/1225.untouched.wat +++ b/tests/compiler/issues/1225.untouched.wat @@ -38,6 +38,7 @@ (data (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s\00") (data (i32.const 464) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "normal" (func $issues/1225/normal)) (export "viaThis" (func $issues/1225/viaThis)) (export "memory" (memory $0)) diff --git a/tests/compiler/issues/1699.optimized.wat b/tests/compiler/issues/1699.optimized.wat index 0f819a6481..7845af5896 100644 --- a/tests/compiler/issues/1699.optimized.wat +++ b/tests/compiler/issues/1699.optimized.wat @@ -1070,20 +1070,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1488 @@ -1761,14 +1758,11 @@ i32.eqz i32.eq if + local.get $0 + local.get $1 local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + select + call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 diff --git a/tests/compiler/issues/1699.untouched.wat b/tests/compiler/issues/1699.untouched.wat index 47b4298932..472d30f154 100644 --- a/tests/compiler/issues/1699.untouched.wat +++ b/tests/compiler/issues/1699.untouched.wat @@ -6,8 +6,8 @@ (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -40,6 +40,7 @@ (data (i32.const 636) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\006\009\009\00.\00t\00s\00") (data (i32.const 688) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/issues/1714.untouched.wat b/tests/compiler/issues/1714.untouched.wat index f99e8183a5..ea38be61bd 100644 --- a/tests/compiler/issues/1714.untouched.wat +++ b/tests/compiler/issues/1714.untouched.wat @@ -10,6 +10,7 @@ (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\007\001\004\00.\00t\00s\00") (data (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\003\002\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $issues/1714/a_i64_i32 (result i32) diff --git a/tests/compiler/issues/1751.untouched.wat b/tests/compiler/issues/1751.untouched.wat index 700fa1f9a6..f4d95ad56d 100644 --- a/tests/compiler/issues/1751.untouched.wat +++ b/tests/compiler/issues/1751.untouched.wat @@ -4,5 +4,6 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) ) diff --git a/tests/compiler/limits.untouched.wat b/tests/compiler/limits.untouched.wat index b41fd91ade..871dfc3787 100644 --- a/tests/compiler/limits.untouched.wat +++ b/tests/compiler/limits.untouched.wat @@ -31,6 +31,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:limits diff --git a/tests/compiler/literals.untouched.wat b/tests/compiler/literals.untouched.wat index 72d9375de2..57ae32613d 100644 --- a/tests/compiler/literals.untouched.wat +++ b/tests/compiler/literals.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:literals diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index 4dacb43723..d831f03ad8 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1059,20 +1059,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1440 diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat index b5cffe969a..f644b48940 100644 --- a/tests/compiler/logical.untouched.wat +++ b/tests/compiler/logical.untouched.wat @@ -7,8 +7,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $logical/i (mut i32) (i32.const 0)) (global $logical/I (mut i64) (i64.const 0)) @@ -42,6 +42,7 @@ (data (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 464) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $logical/testShortcutAnd (param $0 i64) (param $1 i32) (result i32) diff --git a/tests/compiler/loop-flow.optimized.wat b/tests/compiler/loop-flow.optimized.wat index ad06501000..91ceb5712c 100644 --- a/tests/compiler/loop-flow.optimized.wat +++ b/tests/compiler/loop-flow.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) ",") diff --git a/tests/compiler/loop-flow.untouched.wat b/tests/compiler/loop-flow.untouched.wat index 3d5b5916e0..d28c1bb319 100644 --- a/tests/compiler/loop-flow.untouched.wat +++ b/tests/compiler/loop-flow.untouched.wat @@ -11,6 +11,7 @@ (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s\00\00\00\00\00") (data (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00e\00r\00m\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "whileReturn" (func $loop-flow/whileReturn)) (export "whileThrow" (func $loop-flow/whileThrow)) (export "whileContinue" (func $loop-flow/whileContinue)) diff --git a/tests/compiler/loop-wrap.untouched.wat b/tests/compiler/loop-wrap.untouched.wat index 900273d284..43f9d007a9 100644 --- a/tests/compiler/loop-wrap.untouched.wat +++ b/tests/compiler/loop-wrap.untouched.wat @@ -6,6 +6,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "testAlwaysWrapped" (func $loop-wrap/testAlwaysWrapped)) (export "testFirstWrapped" (func $loop-wrap/testFirstWrapped)) (export "testSubsequentWrapped" (func $loop-wrap/testSubsequentWrapped)) diff --git a/tests/compiler/managed-cast.optimized.wat b/tests/compiler/managed-cast.optimized.wat index 59fdfe894b..b80f75c35b 100644 --- a/tests/compiler/managed-cast.optimized.wat +++ b/tests/compiler/managed-cast.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -1063,20 +1063,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/managed-cast.untouched.wat b/tests/compiler/managed-cast.untouched.wat index 4916b81681..a8345d8d4f 100644 --- a/tests/compiler/managed-cast.untouched.wat +++ b/tests/compiler/managed-cast.untouched.wat @@ -1,13 +1,13 @@ (module - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -39,6 +39,7 @@ (data (i32.const 540) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00u\00p\00c\00a\00s\00t\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 608) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\04\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/many-locals.untouched.wat b/tests/compiler/many-locals.untouched.wat index 8b7ecf2f6e..e5c264cf84 100644 --- a/tests/compiler/many-locals.untouched.wat +++ b/tests/compiler/many-locals.untouched.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__data_end i32 (i32.const 60)) @@ -9,6 +9,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "testI32" (func $many-locals/testI32)) (export "testI8" (func $many-locals/testI8)) (export "memory" (memory $0)) diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index 69c41abe05..72f852bc10 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memcpy/dest (mut i32) (i32.const 0)) (memory $0 1) diff --git a/tests/compiler/memcpy.untouched.wat b/tests/compiler/memcpy.untouched.wat index b4301b54e5..ddd8ea225a 100644 --- a/tests/compiler/memcpy.untouched.wat +++ b/tests/compiler/memcpy.untouched.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memcpy/base i32 (i32.const 8)) (global $memcpy/dest (mut i32) (i32.const 0)) @@ -11,6 +11,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memcpy" (func $memcpy/memcpy)) (export "memory" (memory $0)) (start $~start) diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.optimized.wat index 685935df6a..09ffb42d76 100644 --- a/tests/compiler/memmove.optimized.wat +++ b/tests/compiler/memmove.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memmove/dest (mut i32) (i32.const 0)) (memory $0 1) diff --git a/tests/compiler/memmove.untouched.wat b/tests/compiler/memmove.untouched.wat index f011b0840a..bd8faf34f5 100644 --- a/tests/compiler/memmove.untouched.wat +++ b/tests/compiler/memmove.untouched.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memmove/base i32 (i32.const 8)) (global $memmove/dest (mut i32) (i32.const 0)) @@ -11,6 +11,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $memmove/memmove (param $0 i32) (param $1 i32) (param $2 i32) (result i32) diff --git a/tests/compiler/memory.optimized.wat b/tests/compiler/memory.optimized.wat index fa78908f1a..83644042c8 100644 --- a/tests/compiler/memory.optimized.wat +++ b/tests/compiler/memory.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memory/ptr (mut i32) (i32.const 1088)) (memory $0 1) diff --git a/tests/compiler/memory.untouched.wat b/tests/compiler/memory.untouched.wat index d30d0ebbac..70d29f29dc 100644 --- a/tests/compiler/memory.untouched.wat +++ b/tests/compiler/memory.untouched.wat @@ -34,6 +34,7 @@ (data (i32.const 207) "\01") (data (i32.const 208) "\01") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $memory/test (result i32) diff --git a/tests/compiler/memorybase.untouched.wat b/tests/compiler/memorybase.untouched.wat index c948a68e5d..db18d4b952 100644 --- a/tests/compiler/memorybase.untouched.wat +++ b/tests/compiler/memorybase.untouched.wat @@ -8,6 +8,7 @@ (memory $0 1) (data (i32.const 1024) "\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:memorybase diff --git a/tests/compiler/memset.untouched.wat b/tests/compiler/memset.untouched.wat index f66d231f46..a3ff6086d9 100644 --- a/tests/compiler/memset.untouched.wat +++ b/tests/compiler/memset.untouched.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memset/dest (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 60)) @@ -10,6 +10,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $memset/memset (param $0 i32) (param $1 i32) (param $2 i32) (result i32) diff --git a/tests/compiler/merge.untouched.wat b/tests/compiler/merge.untouched.wat index 1d0cb1c945..d837510f77 100644 --- a/tests/compiler/merge.untouched.wat +++ b/tests/compiler/merge.untouched.wat @@ -15,6 +15,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $merge/namespaceType.test diff --git a/tests/compiler/named-export-default.untouched.wat b/tests/compiler/named-export-default.untouched.wat index b0298f18be..e8141ba408 100644 --- a/tests/compiler/named-export-default.untouched.wat +++ b/tests/compiler/named-export-default.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "default" (func $named-export-default/get3)) (export "memory" (memory $0)) (func $named-export-default/get3 (result i32) diff --git a/tests/compiler/named-import-default.untouched.wat b/tests/compiler/named-import-default.untouched.wat index 9bac391fe1..15b4ea9176 100644 --- a/tests/compiler/named-import-default.untouched.wat +++ b/tests/compiler/named-import-default.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "getValue" (func $named-import-default/getValue)) (export "memory" (memory $0)) (func $named-export-default/get3 (result i32) diff --git a/tests/compiler/namespace.untouched.wat b/tests/compiler/namespace.untouched.wat index ca1f6681d3..58835e187f 100644 --- a/tests/compiler/namespace.untouched.wat +++ b/tests/compiler/namespace.untouched.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) + (type $none_=>_none (func)) (global $namespace/Outer.outerVar (mut i32) (i32.const 1)) (global $namespace/Outer.Inner.aVar (mut i32) (i32.const 0)) (global $namespace/Outer.Inner.anotherVar (mut i32) (i32.const 0)) @@ -12,6 +12,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $namespace/Outer.Inner.aFunc (result i32) diff --git a/tests/compiler/new.optimized.wat b/tests/compiler/new.optimized.wat index e943d2ab02..c51e09d3bd 100644 --- a/tests/compiler/new.optimized.wat +++ b/tests/compiler/new.optimized.wat @@ -1099,20 +1099,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat index 2d1a4357d0..2b52be241c 100644 --- a/tests/compiler/new.untouched.wat +++ b/tests/compiler/new.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $new/ref (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -42,6 +42,7 @@ (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 416) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\04\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 74c43c760d..5f29087f77 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) @@ -1145,20 +1145,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1616 @@ -1891,10 +1888,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -1926,13 +1923,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 7707d4d94d..659e2fc3fa 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -6,16 +6,16 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $f64_=>_i32 (func (param f64) (result i32))) - (type $f32_=>_i32 (func (param f32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $f32_=>_i32 (func (param f32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $number/a (mut i32) (i32.const 1)) @@ -85,6 +85,7 @@ (data (i32.const 3596) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") (data (i32.const 3632) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index 215a7bb158..5b0e6ed6ba 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -4,8 +4,8 @@ (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) @@ -955,20 +955,17 @@ local.get $0 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $0 select if (result i32) + i32.const 1 + else local.get $1 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1440 @@ -1810,10 +1807,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -1845,13 +1842,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index 24350af97d..f54cd3df18 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -2,16 +2,16 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_f64_=>_none (func (param i32 f64))) - (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_f32_=>_none (func (param i32 f32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_f32_=>_none (func (param i32 f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) @@ -47,6 +47,7 @@ (data (i32.const 652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00b\00a\00z\00\00\00\00\00\00\00") (data (i32.const 688) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $object-literal/Managed#set:bar (param $0 i32) (param $1 i32) diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index b2d160aa07..057d6c10fe 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -1,7 +1,7 @@ (module + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1071,20 +1071,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index 08c41ebb34..39eb4ada0e 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -39,6 +39,7 @@ (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 416) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $optional-typeparameters/testConcrete (param $0 i32) (result i32) diff --git a/tests/compiler/overflow.untouched.wat b/tests/compiler/overflow.untouched.wat index ce1ce07f19..7180ccb032 100644 --- a/tests/compiler/overflow.untouched.wat +++ b/tests/compiler/overflow.untouched.wat @@ -8,6 +8,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:overflow diff --git a/tests/compiler/portable-conversions.untouched.wat b/tests/compiler/portable-conversions.untouched.wat index ccf5c1051d..0d78f1d9fb 100644 --- a/tests/compiler/portable-conversions.untouched.wat +++ b/tests/compiler/portable-conversions.untouched.wat @@ -12,6 +12,7 @@ (memory $0 1) (data (i32.const 12) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:portable-conversions diff --git a/tests/compiler/possibly-null.optimized.wat b/tests/compiler/possibly-null.optimized.wat index fb07194f70..be5135ec7e 100644 --- a/tests/compiler/possibly-null.optimized.wat +++ b/tests/compiler/possibly-null.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17408)) (memory $0 0) diff --git a/tests/compiler/possibly-null.untouched.wat b/tests/compiler/possibly-null.untouched.wat index aa17e4593a..831bb2c21e 100644 --- a/tests/compiler/possibly-null.untouched.wat +++ b/tests/compiler/possibly-null.untouched.wat @@ -1,15 +1,16 @@ (module (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__data_end i32 (i32.const 8)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "testTrue" (func $export:possibly-null/testTrue)) (export "testFalseElse" (func $export:possibly-null/testFalseElse)) diff --git a/tests/compiler/recursive.untouched.wat b/tests/compiler/recursive.untouched.wat index ea3410c17b..e435f21f18 100644 --- a/tests/compiler/recursive.untouched.wat +++ b/tests/compiler/recursive.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "fib" (func $recursive/fib)) (export "memory" (memory $0)) (func $recursive/fib (param $0 i32) (result i32) diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat index a0d12af4b5..4374159d94 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -1,9 +1,9 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1148,20 +1148,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1440 diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat index d1df27a40e..dfeefaf1a6 100644 --- a/tests/compiler/reexport.untouched.wat +++ b/tests/compiler/reexport.untouched.wat @@ -51,6 +51,7 @@ (data (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 464) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "add" (func $export/add)) (export "renamed_sub" (func $export/sub)) (export "renamed_mul" (func $export/mul)) diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.optimized.wat index 3665fbd006..015cd805e3 100644 --- a/tests/compiler/rereexport.optimized.wat +++ b/tests/compiler/rereexport.optimized.wat @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1110,20 +1110,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1440 diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.untouched.wat index 7533f5ae91..1bee66560a 100644 --- a/tests/compiler/rereexport.untouched.wat +++ b/tests/compiler/rereexport.untouched.wat @@ -6,8 +6,8 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -47,6 +47,7 @@ (data (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00") (data (i32.const 512) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "a" (global $export/a)) (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index c73197622f..74a7e54293 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -1076,20 +1076,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1424 diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index d984a0a2af..f91b27254c 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -7,14 +7,14 @@ (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_=>_none (func (param i32 i64))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -52,6 +52,7 @@ (data (i32.const 2172) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") (data (i32.const 2272) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "arrayAccess" (func $resolve-access/arrayAccess)) (export "fieldAccess" (func $resolve-access/fieldAccess)) (export "propertyAccess" (func $resolve-access/propertyAccess)) diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 4bff38ba08..667df202b6 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -1,11 +1,11 @@ (module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -117,10 +117,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -152,13 +152,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 @@ -1307,20 +1307,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1776 diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index 7d3a95eb8e..5226bafe9d 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -6,17 +6,17 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) + (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $resolve-binary/a (mut i32) (i32.const 0)) @@ -95,6 +95,7 @@ (data (i32.const 10188) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00p\00o\00w\00\00\00\00\00\00\00") (data (i32.const 10224) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/number/Bool#toString (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index 17f9e02d5e..13caa7d050 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -3,16 +3,16 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $none_=>_i32 (func (result i32))) - (type $f32_=>_i32 (func (param f32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) + (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $f64_=>_i32 (func (param f64) (result i32))) + (type $f32_=>_i32 (func (param f32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -1127,20 +1127,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1504 @@ -3117,10 +3114,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -3152,13 +3149,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index c6879a5eed..3760f257b0 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -7,17 +7,17 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $f32_i32_=>_i32 (func (param f32 i32) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) + (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -78,6 +78,7 @@ (data (i32.const 3740) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\001\00\00\00\00\00\00\00\00\00") (data (i32.const 3776) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\19\00\00\02\00\00\00A\00\00\00\05\00\00\00A\00\00\00\02\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 15cd2863e3..71cd919e1f 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -1094,20 +1094,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1792 @@ -2005,13 +2002,13 @@ local.tee $2 i32.const 7 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|01 local.get $2 diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index 99d36bada8..7174e25b13 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -6,12 +6,12 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) diff --git a/tests/compiler/resolve-nested.optimized.wat b/tests/compiler/resolve-nested.optimized.wat index ab84acaaef..7bf4da8027 100644 --- a/tests/compiler/resolve-nested.optimized.wat +++ b/tests/compiler/resolve-nested.optimized.wat @@ -2,12 +2,12 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) + (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -1068,20 +1068,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/resolve-nested.untouched.wat b/tests/compiler/resolve-nested.untouched.wat index 1820a44757..32ada90a5c 100644 --- a/tests/compiler/resolve-nested.untouched.wat +++ b/tests/compiler/resolve-nested.untouched.wat @@ -5,11 +5,11 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) + (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $resolve-nested/Outer.Inner.a (mut i32) (i32.const 0)) (global $resolve-nested/Outer.Inner.b (mut i32) (i32.const 0)) @@ -54,6 +54,7 @@ (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 416) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "Outer.InnerClass" (global $resolve-nested/Outer.InnerClass)) (export "Outer.Inner.EvenInnerClass" (global $resolve-nested/Outer.Inner.EvenInnerClass)) (export "memory" (memory $0)) diff --git a/tests/compiler/resolve-new.optimized.wat b/tests/compiler/resolve-new.optimized.wat index 8889d7a021..e72ec5e10b 100644 --- a/tests/compiler/resolve-new.optimized.wat +++ b/tests/compiler/resolve-new.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1064,20 +1064,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat index 32eda1ab6a..4e69d703fd 100644 --- a/tests/compiler/resolve-new.untouched.wat +++ b/tests/compiler/resolve-new.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -37,6 +37,7 @@ (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 416) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 7ebbf76dee..91ea81aaf0 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -3,8 +3,8 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1094,20 +1094,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1616 @@ -1872,10 +1869,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -1907,13 +1904,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 9e67cfdb52..43c71aa342 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -7,11 +7,11 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $resolve-propertyaccess/Namespace.member i32 (i32.const 1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -68,6 +68,7 @@ (data (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\008\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 2656) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 0833684bf0..b3c3c6afb7 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -1140,20 +1140,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1616 @@ -1824,10 +1821,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -1859,13 +1856,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 1a756f89c8..8c7ab33c96 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -1,21 +1,21 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) + (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $resolve-ternary/b (mut i32) (i32.const 1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index 930501a634..7b6a6845ab 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -3,8 +3,8 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1114,20 +1114,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1616 @@ -1892,10 +1889,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -1927,13 +1924,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index 18da1fab02..93609cf020 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -6,12 +6,12 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -65,6 +65,7 @@ (data (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\00-\00-\00\00\00\00\00\00\00") (data (i32.const 2704) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) diff --git a/tests/compiler/retain-i32.untouched.wat b/tests/compiler/retain-i32.untouched.wat index 683be3e1cf..bcbfef5432 100644 --- a/tests/compiler/retain-i32.untouched.wat +++ b/tests/compiler/retain-i32.untouched.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) @@ -21,6 +21,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $retain-i32/test (param $0 i32) (param $1 i32) diff --git a/tests/compiler/rt/finalize.optimized.wat b/tests/compiler/rt/finalize.optimized.wat index 5daf6593cf..9e27ca3ff8 100644 --- a/tests/compiler/rt/finalize.optimized.wat +++ b/tests/compiler/rt/finalize.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -915,20 +915,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1440 diff --git a/tests/compiler/rt/finalize.untouched.wat b/tests/compiler/rt/finalize.untouched.wat index 4bfff2000c..fa8d7a379b 100644 --- a/tests/compiler/rt/finalize.untouched.wat +++ b/tests/compiler/rt/finalize.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $rt/finalize/expect (mut i32) (i32.const 0)) (global $rt/finalize/ran (mut i32) (i32.const 0)) @@ -40,6 +40,7 @@ (data (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 464) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/rt/flags.untouched.wat b/tests/compiler/rt/flags.untouched.wat index 5f6f31fc4a..e832460e28 100644 --- a/tests/compiler/rt/flags.untouched.wat +++ b/tests/compiler/rt/flags.untouched.wat @@ -16,6 +16,7 @@ (data (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s\00\00\00\00\00\00\00") (data (i32.const 176) "4\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00A\08\00\00\02\00\00\00A\00\00\00\02\00\00\00A\00\00\00\02\00\00\00\81\08\00\00\02\00\00\00\81\00\00\00\02\00\00\00\01\t\00\00\02\00\00\00\01\01\00\00\02\00\00\00\01\n\00\00\02\00\00\00\01\02\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\1a\00\00\02\00\00\00B\08\00\00\00\00\00\00B\00\00\00\00\00\00\00\82\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02\04\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\00\00\00\00\02a\00\00\00\00\00\00H\08\00\00\00\00\00\00H\00\00\00\00\00\00\00\88\08\00\00\00\00\00\00\88\00\00\00\00\00\00\00\08\t\00\00\00\00\00\00\08\01\00\00\00\00\00\00\08\n\00\00\00\00\00\00\08\02\00\00\00\00\00\00\08\19\00\00\00\00\00\00\08\1a\00\00\00\00\00\00\08\04\00\00\00\00\00\00\08A\00\00\00\00\00\00\08a\00\00\00\00\00\00P\08\08\00\00\00\00\00\90\08\14\00\00\00\00\00\10\t\12\00\00\00\00\00\10\n\11\00\00\00\00\00\10\84\10\00\00\00\00\00P\08\82\00\00\00\00\00P\08\c2\00\00\00\00\00\10\c1\10\00\00\00\00\00\10\e1\10\00\00\00\00\00\10a\c2\00\00\00\00\00\10\t2\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/__typeinfo (param $0 i32) (result i32) diff --git a/tests/compiler/rt/ids.untouched.wat b/tests/compiler/rt/ids.untouched.wat index dc9a07c925..e0aa4ac445 100644 --- a/tests/compiler/rt/ids.untouched.wat +++ b/tests/compiler/rt/ids.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:rt/ids diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index 3519faa887..e03dcde890 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -1103,20 +1103,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index 3556fc4609..b0dd9f536a 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -47,6 +47,7 @@ (data (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00r\00t\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 480) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\03\00\00\00 \00\00\00\04\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/rt/runtime-incremental-export.optimized.wat b/tests/compiler/rt/runtime-incremental-export.optimized.wat index 384c13ef9e..747c93b33d 100644 --- a/tests/compiler/rt/runtime-incremental-export.optimized.wat +++ b/tests/compiler/rt/runtime-incremental-export.optimized.wat @@ -1,10 +1,10 @@ (module - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1078,20 +1078,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/rt/runtime-incremental-export.untouched.wat b/tests/compiler/rt/runtime-incremental-export.untouched.wat index 44b8e896a9..ab3b34728b 100644 --- a/tests/compiler/rt/runtime-incremental-export.untouched.wat +++ b/tests/compiler/rt/runtime-incremental-export.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -38,6 +38,7 @@ (data (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") (data (i32.const 544) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "__new" (func $~lib/rt/itcms/__new)) (export "__pin" (func $~lib/rt/itcms/__pin)) (export "__unpin" (func $~lib/rt/itcms/__unpin)) diff --git a/tests/compiler/rt/runtime-incremental.untouched.wat b/tests/compiler/rt/runtime-incremental.untouched.wat index 700fa1f9a6..f4d95ad56d 100644 --- a/tests/compiler/rt/runtime-incremental.untouched.wat +++ b/tests/compiler/rt/runtime-incremental.untouched.wat @@ -4,5 +4,6 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) ) diff --git a/tests/compiler/rt/runtime-minimal-export.optimized.wat b/tests/compiler/rt/runtime-minimal-export.optimized.wat index cf86e44cf6..36b6d327b9 100644 --- a/tests/compiler/rt/runtime-minimal-export.optimized.wat +++ b/tests/compiler/rt/runtime-minimal-export.optimized.wat @@ -1,7 +1,7 @@ (module (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -1309,20 +1309,17 @@ local.get $4 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $4 select if (result i32) + i32.const 1 + else local.get $3 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1184 diff --git a/tests/compiler/rt/runtime-minimal-export.untouched.wat b/tests/compiler/rt/runtime-minimal-export.untouched.wat index f69cc7b58e..4a4b8da36f 100644 --- a/tests/compiler/rt/runtime-minimal-export.untouched.wat +++ b/tests/compiler/rt/runtime-minimal-export.untouched.wat @@ -28,6 +28,7 @@ (data (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 432) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "__new" (func $~lib/rt/tcms/__new)) (export "__pin" (func $~lib/rt/tcms/__pin)) (export "__unpin" (func $~lib/rt/tcms/__unpin)) diff --git a/tests/compiler/rt/runtime-minimal.untouched.wat b/tests/compiler/rt/runtime-minimal.untouched.wat index bffe105a3d..00fc29c6cc 100644 --- a/tests/compiler/rt/runtime-minimal.untouched.wat +++ b/tests/compiler/rt/runtime-minimal.untouched.wat @@ -1,5 +1,6 @@ (module (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) ) diff --git a/tests/compiler/rt/runtime-stub-export.optimized.wat b/tests/compiler/rt/runtime-stub-export.optimized.wat index 4a41bcc3fb..469b44d8ea 100644 --- a/tests/compiler/rt/runtime-stub-export.optimized.wat +++ b/tests/compiler/rt/runtime-stub-export.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 1168)) diff --git a/tests/compiler/rt/runtime-stub-export.untouched.wat b/tests/compiler/rt/runtime-stub-export.untouched.wat index 0c8ca82e54..481f696f34 100644 --- a/tests/compiler/rt/runtime-stub-export.untouched.wat +++ b/tests/compiler/rt/runtime-stub-export.untouched.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -15,6 +15,7 @@ (data (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 144) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "__new" (func $~lib/rt/stub/__new)) (export "__pin" (func $~lib/rt/stub/__pin)) (export "__unpin" (func $~lib/rt/stub/__unpin)) diff --git a/tests/compiler/rt/runtime-stub.untouched.wat b/tests/compiler/rt/runtime-stub.untouched.wat index bffe105a3d..00fc29c6cc 100644 --- a/tests/compiler/rt/runtime-stub.untouched.wat +++ b/tests/compiler/rt/runtime-stub.untouched.wat @@ -1,5 +1,6 @@ (module (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) ) diff --git a/tests/compiler/scoped.untouched.wat b/tests/compiler/scoped.untouched.wat index f87183185e..664f2e8fc3 100644 --- a/tests/compiler/scoped.untouched.wat +++ b/tests/compiler/scoped.untouched.wat @@ -9,6 +9,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $scoped/fn (param $0 i32) diff --git a/tests/compiler/static-this.untouched.wat b/tests/compiler/static-this.untouched.wat index 11d91212bf..2d695fd6a5 100644 --- a/tests/compiler/static-this.untouched.wat +++ b/tests/compiler/static-this.untouched.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $static-this/Foo.bar (mut i32) (i32.const 42)) (global $~lib/memory/__data_end i32 (i32.const 60)) @@ -10,6 +10,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $static-this/Foo.getBar (result i32) diff --git a/tests/compiler/std-wasi/console.optimized.wat b/tests/compiler/std-wasi/console.optimized.wat index 2db063baea..0f0a2e0020 100644 --- a/tests/compiler/std-wasi/console.optimized.wat +++ b/tests/compiler/std-wasi/console.optimized.wat @@ -6,13 +6,13 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $none_=>_i64 (func (result i64))) + (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) + (type $i64_=>_i32 (func (param i64) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) @@ -1885,20 +1885,17 @@ local.get $0 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $0 select if (result i32) + i32.const 1 + else local.get $1 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 4224 @@ -2897,14 +2894,11 @@ i32.eqz i32.eq if + local.get $0 + local.get $1 local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + select + call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 @@ -3481,10 +3475,10 @@ drop i32.const 0 local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $4 select + i32.eqz br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 @@ -3513,13 +3507,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $3 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $4 diff --git a/tests/compiler/std-wasi/console.untouched.wat b/tests/compiler/std-wasi/console.untouched.wat index 45ec1a1dd9..b6bb5c3fc9 100644 --- a/tests/compiler/std-wasi/console.untouched.wat +++ b/tests/compiler/std-wasi/console.untouched.wat @@ -6,19 +6,19 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_=>_none (func (param i32 i64))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i32_i32_i64_=>_i32 (func (param i32 i32 i64) (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $none_=>_i64 (func (result i64))) + (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $i32_i32_i64_=>_i32 (func (param i32 i32 i64) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) @@ -172,6 +172,7 @@ (data (i32.const 6764) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\002\003\004\00\00\00\00\00") (data (i32.const 6800) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\02\82\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/string/String#get:length (param $0 i32) (result i32) diff --git a/tests/compiler/std-wasi/crypto.optimized.wat b/tests/compiler/std-wasi/crypto.optimized.wat index 38643b73ba..2e7a702ec9 100644 --- a/tests/compiler/std-wasi/crypto.optimized.wat +++ b/tests/compiler/std-wasi/crypto.optimized.wat @@ -1,14 +1,14 @@ (module (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) @@ -1435,20 +1435,17 @@ local.get $0 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $0 select if (result i32) + i32.const 1 + else local.get $1 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1504 diff --git a/tests/compiler/std-wasi/crypto.untouched.wat b/tests/compiler/std-wasi/crypto.untouched.wat index 215a9bd56f..0db2c3e31c 100644 --- a/tests/compiler/std-wasi/crypto.untouched.wat +++ b/tests/compiler/std-wasi/crypto.untouched.wat @@ -8,10 +8,10 @@ (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) + (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) @@ -146,6 +146,7 @@ (data (i32.const 5660) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00-\00w\00a\00s\00i\00/\00c\00r\00y\00p\00t\00o\00.\00t\00s\00\00\00\00\00\00\00\00\00") (data (i32.const 5728) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00A\00\00\00\02\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std-wasi/process.optimized.wat b/tests/compiler/std-wasi/process.optimized.wat index a2f6527925..a631a9b92b 100644 --- a/tests/compiler/std-wasi/process.optimized.wat +++ b/tests/compiler/std-wasi/process.optimized.wat @@ -2,16 +2,16 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "args_sizes_get" (func $~lib/bindings/wasi_snapshot_preview1/args_sizes_get (param i32 i32) (result i32))) @@ -1873,20 +1873,17 @@ local.get $0 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $0 select if (result i32) + i32.const 1 + else local.get $1 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 4176 @@ -2916,14 +2913,11 @@ i32.eqz i32.eq if + local.get $0 + local.get $1 local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + select + call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 @@ -3307,12 +3301,12 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $3 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $1 @@ -3980,10 +3974,10 @@ drop i32.const 0 local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 diff --git a/tests/compiler/std-wasi/process.untouched.wat b/tests/compiler/std-wasi/process.untouched.wat index decdaf0529..c3f39593ef 100644 --- a/tests/compiler/std-wasi/process.untouched.wat +++ b/tests/compiler/std-wasi/process.untouched.wat @@ -7,15 +7,15 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $none_=>_i64 (func (result i64))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "args_sizes_get" (func $~lib/bindings/wasi_snapshot_preview1/args_sizes_get (param i32 i32) (result i32))) @@ -171,6 +171,7 @@ (data (i32.const 6220) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00=\00=\00 \00e\00x\00i\00t\00 \00=\00=\00\00\00\00\00\00\00\00\00") (data (i32.const 6272) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\10A\82\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/string/String#get:length (param $0 i32) (result i32) diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index f0edd21c5a..54aff8e8bc 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -1,7 +1,7 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17692)) @@ -63,13 +63,13 @@ local.tee $3 i32.const 7 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 12bf8213b3..ded68ad72b 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -1,10 +1,10 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 284)) @@ -16,6 +16,7 @@ (data (i32.const 124) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 252) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "i32ArrayArrayElementAccess" (func $export:std/array-access/i32ArrayArrayElementAccess)) (export "stringArrayPropertyAccess" (func $export:std/array-access/stringArrayPropertyAccess)) diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index 0d24b10a92..3059bc7f48 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -1,8 +1,8 @@ (module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1154,20 +1154,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1744 @@ -1845,14 +1842,11 @@ i32.eqz i32.eq if + local.get $0 + local.get $1 local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + select + call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 1cad1167b7..5cbfefc3df 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -53,6 +53,7 @@ (data (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 768) "\t\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/array/Array#get:length (param $0 i32) (result i32) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index f3ebf3f399..110b0a836d 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -12,16 +12,16 @@ (type $none_=>_f64 (func (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) + (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) - (type $i64_=>_none (func (param i64))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $i64_=>_i64 (func (param i64) (result i64))) + (type $i64_=>_none (func (param i64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) + (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) @@ -1530,20 +1530,17 @@ local.get $0 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $0 select if (result i32) + i32.const 1 + else local.get $1 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1488 @@ -2431,14 +2428,11 @@ i32.eqz i32.eq if + local.get $0 + local.get $1 local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + select + call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 @@ -6075,12 +6069,12 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $0 @@ -6144,17 +6138,16 @@ (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 local.get $1 - i32.eqz - i32.const 1 + i32.const 0 + i32.const 0 local.get $0 - i32.eqz local.get $0 local.get $1 i32.eq select select + i32.eqz if i32.const 0 return @@ -6345,10 +6338,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 838c828d16..8c70a361df 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -9,25 +9,25 @@ (type $none_=>_none (func)) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $none_=>_f64 (func (result f64))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) + (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $i64_=>_i64 (func (param i64) (result i64))) (type $i64_=>_none (func (param i64))) + (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index bfd867f4a4..e059549446 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -2,11 +2,11 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -1071,20 +1071,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1504 diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 753029cb35..59208e9c67 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -2,8 +2,8 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) @@ -43,6 +43,7 @@ (data (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 688) "\10\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00A\08\00\00\02\00\00\00A\00\00\00\02\00\00\00A\00\00\00\02\00\00\00\81\08\00\00\02\00\00\00\81\00\00\00\02\00\00\00\01\t\00\00\02\00\00\00\01\01\00\00\02\00\00\00\01\n\00\00\02\00\00\00\01\02\00\00\02\00\00\00\01\19\00\00\02\00\00\00\01\1a\00\00\02\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 370a93e170..d8da665160 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -4,17 +4,17 @@ (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_f32_i32_=>_none (func (param i32 f32 i32))) - (type $i32_f64_i32_=>_none (func (param i32 f64 i32))) (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) + (type $i64_=>_i64 (func (param i64) (result i64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) + (type $i32_f32_i32_=>_none (func (param i32 f32 i32))) + (type $i32_f64_i32_=>_none (func (param i32 f64 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -1078,20 +1078,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1504 diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index f9ce2ba689..cf3fc63326 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -3,19 +3,19 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i64 (func (param i32 i32 i32) (result i64))) (type $i32_i32_i64_i32_=>_none (func (param i32 i32 i64 i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_i64 (func (param i32 i32 i32) (result i64))) - (type $i32_i32_f32_i32_=>_none (func (param i32 i32 f32 i32))) - (type $i32_i32_f64_i32_=>_none (func (param i32 i32 f64 i32))) (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) + (type $i64_=>_i64 (func (param i64) (result i64))) (type $i32_i32_i32_=>_f64 (func (param i32 i32 i32) (result f64))) + (type $i32_i32_f32_i32_=>_none (func (param i32 i32 f32 i32))) + (type $i32_i32_f64_i32_=>_none (func (param i32 i32 f64 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -50,6 +50,7 @@ (data (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 720) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00A\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index 644f9de8e1..44e99805c5 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -2,16 +2,16 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i32_i32_i32_i32_i32_i32_=>_i64 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_=>_none (func (param i32 i64))) (type $none_=>_i32 (func (result i32))) + (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_i32_i32_i32_=>_i64 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/date/_day (mut i32) (i32.const 0)) (global $~lib/date/_month (mut i32) (i32.const 0)) @@ -1446,20 +1446,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1536 @@ -2786,12 +2783,12 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $3 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $1 @@ -2862,10 +2859,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -3019,14 +3016,11 @@ i32.eqz i32.eq if + local.get $0 + local.get $1 local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + select + call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 @@ -7427,7 +7421,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 + i32.const 0 i32.const 1868 i32.load i32.const 1 @@ -7435,7 +7429,6 @@ i32.const 1 i32.shl local.tee $3 - i32.eqz local.get $0 i32.const 20 i32.sub @@ -7451,6 +7444,7 @@ local.tee $2 i32.gt_u select + i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index cf459b4d5e..877b20efb8 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -2,22 +2,22 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_i32_i32_i32_i32_=>_i64 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i64_=>_none (func (param i32 i64))) + (type $i32_i64_=>_i64 (func (param i32 i64) (result i64))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $i32_i32_i32_i32_i32_i32_i32_=>_i64 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) - (type $i32_i64_=>_i64 (func (param i32 i64) (result i64))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/date/_day (mut i32) (i32.const 0)) (global $~lib/date/_month (mut i32) (i32.const 0)) @@ -146,6 +146,7 @@ (data (i32.const 6396) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z\00\00\00\00\00\00\00") (data (i32.const 6480) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\04A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\t\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/date/daysSinceEpoch (param $0 i32) (param $1 i32) (param $2 i32) (result i32) diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index 911e6494c9..0f361c1678 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -1,9 +1,9 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $f32_=>_i32 (func (param f32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__data_end i32 (i32.const 380)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16764)) @@ -20,6 +20,7 @@ (data (i32.const 284) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 332) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/string/String#get:length (param $0 i32) (result i32) diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 7bf4b42b96..43ae270372 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -8,25 +8,25 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_=>_none (func (param i32 i64))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i64_=>_none (func (param i32 i64 i64))) (type $none_=>_i32 (func (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i32_i64_i64_=>_none (func (param i32 i64 i64))) + (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) + (type $f32_=>_i32 (func (param f32) (result i32))) + (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) (type $i32_f32_=>_none (func (param i32 f32))) + (type $f64_=>_i32 (func (param f64) (result i32))) + (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) + (type $i32_f64_=>_none (func (param i32 f64))) (type $i32_f32_i32_=>_none (func (param i32 f32 i32))) (type $i32_f32_f32_=>_none (func (param i32 f32 f32))) - (type $i32_f64_=>_none (func (param i32 f64))) (type $i32_f64_i32_=>_none (func (param i32 f64 i32))) (type $i32_f64_f64_=>_none (func (param i32 f64 f64))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f32_=>_i32 (func (param f32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -1094,20 +1094,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 7e909ed4d4..656919223e 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -6,29 +6,29 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i64_=>_none (func (param i32 i64))) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) + (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_f64_=>_none (func (param i32 f64))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) + (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) + (type $i32_f32_=>_none (func (param i32 f32))) (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) + (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) + (type $i32_f64_=>_none (func (param i32 f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i64_i64_=>_i32 (func (param i32 i64 i64) (result i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $none_=>_i32 (func (result i32))) (type $f32_=>_i32 (func (param f32) (result i32))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $f64_=>_i32 (func (param f64) (result i32))) + (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_f32_f32_=>_i32 (func (param i32 f32 f32) (result i32))) (type $i32_f64_f64_=>_i32 (func (param i32 f64 f64) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -63,6 +63,7 @@ (data (i32.const 684) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") (data (i32.const 736) " \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\89\10\00\00\00\00\00B\08\00\00\00\00\00\00\02\t\00\00\00\00\00\00P\88\10\00\00\00\00\00\10\t\12\00\00\00\00\00\10\89\00\00\00\00\00\00B\00\00\00\00\00\00\00P\80\00\00\00\00\00\00\10\t\11\00\00\00\00\00\82\08\00\00\00\00\00\00\90\08\11\00\00\00\00\00\10\t\01\00\00\00\00\00\82\00\00\00\00\00\00\00\90\00\01\00\00\00\00\00\10\t\02\00\00\00\00\00\02\01\00\00\00\00\00\00\10\01\02\00\00\00\00\00\10\t\14\00\00\00\00\00\02\n\00\00\00\00\00\00\10\n\14\00\00\00\00\00\10\t\04\00\00\00\00\00\02\02\00\00\00\00\00\00\10\02\04\00\00\00\00\00\10\t2\00\00\00\00\00\02\19\00\00\00\00\00\00\10\192\00\00\00\00\00\10\t4\00\00\00\00\00\02\1a\00\00\00\00\00\00\10\1a4\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index c0aa080103..6a405d69c7 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -6,23 +6,23 @@ (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $none_=>_none (func)) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64) (result i32))) (type $none_=>_f64 (func (result f64))) + (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) + (type $none_=>_none (func)) + (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $f32_i32_=>_f32 (func (param f32 i32) (result f32))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i64_=>_i64 (func (param i64) (result i64))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i64_=>_none (func (param i64))) + (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) (type $f64_=>_none (func (param f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_i64_i64_i64_i64_=>_none (func (param i64 i64 i64 i64 i64))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (type $f32_i32_=>_f32 (func (param f32 i32) (result f32))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) - (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "Math" "E" (global $~lib/bindings/Math/E f64)) (import "Math" "LN2" (global $~lib/bindings/Math/LN2 f64)) (import "Math" "LN10" (global $~lib/bindings/Math/LN10 f64)) @@ -1041,12 +1041,12 @@ local.get $2 i64.const 32 i64.shl - i64.eqz - i32.const 0 + i64.const 1 local.get $1 i32.const 1072693248 i32.eq select + i64.eqz if f64.const 0 return @@ -2825,7 +2825,7 @@ local.get $3 i32.const 2139095040 i32.eq - if + if (result f32) f32.const 2.356194496154785 f32.const 0.7853981852531433 local.get $2 @@ -2839,7 +2839,6 @@ i32.const 1 i32.and select - return else f32.const 3.1415927410125732 f32.const 0 @@ -2854,9 +2853,8 @@ i32.const 1 i32.and select - return end - unreachable + return end i32.const 1 local.get $3 @@ -5435,9 +5433,8 @@ local.get $3 f64.reinterpret_i64 local.set $0 - i32.const 1 + i64.const 0 local.get $2 - i64.eqz local.get $3 i64.const 52 i64.shr_u @@ -5446,6 +5443,7 @@ i32.const 2047 i32.eq select + i64.eqz if local.get $0 return @@ -5595,15 +5593,14 @@ local.get $1 return end - i32.const 1 local.get $3 local.get $2 i32.sub i32.const 209715200 i32.ge_u i32.const 1 + i32.const 0 local.get $2 - i32.eqz local.get $3 i32.const 2139095040 i32.ge_u @@ -5753,12 +5750,12 @@ local.get $2 i64.const 32 i64.shl - i64.eqz - i32.const 0 + i64.const 1 local.get $1 i32.const 1072693248 i32.eq select + i64.eqz if f64.const 0 return @@ -6142,12 +6139,12 @@ local.get $2 i64.const 32 i64.shl - i64.eqz - i32.const 0 + i64.const 1 local.get $1 i32.const 1072693248 i32.eq select + i64.eqz if f64.const 0 return @@ -7080,39 +7077,31 @@ i32.const 2146435072 i32.eq if + local.get $1 + f64.const 0 + local.get $8 + i32.const 0 + i32.ge_s + select + f64.const 0 + local.get $1 + f64.neg + local.get $8 + i32.const 0 + i32.ge_s + select + local.get $4 + i32.const 1072693248 + i32.ge_s + select + f64.const nan:0x8000000000000 local.get $18 local.get $4 i32.const 1072693248 i32.sub i32.or - if - local.get $4 - i32.const 1072693248 - i32.ge_s - if - local.get $1 - f64.const 0 - local.get $8 - i32.const 0 - i32.ge_s - select - return - else - f64.const 0 - local.get $1 - f64.neg - local.get $8 - i32.const 0 - i32.ge_s - select - return - end - unreachable - else - f64.const nan:0x8000000000000 - return - end - unreachable + select + return end local.get $9 i32.const 1072693248 diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index 85f4da0c19..969746555e 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -1,33 +1,33 @@ (module (type $f64_=>_f64 (func (param f64) (result f64))) - (type $f32_f32_f32_i32_=>_i32 (func (param f32 f32 f32 i32) (result i32))) (type $f64_f64_f64_i32_=>_i32 (func (param f64 f64 f64 i32) (result i32))) + (type $f32_f32_f32_i32_=>_i32 (func (param f32 f32 f32 i32) (result i32))) (type $f32_=>_f32 (func (param f32) (result f32))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $f32_f32_f32_f32_i32_=>_i32 (func (param f32 f32 f32 f32 i32) (result i32))) (type $f64_f64_f64_f64_i32_=>_i32 (func (param f64 f64 f64 f64 i32) (result i32))) + (type $f32_f32_f32_f32_i32_=>_i32 (func (param f32 f32 f32 f32 i32) (result i32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (type $none_=>_f64 (func (result f64))) - (type $none_=>_none (func)) (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i64_=>_none (func (param i64))) - (type $f64_=>_none (func (param f64))) + (type $none_=>_none (func)) + (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) + (type $f64_f64_f64_=>_f64 (func (param f64 f64 f64) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $f32_=>_i32 (func (param f32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i64_i64_i64_i64_i64_i32_=>_i32 (func (param i64 i64 i64 i64 i64 i32) (result i32))) - (type $f32_i32_f32_f32_i32_=>_i32 (func (param f32 i32 f32 f32 i32) (result i32))) + (type $f32_i32_=>_f32 (func (param f32 i32) (result f32))) + (type $f32_f32_f32_=>_f32 (func (param f32 f32 f32) (result f32))) (type $f64_i32_f64_f64_i32_=>_i32 (func (param f64 i32 f64 f64 i32) (result i32))) + (type $f32_i32_f32_f32_i32_=>_i32 (func (param f32 i32 f32 f32 i32) (result i32))) (type $f64_i64_=>_i32 (func (param f64 i64) (result i32))) (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i64_=>_none (func (param i64))) (type $none_=>_f32 (func (result f32))) - (type $f32_i32_=>_f32 (func (param f32 i32) (result f32))) - (type $f32_f32_f32_=>_f32 (func (param f32 f32 f32) (result f32))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) - (type $f64_f64_f64_=>_f64 (func (param f64 f64 f64) (result f64))) + (type $f64_=>_none (func (param f64))) + (type $i64_i64_i64_i64_i64_i32_=>_i32 (func (param i64 i64 i64 i64 i64 i32) (result i32))) + (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "Math" "E" (global $~lib/bindings/Math/E f64)) (import "Math" "LN2" (global $~lib/bindings/Math/LN2 f64)) (import "Math" "LN10" (global $~lib/bindings/Math/LN10 f64)) @@ -126,6 +126,7 @@ (data (i32.const 9248) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\0d=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8_none (func)) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) + (type $none_=>_none (func)) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) + (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) diff --git a/tests/compiler/std/mod.untouched.wat b/tests/compiler/std/mod.untouched.wat index 08120fd376..382666044f 100644 --- a/tests/compiler/std/mod.untouched.wat +++ b/tests/compiler/std/mod.untouched.wat @@ -1,12 +1,12 @@ (module - (type $none_=>_none (func)) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) - (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) + (type $none_=>_none (func)) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) + (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) + (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/mod/js i32 (i32.const 1)) @@ -16,6 +16,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "mod" (func $std/mod/mod)) (export "memory" (memory $0)) (start $~start) diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index 1c951e57e1..78ee0eb4d2 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1064,20 +1064,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index 4f5c2ba371..2e146335e4 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -5,10 +5,10 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_f32_=>_none (func (param i32 f32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/new/AClass.aStaticField (mut i32) (i32.const 0)) @@ -40,6 +40,7 @@ (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 416) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $std/new/AClass#set:aField (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 0c6ec88ea6..84bcba3320 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -1,9 +1,9 @@ (module - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17596)) (memory $0 1) @@ -81,10 +81,10 @@ drop i32.const 0 local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 @@ -113,13 +113,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat index d9b31e2443..f6c40ec4a8 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.untouched.wat @@ -1,11 +1,11 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 188)) @@ -18,6 +18,7 @@ (data (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") (data (i32.const 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/object/Object.is (param $0 f64) (param $1 f64) (result i32) diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index d6377f00da..6556a67184 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1123,20 +1123,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 @@ -2216,11 +2213,9 @@ if (result i32) global.get $std/operator-overloading/f i32.load offset=4 - i32.eqz else - i32.const 0 + i32.const 1 end - i32.eqz if i32.const 0 i32.const 1456 @@ -2952,23 +2947,23 @@ local.get $0 i32.load if (result i32) - i32.const 0 + i32.const 1 else local.get $0 i32.load offset=4 - i32.eqz end + i32.eqz global.set $std/operator-overloading/bres + global.get $std/operator-overloading/bres global.get $std/operator-overloading/excl i32.load if (result i32) - i32.const 0 + i32.const 1 else global.get $std/operator-overloading/excl i32.load offset=4 - i32.eqz end - global.get $std/operator-overloading/bres + i32.eqz i32.ne if i32.const 0 diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index 80656982bd..8e9cf23cca 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -104,6 +104,7 @@ (data (i32.const 412) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00") (data (i32.const 496) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index 909cf302e6..dcd48b7ddf 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/pointer/one (mut i32) (i32.const 0)) (global $std/pointer/two (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat index c98e2f2605..aa23eef8ba 100644 --- a/tests/compiler/std/pointer.untouched.wat +++ b/tests/compiler/std/pointer.untouched.wat @@ -1,7 +1,7 @@ (module (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/pointer/one (mut i32) (i32.const 0)) @@ -17,6 +17,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $std/pointer/Entry#set:key (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/polyfills.untouched.wat b/tests/compiler/std/polyfills.untouched.wat index 7483f68698..6d59b147cc 100644 --- a/tests/compiler/std/polyfills.untouched.wat +++ b/tests/compiler/std/polyfills.untouched.wat @@ -1,7 +1,7 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) (type $i64_=>_i64 (func (param i64) (result i64))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__data_end i32 (i32.const 76)) @@ -10,6 +10,7 @@ (memory $0 1) (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/polyfills/bswap (param $0 i32) (result i32) diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index fdda9b61c5..5d67415ee6 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -6,23 +6,23 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_f64_=>_none (func (param i32 f64))) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) + (type $i32_f32_=>_none (func (param i32 f32))) + (type $i32_f64_=>_none (func (param i32 f64))) (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) (type $f32_=>_i32 (func (param f32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) + (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $f64_=>_i32 (func (param f64) (result i32))) + (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) + (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -1085,20 +1085,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 3b37151db9..78384794da 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -11,20 +11,20 @@ (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $i32_i64_=>_none (func (param i32 i64))) (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_f64_=>_none (func (param i32 f64))) + (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) + (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) (type $none_=>_i32 (func (result i32))) (type $f32_=>_i32 (func (param f32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) + (type $i32_f32_=>_none (func (param i32 f32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $f64_=>_i32 (func (param f64) (result i32))) + (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) + (type $i32_f64_=>_none (func (param i32 f64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -58,6 +58,7 @@ (data (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") (data (i32.const 624) "\17\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00H\08\00\00\00\00\00\00B\08\00\00\00\00\00\00H\00\00\00\00\00\00\00B\00\00\00\00\00\00\00\88\08\00\00\00\00\00\00\82\08\00\00\00\00\00\00\88\00\00\00\00\00\00\00\82\00\00\00\00\00\00\00\08\t\00\00\00\00\00\00\02\t\00\00\00\00\00\00\08\01\00\00\00\00\00\00\02\01\00\00\00\00\00\00\08\n\00\00\00\00\00\00\02\n\00\00\00\00\00\00\08\02\00\00\00\00\00\00\02\02\00\00\00\00\00\00\08\19\00\00\00\00\00\00\02\19\00\00\00\00\00\00\08\1a\00\00\00\00\00\00\02\1a\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/simd.untouched.wat b/tests/compiler/std/simd.untouched.wat index 82bf172278..196aa636d5 100644 --- a/tests/compiler/std/simd.untouched.wat +++ b/tests/compiler/std/simd.untouched.wat @@ -6,6 +6,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:std/simd diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 84ad70fed0..12914f3480 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1115,20 +1115,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1904 diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 3c6c1436d7..2b38f50179 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -3,14 +3,14 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) @@ -57,6 +57,7 @@ (data (i32.const 860) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 928) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/array/Array#get:length (param $0 i32) (result i32) diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index 9a95f74d3c..61a729a38a 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -5,8 +5,8 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -1206,20 +1206,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1616 @@ -2084,14 +2081,11 @@ i32.eqz i32.eq if + local.get $0 + local.get $1 local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + select + call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 @@ -2133,10 +2127,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -2168,13 +2162,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 @@ -3830,10 +3824,10 @@ i32.const 3 i32.shr_u local.tee $3 - i32.eqz - i32.const 1 + i32.const 0 local.get $3 select + i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|0 @@ -3895,10 +3889,10 @@ i32.const 2 i32.shr_u local.tee $2 - i32.eqz - i32.const 1 + i32.const 0 local.get $2 select + i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|00 diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index d2ba5ed296..e5b5f5171d 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -8,10 +8,10 @@ (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) + (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/staticarray/arr1 i32 (i32.const 32)) (global $std/staticarray/arr2 i32 (i32.const 256)) @@ -86,6 +86,7 @@ (data (i32.const 2012) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 2064) "\0c\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$\t\00\00\00\00\00\00 \00\00\00\00\00\00\00\04A\00\00\00\00\00\00\02\t\00\00\00\00\00\00\02\01\00\00\00\00\00\00\04A\00\00\00\00\00\00\02A\00\00\00\00\00\00$\1a\00\00\00\00\00\00$\19\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 8aa51a1d63..4f452ab417 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -3,11 +3,11 @@ (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i64_=>_i32 (func (param i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) @@ -1505,20 +1505,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1424 @@ -2528,10 +2525,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -2563,13 +2560,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index cfb7e7640d..8bcea8fb01 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -8,12 +8,12 @@ (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) @@ -217,6 +217,7 @@ (data (i32.const 19964) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 \00\00\00\00\00\00\00") (data (i32.const 20032) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\a4\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/string/String#get:length (param $0 i32) (result i32) diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index 7c76a4beb0..bba1614bc2 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -1086,20 +1086,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1488 @@ -1920,10 +1917,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -1955,13 +1952,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index 65f2c9be39..c1cd7447e3 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -8,8 +8,8 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string-encoding/str (mut i32) (i32.const 32)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -52,6 +52,7 @@ (data (i32.const 13948) "\cc\1c\00\00\00\00\00\00\00\00\00\00\01\00\00\00\ba\1c\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\0d\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n\00\00\00") (data (i32.const 21328) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/string/String.UTF16.byteLength (param $0 i32) (result i32) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 22257a02ee..68713c53c4 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -11,14 +11,14 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $i32_=>_f64 (func (param i32) (result f64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) + (type $none_=>_i64 (func (result i64))) (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) + (type $i32_=>_f64 (func (param i32) (result f64))) + (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string/str (mut i32) (i32.const 1056)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -954,12 +954,12 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $3 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $1 @@ -1030,10 +1030,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -2099,20 +2099,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1648 @@ -2797,10 +2794,10 @@ i32.load offset=16 i32.const 1 i32.shr_u - i32.eqz else - i32.const 1 + i32.const 0 end + i32.eqz ) (func $~lib/string/String.fromCharCode@varargs (param $0 i32) (result i32) (local $1 i32) @@ -3036,14 +3033,11 @@ i32.eqz i32.eq if + local.get $0 + local.get $1 local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + select + call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 @@ -4373,10 +4367,9 @@ i32.sub local.set $2 loop $for-loop|3 - i32.const 1 - local.get $12 - i32.eqz i32.const 0 + local.get $12 + i32.const 1 local.get $7 i32.const 46 i32.eq @@ -4385,6 +4378,7 @@ i32.const 10 i32.lt_u select + i32.eqz if block $for-break3 local.get $2 @@ -6900,19 +6894,17 @@ global.get $std/string/str local.tee $0 i32.store - block $__inlined_func$~lib/string/String#charCodeAt (result i32) - i32.const -1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.eqz - br_if $__inlined_func$~lib/string/String#charCodeAt - drop + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + if (result i32) local.get $0 i32.load16_u + else + i32.const -1 end i32.const 104 i32.ne @@ -20430,7 +20422,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 + i32.const 0 local.get $2 i32.const 20 i32.sub @@ -20440,7 +20432,6 @@ i32.const 1 i32.shl local.tee $4 - i32.eqz local.get $0 i32.const 20 i32.sub @@ -20456,6 +20447,7 @@ local.tee $3 i32.gt_u select + i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -20528,7 +20520,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 + i32.const 0 local.get $2 i32.const 20 i32.sub @@ -20538,7 +20530,6 @@ i32.const 1 i32.shl local.tee $3 - i32.eqz local.get $0 i32.const 20 i32.sub @@ -20554,6 +20545,7 @@ local.tee $5 i32.gt_u select + i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -20994,10 +20986,10 @@ unreachable end local.get $2 - i32.eqz - i32.const 1 + i32.const 0 local.get $1 select + i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 5d8b16e859..68b879d469 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -7,21 +7,21 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_=>_f64 (func (param i32) (result f64))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string/str (mut i32) (i32.const 32)) (global $std/string/nullStr (mut i32) (i32.const 0)) @@ -520,6 +520,7 @@ (data (i32.const 24780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00b\00a\00r\00\00\00\00\00\00\00") (data (i32.const 24816) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00\02A\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "getString" (func $std/string/getString)) (export "memory" (memory $0)) (start $~start) diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 55c39f9a84..a80d267971 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -4,8 +4,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1176,20 +1176,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1472 @@ -1867,14 +1864,11 @@ i32.eqz i32.eq if + local.get $0 + local.get $1 local.get $2 - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + select + call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 @@ -2114,10 +2108,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -2149,13 +2143,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 00353d632e..68ad1c1978 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -4,8 +4,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) @@ -78,6 +78,7 @@ (data (i32.const 1548) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00\00\00\00\00\00\00\00\00") (data (i32.const 1632) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\01\82\00\00\00\00\00\10A\02\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/symbol/Symbol (param $0 i32) (result i32) diff --git a/tests/compiler/std/trace.optimized.wat b/tests/compiler/std/trace.optimized.wat index 5f8b0e6061..41847e41dc 100644 --- a/tests/compiler/std/trace.optimized.wat +++ b/tests/compiler/std/trace.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17804)) diff --git a/tests/compiler/std/trace.untouched.wat b/tests/compiler/std/trace.untouched.wat index 70914731ca..117c22a724 100644 --- a/tests/compiler/std/trace.untouched.wat +++ b/tests/compiler/std/trace.untouched.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__data_end i32 (i32.const 396)) @@ -18,6 +18,7 @@ (data (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 348) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~start diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 918aeccd9a..959bf864c8 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -11,38 +11,38 @@ (type $i64_i64_=>_i32 (func (param i64 i64) (result i32))) (type $f32_i32_i32_=>_i32 (func (param f32 i32 i32) (result i32))) (type $f64_i32_i32_=>_i32 (func (param f64 i32 i32) (result i32))) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) + (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $i64_i64_i32_i32_=>_i64 (func (param i64 i64 i32 i32) (result i64))) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i64_i32_i32_=>_none (func (param i64 i32 i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_i32_i32_=>_i64 (func (param i64 i32 i32) (result i64))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $f32_f32_i32_i32_=>_f32 (func (param f32 f32 i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) + (type $f32_f32_i32_i32_=>_f32 (func (param f32 f32 i32 i32) (result f32))) (type $f64_f64_i32_i32_=>_f64 (func (param f64 f64 i32 i32) (result f64))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $i64_i32_i32_=>_i64 (func (param i64 i32 i32) (result i64))) + (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) + (type $i64_i32_i32_=>_none (func (param i64 i32 i32))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $f32_i32_i32_=>_none (func (param f32 i32 i32))) - (type $f64_i32_i32_=>_none (func (param f64 i32 i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) (type $f32_i32_i32_=>_f32 (func (param f32 i32 i32) (result f32))) (type $f64_i32_i32_=>_f64 (func (param f64 i32 i32) (result f64))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) + (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $f32_i32_i32_=>_none (func (param f32 i32 i32))) + (type $f64_i32_i32_=>_none (func (param f64 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) + (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) + (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $f32_=>_f32 (func (param f32) (result f32))) (type $f64_=>_f64 (func (param f64) (result f64))) + (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -1494,20 +1494,17 @@ local.get $0 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $0 select if (result i32) + i32.const 1 + else local.get $1 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1504 @@ -13429,10 +13426,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -13464,13 +13461,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 @@ -40826,10 +40823,10 @@ i32.const 3 i32.shr_u local.tee $3 - i32.eqz - i32.const 1 + i32.const 0 local.get $3 select + i32.eqz br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 drop local.get $0 @@ -40907,10 +40904,10 @@ i32.const 2 i32.shr_u local.tee $3 - i32.eqz - i32.const 1 + i32.const 0 local.get $3 select + i32.eqz br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 drop local.get $0 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 213bf716ee..e42f2b27c0 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -11,43 +11,43 @@ (type $f32_i32_i32_=>_i32 (func (param f32 i32 i32) (result i32))) (type $f64_i32_i32_=>_i32 (func (param f64 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i64_i64_i32_i32_=>_i64 (func (param i64 i64 i32 i32) (result i64))) + (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) + (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $i64_i32_i32_=>_none (func (param i64 i32 i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) + (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i32_i64_=>_i64 (func (param i32 i32 i64) (result i64))) - (type $i64_i32_i32_=>_i64 (func (param i64 i32 i32) (result i64))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $f32_f32_i32_i32_=>_f32 (func (param f32 f32 i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $f64_f64_i32_i32_=>_f64 (func (param f64 f64 i32 i32) (result f64))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $i64_i32_i32_=>_i64 (func (param i64 i32 i32) (result i64))) + (type $i64_i32_i32_=>_none (func (param i64 i32 i32))) + (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) + (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i32_i32_f32_=>_f32 (func (param i32 i32 f32) (result f32))) + (type $i32_i32_f64_=>_f64 (func (param i32 i32 f64) (result f64))) + (type $f32_i32_i32_=>_f32 (func (param f32 i32 i32) (result f32))) + (type $f64_i32_i32_=>_f64 (func (param f64 i32 i32) (result f64))) (type $f32_i32_i32_=>_none (func (param f32 i32 i32))) (type $f64_i32_i32_=>_none (func (param f64 i32 i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_i32_f32_=>_f32 (func (param i32 i32 f32) (result f32))) - (type $f32_i32_i32_=>_f32 (func (param f32 i32 i32) (result f32))) - (type $i32_i32_f64_=>_f64 (func (param i32 i32 f64) (result f64))) - (type $f64_i32_i32_=>_f64 (func (param f64 i32 i32) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) + (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) + (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (global $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) diff --git a/tests/compiler/std/uri.optimized.wat b/tests/compiler/std/uri.optimized.wat index 691528adce..6654285147 100644 --- a/tests/compiler/std/uri.optimized.wat +++ b/tests/compiler/std/uri.optimized.wat @@ -1,7 +1,7 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) @@ -1179,20 +1179,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1520 @@ -2400,10 +2397,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -2435,13 +2432,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/std/uri.untouched.wat b/tests/compiler/std/uri.untouched.wat index 232345eb36..13d4eefcd9 100644 --- a/tests/compiler/std/uri.untouched.wat +++ b/tests/compiler/std/uri.untouched.wat @@ -2,8 +2,8 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -98,6 +98,7 @@ (data (i32.const 3276) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\f4\00\b8\00\ef\00\00\00\00\00\00\00") (data (i32.const 3312) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/string/String#get:length (param $0 i32) (result i32) diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.optimized.wat index f63421fe8d..3197001005 100644 --- a/tests/compiler/super-inline.optimized.wat +++ b/tests/compiler/super-inline.optimized.wat @@ -1071,20 +1071,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1392 diff --git a/tests/compiler/super-inline.untouched.wat b/tests/compiler/super-inline.untouched.wat index 3b5ff64840..3cbdbc3100 100644 --- a/tests/compiler/super-inline.untouched.wat +++ b/tests/compiler/super-inline.untouched.wat @@ -6,8 +6,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -38,6 +38,7 @@ (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 416) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\03\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) diff --git a/tests/compiler/switch.untouched.wat b/tests/compiler/switch.untouched.wat index 221844bba7..92329c9144 100644 --- a/tests/compiler/switch.untouched.wat +++ b/tests/compiler/switch.untouched.wat @@ -9,6 +9,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $switch/doSwitch (param $0 i32) (result i32) diff --git a/tests/compiler/tablebase.optimized.wat b/tests/compiler/tablebase.optimized.wat index f4f0821a5c..90338ab92d 100644 --- a/tests/compiler/tablebase.optimized.wat +++ b/tests/compiler/tablebase.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17500)) (memory $0 1) diff --git a/tests/compiler/tablebase.untouched.wat b/tests/compiler/tablebase.untouched.wat index 890fcf6881..6b13412c68 100644 --- a/tests/compiler/tablebase.untouched.wat +++ b/tests/compiler/tablebase.untouched.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $tablebase/staticFunction i32 (i32.const 32)) (global $~lib/ASC_TABLE_BASE i32 (i32.const 32)) diff --git a/tests/compiler/templateliteral.optimized.wat b/tests/compiler/templateliteral.optimized.wat index 21a5f96c3a..147a01f0f8 100644 --- a/tests/compiler/templateliteral.optimized.wat +++ b/tests/compiler/templateliteral.optimized.wat @@ -8,8 +8,8 @@ (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) @@ -1215,20 +1215,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1520 @@ -2126,10 +2123,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -2161,13 +2158,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 diff --git a/tests/compiler/templateliteral.untouched.wat b/tests/compiler/templateliteral.untouched.wat index 959eae777c..768a99f96e 100644 --- a/tests/compiler/templateliteral.untouched.wat +++ b/tests/compiler/templateliteral.untouched.wat @@ -7,15 +7,15 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) + (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) + (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) @@ -96,6 +96,7 @@ (data (i32.const 4508) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00(\00A\00=\00r\00e\00f\00#\001\00,\00 \00B\00=\00r\00e\00f\00#\002\00)\00\00\00\00\00\00\00\00\00") (data (i32.const 4576) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04A\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) diff --git a/tests/compiler/ternary.untouched.wat b/tests/compiler/ternary.untouched.wat index dc6ac01dee..1a6667332f 100644 --- a/tests/compiler/ternary.untouched.wat +++ b/tests/compiler/ternary.untouched.wat @@ -7,6 +7,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "test" (func $ternary/test)) (export "memory" (memory $0)) (start $~start) diff --git a/tests/compiler/throw.optimized.wat b/tests/compiler/throw.optimized.wat index eb29b5a42f..de202e3c43 100644 --- a/tests/compiler/throw.optimized.wat +++ b/tests/compiler/throw.optimized.wat @@ -853,20 +853,17 @@ local.get $0 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $0 select if (result i32) + i32.const 1 + else local.get $1 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1632 diff --git a/tests/compiler/throw.untouched.wat b/tests/compiler/throw.untouched.wat index b79c13f283..6862ddcd6a 100644 --- a/tests/compiler/throw.untouched.wat +++ b/tests/compiler/throw.untouched.wat @@ -3,10 +3,10 @@ (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) @@ -42,6 +42,7 @@ (data (i32.const 652) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 704) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "doThrow" (func $throw/doThrow)) (export "memory" (memory $0)) (start $~start) diff --git a/tests/compiler/typealias.untouched.wat b/tests/compiler/typealias.untouched.wat index b81b311ee2..98ec167efb 100644 --- a/tests/compiler/typealias.untouched.wat +++ b/tests/compiler/typealias.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "alias" (func $typealias/alias)) (export "memory" (memory $0)) (func $typealias/alias (param $0 i32) (result i32) diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index c2acc3c73f..9d1fadcbd3 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -1,12 +1,12 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -66,10 +66,10 @@ return end local.get $1 - i32.eqz - i32.const 1 + i32.const 0 local.get $0 select + i32.eqz if i32.const 0 return @@ -101,13 +101,13 @@ i32.const 7 i32.and i32.or - i32.eqz - i32.const 0 + i32.const 1 local.get $2 local.tee $0 i32.const 4 i32.ge_u select + i32.eqz if loop $do-continue|0 local.get $3 @@ -1202,20 +1202,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1696 diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 7c98880320..ba3dca6777 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -5,10 +5,10 @@ (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $typeof/SomeNamespace.a i32 (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) diff --git a/tests/compiler/unary.untouched.wat b/tests/compiler/unary.untouched.wat index 0f905c5e44..f8de28e6b3 100644 --- a/tests/compiler/unary.untouched.wat +++ b/tests/compiler/unary.untouched.wat @@ -9,6 +9,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:unary diff --git a/tests/compiler/unify-local-flags.untouched.wat b/tests/compiler/unify-local-flags.untouched.wat index 93d9d07ba9..8bc877793a 100644 --- a/tests/compiler/unify-local-flags.untouched.wat +++ b/tests/compiler/unify-local-flags.untouched.wat @@ -5,6 +5,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "testFor" (func $unify-local-flags/testFor)) (export "testWhile" (func $unify-local-flags/testWhile)) (export "testDo" (func $unify-local-flags/testDo)) diff --git a/tests/compiler/void.untouched.wat b/tests/compiler/void.untouched.wat index 6175cc20ea..b4490b85a4 100644 --- a/tests/compiler/void.untouched.wat +++ b/tests/compiler/void.untouched.wat @@ -8,6 +8,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $void/anInt (result i32) diff --git a/tests/compiler/wasi/abort.optimized.wat b/tests/compiler/wasi/abort.optimized.wat index 5c9b753f71..a4d98319a1 100644 --- a/tests/compiler/wasi/abort.optimized.wat +++ b/tests/compiler/wasi/abort.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) diff --git a/tests/compiler/wasi/abort.untouched.wat b/tests/compiler/wasi/abort.untouched.wat index 55df334f51..dc78a728d0 100644 --- a/tests/compiler/wasi/abort.untouched.wat +++ b/tests/compiler/wasi/abort.untouched.wat @@ -1,8 +1,8 @@ (module - (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) @@ -14,6 +14,7 @@ (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e\00\00\00\00\00\00\00") (data (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "test" (func $wasi/abort/test)) (export "memory" (memory $0)) (export "_start" (func $~start)) diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat index e33783763f..4465028c63 100644 --- a/tests/compiler/wasi/seed.optimized.wat +++ b/tests/compiler/wasi/seed.optimized.wat @@ -2,10 +2,10 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $none_=>_f64 (func (result f64))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i64_=>_i64 (func (param i64) (result i64))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) diff --git a/tests/compiler/wasi/seed.untouched.wat b/tests/compiler/wasi/seed.untouched.wat index 521c013bfc..efda94a392 100644 --- a/tests/compiler/wasi/seed.untouched.wat +++ b/tests/compiler/wasi/seed.untouched.wat @@ -1,14 +1,14 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_f64 (func (result f64))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i64_=>_none (func (param i64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i64_=>_i64 (func (param i64) (result i64))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i64_=>_none (func (param i64))) + (type $none_=>_none (func)) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) @@ -23,6 +23,7 @@ (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "test" (func $wasi/seed/test)) (export "memory" (memory $0)) (export "_start" (func $~start)) diff --git a/tests/compiler/wasi/snapshot_preview1.untouched.wat b/tests/compiler/wasi/snapshot_preview1.untouched.wat index 2fb19232cf..c954b2c789 100644 --- a/tests/compiler/wasi/snapshot_preview1.untouched.wat +++ b/tests/compiler/wasi/snapshot_preview1.untouched.wat @@ -10,6 +10,7 @@ (global $~lib/memory/__heap_base i32 (i32.const 16392)) (memory $0 0) (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $start:wasi/snapshot_preview1 diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat index cc284663f6..17c22a0e2d 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -1,16 +1,16 @@ (module (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_f64_f64_f64_f64_f64_=>_none (func (param i32 f64 f64 f64 f64 f64))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $i32_f64_f64_f64_f64_f64_=>_none (func (param i32 f64 f64 f64 f64 f64))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -2747,20 +2747,17 @@ local.get $7 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $7 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1104 diff --git a/tests/compiler/wasi/trace.untouched.wat b/tests/compiler/wasi/trace.untouched.wat index 4acb47fd45..3cfe2f48b8 100644 --- a/tests/compiler/wasi/trace.untouched.wat +++ b/tests/compiler/wasi/trace.untouched.wat @@ -4,13 +4,13 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -35,6 +35,7 @@ (data (i32.const 1064) "\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;") (data (i32.const 1104) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index 13acc89d96..6fef9b99c9 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1148,20 +1148,17 @@ local.get $1 i32.const 15 i32.and - i32.eqz - i32.const 0 + i32.const 1 local.get $1 select if (result i32) + i32.const 1 + else local.get $0 i32.load i32.const 1 i32.and - i32.eqz - else - i32.const 0 end - i32.eqz if i32.const 0 i32.const 1440 diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index 65a46a3b0c..573b565da0 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -3,8 +3,8 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -38,6 +38,7 @@ (data (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 464) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) (start $~start) (func $while/testSimple