Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1272)

Unified Diff: src/wasm/wasm-opcodes.h

Issue 1991143002: Convert SIMD wasm ops to runtime function calls (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Bill's review Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/wasm/wasm-opcodes.h
diff --git a/src/wasm/wasm-opcodes.h b/src/wasm/wasm-opcodes.h
index 764c5030f5f735554273c8f52780c6dfb805990a..bd9154501d0bb4b547bd6e25fef30046c1bc0404 100644
--- a/src/wasm/wasm-opcodes.h
+++ b/src/wasm/wasm-opcodes.h
@@ -18,7 +18,8 @@ enum LocalTypeCode {
kLocalI32 = 1,
kLocalI64 = 2,
kLocalF32 = 3,
- kLocalF64 = 4
+ kLocalF64 = 4,
+ kLocalS128 = 5
};
// Binary encoding of memory types.
@@ -32,7 +33,8 @@ enum MemTypeCode {
kMemI64 = 6,
kMemU64 = 7,
kMemF32 = 8,
- kMemF64 = 9
+ kMemF64 = 9,
+ kMemS128 = 10
};
// We reuse the internal machine type to represent WebAssembly AST types.
@@ -43,6 +45,7 @@ const LocalType kAstI32 = MachineRepresentation::kWord32;
const LocalType kAstI64 = MachineRepresentation::kWord64;
const LocalType kAstF32 = MachineRepresentation::kFloat32;
const LocalType kAstF64 = MachineRepresentation::kFloat64;
+const LocalType kAstS128 = MachineRepresentation::kSimd128;
// We use kTagged here because kNone is already used by kAstStmt.
const LocalType kAstEnd = MachineRepresentation::kTagged;
@@ -120,6 +123,7 @@ const WasmCodePosition kNoCodePosition = -1;
// Expressions with signatures.
#define FOREACH_SIMPLE_OPCODE(V) \
+ FOREACH_SIMD_OPCODE(V) \
V(I32Add, 0x40, i_ii) \
V(I32Sub, 0x41, i_ii) \
V(I32Mul, 0x42, i_ii) \
@@ -278,6 +282,11 @@ const WasmCodePosition kNoCodePosition = -1;
V(I32AsmjsSConvertF64, 0xe2, i_d) \
V(I32AsmjsUConvertF64, 0xe3, i_d)
+// Simd opcodes
+#define FOREACH_SIMD_OPCODE(V) \
+ V(Int32x4Splat, 0xe4, s_i) \
+ V(Int32x4ExtractLane, 0xe5, i_si)
+
// All opcodes.
#define FOREACH_OPCODE(V) \
FOREACH_CONTROL_OPCODE(V) \
@@ -316,7 +325,9 @@ const WasmCodePosition kNoCodePosition = -1;
V(d_l, kAstF64, kAstI64) \
V(d_id, kAstF64, kAstI32, kAstF64) \
V(f_if, kAstF32, kAstI32, kAstF32) \
- V(l_il, kAstI64, kAstI32, kAstI64)
+ V(l_il, kAstI64, kAstI32, kAstI64) \
+ V(s_i, kAstS128, kAstI32) \
+ V(i_si, kAstI32, kAstS128, kAstI32)
enum WasmOpcode {
// Declare expression opcodes.
@@ -349,6 +360,7 @@ class WasmOpcodes {
static const char* OpcodeName(WasmOpcode opcode);
static const char* ShortOpcodeName(WasmOpcode opcode);
static FunctionSig* Signature(WasmOpcode opcode);
+ static bool IsSimd(WasmOpcode opcode);
static int TrapReasonToMessageId(TrapReason reason);
static const char* TrapReasonMessage(TrapReason reason);
@@ -369,6 +381,8 @@ class WasmOpcodes {
return kLocalF64;
case kAstStmt:
return kLocalVoid;
+ case kAstS128:
+ return kLocalS128;
default:
UNREACHABLE();
return kLocalVoid;
@@ -396,6 +410,8 @@ class WasmOpcodes {
return kMemF32;
} else if (type == MachineType::Float64()) {
return kMemF64;
+ } else if (type == MachineType::Simd128()) {
+ return kMemS128;
} else {
UNREACHABLE();
return kMemI32;
@@ -412,6 +428,8 @@ class WasmOpcodes {
return MachineType::Float32();
case kAstF64:
return MachineType::Float64();
+ case kAstS128:
+ return MachineType::Simd128();
case kAstStmt:
return MachineType::None();
default:
@@ -441,6 +459,8 @@ class WasmOpcodes {
return kAstF32;
} else if (type == MachineType::Float64()) {
return kAstF64;
+ } else if (type == MachineType::Simd128()) {
+ return kAstS128;
} else {
UNREACHABLE();
return kAstI32;
@@ -484,6 +504,8 @@ class WasmOpcodes {
return 'f';
case kAstF64:
return 'd';
+ case kAstS128:
+ return 's';
case kAstStmt:
return 'v';
case kAstEnd:
@@ -504,6 +526,8 @@ class WasmOpcodes {
return "f32";
case kAstF64:
return "f64";
+ case kAstS128:
+ return "s128";
case kAstStmt:
return "<stmt>";
case kAstEnd:

Powered by Google App Engine
This is Rietveld 408576698