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

Side by Side Diff: runtime/vm/intermediate_language_x64.cc

Issue 293993013: Beings adding SIMD support to arm64. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: 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 | « runtime/vm/intermediate_language_arm64.cc ('k') | runtime/vm/intrinsifier_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 (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 #include "vm/globals.h" // Needed here to get TARGET_ARCH_X64. 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_X64.
6 #if defined(TARGET_ARCH_X64) 6 #if defined(TARGET_ARCH_X64)
7 7
8 #include "vm/intermediate_language.h" 8 #include "vm/intermediate_language.h"
9 9
10 #include "vm/dart_entry.h" 10 #include "vm/dart_entry.h"
(...skipping 2246 matching lines...) Expand 10 before | Expand all | Expand 10 after
2257 slow_path->entry_label(), 2257 slow_path->entry_label(),
2258 Assembler::kFarJump, 2258 Assembler::kFarJump,
2259 result, 2259 result,
2260 PP); 2260 PP);
2261 __ Bind(slow_path->exit_label()); 2261 __ Bind(slow_path->exit_label());
2262 __ movq(temp, FieldAddress(instance_reg, offset_in_bytes())); 2262 __ movq(temp, FieldAddress(instance_reg, offset_in_bytes()));
2263 __ movsd(value, FieldAddress(temp, Double::value_offset())); 2263 __ movsd(value, FieldAddress(temp, Double::value_offset()));
2264 __ movsd(FieldAddress(result, Double::value_offset()), value); 2264 __ movsd(FieldAddress(result, Double::value_offset()), value);
2265 __ jmp(&done); 2265 __ jmp(&done);
2266 } 2266 }
2267
2267 { 2268 {
2268 __ Bind(&load_float32x4); 2269 __ Bind(&load_float32x4);
2269 BoxFloat32x4SlowPath* slow_path = new BoxFloat32x4SlowPath(this); 2270 BoxFloat32x4SlowPath* slow_path = new BoxFloat32x4SlowPath(this);
2270 compiler->AddSlowPathCode(slow_path); 2271 compiler->AddSlowPathCode(slow_path);
2271 2272
2272 __ TryAllocate(compiler->float32x4_class(), 2273 __ TryAllocate(compiler->float32x4_class(),
2273 slow_path->entry_label(), 2274 slow_path->entry_label(),
2274 Assembler::kFarJump, 2275 Assembler::kFarJump,
2275 result, 2276 result,
2276 PP); 2277 PP);
2277 __ Bind(slow_path->exit_label()); 2278 __ Bind(slow_path->exit_label());
2278 __ movq(temp, FieldAddress(instance_reg, offset_in_bytes())); 2279 __ movq(temp, FieldAddress(instance_reg, offset_in_bytes()));
2279 __ movups(value, FieldAddress(temp, Float32x4::value_offset())); 2280 __ movups(value, FieldAddress(temp, Float32x4::value_offset()));
2280 __ movups(FieldAddress(result, Float32x4::value_offset()), value); 2281 __ movups(FieldAddress(result, Float32x4::value_offset()), value);
2281 __ jmp(&done); 2282 __ jmp(&done);
2282 } 2283 }
2284
2283 { 2285 {
2284 __ Bind(&load_float64x2); 2286 __ Bind(&load_float64x2);
2285
2286 BoxFloat64x2SlowPath* slow_path = new BoxFloat64x2SlowPath(this); 2287 BoxFloat64x2SlowPath* slow_path = new BoxFloat64x2SlowPath(this);
2287 compiler->AddSlowPathCode(slow_path); 2288 compiler->AddSlowPathCode(slow_path);
2288 2289
2289 __ TryAllocate(compiler->float64x2_class(), 2290 __ TryAllocate(compiler->float64x2_class(),
2290 slow_path->entry_label(), 2291 slow_path->entry_label(),
2291 Assembler::kFarJump, 2292 Assembler::kFarJump,
2292 result, 2293 result,
2293 temp); 2294 temp);
2294 __ Bind(slow_path->exit_label()); 2295 __ Bind(slow_path->exit_label());
2295 __ movq(temp, FieldAddress(instance_reg, offset_in_bytes())); 2296 __ movq(temp, FieldAddress(instance_reg, offset_in_bytes()));
(...skipping 3485 matching lines...) Expand 10 before | Expand all | Expand 10 after
5781 PcDescriptors::kOther, 5782 PcDescriptors::kOther,
5782 locs()); 5783 locs());
5783 __ Drop(ArgumentCount()); // Discard arguments. 5784 __ Drop(ArgumentCount()); // Discard arguments.
5784 } 5785 }
5785 5786
5786 } // namespace dart 5787 } // namespace dart
5787 5788
5788 #undef __ 5789 #undef __
5789 5790
5790 #endif // defined TARGET_ARCH_X64 5791 #endif // defined TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « runtime/vm/intermediate_language_arm64.cc ('k') | runtime/vm/intrinsifier_arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698