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

Side by Side Diff: src/IceAssemblerARM32.h

Issue 1530233004: add RBIT instruction to the ARM integrated assembler. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Update DART source. Created 5 years 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
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698