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

Side by Side Diff: runtime/vm/assembler_arm.h

Issue 19776007: Enables a SIMD test for ARM. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 5 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 | « no previous file | runtime/vm/assembler_arm.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 #ifndef VM_ASSEMBLER_ARM_H_ 5 #ifndef VM_ASSEMBLER_ARM_H_
6 #define VM_ASSEMBLER_ARM_H_ 6 #define VM_ASSEMBLER_ARM_H_
7 7
8 #ifndef VM_ASSEMBLER_H_ 8 #ifndef VM_ASSEMBLER_H_
9 #error Do not include assembler_arm.h directly; use assembler.h instead. 9 #error Do not include assembler_arm.h directly; use assembler.h instead.
10 #endif 10 #endif
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 437
438 // Floating point instructions (VFPv3-D16 and VFPv3-D32 profiles). 438 // Floating point instructions (VFPv3-D16 and VFPv3-D32 profiles).
439 void vmovsr(SRegister sn, Register rt, Condition cond = AL); 439 void vmovsr(SRegister sn, Register rt, Condition cond = AL);
440 void vmovrs(Register rt, SRegister sn, Condition cond = AL); 440 void vmovrs(Register rt, SRegister sn, Condition cond = AL);
441 void vmovsrr(SRegister sm, Register rt, Register rt2, Condition cond = AL); 441 void vmovsrr(SRegister sm, Register rt, Register rt2, Condition cond = AL);
442 void vmovrrs(Register rt, Register rt2, SRegister sm, Condition cond = AL); 442 void vmovrrs(Register rt, Register rt2, SRegister sm, Condition cond = AL);
443 void vmovdrr(DRegister dm, Register rt, Register rt2, Condition cond = AL); 443 void vmovdrr(DRegister dm, Register rt, Register rt2, Condition cond = AL);
444 void vmovrrd(Register rt, Register rt2, DRegister dm, Condition cond = AL); 444 void vmovrrd(Register rt, Register rt2, DRegister dm, Condition cond = AL);
445 void vmovs(SRegister sd, SRegister sm, Condition cond = AL); 445 void vmovs(SRegister sd, SRegister sm, Condition cond = AL);
446 void vmovd(DRegister dd, DRegister dm, Condition cond = AL); 446 void vmovd(DRegister dd, DRegister dm, Condition cond = AL);
447 void vmovq(QRegister qd, QRegister qm);
447 448
448 // Returns false if the immediate cannot be encoded. 449 // Returns false if the immediate cannot be encoded.
449 bool vmovs(SRegister sd, float s_imm, Condition cond = AL); 450 bool vmovs(SRegister sd, float s_imm, Condition cond = AL);
450 bool vmovd(DRegister dd, double d_imm, Condition cond = AL); 451 bool vmovd(DRegister dd, double d_imm, Condition cond = AL);
451 452
452 void vldrs(SRegister sd, Address ad, Condition cond = AL); 453 void vldrs(SRegister sd, Address ad, Condition cond = AL);
453 void vstrs(SRegister sd, Address ad, Condition cond = AL); 454 void vstrs(SRegister sd, Address ad, Condition cond = AL);
454 void vldrd(DRegister dd, Address ad, Condition cond = AL); 455 void vldrd(DRegister dd, Address ad, Condition cond = AL);
455 void vstrd(DRegister dd, Address ad, Condition cond = AL); 456 void vstrd(DRegister dd, Address ad, Condition cond = AL);
456 457
(...skipping 18 matching lines...) Expand all
475 void vmuls(SRegister sd, SRegister sn, SRegister sm, Condition cond = AL); 476 void vmuls(SRegister sd, SRegister sn, SRegister sm, Condition cond = AL);
476 void vmuld(DRegister dd, DRegister dn, DRegister dm, Condition cond = AL); 477 void vmuld(DRegister dd, DRegister dn, DRegister dm, Condition cond = AL);
477 void vmulqi(OperandSize sz, QRegister qd, QRegister qn, QRegister qm); 478 void vmulqi(OperandSize sz, QRegister qd, QRegister qn, QRegister qm);
478 void vmulqs(QRegister qd, QRegister qn, QRegister qm); 479 void vmulqs(QRegister qd, QRegister qn, QRegister qm);
479 void vmlas(SRegister sd, SRegister sn, SRegister sm, Condition cond = AL); 480 void vmlas(SRegister sd, SRegister sn, SRegister sm, Condition cond = AL);
480 void vmlad(DRegister dd, DRegister dn, DRegister dm, Condition cond = AL); 481 void vmlad(DRegister dd, DRegister dn, DRegister dm, Condition cond = AL);
481 void vmlss(SRegister sd, SRegister sn, SRegister sm, Condition cond = AL); 482 void vmlss(SRegister sd, SRegister sn, SRegister sm, Condition cond = AL);
482 void vmlsd(DRegister dd, DRegister dn, DRegister dm, Condition cond = AL); 483 void vmlsd(DRegister dd, DRegister dn, DRegister dm, Condition cond = AL);
483 void vdivs(SRegister sd, SRegister sn, SRegister sm, Condition cond = AL); 484 void vdivs(SRegister sd, SRegister sn, SRegister sm, Condition cond = AL);
484 void vdivd(DRegister dd, DRegister dn, DRegister dm, Condition cond = AL); 485 void vdivd(DRegister dd, DRegister dn, DRegister dm, Condition cond = AL);
486 void veorq(QRegister qd, QRegister qn, QRegister qm);
487 void vorrq(QRegister qd, QRegister qn, QRegister qm);
485 488
486 void vabss(SRegister sd, SRegister sm, Condition cond = AL); 489 void vabss(SRegister sd, SRegister sm, Condition cond = AL);
487 void vabsd(DRegister dd, DRegister dm, Condition cond = AL); 490 void vabsd(DRegister dd, DRegister dm, Condition cond = AL);
488 void vnegs(SRegister sd, SRegister sm, Condition cond = AL); 491 void vnegs(SRegister sd, SRegister sm, Condition cond = AL);
489 void vnegd(DRegister dd, DRegister dm, Condition cond = AL); 492 void vnegd(DRegister dd, DRegister dm, Condition cond = AL);
490 void vsqrts(SRegister sd, SRegister sm, Condition cond = AL); 493 void vsqrts(SRegister sd, SRegister sm, Condition cond = AL);
491 void vsqrtd(DRegister dd, DRegister dm, Condition cond = AL); 494 void vsqrtd(DRegister dd, DRegister dm, Condition cond = AL);
492 495
493 void vcvtsd(SRegister sd, DRegister dm, Condition cond = AL); 496 void vcvtsd(SRegister sd, DRegister dm, Condition cond = AL);
494 void vcvtds(DRegister dd, SRegister sm, Condition cond = AL); 497 void vcvtds(DRegister dd, SRegister sm, Condition cond = AL);
495 void vcvtis(SRegister sd, SRegister sm, Condition cond = AL); 498 void vcvtis(SRegister sd, SRegister sm, Condition cond = AL);
496 void vcvtid(SRegister sd, DRegister dm, Condition cond = AL); 499 void vcvtid(SRegister sd, DRegister dm, Condition cond = AL);
497 void vcvtsi(SRegister sd, SRegister sm, Condition cond = AL); 500 void vcvtsi(SRegister sd, SRegister sm, Condition cond = AL);
498 void vcvtdi(DRegister dd, SRegister sm, Condition cond = AL); 501 void vcvtdi(DRegister dd, SRegister sm, Condition cond = AL);
499 void vcvtus(SRegister sd, SRegister sm, Condition cond = AL); 502 void vcvtus(SRegister sd, SRegister sm, Condition cond = AL);
500 void vcvtud(SRegister sd, DRegister dm, Condition cond = AL); 503 void vcvtud(SRegister sd, DRegister dm, Condition cond = AL);
501 void vcvtsu(SRegister sd, SRegister sm, Condition cond = AL); 504 void vcvtsu(SRegister sd, SRegister sm, Condition cond = AL);
502 void vcvtdu(DRegister dd, SRegister sm, Condition cond = AL); 505 void vcvtdu(DRegister dd, SRegister sm, Condition cond = AL);
503 506
504 void vcmps(SRegister sd, SRegister sm, Condition cond = AL); 507 void vcmps(SRegister sd, SRegister sm, Condition cond = AL);
505 void vcmpd(DRegister dd, DRegister dm, Condition cond = AL); 508 void vcmpd(DRegister dd, DRegister dm, Condition cond = AL);
506 void vcmpsz(SRegister sd, Condition cond = AL); 509 void vcmpsz(SRegister sd, Condition cond = AL);
507 void vcmpdz(DRegister dd, Condition cond = AL); 510 void vcmpdz(DRegister dd, Condition cond = AL);
508 void vmstat(Condition cond = AL); // VMRS APSR_nzcv, FPSCR 511 void vmstat(Condition cond = AL); // VMRS APSR_nzcv, FPSCR
509 512
513 // Duplicates the operand of size sz at index idx from dm to all elements of
514 // qd. This is a special case of vtbl.
515 void vdup(OperandSize sz, QRegister qd, DRegister dm, int idx);
516
510 // Each byte of dm is an index into the table of bytes formed by concatenating 517 // Each byte of dm is an index into the table of bytes formed by concatenating
511 // a list of 'length' registers starting with dn. The result is placed in dd. 518 // a list of 'length' registers starting with dn. The result is placed in dd.
512 void vtbl(DRegister dd, DRegister dn, int length, DRegister dm); 519 void vtbl(DRegister dd, DRegister dn, int length, DRegister dm);
513 520
514 // Branch instructions. 521 // Branch instructions.
515 void b(Label* label, Condition cond = AL); 522 void b(Label* label, Condition cond = AL);
516 void bl(Label* label, Condition cond = AL); 523 void bl(Label* label, Condition cond = AL);
517 void bx(Register rm, Condition cond = AL); 524 void bx(Register rm, Condition cond = AL);
518 void blx(Register rm, Condition cond = AL); 525 void blx(Register rm, Condition cond = AL);
519 526
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 Register value, 830 Register value,
824 Label* no_update); 831 Label* no_update);
825 832
826 DISALLOW_ALLOCATION(); 833 DISALLOW_ALLOCATION();
827 DISALLOW_COPY_AND_ASSIGN(Assembler); 834 DISALLOW_COPY_AND_ASSIGN(Assembler);
828 }; 835 };
829 836
830 } // namespace dart 837 } // namespace dart
831 838
832 #endif // VM_ASSEMBLER_ARM_H_ 839 #endif // VM_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/assembler_arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698