Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / v8 / src / ia32 / lithium-ia32.h
index 6ade815..75fed82 100644 (file)
@@ -123,19 +123,12 @@ class LCodeGen;
   V(MathSqrt)                                \
   V(ModByConstI)                             \
   V(ModByPowerOf2I)                          \
-  V(NullarySIMDOperation)                    \
-  V(UnarySIMDOperation)                      \
-  V(BinarySIMDOperation)                     \
-  V(TernarySIMDOperation)                    \
-  V(QuarternarySIMDOperation)                \
   V(ModI)                                    \
   V(MulI)                                    \
   V(NumberTagD)                              \
   V(NumberTagI)                              \
   V(NumberTagU)                              \
   V(NumberUntagD)                            \
-  V(SIMD128ToTagged)                         \
-  V(TaggedToSIMD128)                         \
   V(OsrEntry)                                \
   V(Parameter)                               \
   V(Power)                                   \
@@ -990,154 +983,6 @@ class LMathPowHalf FINAL : public LTemplateInstruction<1, 1, 1> {
 };
 
 
-class LNullarySIMDOperation FINAL : public LTemplateInstruction<1, 0, 0> {
- public:
-  explicit LNullarySIMDOperation(BuiltinFunctionId op)
-    : op_(op) {
-  }
-
-  BuiltinFunctionId op() const { return op_; }
-
-  virtual Opcode opcode() const OVERRIDE {
-    return LInstruction::kNullarySIMDOperation;
-  }
-  virtual void CompileToNative(LCodeGen* generator) OVERRIDE;
-  virtual const char* Mnemonic() const OVERRIDE;
-  static LNullarySIMDOperation* cast(LInstruction* instr) {
-    DCHECK(instr->IsNullarySIMDOperation());
-    return reinterpret_cast<LNullarySIMDOperation*>(instr);
-  }
-
-  DECLARE_HYDROGEN_ACCESSOR(NullarySIMDOperation)
-
- private:
-  BuiltinFunctionId op_;
-};
-
-
-class LUnarySIMDOperation FINAL : public LTemplateInstruction<1, 1, 0> {
- public:
-  LUnarySIMDOperation(LOperand* value, BuiltinFunctionId op)
-    : op_(op) {
-    inputs_[0] = value;
-  }
-
-  LOperand* value() { return inputs_[0]; }
-  BuiltinFunctionId op() const { return op_; }
-
-  virtual Opcode opcode() const OVERRIDE {
-    return LInstruction::kUnarySIMDOperation;
-  }
-  virtual void CompileToNative(LCodeGen* generator) OVERRIDE;
-  virtual const char* Mnemonic() const OVERRIDE;
-  static LUnarySIMDOperation* cast(LInstruction* instr) {
-    DCHECK(instr->IsUnarySIMDOperation());
-    return reinterpret_cast<LUnarySIMDOperation*>(instr);
-  }
-
-  DECLARE_HYDROGEN_ACCESSOR(UnarySIMDOperation)
-
- private:
-  BuiltinFunctionId op_;
-};
-
-
-class LBinarySIMDOperation FINAL : public LTemplateInstruction<1, 2, 0> {
- public:
-  LBinarySIMDOperation(LOperand* left, LOperand* right, BuiltinFunctionId op)
-    : op_(op) {
-    inputs_[0] = left;
-    inputs_[1] = right;
-  }
-
-  LOperand* left() { return inputs_[0]; }
-  LOperand* right() { return inputs_[1]; }
-  BuiltinFunctionId op() const { return op_; }
-
-  virtual Opcode opcode() const OVERRIDE {
-    return LInstruction::kBinarySIMDOperation;
-  }
-  virtual void CompileToNative(LCodeGen* generator) OVERRIDE;
-  virtual const char* Mnemonic() const OVERRIDE;
-  static LBinarySIMDOperation* cast(LInstruction* instr) {
-    DCHECK(instr->IsBinarySIMDOperation());
-    return reinterpret_cast<LBinarySIMDOperation*>(instr);
-  }
-
-  DECLARE_HYDROGEN_ACCESSOR(BinarySIMDOperation)
-
- private:
-  BuiltinFunctionId op_;
-};
-
-
-class LTernarySIMDOperation FINAL : public LTemplateInstruction<1, 3, 0> {
- public:
-  LTernarySIMDOperation(LOperand* first, LOperand* second, LOperand* third,
-                        BuiltinFunctionId op)
-    : op_(op) {
-    inputs_[0] = first;
-    inputs_[1] = second;
-    inputs_[2] = third;
-  }
-
-  LOperand* first() { return inputs_[0]; }
-  LOperand* second() { return inputs_[1]; }
-  LOperand* third() { return inputs_[2]; }
-  BuiltinFunctionId op() const { return op_; }
-
-  virtual Opcode opcode() const OVERRIDE {
-    return LInstruction::kTernarySIMDOperation;
-  }
-  virtual void CompileToNative(LCodeGen* generator) OVERRIDE;
-  virtual const char* Mnemonic() const OVERRIDE;
-  static LTernarySIMDOperation* cast(LInstruction* instr) {
-    DCHECK(instr->IsTernarySIMDOperation());
-    return reinterpret_cast<LTernarySIMDOperation*>(instr);
-  }
-
-  DECLARE_HYDROGEN_ACCESSOR(TernarySIMDOperation)
-
- private:
-  BuiltinFunctionId op_;
-};
-
-
-class LQuarternarySIMDOperation FINAL
-  : public LTemplateInstruction<1, 4, 0> {
- public:
-  LQuarternarySIMDOperation(LOperand* x, LOperand* y, LOperand* z,
-                            LOperand* w, BuiltinFunctionId op)
-    : op_(op) {
-    inputs_[0] = x;
-    inputs_[1] = y;
-    inputs_[2] = z;
-    inputs_[3] = w;
-  }
-
-  LOperand* x() { return inputs_[0]; }
-  LOperand* y() { return inputs_[1]; }
-  LOperand* z() { return inputs_[2]; }
-  LOperand* w() { return inputs_[3]; }
-  BuiltinFunctionId op() const { return op_; }
-
-  virtual Opcode opcode() const OVERRIDE {
-    return LInstruction::kQuarternarySIMDOperation;
-  }
-  virtual void CompileToNative(LCodeGen* generator) OVERRIDE;
-  virtual const char* Mnemonic() const OVERRIDE;
-  static LQuarternarySIMDOperation* cast(LInstruction* instr) {
-    DCHECK(instr->IsQuarternarySIMDOperation());
-    return reinterpret_cast<LQuarternarySIMDOperation*>(instr);
-  }
-
-  DECLARE_HYDROGEN_ACCESSOR(QuarternarySIMDOperation)
-
- private:
-  BuiltinFunctionId op_;
-};
-
-
 class LCmpObjectEqAndBranch FINAL : public LControlInstruction<2, 0> {
  public:
   LCmpObjectEqAndBranch(LOperand* left, LOperand* right) {
@@ -1409,20 +1254,15 @@ class LInstanceOfKnownGlobal FINAL : public LTemplateInstruction<1, 2, 1> {
 };
 
 
-class LBoundsCheck FINAL : public LTemplateInstruction<0, 2, 2> {
+class LBoundsCheck FINAL : public LTemplateInstruction<0, 2, 0> {
  public:
-  LBoundsCheck(LOperand* index, LOperand* length,
-               LOperand* temp0, LOperand* temp1) {
+  LBoundsCheck(LOperand* index, LOperand* length) {
     inputs_[0] = index;
     inputs_[1] = length;
-    temps_[0] = temp0;
-    temps_[1] = temp1;
   }
 
   LOperand* index() { return inputs_[0]; }
   LOperand* length() { return inputs_[1]; }
-  LOperand* temp0() { return temps_[0]; }
-  LOperand* temp1() { return temps_[1]; }
 
   DECLARE_CONCRETE_INSTRUCTION(BoundsCheck, "bounds-check")
   DECLARE_HYDROGEN_ACCESSOR(BoundsCheck)
@@ -1854,30 +1694,19 @@ class LLoadKeyed FINAL : public LTemplateInstruction<1, 2, 0> {
 };
 
 
-inline static bool ExternalArrayOpRequiresPreScale(
-    Representation key_representation,
-    ElementsKind kind) {
-  int shift_size = ElementsKindToShiftSize(kind);
-  return key_representation.IsSmi()
-      ? shift_size > static_cast<int>(maximal_scale_factor) + kSmiTagSize
-      : shift_size > static_cast<int>(maximal_scale_factor);
-}
-
-
 inline static bool ExternalArrayOpRequiresTemp(
     Representation key_representation,
     ElementsKind elements_kind) {
-  // Operations that require the key to be scaled by a factor or divided by two
-  // to be converted into an index cannot fold the scale operation into a load
-  // and need an extra temp register to do the work.
-  return ExternalArrayOpRequiresPreScale(key_representation, elements_kind) ||
-      (key_representation.IsSmi() &&
-        (elements_kind == EXTERNAL_INT8_ELEMENTS ||
-         elements_kind == EXTERNAL_UINT8_ELEMENTS ||
-         elements_kind == EXTERNAL_UINT8_CLAMPED_ELEMENTS ||
-         elements_kind == UINT8_ELEMENTS ||
-         elements_kind == INT8_ELEMENTS ||
-         elements_kind == UINT8_CLAMPED_ELEMENTS));
+  // Operations that require the key to be divided by two to be converted into
+  // an index cannot fold the scale operation into a load and need an extra
+  // temp register to do the work.
+  return key_representation.IsSmi() &&
+      (elements_kind == EXTERNAL_INT8_ELEMENTS ||
+       elements_kind == EXTERNAL_UINT8_ELEMENTS ||
+       elements_kind == EXTERNAL_UINT8_CLAMPED_ELEMENTS ||
+       elements_kind == UINT8_ELEMENTS ||
+       elements_kind == INT8_ELEMENTS ||
+       elements_kind == UINT8_CLAMPED_ELEMENTS);
 }
 
 
@@ -2275,23 +2104,6 @@ class LNumberTagD FINAL : public LTemplateInstruction<1, 1, 1> {
 };
 
 
-class LSIMD128ToTagged FINAL : public LTemplateInstruction<1, 1, 2> {
- public:
-  explicit LSIMD128ToTagged(LOperand* value, LOperand* temp, LOperand* temp2) {
-    inputs_[0] = value;
-    temps_[0] = temp;
-    temps_[1] = temp2;
-  }
-
-  LOperand* value() { return inputs_[0]; }
-  LOperand* temp() { return temps_[0]; }
-  LOperand* temp2() { return temps_[1]; }
-
-  DECLARE_CONCRETE_INSTRUCTION(SIMD128ToTagged, "simd128-tag")
-  DECLARE_HYDROGEN_ACCESSOR(Change)
-};
-
-
 // Sometimes truncating conversion from a tagged value to an int32.
 class LDoubleToI FINAL : public LTemplateInstruction<1, 1, 1> {
  public:
@@ -2369,26 +2181,6 @@ class LNumberUntagD FINAL : public LTemplateInstruction<1, 1, 1> {
 };
 
 
-class LTaggedToSIMD128 FINAL : public LTemplateInstruction<1, 1, 1> {
- public:
-  explicit LTaggedToSIMD128(LOperand* value, LOperand* temp,
-                            Representation representation)
-      : representation_(representation) {
-    inputs_[0] = value;
-    temps_[0] = temp;
-  }
-
-  LOperand* value() { return inputs_[0]; }
-  LOperand* temp() { return temps_[0]; }
-  Representation representation() const { return representation_; }
-
-  DECLARE_CONCRETE_INSTRUCTION(TaggedToSIMD128, "simd128-untag")
-  DECLARE_HYDROGEN_ACCESSOR(Change);
- private:
-  Representation representation_;
-};
-
-
 class LSmiUntag FINAL : public LTemplateInstruction<1, 1, 0> {
  public:
   LSmiUntag(LOperand* value, bool needs_check)