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

Side by Side Diff: runtime/vm/intermediate_language.h

Issue 19564014: Add all 256 shuffle methods to Float32x4 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_INTERMEDIATE_LANGUAGE_H_ 5 #ifndef VM_INTERMEDIATE_LANGUAGE_H_
6 #define VM_INTERMEDIATE_LANGUAGE_H_ 6 #define VM_INTERMEDIATE_LANGUAGE_H_
7 7
8 #include "vm/allocation.h" 8 #include "vm/allocation.h"
9 #include "vm/ast.h" 9 #include "vm/ast.h"
10 #include "vm/growable_array.h" 10 #include "vm/growable_array.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 V(_Double, truncateToDouble, DoubleTruncate, 1804056693) \ 73 V(_Double, truncateToDouble, DoubleTruncate, 1804056693) \
74 V(_Double, roundToDouble, DoubleRound, 1804056693) \ 74 V(_Double, roundToDouble, DoubleRound, 1804056693) \
75 V(_Double, floorToDouble, DoubleFloor, 1804056693) \ 75 V(_Double, floorToDouble, DoubleFloor, 1804056693) \
76 V(_Double, ceilToDouble, DoubleCeil, 1804056693) \ 76 V(_Double, ceilToDouble, DoubleCeil, 1804056693) \
77 V(_Double, pow, DoublePow, 102305574) \ 77 V(_Double, pow, DoublePow, 102305574) \
78 V(_Double, _modulo, DoubleMod, 663439671) \ 78 V(_Double, _modulo, DoubleMod, 663439671) \
79 V(::, sqrt, MathSqrt, 1662640002) \ 79 V(::, sqrt, MathSqrt, 1662640002) \
80 V(Float32x4, Float32x4., Float32x4Constructor, 1492157358) \ 80 V(Float32x4, Float32x4., Float32x4Constructor, 1492157358) \
81 V(Float32x4, Float32x4.zero, Float32x4Zero, 444339161) \ 81 V(Float32x4, Float32x4.zero, Float32x4Zero, 444339161) \
82 V(Float32x4, Float32x4.splat, Float32x4Splat, 1843231403) \ 82 V(Float32x4, Float32x4.splat, Float32x4Splat, 1843231403) \
83 V(_Float32x4, get:xxxx, Float32x4ShuffleXXXX, 42621627) \ 83 V(_Float32x4, _shuffle, Float32x4Shuffle, 1618450134) \
84 V(_Float32x4, get:yyyy, Float32x4ShuffleYYYY, 42621627) \
85 V(_Float32x4, get:zzzz, Float32x4ShuffleZZZZ, 42621627) \
86 V(_Float32x4, get:wwww, Float32x4ShuffleWWWW, 42621627) \
87 V(_Float32x4, get:x, Float32x4ShuffleX, 211144022) \ 84 V(_Float32x4, get:x, Float32x4ShuffleX, 211144022) \
88 V(_Float32x4, get:y, Float32x4ShuffleY, 211144022) \ 85 V(_Float32x4, get:y, Float32x4ShuffleY, 211144022) \
89 V(_Float32x4, get:z, Float32x4ShuffleZ, 211144022) \ 86 V(_Float32x4, get:z, Float32x4ShuffleZ, 211144022) \
90 V(_Float32x4, get:w, Float32x4ShuffleW, 211144022) \ 87 V(_Float32x4, get:w, Float32x4ShuffleW, 211144022) \
91 V(_Float32x4, _cmpequal, Float32x4Equal, 2103153736) \ 88 V(_Float32x4, _cmpequal, Float32x4Equal, 2103153736) \
92 V(_Float32x4, _cmpgt, Float32x4GreaterThan, 2103153736) \ 89 V(_Float32x4, _cmpgt, Float32x4GreaterThan, 2103153736) \
93 V(_Float32x4, _cmpgte, Float32x4GreaterThanOrEqual, 2103153736) \ 90 V(_Float32x4, _cmpgte, Float32x4GreaterThanOrEqual, 2103153736) \
94 V(_Float32x4, _cmplt, Float32x4LessThan, 2103153736) \ 91 V(_Float32x4, _cmplt, Float32x4LessThan, 2103153736) \
95 V(_Float32x4, _cmplte, Float32x4LessThanOrEqual, 2103153736) \ 92 V(_Float32x4, _cmplte, Float32x4LessThanOrEqual, 2103153736) \
96 V(_Float32x4, _cmpnequal, Float32x4NotEqual, 2103153736) \ 93 V(_Float32x4, _cmpnequal, Float32x4NotEqual, 2103153736) \
(...skipping 4644 matching lines...) Expand 10 before | Expand all | Expand 10 after
4741 private: 4738 private:
4742 const Token::Kind op_kind_; 4739 const Token::Kind op_kind_;
4743 4740
4744 DISALLOW_COPY_AND_ASSIGN(BinaryFloat32x4OpInstr); 4741 DISALLOW_COPY_AND_ASSIGN(BinaryFloat32x4OpInstr);
4745 }; 4742 };
4746 4743
4747 4744
4748 class Float32x4ShuffleInstr : public TemplateDefinition<1> { 4745 class Float32x4ShuffleInstr : public TemplateDefinition<1> {
4749 public: 4746 public:
4750 Float32x4ShuffleInstr(MethodRecognizer::Kind op_kind, Value* value, 4747 Float32x4ShuffleInstr(MethodRecognizer::Kind op_kind, Value* value,
4748 intptr_t mask,
4751 intptr_t deopt_id) 4749 intptr_t deopt_id)
4752 : op_kind_(op_kind) { 4750 : op_kind_(op_kind), mask_(mask) {
4753 SetInputAt(0, value); 4751 SetInputAt(0, value);
4754 deopt_id_ = deopt_id; 4752 deopt_id_ = deopt_id;
4755 } 4753 }
4756 4754
4757 Value* value() const { return inputs_[0]; } 4755 Value* value() const { return inputs_[0]; }
4758 4756
4759 MethodRecognizer::Kind op_kind() const { return op_kind_; } 4757 MethodRecognizer::Kind op_kind() const { return op_kind_; }
4760 4758
4759 intptr_t mask() const { return mask_; }
4760
4761 virtual void PrintOperandsTo(BufferFormatter* f) const; 4761 virtual void PrintOperandsTo(BufferFormatter* f) const;
4762 4762
4763 virtual bool CanDeoptimize() const { return false; } 4763 virtual bool CanDeoptimize() const { return false; }
4764 4764
4765 virtual Representation representation() const { 4765 virtual Representation representation() const {
4766 if ((op_kind_ == MethodRecognizer::kFloat32x4ShuffleX) || 4766 if ((op_kind_ == MethodRecognizer::kFloat32x4ShuffleX) ||
4767 (op_kind_ == MethodRecognizer::kFloat32x4ShuffleY) || 4767 (op_kind_ == MethodRecognizer::kFloat32x4ShuffleY) ||
4768 (op_kind_ == MethodRecognizer::kFloat32x4ShuffleZ) || 4768 (op_kind_ == MethodRecognizer::kFloat32x4ShuffleZ) ||
4769 (op_kind_ == MethodRecognizer::kFloat32x4ShuffleW)) { 4769 (op_kind_ == MethodRecognizer::kFloat32x4ShuffleW)) {
4770 return kUnboxedDouble; 4770 return kUnboxedDouble;
(...skipping 12 matching lines...) Expand all
4783 return deopt_id_; 4783 return deopt_id_;
4784 } 4784 }
4785 4785
4786 DECLARE_INSTRUCTION(Float32x4Shuffle) 4786 DECLARE_INSTRUCTION(Float32x4Shuffle)
4787 virtual CompileType ComputeType() const; 4787 virtual CompileType ComputeType() const;
4788 4788
4789 virtual bool AllowsCSE() const { return true; } 4789 virtual bool AllowsCSE() const { return true; }
4790 virtual EffectSet Effects() const { return EffectSet::None(); } 4790 virtual EffectSet Effects() const { return EffectSet::None(); }
4791 virtual EffectSet Dependencies() const { return EffectSet::None(); } 4791 virtual EffectSet Dependencies() const { return EffectSet::None(); }
4792 virtual bool AttributesEqual(Instruction* other) const { 4792 virtual bool AttributesEqual(Instruction* other) const {
4793 return op_kind() == other->AsFloat32x4Shuffle()->op_kind(); 4793 return op_kind() == other->AsFloat32x4Shuffle()->op_kind() &&
4794 mask() == other->AsFloat32x4Shuffle()->mask();
4794 } 4795 }
4795 4796
4796 virtual bool MayThrow() const { return false; } 4797 virtual bool MayThrow() const { return false; }
4797 4798
4798 private: 4799 private:
4799 const MethodRecognizer::Kind op_kind_; 4800 const MethodRecognizer::Kind op_kind_;
4801 const intptr_t mask_;
4800 4802
4801 DISALLOW_COPY_AND_ASSIGN(Float32x4ShuffleInstr); 4803 DISALLOW_COPY_AND_ASSIGN(Float32x4ShuffleInstr);
4802 }; 4804 };
4803 4805
4804 4806
4805 class Float32x4ConstructorInstr : public TemplateDefinition<4> { 4807 class Float32x4ConstructorInstr : public TemplateDefinition<4> {
4806 public: 4808 public:
4807 Float32x4ConstructorInstr(Value* value0, Value* value1, Value* value2, 4809 Float32x4ConstructorInstr(Value* value0, Value* value1, Value* value2,
4808 Value* value3, intptr_t deopt_id) { 4810 Value* value3, intptr_t deopt_id) {
4809 SetInputAt(0, value0); 4811 SetInputAt(0, value0);
(...skipping 1681 matching lines...) Expand 10 before | Expand all | Expand 10 after
6491 ForwardInstructionIterator* current_iterator_; 6493 ForwardInstructionIterator* current_iterator_;
6492 6494
6493 private: 6495 private:
6494 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); 6496 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor);
6495 }; 6497 };
6496 6498
6497 6499
6498 } // namespace dart 6500 } // namespace dart
6499 6501
6500 #endif // VM_INTERMEDIATE_LANGUAGE_H_ 6502 #endif // VM_INTERMEDIATE_LANGUAGE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698