| // Copyright 2019 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| load('test/mjsunit/wasm/wasm-module-builder.js'); |
| |
| const builder = new WasmModuleBuilder(); |
| const sig0 = builder.addType(makeSig([kWasmF32], [kWasmI32])); |
| const sig1 = builder.addType(makeSig([kWasmI64, kWasmI32, kWasmI64, kWasmF32, kWasmI64], [kWasmF32])); |
| const sig2 = builder.addType(makeSig([kWasmF32], [kWasmF32])); |
| // Generate function 1 (out of 3). |
| builder.addFunction(undefined, sig0).addBody([kExprI32Const, 0x00]); |
| // Generate function 2 (out of 3). |
| builder.addFunction(undefined, sig1) |
| .addBody([ |
| // signature: f_lilfl |
| kExprBlock, kWasmF32, // @1 f32 |
| kExprI32Const, 0x00, |
| kExprIf, kWasmStmt, // @5 |
| kExprLoop, kWasmStmt, // @7 |
| kExprBlock, kWasmI32, // @9 i32 |
| kExprF32Const, 0x00, 0x00, 0x80, 0xc1, |
| kExprF32Const, 0x00, 0x00, 0x80, 0x45, |
| kExprCallFunction, 0x00, // function #0: i_f |
| kExprBrIf, 0x03, // depth=3 |
| kExprDrop, |
| kExprI32Const, 0xd8, 0x00, |
| kExprEnd, // @29 |
| kExprBrIf, 0x00, // depth=0 |
| kExprEnd, // @32 |
| kExprF32Const, 0x00, 0x00, 0x80, 0x3f, |
| kExprF32Const, 0x00, 0x00, 0x80, 0xc6, |
| kExprBlock, kWasmI32, // @43 i32 |
| kExprF32Const, 0x00, 0x00, 0x80, 0x3f, |
| kExprCallFunction, 0x02, // function #2: f_f |
| kExprDrop, |
| kExprI32Const, 0x68, |
| kExprEnd, // @55 |
| kExprBrIf, 0x01, // depth=1 |
| kExprI32Const, 0x00, |
| kExprSelect, |
| kExprDrop, |
| kExprUnreachable, |
| kExprElse, // @63 |
| kExprNop, |
| kExprEnd, // @65 |
| kExprF32Const, 0x00, 0x00, 0x69, 0x43, |
| kExprEnd // @71 |
| ]); |
| // Generate function 3 (out of 3). |
| builder.addFunction(undefined, sig2).addBody([ |
| kExprF32Const, 0x00, 0x00, 0x80, 0x3f |
| ]); |
| builder.instantiate(); |