Index: src/x64/lithium-x64.h |
diff --git a/src/x64/lithium-x64.h b/src/x64/lithium-x64.h |
index 4aa235f13789cfc841b66cf6ead69de961f80e13..0e3369cbce5720467f6ad4349d4ab01440f4fa6a 100644 |
--- a/src/x64/lithium-x64.h |
+++ b/src/x64/lithium-x64.h |
@@ -73,6 +73,9 @@ class LCodeGen; |
V(CheckNonSmi) \ |
V(CheckPrototypeMaps) \ |
V(CheckSmi) \ |
+ V(ClampDToUint8) \ |
+ V(ClampIToUint8) \ |
+ V(ClampTToUint8) \ |
V(ClassOfTest) \ |
V(ClassOfTestAndBranch) \ |
V(CmpID) \ |
@@ -1907,6 +1910,47 @@ class LCheckSmi: public LTemplateInstruction<0, 1, 0> { |
}; |
+class LClampDToUint8: public LTemplateInstruction<1, 1, 1> { |
+ public: |
+ LClampDToUint8(LOperand* value, LOperand* temp) { |
+ inputs_[0] = value; |
+ temps_[0] = temp; |
+ } |
+ |
+ LOperand* unclamped() { return inputs_[0]; } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(ClampDToUint8, "clamp-d-to-uint8") |
+}; |
+ |
+ |
+class LClampIToUint8: public LTemplateInstruction<1, 1, 0> { |
+ public: |
+ explicit LClampIToUint8(LOperand* value) { |
+ inputs_[0] = value; |
+ } |
+ |
+ LOperand* unclamped() { return inputs_[0]; } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(ClampIToUint8, "clamp-i-to-uint8") |
+}; |
+ |
+ |
+class LClampTToUint8: public LTemplateInstruction<1, 1, 2> { |
+ public: |
+ LClampTToUint8(LOperand* value, |
+ LOperand* temp, |
+ LOperand* temp2) { |
+ inputs_[0] = value; |
+ temps_[0] = temp; |
+ temps_[1] = temp2; |
+ } |
+ |
+ LOperand* unclamped() { return inputs_[0]; } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(ClampTToUint8, "clamp-t-to-uint8") |
+}; |
+ |
+ |
class LCheckNonSmi: public LTemplateInstruction<0, 1, 0> { |
public: |
explicit LCheckNonSmi(LOperand* value) { |