| OLD | NEW |
| 1 //===- subzero/src/IceAssemblerARM32.h - Assembler for ARM32 ----*- C++ -*-===// | 1 //===- subzero/src/IceAssemblerARM32.h - Assembler for ARM32 ----*- C++ -*-===// |
| 2 // | 2 // |
| 3 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 3 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 4 // for details. All rights reserved. Use of this source code is governed by a | 4 // for details. All rights reserved. Use of this source code is governed by a |
| 5 // BSD-style license that can be found in the LICENSE file. | 5 // BSD-style license that can be found in the LICENSE file. |
| 6 // | 6 // |
| 7 // Modified by the Subzero authors. | 7 // Modified by the Subzero authors. |
| 8 // | 8 // |
| 9 //===----------------------------------------------------------------------===// | 9 //===----------------------------------------------------------------------===// |
| 10 // | 10 // |
| (...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 CondARM32::Cond Cond, const TargetInfo &TInfo); | 377 CondARM32::Cond Cond, const TargetInfo &TInfo); |
| 378 | 378 |
| 379 void vldrs(const Operand *OpSd, const Operand *OpAddress, | 379 void vldrs(const Operand *OpSd, const Operand *OpAddress, |
| 380 CondARM32::Cond Cond, const TargetLowering *Lowering) { | 380 CondARM32::Cond Cond, const TargetLowering *Lowering) { |
| 381 const TargetInfo TInfo(Lowering); | 381 const TargetInfo TInfo(Lowering); |
| 382 vldrs(OpSd, OpAddress, Cond, TInfo); | 382 vldrs(OpSd, OpAddress, Cond, TInfo); |
| 383 } | 383 } |
| 384 | 384 |
| 385 void vmovsr(const Operand *OpSn, const Operand *OpRt, CondARM32::Cond Cond); | 385 void vmovsr(const Operand *OpSn, const Operand *OpRt, CondARM32::Cond Cond); |
| 386 | 386 |
| 387 void vmlad(const Operand *OpDd, const Operand *OpDn, const Operand *OpDm, |
| 388 CondARM32::Cond Cond); |
| 389 |
| 390 void vmlas(const Operand *OpSd, const Operand *OpSn, const Operand *OpSm, |
| 391 CondARM32::Cond Cond); |
| 392 |
| 387 // Uses APSR_nzcv as register | 393 // Uses APSR_nzcv as register |
| 388 void vmrsAPSR_nzcv(CondARM32::Cond Cond); | 394 void vmrsAPSR_nzcv(CondARM32::Cond Cond); |
| 389 | 395 |
| 390 void vmuld(const Operand *OpDd, const Operand *OpDn, const Operand *OpDm, | 396 void vmuld(const Operand *OpDd, const Operand *OpDn, const Operand *OpDm, |
| 391 CondARM32::Cond Cond); | 397 CondARM32::Cond Cond); |
| 392 | 398 |
| 393 void vmuls(const Operand *OpSd, const Operand *OpSn, const Operand *OpSm, | 399 void vmuls(const Operand *OpSd, const Operand *OpSn, const Operand *OpSm, |
| 394 CondARM32::Cond Cond); | 400 CondARM32::Cond Cond); |
| 395 | 401 |
| 396 void vpop(const Variable *OpBaseReg, SizeT NumConsecRegs, | 402 void vpop(const Variable *OpBaseReg, SizeT NumConsecRegs, |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 572 // Returns the offset encoded in the branch instruction Inst. | 578 // Returns the offset encoded in the branch instruction Inst. |
| 573 static IOffsetT decodeBranchOffset(IValueT Inst); | 579 static IOffsetT decodeBranchOffset(IValueT Inst); |
| 574 | 580 |
| 575 // Implements movw/movt, generating pattern ccccxxxxxxxsiiiiddddiiiiiiiiiiii | 581 // Implements movw/movt, generating pattern ccccxxxxxxxsiiiiddddiiiiiiiiiiii |
| 576 // where cccc=Cond, xxxxxxx<<21=Opcode, dddd=Rd, s=SetFlags, and | 582 // where cccc=Cond, xxxxxxx<<21=Opcode, dddd=Rd, s=SetFlags, and |
| 577 // iiiiiiiiiiiiiiii=Imm16. | 583 // iiiiiiiiiiiiiiii=Imm16. |
| 578 void emitMovwt(CondARM32::Cond Cond, bool IsMovw, const Operand *OpRd, | 584 void emitMovwt(CondARM32::Cond Cond, bool IsMovw, const Operand *OpRd, |
| 579 const Operand *OpSrc, const char *MovName); | 585 const Operand *OpSrc, const char *MovName); |
| 580 | 586 |
| 581 // Emit VFP instruction with 3 D registers. | 587 // Emit VFP instruction with 3 D registers. |
| 588 void emitVFPddd(CondARM32::Cond Cond, IValueT Opcode, const Operand *OpDd, |
| 589 const Operand *OpDn, const Operand *OpDm, |
| 590 const char *InstName); |
| 591 |
| 582 void emitVFPddd(CondARM32::Cond Cond, IValueT Opcode, IValueT Dd, IValueT Dn, | 592 void emitVFPddd(CondARM32::Cond Cond, IValueT Opcode, IValueT Dd, IValueT Dn, |
| 583 IValueT Dm); | 593 IValueT Dm); |
| 584 | 594 |
| 585 // Emit VFP instruction with 3 S registers. | 595 // Emit VFP instruction with 3 S registers. |
| 586 void emitVFPsss(CondARM32::Cond Cond, IValueT Opcode, IValueT Sd, IValueT Sn, | 596 void emitVFPsss(CondARM32::Cond Cond, IValueT Opcode, IValueT Sd, IValueT Sn, |
| 587 IValueT Sm); | 597 IValueT Sm); |
| 598 |
| 599 void emitVFPsss(CondARM32::Cond Cond, IValueT Opcode, const Operand *OpSd, |
| 600 const Operand *OpSn, const Operand *OpSm, |
| 601 const char *InstName); |
| 588 }; | 602 }; |
| 589 | 603 |
| 590 } // end of namespace ARM32 | 604 } // end of namespace ARM32 |
| 591 } // end of namespace Ice | 605 } // end of namespace Ice |
| 592 | 606 |
| 593 #endif // SUBZERO_SRC_ICEASSEMBLERARM32_H | 607 #endif // SUBZERO_SRC_ICEASSEMBLERARM32_H |
| OLD | NEW |