| 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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 // Alignment annotations for memory accesses. | 59 // Alignment annotations for memory accesses. |
| 60 enum Alignment { kAligned = 0, kUnaligned = 1 }; | 60 enum Alignment { kAligned = 0, kUnaligned = 1 }; |
| 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 | 70 |
| 70 // Control expressions and blocks. | 71 // Control expressions and blocks. |
| 71 #define FOREACH_CONTROL_OPCODE(V) \ | 72 #define FOREACH_CONTROL_OPCODE(V) \ |
| 72 V(Nop, 0x00, _) \ | 73 V(Nop, 0x00, _) \ |
| 73 V(Block, 0x01, _) \ | 74 V(Block, 0x01, _) \ |
| 74 V(Loop, 0x02, _) \ | 75 V(Loop, 0x02, _) \ |
| 75 V(If, 0x03, _) \ | 76 V(If, 0x03, _) \ |
| 76 V(IfElse, 0x04, _) \ | 77 V(IfElse, 0x04, _) \ |
| 77 V(Select, 0x05, _) \ | 78 V(Select, 0x05, _) \ |
| 78 V(Br, 0x06, _) \ | 79 V(Br, 0x06, _) \ |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 391 } else if (type == MachineType::Float32()) { | 392 } else if (type == MachineType::Float32()) { |
| 392 return kAstF32; | 393 return kAstF32; |
| 393 } else if (type == MachineType::Float64()) { | 394 } else if (type == MachineType::Float64()) { |
| 394 return kAstF64; | 395 return kAstF64; |
| 395 } else { | 396 } else { |
| 396 UNREACHABLE(); | 397 UNREACHABLE(); |
| 397 return kAstI32; | 398 return kAstI32; |
| 398 } | 399 } |
| 399 } | 400 } |
| 400 | 401 |
| 401 // TODO(titzer): remove this method | |
| 402 static WasmOpcode LoadStoreOpcodeOf(MachineType type, bool store) { | 402 static WasmOpcode LoadStoreOpcodeOf(MachineType type, bool store) { |
| 403 if (type == MachineType::Int8()) { | 403 if (type == MachineType::Int8()) { |
| 404 return store ? kExprI32StoreMem8 : kExprI32LoadMem8S; | 404 return store ? kExprI32StoreMem8 : kExprI32LoadMem8S; |
| 405 } else if (type == MachineType::Uint8()) { | 405 } else if (type == MachineType::Uint8()) { |
| 406 return store ? kExprI32StoreMem8 : kExprI32LoadMem8U; | 406 return store ? kExprI32StoreMem8 : kExprI32LoadMem8U; |
| 407 } else if (type == MachineType::Int16()) { | 407 } else if (type == MachineType::Int16()) { |
| 408 return store ? kExprI32StoreMem16 : kExprI32LoadMem16S; | 408 return store ? kExprI32StoreMem16 : kExprI32LoadMem16S; |
| 409 } else if (type == MachineType::Uint16()) { | 409 } else if (type == MachineType::Uint16()) { |
| 410 return store ? kExprI32StoreMem16 : kExprI32LoadMem16U; | 410 return store ? kExprI32StoreMem16 : kExprI32LoadMem16U; |
| 411 } else if (type == MachineType::Int32()) { | 411 } else if (type == MachineType::Int32()) { |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 467 default: | 467 default: |
| 468 return "<unknown>"; | 468 return "<unknown>"; |
| 469 } | 469 } |
| 470 } | 470 } |
| 471 }; | 471 }; |
| 472 } // namespace wasm | 472 } // namespace wasm |
| 473 } // namespace internal | 473 } // namespace internal |
| 474 } // namespace v8 | 474 } // namespace v8 |
| 475 | 475 |
| 476 #endif // V8_WASM_OPCODES_H_ | 476 #endif // V8_WASM_OPCODES_H_ |
| OLD | NEW |