| 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 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 void pop(const Operand *OpRt, CondARM32::Cond Cond); | 255 void pop(const Operand *OpRt, CondARM32::Cond Cond); |
| 256 | 256 |
| 257 // Note: Registers is a bitset, where bit n corresponds to register Rn. | 257 // Note: Registers is a bitset, where bit n corresponds to register Rn. |
| 258 void popList(const IValueT Registers, CondARM32::Cond Cond); | 258 void popList(const IValueT Registers, CondARM32::Cond Cond); |
| 259 | 259 |
| 260 void push(const Operand *OpRt, CondARM32::Cond Cond); | 260 void push(const Operand *OpRt, CondARM32::Cond Cond); |
| 261 | 261 |
| 262 // Note: Registers is a bitset, where bit n corresponds to register Rn. | 262 // Note: Registers is a bitset, where bit n corresponds to register Rn. |
| 263 void pushList(const IValueT Registers, CondARM32::Cond Cond); | 263 void pushList(const IValueT Registers, CondARM32::Cond Cond); |
| 264 | 264 |
| 265 void rev(const Operand *OpRd, const Operand *OpSrc, CondARM32::Cond Cond); | 265 void rbit(const Operand *OpRd, const Operand *OpRm, CondARM32::Cond Cond); |
| 266 |
| 267 void rev(const Operand *OpRd, const Operand *OpRm, CondARM32::Cond Cond); |
| 266 | 268 |
| 267 void rsb(const Operand *OpRd, const Operand *OpRn, const Operand *OpSrc1, | 269 void rsb(const Operand *OpRd, const Operand *OpRn, const Operand *OpSrc1, |
| 268 bool SetFlags, CondARM32::Cond Cond); | 270 bool SetFlags, CondARM32::Cond Cond); |
| 269 | 271 |
| 270 void rsc(const Operand *OpRd, const Operand *OpRn, const Operand *OpSrc1, | 272 void rsc(const Operand *OpRd, const Operand *OpRn, const Operand *OpSrc1, |
| 271 bool SetFlags, CondARM32::Cond Cond); | 273 bool SetFlags, CondARM32::Cond Cond); |
| 272 | 274 |
| 273 void sbc(const Operand *OpRd, const Operand *OpRn, const Operand *OpSrc1, | 275 void sbc(const Operand *OpRd, const Operand *OpRn, const Operand *OpSrc1, |
| 274 bool SetFlags, CondARM32::Cond Cond); | 276 bool SetFlags, CondARM32::Cond Cond); |
| 275 | 277 |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 374 const char *InstName); | 376 const char *InstName); |
| 375 | 377 |
| 376 // Emit ccccoooaabalnnnnttttaaaaaaaaaaaa where cccc=Cond, | 378 // Emit ccccoooaabalnnnnttttaaaaaaaaaaaa where cccc=Cond, |
| 377 // ooo=InstType, l=isLoad, b=isByte, and | 379 // ooo=InstType, l=isLoad, b=isByte, and |
| 378 // aaa0a0aaaa0000aaaaaaaaaaaa=Address. Note that Address is assumed to be | 380 // aaa0a0aaaa0000aaaaaaaaaaaa=Address. Note that Address is assumed to be |
| 379 // defined by decodeAddress() in IceAssemblerARM32.cpp. | 381 // defined by decodeAddress() in IceAssemblerARM32.cpp. |
| 380 void emitMemOp(CondARM32::Cond Cond, IValueT InstType, bool IsLoad, | 382 void emitMemOp(CondARM32::Cond Cond, IValueT InstType, bool IsLoad, |
| 381 bool IsByte, IValueT Rt, IValueT Address, | 383 bool IsByte, IValueT Rt, IValueT Address, |
| 382 const char *InstName); | 384 const char *InstName); |
| 383 | 385 |
| 386 // Emit ccccxxxxxxxxxxxxddddxxxxxxxxmmmm where cccc=Cond, |
| 387 // xxxxxxxxxxxx0000xxxxxxxx0000=Opcode, dddd=Rd, and mmmm=Rm. |
| 388 void emitRdRm(CondARM32::Cond Cond, IValueT Opcode, const Operand *OpRd, |
| 389 const Operand *OpRm, const char *InstName); |
| 390 |
| 384 // Emit ldr/ldrb/str/strb instruction with given address. | 391 // Emit ldr/ldrb/str/strb instruction with given address. |
| 385 void emitMemOp(CondARM32::Cond Cond, bool IsLoad, bool IsByte, IValueT Rt, | 392 void emitMemOp(CondARM32::Cond Cond, bool IsLoad, bool IsByte, IValueT Rt, |
| 386 const Operand *OpAddress, const TargetInfo &TInfo, | 393 const Operand *OpAddress, const TargetInfo &TInfo, |
| 387 const char *InstName); | 394 const char *InstName); |
| 388 | 395 |
| 389 // Emit ldrh/ldrd/strh/strd instruction with given address using encoding 3. | 396 // Emit ldrh/ldrd/strh/strd instruction with given address using encoding 3. |
| 390 void emitMemOpEnc3(CondARM32::Cond Cond, IValueT Opcode, IValueT Rt, | 397 void emitMemOpEnc3(CondARM32::Cond Cond, IValueT Opcode, IValueT Rt, |
| 391 const Operand *OpAddress, const TargetInfo &TInfo, | 398 const Operand *OpAddress, const TargetInfo &TInfo, |
| 392 const char *InstName); | 399 const char *InstName); |
| 393 | 400 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 446 // where cccc=Cond, xxxxxxx<<21=Opcode, dddd=Rd, s=SetFlags, and | 453 // where cccc=Cond, xxxxxxx<<21=Opcode, dddd=Rd, s=SetFlags, and |
| 447 // iiiiiiiiiiiiiiii=Imm16. | 454 // iiiiiiiiiiiiiiii=Imm16. |
| 448 void emitMovwt(CondARM32::Cond Cond, bool IsMovw, const Operand *OpRd, | 455 void emitMovwt(CondARM32::Cond Cond, bool IsMovw, const Operand *OpRd, |
| 449 const Operand *OpSrc, const char *MovName); | 456 const Operand *OpSrc, const char *MovName); |
| 450 }; | 457 }; |
| 451 | 458 |
| 452 } // end of namespace ARM32 | 459 } // end of namespace ARM32 |
| 453 } // end of namespace Ice | 460 } // end of namespace Ice |
| 454 | 461 |
| 455 #endif // SUBZERO_SRC_ICEASSEMBLERARM32_H | 462 #endif // SUBZERO_SRC_ICEASSEMBLERARM32_H |
| OLD | NEW |