| Index: src/compiler/wasm-compiler.h
|
| diff --git a/src/compiler/wasm-compiler.h b/src/compiler/wasm-compiler.h
|
| index a0209c316e16b0114beb25c60a6a01271be62f2f..ef7be2fd642ed3f5717881dc51430ba5b330c1a3 100644
|
| --- a/src/compiler/wasm-compiler.h
|
| +++ b/src/compiler/wasm-compiler.h
|
| @@ -22,6 +22,7 @@ class JSGraph;
|
| class Graph;
|
| class Operator;
|
| class SourcePositionTable;
|
| +class MachineOperatorBuilder;
|
| } // namespace compiler
|
|
|
| namespace wasm {
|
| @@ -90,6 +91,8 @@ Handle<Code> CompileJSToWasmWrapper(Isolate* isolate, wasm::ModuleEnv* module,
|
| // Abstracts details of building TurboFan graph nodes for WASM to separate
|
| // the WASM decoder from the internal details of TurboFan.
|
| class WasmTrapHelper;
|
| +enum class Conversion { kNone, kOpaque, kInt32, kFloat32, kFloat64 };
|
| +typedef ZoneVector<Node*> NodeVector;
|
| class WasmGraphBuilder {
|
| public:
|
| WasmGraphBuilder(
|
| @@ -123,6 +126,7 @@ class WasmGraphBuilder {
|
| Node* Float32Constant(float value);
|
| Node* Float64Constant(double value);
|
| Node* HeapConstant(Handle<HeapObject> value);
|
| + Node* DefaultS128Value();
|
| Node* Binop(wasm::WasmOpcode opcode, Node* left, Node* right,
|
| wasm::WasmCodePosition position = wasm::kNoCodePosition);
|
| Node* Unop(wasm::WasmOpcode opcode, Node* input,
|
| @@ -157,6 +161,8 @@ class WasmGraphBuilder {
|
| Node* FromJS(Node* node, Node* context, wasm::LocalType type);
|
| Node* Invert(Node* node);
|
| Node* FunctionTable();
|
| + Node* ChangeToRuntimeCall(Node* node, Runtime::FunctionId function_id,
|
| + Signature<Conversion>* signature);
|
|
|
| //-----------------------------------------------------------------------
|
| // Operations that concern the linear memory.
|
| @@ -188,6 +194,10 @@ class WasmGraphBuilder {
|
|
|
| void SetSourcePosition(Node* node, wasm::WasmCodePosition position);
|
|
|
| + Node* SimdOp(wasm::WasmOpcode opcode, const NodeVector& inputs);
|
| +
|
| + bool has_simd_ops() { return has_simd_ops_; }
|
| +
|
| private:
|
| static const int kDefaultBufferSize = 16;
|
| friend class WasmTrapHelper;
|
| @@ -209,6 +219,7 @@ class WasmGraphBuilder {
|
| SetOncePointer<const Operator> allocate_heap_number_operator_;
|
|
|
| compiler::SourcePositionTable* source_position_table_ = nullptr;
|
| + bool has_simd_ops_;
|
|
|
| // Internal helper methods.
|
| JSGraph* jsgraph() { return jsgraph_; }
|
| @@ -312,6 +323,7 @@ class WasmGraphBuilder {
|
| Node* BuildJavaScriptToNumber(Node* node, Node* context, Node* effect,
|
| Node* control);
|
| Node* BuildChangeInt32ToTagged(Node* value);
|
| + Node* BuildChangeTaggedToInt32(Node* value);
|
| Node* BuildChangeFloat64ToTagged(Node* value);
|
| Node* BuildChangeTaggedToFloat64(Node* value);
|
|
|
| @@ -344,6 +356,9 @@ class WasmGraphBuilder {
|
| if (buf != buffer) memcpy(buf, buffer, old_count * sizeof(Node*));
|
| return buf;
|
| }
|
| +
|
| + // Simd helper functions
|
| + MachineOperatorBuilder* simd();
|
| };
|
| } // namespace compiler
|
| } // namespace internal
|
|
|