| Index: runtime/vm/intermediate_language.h
 | 
| diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h
 | 
| index 1b3285f2bab84fb4315aaed0af4c387f135e49ef..21d24ebaed760df8839bdae08a8aee5ec08f6b10 100644
 | 
| --- a/runtime/vm/intermediate_language.h
 | 
| +++ b/runtime/vm/intermediate_language.h
 | 
| @@ -139,6 +139,7 @@ class RangeBoundary;
 | 
|    V(_Float64x2, withY, Float64x2WithY, 1496958947)                             \
 | 
|    V(_Float64x2, min, Float64x2Min, 485240583)                                  \
 | 
|    V(_Float64x2, max, Float64x2Max, 2146148204)                                 \
 | 
| +  V(Int32x4, Int32x4., Int32x4Constructor, 665986284)                          \
 | 
|    V(Int32x4, Int32x4.bool, Int32x4BoolConstructor, 87082660)                   \
 | 
|    V(Int32x4, Int32x4.fromFloat32x4Bits, Int32x4FromFloat32x4Bits,              \
 | 
|        372517418)                                                               \
 | 
| @@ -774,6 +775,7 @@ class EmbeddedArray<T, 0> {
 | 
|    M(Float32x4With)                                                             \
 | 
|    M(Float32x4ToInt32x4)                                                        \
 | 
|    M(MaterializeObject)                                                         \
 | 
| +  M(Int32x4Constructor)                                                        \
 | 
|    M(Int32x4BoolConstructor)                                                    \
 | 
|    M(Int32x4GetFlag)                                                            \
 | 
|    M(Int32x4Select)                                                             \
 | 
| @@ -1100,6 +1102,7 @@ FOR_EACH_INSTRUCTION(INSTRUCTION_TYPE_CHECK)
 | 
|    friend class Float64x2ZeroInstr;
 | 
|    friend class Float64x2SplatInstr;
 | 
|    friend class Float64x2ConstructorInstr;
 | 
| +  friend class Int32x4ConstructorInstr;
 | 
|    friend class Int32x4BoolConstructorInstr;
 | 
|    friend class Int32x4GetFlagInstr;
 | 
|    friend class Int32x4SetFlagInstr;
 | 
| @@ -6389,10 +6392,60 @@ class Float64x2OneArgInstr : public TemplateDefinition<2> {
 | 
|  };
 | 
|  
 | 
|  
 | 
| +class Int32x4ConstructorInstr : public TemplateDefinition<4> {
 | 
| + public:
 | 
| +  Int32x4ConstructorInstr(Value* value0, Value* value1, Value* value2,
 | 
| +                          Value* value3, intptr_t deopt_id) {
 | 
| +    SetInputAt(0, value0);
 | 
| +    SetInputAt(1, value1);
 | 
| +    SetInputAt(2, value2);
 | 
| +    SetInputAt(3, value3);
 | 
| +    deopt_id_ = deopt_id;
 | 
| +  }
 | 
| +
 | 
| +  Value* value0() const { return inputs_[0]; }
 | 
| +  Value* value1() const { return inputs_[1]; }
 | 
| +  Value* value2() const { return inputs_[2]; }
 | 
| +  Value* value3() const { return inputs_[3]; }
 | 
| +
 | 
| +  virtual void PrintOperandsTo(BufferFormatter* f) const;
 | 
| +
 | 
| +  virtual bool CanDeoptimize() const { return false; }
 | 
| +
 | 
| +  virtual Representation representation() const {
 | 
| +    return kUnboxedInt32x4;
 | 
| +  }
 | 
| +
 | 
| +  virtual Representation RequiredInputRepresentation(intptr_t idx) const {
 | 
| +    ASSERT((idx >= 0) && (idx < 4));
 | 
| +    return kUnboxedUint32;
 | 
| +  }
 | 
| +
 | 
| +  virtual intptr_t DeoptimizationTarget() const {
 | 
| +    // Direct access since this instruction cannot deoptimize, and the deopt-id
 | 
| +    // was inherited from another instruction that could deoptimize.
 | 
| +    return deopt_id_;
 | 
| +  }
 | 
| +
 | 
| +  DECLARE_INSTRUCTION(Int32x4Constructor)
 | 
| +  virtual CompileType ComputeType() const;
 | 
| +
 | 
| +  virtual bool AllowsCSE() const { return true; }
 | 
| +  virtual EffectSet Effects() const { return EffectSet::None(); }
 | 
| +  virtual EffectSet Dependencies() const { return EffectSet::None(); }
 | 
| +  virtual bool AttributesEqual(Instruction* other) const { return true; }
 | 
| +
 | 
| +  virtual bool MayThrow() const { return false; }
 | 
| +
 | 
| + private:
 | 
| +  DISALLOW_COPY_AND_ASSIGN(Int32x4ConstructorInstr);
 | 
| +};
 | 
| +
 | 
| +
 | 
|  class Int32x4BoolConstructorInstr : public TemplateDefinition<4> {
 | 
|   public:
 | 
|    Int32x4BoolConstructorInstr(Value* value0, Value* value1, Value* value2,
 | 
| -                               Value* value3, intptr_t deopt_id) {
 | 
| +                              Value* value3, intptr_t deopt_id) {
 | 
|      SetInputAt(0, value0);
 | 
|      SetInputAt(1, value1);
 | 
|      SetInputAt(2, value2);
 | 
| @@ -6414,7 +6467,7 @@ class Int32x4BoolConstructorInstr : public TemplateDefinition<4> {
 | 
|    }
 | 
|  
 | 
|    virtual Representation RequiredInputRepresentation(intptr_t idx) const {
 | 
| -    ASSERT(idx >= 0 && idx < 4);
 | 
| +    ASSERT((idx >= 0) && (idx < 4));
 | 
|      return kTagged;
 | 
|    }
 | 
|  
 | 
| 
 |