| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_WASM_OPCODES_H_ | 5 #ifndef V8_WASM_OPCODES_H_ |
| 6 #define V8_WASM_OPCODES_H_ | 6 #define V8_WASM_OPCODES_H_ |
| 7 | 7 |
| 8 #include "src/machine-type.h" | 8 #include "src/machine-type.h" |
| 9 #include "src/signature.h" | 9 #include "src/signature.h" |
| 10 | 10 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 | 61 |
| 62 // Bitfields for the various annotations for memory accesses. | 62 // Bitfields for the various annotations for memory accesses. |
| 63 typedef BitField<Alignment, 7, 1> AlignmentField; | 63 typedef BitField<Alignment, 7, 1> AlignmentField; |
| 64 typedef BitField<Atomicity, 5, 2> AtomicityField; | 64 typedef BitField<Atomicity, 5, 2> AtomicityField; |
| 65 typedef BitField<bool, 4, 1> OffsetField; | 65 typedef BitField<bool, 4, 1> OffsetField; |
| 66 }; | 66 }; |
| 67 | 67 |
| 68 typedef Signature<LocalType> FunctionSig; | 68 typedef Signature<LocalType> FunctionSig; |
| 69 std::ostream& operator<<(std::ostream& os, const FunctionSig& function); | 69 std::ostream& operator<<(std::ostream& os, const FunctionSig& function); |
| 70 | 70 |
| 71 // TODO(titzer): Renumber all the opcodes to fill in holes. |
| 72 |
| 71 // Control expressions and blocks. | 73 // Control expressions and blocks. |
| 72 #define FOREACH_CONTROL_OPCODE(V) \ | 74 #define FOREACH_CONTROL_OPCODE(V) \ |
| 73 V(Nop, 0x00, _) \ | 75 V(Nop, 0x00, _) \ |
| 74 V(Block, 0x01, _) \ | 76 V(Block, 0x01, _) \ |
| 75 V(Loop, 0x02, _) \ | 77 V(Loop, 0x02, _) \ |
| 76 V(If, 0x03, _) \ | 78 V(If, 0x03, _) \ |
| 77 V(IfElse, 0x04, _) \ | 79 V(IfElse, 0x04, _) \ |
| 78 V(Select, 0x05, _) \ | 80 V(Select, 0x05, _) \ |
| 79 V(Br, 0x06, _) \ | 81 V(Br, 0x06, _) \ |
| 80 V(BrIf, 0x07, _) \ | 82 V(BrIf, 0x07, _) \ |
| 81 V(TableSwitch, 0x08, _) \ | 83 V(TableSwitch, 0x08, _) \ |
| 82 V(Return, 0x14, _) \ | 84 V(Return, 0x14, _) \ |
| 83 V(Unreachable, 0x15, _) | 85 V(Unreachable, 0x15, _) |
| 84 // TODO(titzer): numbering | |
| 85 | 86 |
| 86 // Constants, locals, globals, and calls. | 87 // Constants, locals, globals, and calls. |
| 87 #define FOREACH_MISC_OPCODE(V) \ | 88 #define FOREACH_MISC_OPCODE(V) \ |
| 88 V(I8Const, 0x09, _) \ | 89 V(I8Const, 0x09, _) \ |
| 89 V(I32Const, 0x0a, _) \ | 90 V(I32Const, 0x0a, _) \ |
| 90 V(I64Const, 0x0b, _) \ | 91 V(I64Const, 0x0b, _) \ |
| 91 V(F64Const, 0x0c, _) \ | 92 V(F64Const, 0x0c, _) \ |
| 92 V(F32Const, 0x0d, _) \ | 93 V(F32Const, 0x0d, _) \ |
| 93 V(GetLocal, 0x0e, _) \ | 94 V(GetLocal, 0x0e, _) \ |
| 94 V(SetLocal, 0x0f, _) \ | 95 V(SetLocal, 0x0f, _) \ |
| 95 V(LoadGlobal, 0x10, _) \ | 96 V(LoadGlobal, 0x10, _) \ |
| 96 V(StoreGlobal, 0x11, _) \ | 97 V(StoreGlobal, 0x11, _) \ |
| 97 V(CallFunction, 0x12, _) \ | 98 V(CallFunction, 0x12, _) \ |
| 98 V(CallIndirect, 0x13, _) | 99 V(CallIndirect, 0x13, _) \ |
| 100 V(CallImport, 0x1F, _) |
| 99 | 101 |
| 100 // Load memory expressions. | 102 // Load memory expressions. |
| 101 #define FOREACH_LOAD_MEM_OPCODE(V) \ | 103 #define FOREACH_LOAD_MEM_OPCODE(V) \ |
| 102 V(I32LoadMem8S, 0x20, i_i) \ | 104 V(I32LoadMem8S, 0x20, i_i) \ |
| 103 V(I32LoadMem8U, 0x21, i_i) \ | 105 V(I32LoadMem8U, 0x21, i_i) \ |
| 104 V(I32LoadMem16S, 0x22, i_i) \ | 106 V(I32LoadMem16S, 0x22, i_i) \ |
| 105 V(I32LoadMem16U, 0x23, i_i) \ | 107 V(I32LoadMem16U, 0x23, i_i) \ |
| 106 V(I64LoadMem8S, 0x24, l_i) \ | 108 V(I64LoadMem8S, 0x24, l_i) \ |
| 107 V(I64LoadMem8U, 0x25, l_i) \ | 109 V(I64LoadMem8U, 0x25, l_i) \ |
| 108 V(I64LoadMem16S, 0x26, l_i) \ | 110 V(I64LoadMem16S, 0x26, l_i) \ |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 467 default: | 469 default: |
| 468 return "<unknown>"; | 470 return "<unknown>"; |
| 469 } | 471 } |
| 470 } | 472 } |
| 471 }; | 473 }; |
| 472 } // namespace wasm | 474 } // namespace wasm |
| 473 } // namespace internal | 475 } // namespace internal |
| 474 } // namespace v8 | 476 } // namespace v8 |
| 475 | 477 |
| 476 #endif // V8_WASM_OPCODES_H_ | 478 #endif // V8_WASM_OPCODES_H_ |
| OLD | NEW |