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

Side by Side Diff: src/ia32/assembler-ia32.h

Issue 1954953002: Add the concept of FloatRegister for all platforms. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase Created 4 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
« no previous file with comments | « src/arm64/assembler-arm64.h ('k') | src/mips/assembler-mips.h » ('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 (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 #define DOUBLE_REGISTERS(V) \ 67 #define DOUBLE_REGISTERS(V) \
68 V(xmm0) \ 68 V(xmm0) \
69 V(xmm1) \ 69 V(xmm1) \
70 V(xmm2) \ 70 V(xmm2) \
71 V(xmm3) \ 71 V(xmm3) \
72 V(xmm4) \ 72 V(xmm4) \
73 V(xmm5) \ 73 V(xmm5) \
74 V(xmm6) \ 74 V(xmm6) \
75 V(xmm7) 75 V(xmm7)
76 76
77 #define FLOAT_REGISTERS DOUBLE_REGISTERS
78 #define SIMD_REGISTERS DOUBLE_REGISTERS
79
77 #define ALLOCATABLE_DOUBLE_REGISTERS(V) \ 80 #define ALLOCATABLE_DOUBLE_REGISTERS(V) \
78 V(xmm1) \ 81 V(xmm1) \
79 V(xmm2) \ 82 V(xmm2) \
80 V(xmm3) \ 83 V(xmm3) \
81 V(xmm4) \ 84 V(xmm4) \
82 V(xmm5) \ 85 V(xmm5) \
83 V(xmm6) \ 86 V(xmm6) \
84 V(xmm7) 87 V(xmm7)
85 88
86 // CPU Registers. 89 // CPU Registers.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 // Unfortunately we can't make this private in a struct. 142 // Unfortunately we can't make this private in a struct.
140 int reg_code; 143 int reg_code;
141 }; 144 };
142 145
143 146
144 #define DECLARE_REGISTER(R) const Register R = {Register::kCode_##R}; 147 #define DECLARE_REGISTER(R) const Register R = {Register::kCode_##R};
145 GENERAL_REGISTERS(DECLARE_REGISTER) 148 GENERAL_REGISTERS(DECLARE_REGISTER)
146 #undef DECLARE_REGISTER 149 #undef DECLARE_REGISTER
147 const Register no_reg = {Register::kCode_no_reg}; 150 const Register no_reg = {Register::kCode_no_reg};
148 151
149 152 struct XMMRegister {
150 struct DoubleRegister {
151 enum Code { 153 enum Code {
152 #define REGISTER_CODE(R) kCode_##R, 154 #define REGISTER_CODE(R) kCode_##R,
153 DOUBLE_REGISTERS(REGISTER_CODE) 155 DOUBLE_REGISTERS(REGISTER_CODE)
154 #undef REGISTER_CODE 156 #undef REGISTER_CODE
155 kAfterLast, 157 kAfterLast,
156 kCode_no_reg = -1 158 kCode_no_reg = -1
157 }; 159 };
158 160
159 static const int kMaxNumRegisters = Code::kAfterLast; 161 static const int kMaxNumRegisters = Code::kAfterLast;
160 162
161 static DoubleRegister from_code(int code) { 163 static XMMRegister from_code(int code) {
162 DoubleRegister result = {code}; 164 XMMRegister result = {code};
163 return result; 165 return result;
164 } 166 }
165 167
166 bool IsAllocatable() const; 168 bool IsAllocatable() const;
167 bool is_valid() const { return 0 <= reg_code && reg_code < kMaxNumRegisters; } 169 bool is_valid() const { return 0 <= reg_code && reg_code < kMaxNumRegisters; }
168 170
169 int code() const { 171 int code() const {
170 DCHECK(is_valid()); 172 DCHECK(is_valid());
171 return reg_code; 173 return reg_code;
172 } 174 }
173 175
174 bool is(DoubleRegister reg) const { return reg_code == reg.reg_code; } 176 bool is(XMMRegister reg) const { return reg_code == reg.reg_code; }
175 177
176 const char* ToString(); 178 const char* ToString();
177 179
178 int reg_code; 180 int reg_code;
179 }; 181 };
180 182
183 typedef XMMRegister FloatRegister;
184
185 typedef XMMRegister DoubleRegister;
186
187 typedef XMMRegister Simd128Register;
188
181 #define DECLARE_REGISTER(R) \ 189 #define DECLARE_REGISTER(R) \
182 const DoubleRegister R = {DoubleRegister::kCode_##R}; 190 const DoubleRegister R = {DoubleRegister::kCode_##R};
183 DOUBLE_REGISTERS(DECLARE_REGISTER) 191 DOUBLE_REGISTERS(DECLARE_REGISTER)
184 #undef DECLARE_REGISTER 192 #undef DECLARE_REGISTER
185 const DoubleRegister no_double_reg = {DoubleRegister::kCode_no_reg}; 193 const DoubleRegister no_double_reg = {DoubleRegister::kCode_no_reg};
186 194
187 typedef DoubleRegister Simd128Register;
188
189 typedef DoubleRegister XMMRegister;
190
191 enum Condition { 195 enum Condition {
192 // any value < 0 is considered no_condition 196 // any value < 0 is considered no_condition
193 no_condition = -1, 197 no_condition = -1,
194 198
195 overflow = 0, 199 overflow = 0,
196 no_overflow = 1, 200 no_overflow = 1,
197 below = 2, 201 below = 2,
198 above_equal = 3, 202 above_equal = 3,
199 equal = 4, 203 equal = 4,
200 not_equal = 5, 204 not_equal = 5,
(...skipping 1394 matching lines...) Expand 10 before | Expand all | Expand 10 after
1595 Assembler* assembler_; 1599 Assembler* assembler_;
1596 #ifdef DEBUG 1600 #ifdef DEBUG
1597 int space_before_; 1601 int space_before_;
1598 #endif 1602 #endif
1599 }; 1603 };
1600 1604
1601 } // namespace internal 1605 } // namespace internal
1602 } // namespace v8 1606 } // namespace v8
1603 1607
1604 #endif // V8_IA32_ASSEMBLER_IA32_H_ 1608 #endif // V8_IA32_ASSEMBLER_IA32_H_
OLDNEW
« no previous file with comments | « src/arm64/assembler-arm64.h ('k') | src/mips/assembler-mips.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698