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

Side by Side Diff: src/compiler/arm64/code-generator-arm64.cc

Issue 633123002: [turbofan] Add support for ARM64 Ubfx (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fix bit counting and random functions Created 6 years, 2 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/base/utils/random-number-generator.cc ('k') | src/compiler/arm64/instruction-codes-arm64.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 #include "src/compiler/code-generator.h" 5 #include "src/compiler/code-generator.h"
6 6
7 #include "src/arm64/macro-assembler-arm64.h" 7 #include "src/arm64/macro-assembler-arm64.h"
8 #include "src/compiler/code-generator-impl.h" 8 #include "src/compiler/code-generator-impl.h"
9 #include "src/compiler/gap-resolver.h" 9 #include "src/compiler/gap-resolver.h"
10 #include "src/compiler/node-matchers.h" 10 #include "src/compiler/node-matchers.h"
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 __ Sub(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); 312 __ Sub(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1));
313 break; 313 break;
314 case kArm64Sub32: 314 case kArm64Sub32:
315 if (FlagsModeField::decode(opcode) != kFlags_none) { 315 if (FlagsModeField::decode(opcode) != kFlags_none) {
316 __ Subs(i.OutputRegister32(), i.InputRegister32(0), 316 __ Subs(i.OutputRegister32(), i.InputRegister32(0),
317 i.InputOperand32(1)); 317 i.InputOperand32(1));
318 } else { 318 } else {
319 __ Sub(i.OutputRegister32(), i.InputRegister32(0), i.InputOperand32(1)); 319 __ Sub(i.OutputRegister32(), i.InputRegister32(0), i.InputOperand32(1));
320 } 320 }
321 break; 321 break;
322 case kArm64Shl: 322 case kArm64Lsl:
323 ASSEMBLE_SHIFT(Lsl, 64); 323 ASSEMBLE_SHIFT(Lsl, 64);
324 break; 324 break;
325 case kArm64Shl32: 325 case kArm64Lsl32:
326 ASSEMBLE_SHIFT(Lsl, 32); 326 ASSEMBLE_SHIFT(Lsl, 32);
327 break; 327 break;
328 case kArm64Shr: 328 case kArm64Lsr:
329 ASSEMBLE_SHIFT(Lsr, 64); 329 ASSEMBLE_SHIFT(Lsr, 64);
330 break; 330 break;
331 case kArm64Shr32: 331 case kArm64Lsr32:
332 ASSEMBLE_SHIFT(Lsr, 32); 332 ASSEMBLE_SHIFT(Lsr, 32);
333 break; 333 break;
334 case kArm64Sar: 334 case kArm64Asr:
335 ASSEMBLE_SHIFT(Asr, 64); 335 ASSEMBLE_SHIFT(Asr, 64);
336 break; 336 break;
337 case kArm64Sar32: 337 case kArm64Asr32:
338 ASSEMBLE_SHIFT(Asr, 32); 338 ASSEMBLE_SHIFT(Asr, 32);
339 break; 339 break;
340 case kArm64Ror: 340 case kArm64Ror:
341 ASSEMBLE_SHIFT(Ror, 64); 341 ASSEMBLE_SHIFT(Ror, 64);
342 break; 342 break;
343 case kArm64Ror32: 343 case kArm64Ror32:
344 ASSEMBLE_SHIFT(Ror, 32); 344 ASSEMBLE_SHIFT(Ror, 32);
345 break; 345 break;
346 case kArm64Mov32: 346 case kArm64Mov32:
347 __ Mov(i.OutputRegister32(), i.InputRegister32(0)); 347 __ Mov(i.OutputRegister32(), i.InputRegister32(0));
348 break; 348 break;
349 case kArm64Sxtw: 349 case kArm64Sxtw:
350 __ Sxtw(i.OutputRegister(), i.InputRegister32(0)); 350 __ Sxtw(i.OutputRegister(), i.InputRegister32(0));
351 break; 351 break;
352 case kArm64Ubfx:
353 __ Ubfx(i.OutputRegister(), i.InputRegister(0), i.InputInt8(1),
354 i.InputInt8(2));
355 break;
356 case kArm64Ubfx32:
357 __ Ubfx(i.OutputRegister32(), i.InputRegister32(0), i.InputInt8(1),
358 i.InputInt8(2));
359 break;
352 case kArm64Claim: { 360 case kArm64Claim: {
353 int words = MiscField::decode(instr->opcode()); 361 int words = MiscField::decode(instr->opcode());
354 __ Claim(words); 362 __ Claim(words);
355 break; 363 break;
356 } 364 }
357 case kArm64Poke: { 365 case kArm64Poke: {
358 int slot = MiscField::decode(instr->opcode()); 366 int slot = MiscField::decode(instr->opcode());
359 Operand operand(slot * kPointerSize); 367 Operand operand(slot * kPointerSize);
360 __ Poke(i.InputRegister(0), operand); 368 __ Poke(i.InputRegister(0), operand);
361 break; 369 break;
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 } 935 }
928 } 936 }
929 MarkLazyDeoptSite(); 937 MarkLazyDeoptSite();
930 } 938 }
931 939
932 #undef __ 940 #undef __
933 941
934 } // namespace compiler 942 } // namespace compiler
935 } // namespace internal 943 } // namespace internal
936 } // namespace v8 944 } // namespace v8
OLDNEW
« no previous file with comments | « src/base/utils/random-number-generator.cc ('k') | src/compiler/arm64/instruction-codes-arm64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698