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

Side by Side Diff: src/arm64/lithium-arm64.h

Issue 258793002: ARM64: Generate optimized code for Math.floor and Math.round with double outputs. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Change C-style comments to C++-style comments Created 6 years, 7 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
« no previous file with comments | « src/arm64/constants-arm64.h ('k') | src/arm64/lithium-arm64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_ARM64_LITHIUM_ARM64_H_ 5 #ifndef V8_ARM64_LITHIUM_ARM64_H_
6 #define V8_ARM64_LITHIUM_ARM64_H_ 6 #define V8_ARM64_LITHIUM_ARM64_H_
7 7
8 #include "hydrogen.h" 8 #include "hydrogen.h"
9 #include "lithium-allocator.h" 9 #include "lithium-allocator.h"
10 #include "lithium.h" 10 #include "lithium.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 V(LoadKeyedFixedDouble) \ 108 V(LoadKeyedFixedDouble) \
109 V(LoadKeyedGeneric) \ 109 V(LoadKeyedGeneric) \
110 V(LoadNamedField) \ 110 V(LoadNamedField) \
111 V(LoadNamedGeneric) \ 111 V(LoadNamedGeneric) \
112 V(LoadRoot) \ 112 V(LoadRoot) \
113 V(MapEnumLength) \ 113 V(MapEnumLength) \
114 V(MathAbs) \ 114 V(MathAbs) \
115 V(MathAbsTagged) \ 115 V(MathAbsTagged) \
116 V(MathClz32) \ 116 V(MathClz32) \
117 V(MathExp) \ 117 V(MathExp) \
118 V(MathFloor) \ 118 V(MathFloorD) \
119 V(MathFloorI) \
119 V(MathLog) \ 120 V(MathLog) \
120 V(MathMinMax) \ 121 V(MathMinMax) \
121 V(MathPowHalf) \ 122 V(MathPowHalf) \
122 V(MathRound) \ 123 V(MathRoundD) \
124 V(MathRoundI) \
123 V(MathSqrt) \ 125 V(MathSqrt) \
124 V(ModByConstI) \ 126 V(ModByConstI) \
125 V(ModByPowerOf2I) \ 127 V(ModByPowerOf2I) \
126 V(ModI) \ 128 V(ModI) \
127 V(MulConstIS) \ 129 V(MulConstIS) \
128 V(MulI) \ 130 V(MulI) \
129 V(MulS) \ 131 V(MulS) \
130 V(NumberTagD) \ 132 V(NumberTagD) \
131 V(NumberTagU) \ 133 V(NumberTagU) \
132 V(NumberUntagD) \ 134 V(NumberUntagD) \
(...skipping 1767 matching lines...) Expand 10 before | Expand all | Expand 10 after
1900 1902
1901 LOperand* double_temp1() { return temps_[0]; } 1903 LOperand* double_temp1() { return temps_[0]; }
1902 LOperand* temp1() { return temps_[1]; } 1904 LOperand* temp1() { return temps_[1]; }
1903 LOperand* temp2() { return temps_[2]; } 1905 LOperand* temp2() { return temps_[2]; }
1904 LOperand* temp3() { return temps_[3]; } 1906 LOperand* temp3() { return temps_[3]; }
1905 1907
1906 DECLARE_CONCRETE_INSTRUCTION(MathExp, "math-exp") 1908 DECLARE_CONCRETE_INSTRUCTION(MathExp, "math-exp")
1907 }; 1909 };
1908 1910
1909 1911
1910 class LMathFloor V8_FINAL : public LUnaryMathOperation<0> { 1912 // Math.floor with a double result.
1913 class LMathFloorD V8_FINAL : public LUnaryMathOperation<0> {
1911 public: 1914 public:
1912 explicit LMathFloor(LOperand* value) : LUnaryMathOperation<0>(value) { } 1915 explicit LMathFloorD(LOperand* value) : LUnaryMathOperation<0>(value) { }
1913 DECLARE_CONCRETE_INSTRUCTION(MathFloor, "math-floor") 1916 DECLARE_CONCRETE_INSTRUCTION(MathFloorD, "math-floor-d")
1914 }; 1917 };
1915 1918
1916 1919
1920 // Math.floor with an integer result.
1921 class LMathFloorI V8_FINAL : public LUnaryMathOperation<0> {
1922 public:
1923 explicit LMathFloorI(LOperand* value) : LUnaryMathOperation<0>(value) { }
1924 DECLARE_CONCRETE_INSTRUCTION(MathFloorI, "math-floor-i")
1925 };
1926
1927
1917 class LFlooringDivByPowerOf2I V8_FINAL : public LTemplateInstruction<1, 1, 0> { 1928 class LFlooringDivByPowerOf2I V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1918 public: 1929 public:
1919 LFlooringDivByPowerOf2I(LOperand* dividend, int32_t divisor) { 1930 LFlooringDivByPowerOf2I(LOperand* dividend, int32_t divisor) {
1920 inputs_[0] = dividend; 1931 inputs_[0] = dividend;
1921 divisor_ = divisor; 1932 divisor_ = divisor;
1922 } 1933 }
1923 1934
1924 LOperand* dividend() { return inputs_[0]; } 1935 LOperand* dividend() { return inputs_[0]; }
1925 int32_t divisor() const { return divisor_; } 1936 int32_t divisor() const { return divisor_; }
1926 1937
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1999 }; 2010 };
2000 2011
2001 2012
2002 class LMathPowHalf V8_FINAL : public LUnaryMathOperation<0> { 2013 class LMathPowHalf V8_FINAL : public LUnaryMathOperation<0> {
2003 public: 2014 public:
2004 explicit LMathPowHalf(LOperand* value) : LUnaryMathOperation<0>(value) { } 2015 explicit LMathPowHalf(LOperand* value) : LUnaryMathOperation<0>(value) { }
2005 DECLARE_CONCRETE_INSTRUCTION(MathPowHalf, "math-pow-half") 2016 DECLARE_CONCRETE_INSTRUCTION(MathPowHalf, "math-pow-half")
2006 }; 2017 };
2007 2018
2008 2019
2009 class LMathRound V8_FINAL : public LUnaryMathOperation<1> { 2020 // Math.round with an integer result.
2021 class LMathRoundD V8_FINAL : public LUnaryMathOperation<0> {
2010 public: 2022 public:
2011 LMathRound(LOperand* value, LOperand* temp1) 2023 explicit LMathRoundD(LOperand* value)
2024 : LUnaryMathOperation<0>(value) {
2025 }
2026
2027 DECLARE_CONCRETE_INSTRUCTION(MathRoundD, "math-round-d")
2028 };
2029
2030
2031 // Math.round with an integer result.
2032 class LMathRoundI V8_FINAL : public LUnaryMathOperation<1> {
2033 public:
2034 LMathRoundI(LOperand* value, LOperand* temp1)
2012 : LUnaryMathOperation<1>(value) { 2035 : LUnaryMathOperation<1>(value) {
2013 temps_[0] = temp1; 2036 temps_[0] = temp1;
2014 } 2037 }
2015 2038
2016 LOperand* temp1() { return temps_[0]; } 2039 LOperand* temp1() { return temps_[0]; }
2017 2040
2018 DECLARE_CONCRETE_INSTRUCTION(MathRound, "math-round") 2041 DECLARE_CONCRETE_INSTRUCTION(MathRoundI, "math-round-i")
2019 }; 2042 };
2020 2043
2021 2044
2022 class LMathSqrt V8_FINAL : public LUnaryMathOperation<0> { 2045 class LMathSqrt V8_FINAL : public LUnaryMathOperation<0> {
2023 public: 2046 public:
2024 explicit LMathSqrt(LOperand* value) : LUnaryMathOperation<0>(value) { } 2047 explicit LMathSqrt(LOperand* value) : LUnaryMathOperation<0>(value) { }
2025 DECLARE_CONCRETE_INSTRUCTION(MathSqrt, "math-sqrt") 2048 DECLARE_CONCRETE_INSTRUCTION(MathSqrt, "math-sqrt")
2026 }; 2049 };
2027 2050
2028 2051
(...skipping 1039 matching lines...) Expand 10 before | Expand all | Expand 10 after
3068 3091
3069 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 3092 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
3070 }; 3093 };
3071 3094
3072 #undef DECLARE_HYDROGEN_ACCESSOR 3095 #undef DECLARE_HYDROGEN_ACCESSOR
3073 #undef DECLARE_CONCRETE_INSTRUCTION 3096 #undef DECLARE_CONCRETE_INSTRUCTION
3074 3097
3075 } } // namespace v8::internal 3098 } } // namespace v8::internal
3076 3099
3077 #endif // V8_ARM64_LITHIUM_ARM64_H_ 3100 #endif // V8_ARM64_LITHIUM_ARM64_H_
OLDNEW
« no previous file with comments | « src/arm64/constants-arm64.h ('k') | src/arm64/lithium-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698