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

Side by Side Diff: test/cctest/test-assembler-ia32.cc

Issue 27046: Patch (SSE3) for faster To(U)Int32 conversion in bit (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years, 10 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 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 157
158 typedef int (*F3)(float x); 158 typedef int (*F3)(float x);
159 159
160 TEST(AssemblerIa323) { 160 TEST(AssemblerIa323) {
161 InitializeVM(); 161 InitializeVM();
162 v8::HandleScope scope; 162 v8::HandleScope scope;
163 163
164 v8::internal::byte buffer[256]; 164 v8::internal::byte buffer[256];
165 Assembler assm(buffer, sizeof buffer); 165 Assembler assm(buffer, sizeof buffer);
166 166
167 Serializer::disable(); // Needed for Probe when running without snapshot.
168 CpuFeatures::Probe();
169 CHECK(CpuFeatures::IsSupported(CpuFeatures::SSE2)); 167 CHECK(CpuFeatures::IsSupported(CpuFeatures::SSE2));
170 { CpuFeatures::Scope fscope(CpuFeatures::SSE2); 168 { CpuFeatures::Scope fscope(CpuFeatures::SSE2);
171 __ cvttss2si(eax, Operand(esp, 4)); 169 __ cvttss2si(eax, Operand(esp, 4));
172 __ ret(0); 170 __ ret(0);
173 } 171 }
174 172
175 CodeDesc desc; 173 CodeDesc desc;
176 assm.GetCode(&desc); 174 assm.GetCode(&desc);
177 Code* code = 175 Code* code =
178 Code::cast(Heap::CreateCode(desc, NULL, Code::ComputeFlags(Code::STUB))); 176 Code::cast(Heap::CreateCode(desc, NULL, Code::ComputeFlags(Code::STUB)));
(...skipping 11 matching lines...) Expand all
190 188
191 typedef int (*F4)(double x); 189 typedef int (*F4)(double x);
192 190
193 TEST(AssemblerIa324) { 191 TEST(AssemblerIa324) {
194 InitializeVM(); 192 InitializeVM();
195 v8::HandleScope scope; 193 v8::HandleScope scope;
196 194
197 v8::internal::byte buffer[256]; 195 v8::internal::byte buffer[256];
198 Assembler assm(buffer, sizeof buffer); 196 Assembler assm(buffer, sizeof buffer);
199 197
200 Serializer::disable(); // Needed for Probe when running without snapshot.
201 CpuFeatures::Probe();
202 CHECK(CpuFeatures::IsSupported(CpuFeatures::SSE2)); 198 CHECK(CpuFeatures::IsSupported(CpuFeatures::SSE2));
203 CpuFeatures::Scope fscope(CpuFeatures::SSE2); 199 CpuFeatures::Scope fscope(CpuFeatures::SSE2);
204 __ cvttsd2si(eax, Operand(esp, 4)); 200 __ cvttsd2si(eax, Operand(esp, 4));
205 __ ret(0); 201 __ ret(0);
206 202
207 CodeDesc desc; 203 CodeDesc desc;
208 assm.GetCode(&desc); 204 assm.GetCode(&desc);
209 Code* code = 205 Code* code =
210 Code::cast(Heap::CreateCode(desc, NULL, Code::ComputeFlags(Code::STUB))); 206 Code::cast(Heap::CreateCode(desc, NULL, Code::ComputeFlags(Code::STUB)));
211 // don't print the code - our disassembler can't handle cvttsd2si 207 // don't print the code - our disassembler can't handle cvttsd2si
(...skipping 27 matching lines...) Expand all
239 int res = f(); 235 int res = f();
240 CHECK_EQ(42, res); 236 CHECK_EQ(42, res);
241 } 237 }
242 238
243 239
244 typedef double (*F5)(double x, double y); 240 typedef double (*F5)(double x, double y);
245 241
246 TEST(AssemblerIa326) { 242 TEST(AssemblerIa326) {
247 InitializeVM(); 243 InitializeVM();
248 v8::HandleScope scope; 244 v8::HandleScope scope;
249 Serializer::disable(); // Needed for Probe when running without snapshot.
250 CpuFeatures::Probe();
251 CHECK(CpuFeatures::IsSupported(CpuFeatures::SSE2)); 245 CHECK(CpuFeatures::IsSupported(CpuFeatures::SSE2));
252 CpuFeatures::Scope fscope(CpuFeatures::SSE2); 246 CpuFeatures::Scope fscope(CpuFeatures::SSE2);
253 v8::internal::byte buffer[256]; 247 v8::internal::byte buffer[256];
254 Assembler assm(buffer, sizeof buffer); 248 Assembler assm(buffer, sizeof buffer);
255 249
256 __ movdbl(xmm0, Operand(esp, 1 * kPointerSize)); 250 __ movdbl(xmm0, Operand(esp, 1 * kPointerSize));
257 __ movdbl(xmm1, Operand(esp, 3 * kPointerSize)); 251 __ movdbl(xmm1, Operand(esp, 3 * kPointerSize));
258 __ addsd(xmm0, xmm1); 252 __ addsd(xmm0, xmm1);
259 __ mulsd(xmm0, xmm1); 253 __ mulsd(xmm0, xmm1);
260 __ subsd(xmm0, xmm1); 254 __ subsd(xmm0, xmm1);
(...skipping 22 matching lines...) Expand all
283 ::printf("f() = %f\n", res); 277 ::printf("f() = %f\n", res);
284 CHECK(2.29 < res && res < 2.31); 278 CHECK(2.29 < res && res < 2.31);
285 } 279 }
286 280
287 281
288 typedef double (*F6)(int x); 282 typedef double (*F6)(int x);
289 283
290 TEST(AssemblerIa328) { 284 TEST(AssemblerIa328) {
291 InitializeVM(); 285 InitializeVM();
292 v8::HandleScope scope; 286 v8::HandleScope scope;
293 Serializer::disable(); // Needed for Probe when running without snapshot.
294 CpuFeatures::Probe();
295 CHECK(CpuFeatures::IsSupported(CpuFeatures::SSE2)); 287 CHECK(CpuFeatures::IsSupported(CpuFeatures::SSE2));
296 CpuFeatures::Scope fscope(CpuFeatures::SSE2); 288 CpuFeatures::Scope fscope(CpuFeatures::SSE2);
297 v8::internal::byte buffer[256]; 289 v8::internal::byte buffer[256];
298 Assembler assm(buffer, sizeof buffer); 290 Assembler assm(buffer, sizeof buffer);
299 __ mov(eax, Operand(esp, 4)); 291 __ mov(eax, Operand(esp, 4));
300 __ cvtsi2sd(xmm0, Operand(eax)); 292 __ cvtsi2sd(xmm0, Operand(eax));
301 // Copy xmm0 to st(0) using eight bytes of stack. 293 // Copy xmm0 to st(0) using eight bytes of stack.
302 __ sub(Operand(esp), Immediate(8)); 294 __ sub(Operand(esp), Immediate(8));
303 __ movdbl(Operand(esp, 0), xmm0); 295 __ movdbl(Operand(esp, 0), xmm0);
304 __ fld_d(Operand(esp, 0)); 296 __ fld_d(Operand(esp, 0));
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 #endif 359 #endif
368 360
369 F7 f = FUNCTION_CAST<F7>(Code::cast(code)->entry()); 361 F7 f = FUNCTION_CAST<F7>(Code::cast(code)->entry());
370 CHECK_EQ(kLess, f(1.1, 2.2)); 362 CHECK_EQ(kLess, f(1.1, 2.2));
371 CHECK_EQ(kEqual, f(2.2, 2.2)); 363 CHECK_EQ(kEqual, f(2.2, 2.2));
372 CHECK_EQ(kGreater, f(3.3, 2.2)); 364 CHECK_EQ(kGreater, f(3.3, 2.2));
373 CHECK_EQ(kNaN, f(OS::nan_value(), 1.1)); 365 CHECK_EQ(kNaN, f(OS::nan_value(), 1.1));
374 } 366 }
375 367
376 #undef __ 368 #undef __
OLDNEW
« src/v8.cc ('K') | « src/v8.cc ('k') | test/cctest/test-disasm-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698