assembler-aarch32.h revision 1e85b7f2e8ad2bfb233de29405aade635ed207ce
1// Copyright 2015, VIXL authors
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are met:
6//
7//   * Redistributions of source code must retain the above copyright notice,
8//     this list of conditions and the following disclaimer.
9//   * Redistributions in binary form must reproduce the above copyright notice,
10//     this list of conditions and the following disclaimer in the documentation
11//     and/or other materials provided with the distribution.
12//   * Neither the name of ARM Limited nor the names of its contributors may be
13//     used to endorse or promote products derived from this software without
14//     specific prior written permission.
15//
16// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
17// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27#ifndef VIXL_AARCH32_ASSEMBLER_AARCH32_H_
28#define VIXL_AARCH32_ASSEMBLER_AARCH32_H_
29
30#include "code-buffer-vixl.h"
31#include "aarch32/label-aarch32.h"
32
33namespace vixl {
34namespace aarch32 {
35
36class Assembler : public Instructions {
37  InstructionSet isa_;
38  Condition first_condition_;
39  uint16_t it_mask_;
40  bool has_32_dregs_;
41
42 protected:
43  CodeBuffer buffer_;
44
45  void EmitT32_16(uint16_t instr);
46  void EmitT32_32(uint32_t instr);
47  void EmitA32(uint32_t instr);
48  // Check that the condition of the current instruction is consistent with the
49  // IT state.
50  void CheckIT(Condition condition) {
51#ifdef VIXL_DEBUG
52    PerformCheckIT(condition);
53#else
54    USE(condition);
55#endif
56  }
57#ifdef VIXL_DEBUG
58  void PerformCheckIT(Condition condition);
59#endif
60  void AdvanceIT() { it_mask_ = (it_mask_ << 1) & 0xf; }
61
62 public:
63  explicit Assembler(InstructionSet isa = A32)
64      : isa_(isa), first_condition_(al), it_mask_(0), has_32_dregs_(true) {}
65  explicit Assembler(size_t size, InstructionSet isa = A32)
66      : isa_(isa),
67        first_condition_(al),
68        it_mask_(0),
69        has_32_dregs_(true),
70        buffer_(size) {}
71  Assembler(void* buffer, size_t size, InstructionSet isa = A32)
72      : isa_(isa),
73        first_condition_(al),
74        it_mask_(0),
75        has_32_dregs_(true),
76        buffer_(buffer, size) {}
77  virtual ~Assembler() {}
78  void UseInstructionSet(InstructionSet isa) {
79    VIXL_ASSERT((isa_ == isa) || (GetCursorOffset() == 0));
80    isa_ = isa;
81  }
82  InstructionSet GetInstructionSetInUse() const { return isa_; }
83  void UseT32() { UseInstructionSet(T32); }
84  void UseA32() { UseInstructionSet(A32); }
85  bool IsUsingT32() const { return GetInstructionSetInUse() == T32; }
86  bool IsUsingA32() const { return GetInstructionSetInUse() == A32; }
87  void SetIT(Condition first_condition, uint16_t it_mask) {
88    VIXL_ASSERT(it_mask_ == 0);
89    first_condition_ = first_condition;
90    it_mask_ = it_mask;
91  }
92  bool Is16BitEncoding(uint16_t instr) const {
93    VIXL_ASSERT(IsUsingT32());
94    return instr < 0xe800;
95  }
96  bool InITBlock() { return it_mask_ != 0; }
97  bool OutsideITBlock() { return it_mask_ == 0; }
98  bool OutsideITBlockOrLast() { return (it_mask_ == 0) || (it_mask_ == 0x8); }
99  bool OutsideITBlockAndAlOrLast(Condition cond) {
100    return ((it_mask_ == 0) && cond.Is(al)) || (it_mask_ == 0x8);
101  }
102  void CheckNotIT() { VIXL_ASSERT(it_mask_ == 0); }
103  bool Has32DRegs() const { return has_32_dregs_; }
104  void SetHas32DRegs(bool has_32_dregs) { has_32_dregs_ = has_32_dregs; }
105
106  CodeBuffer& GetBuffer() { return buffer_; }
107  uint32_t GetCursorOffset() const { return buffer_.GetCursorOffset(); }
108  // Return the address of an offset in the buffer.
109  template <typename T>
110  T GetOffsetAddress(ptrdiff_t offset) const {
111    VIXL_STATIC_ASSERT(sizeof(T) >= sizeof(uintptr_t));
112    return buffer_.GetOffsetAddress<T>(offset);
113  }
114  uint32_t GetArchitectureStatePCOffset() const { return IsUsingT32() ? 4 : 8; }
115  // Return the address of the start of the buffer.
116  template <typename T>
117  T GetStartAddress() const {
118    VIXL_STATIC_ASSERT(sizeof(T) >= sizeof(uintptr_t));
119    return GetOffsetAddress<T>(0);
120  }
121  void EncodeLabelFor(const Label::ForwardReference& forward, Label* label);
122  uint32_t Link(uint32_t instr,
123                Label* label,
124                const Label::LabelEmitOperator& op);
125  void bind(Label* label);
126  void place(RawLiteral* literal) {
127    bind(literal);
128    GetBuffer().EmitData(literal->GetDataAddress(), literal->GetSize());
129    GetBuffer().Align();
130  }
131  void FinalizeCode() { GetBuffer().SetClean(); }
132
133  size_t GetSizeOfCodeGeneratedSince(Label* label) const {
134    VIXL_ASSERT(label->IsBound());
135    return buffer_.GetOffsetFrom(label->GetLocation());
136  }
137
138  size_t GetSizeOfCodeGenerated() const { return buffer_.GetOffsetFrom(0); }
139
140  // Helpers for it instruction.
141  void it(Condition cond) { it(cond, 0x8); }
142  void itt(Condition cond) { it(cond, 0x4); }
143  void ite(Condition cond) { it(cond, 0xc); }
144  void ittt(Condition cond) { it(cond, 0x2); }
145  void itet(Condition cond) { it(cond, 0xa); }
146  void itte(Condition cond) { it(cond, 0x6); }
147  void itee(Condition cond) { it(cond, 0xe); }
148  void itttt(Condition cond) { it(cond, 0x1); }
149  void itett(Condition cond) { it(cond, 0x9); }
150  void ittet(Condition cond) { it(cond, 0x5); }
151  void iteet(Condition cond) { it(cond, 0xd); }
152  void ittte(Condition cond) { it(cond, 0x3); }
153  void itete(Condition cond) { it(cond, 0xb); }
154  void ittee(Condition cond) { it(cond, 0x7); }
155  void iteee(Condition cond) { it(cond, 0xf); }
156
157  // Start of generated code.
158  enum InstructionType {
159    kAdc,
160    kAdcs,
161    kAdd,
162    kAdds,
163    kAddw,
164    kAdr,
165    kAnd,
166    kAnds,
167    kAsr,
168    kAsrs,
169    kB,
170    kBfc,
171    kBfi,
172    kBic,
173    kBics,
174    kBkpt,
175    kBl,
176    kBlx,
177    kBx,
178    kBxj,
179    kCbnz,
180    kCbz,
181    kClrex,
182    kClz,
183    kCmn,
184    kCmp,
185    kCrc32b,
186    kCrc32cb,
187    kCrc32ch,
188    kCrc32cw,
189    kCrc32h,
190    kCrc32w,
191    kDmb,
192    kDsb,
193    kEor,
194    kEors,
195    kFldmdbx,
196    kFldmiax,
197    kFstmdbx,
198    kFstmiax,
199    kHlt,
200    kHvc,
201    kIsb,
202    kIt,
203    kLda,
204    kLdab,
205    kLdaex,
206    kLdaexb,
207    kLdaexd,
208    kLdaexh,
209    kLdah,
210    kLdm,
211    kLdmda,
212    kLdmdb,
213    kLdmea,
214    kLdmed,
215    kLdmfa,
216    kLdmfd,
217    kLdmib,
218    kLdr,
219    kLdrb,
220    kLdrd,
221    kLdrex,
222    kLdrexb,
223    kLdrexd,
224    kLdrexh,
225    kLdrh,
226    kLdrsb,
227    kLdrsh,
228    kLsl,
229    kLsls,
230    kLsr,
231    kLsrs,
232    kMla,
233    kMlas,
234    kMls,
235    kMov,
236    kMovs,
237    kMovt,
238    kMovw,
239    kMrs,
240    kMsr,
241    kMul,
242    kMuls,
243    kMvn,
244    kMvns,
245    kNop,
246    kOrn,
247    kOrns,
248    kOrr,
249    kOrrs,
250    kPkhbt,
251    kPkhtb,
252    kPld,
253    kPldw,
254    kPli,
255    kPop,
256    kPush,
257    kQadd,
258    kQadd16,
259    kQadd8,
260    kQasx,
261    kQdadd,
262    kQdsub,
263    kQsax,
264    kQsub,
265    kQsub16,
266    kQsub8,
267    kRbit,
268    kRev,
269    kRev16,
270    kRevsh,
271    kRor,
272    kRors,
273    kRrx,
274    kRrxs,
275    kRsb,
276    kRsbs,
277    kRsc,
278    kRscs,
279    kSadd16,
280    kSadd8,
281    kSasx,
282    kSbc,
283    kSbcs,
284    kSbfx,
285    kSdiv,
286    kSel,
287    kShadd16,
288    kShadd8,
289    kShasx,
290    kShsax,
291    kShsub16,
292    kShsub8,
293    kSmlabb,
294    kSmlabt,
295    kSmlad,
296    kSmladx,
297    kSmlal,
298    kSmlalbb,
299    kSmlalbt,
300    kSmlald,
301    kSmlaldx,
302    kSmlals,
303    kSmlaltb,
304    kSmlaltt,
305    kSmlatb,
306    kSmlatt,
307    kSmlawb,
308    kSmlawt,
309    kSmlsd,
310    kSmlsdx,
311    kSmlsld,
312    kSmlsldx,
313    kSmmla,
314    kSmmlar,
315    kSmmls,
316    kSmmlsr,
317    kSmmul,
318    kSmmulr,
319    kSmuad,
320    kSmuadx,
321    kSmulbb,
322    kSmulbt,
323    kSmull,
324    kSmulls,
325    kSmultb,
326    kSmultt,
327    kSmulwb,
328    kSmulwt,
329    kSmusd,
330    kSmusdx,
331    kSsat,
332    kSsat16,
333    kSsax,
334    kSsub16,
335    kSsub8,
336    kStl,
337    kStlb,
338    kStlex,
339    kStlexb,
340    kStlexd,
341    kStlexh,
342    kStlh,
343    kStm,
344    kStmda,
345    kStmdb,
346    kStmea,
347    kStmed,
348    kStmfa,
349    kStmfd,
350    kStmib,
351    kStr,
352    kStrb,
353    kStrd,
354    kStrex,
355    kStrexb,
356    kStrexd,
357    kStrexh,
358    kStrh,
359    kSub,
360    kSubs,
361    kSubw,
362    kSvc,
363    kSxtab,
364    kSxtab16,
365    kSxtah,
366    kSxtb,
367    kSxtb16,
368    kSxth,
369    kTbb,
370    kTbh,
371    kTeq,
372    kTst,
373    kUadd16,
374    kUadd8,
375    kUasx,
376    kUbfx,
377    kUdf,
378    kUdiv,
379    kUhadd16,
380    kUhadd8,
381    kUhasx,
382    kUhsax,
383    kUhsub16,
384    kUhsub8,
385    kUmaal,
386    kUmlal,
387    kUmlals,
388    kUmull,
389    kUmulls,
390    kUqadd16,
391    kUqadd8,
392    kUqasx,
393    kUqsax,
394    kUqsub16,
395    kUqsub8,
396    kUsad8,
397    kUsada8,
398    kUsat,
399    kUsat16,
400    kUsax,
401    kUsub16,
402    kUsub8,
403    kUxtab,
404    kUxtab16,
405    kUxtah,
406    kUxtb,
407    kUxtb16,
408    kUxth,
409    kVaba,
410    kVabal,
411    kVabd,
412    kVabdl,
413    kVabs,
414    kVacge,
415    kVacgt,
416    kVacle,
417    kVaclt,
418    kVadd,
419    kVaddhn,
420    kVaddl,
421    kVaddw,
422    kVand,
423    kVbic,
424    kVbif,
425    kVbit,
426    kVbsl,
427    kVceq,
428    kVcge,
429    kVcgt,
430    kVcle,
431    kVcls,
432    kVclt,
433    kVclz,
434    kVcmp,
435    kVcmpe,
436    kVcnt,
437    kVcvt,
438    kVcvta,
439    kVcvtb,
440    kVcvtm,
441    kVcvtn,
442    kVcvtp,
443    kVcvtr,
444    kVcvtt,
445    kVdiv,
446    kVdup,
447    kVeor,
448    kVext,
449    kVfma,
450    kVfms,
451    kVfnma,
452    kVfnms,
453    kVhadd,
454    kVhsub,
455    kVld1,
456    kVld2,
457    kVld3,
458    kVld4,
459    kVldm,
460    kVldmdb,
461    kVldmia,
462    kVldr,
463    kVmax,
464    kVmaxnm,
465    kVmin,
466    kVminnm,
467    kVmla,
468    kVmlal,
469    kVmls,
470    kVmlsl,
471    kVmov,
472    kVmovl,
473    kVmovn,
474    kVmrs,
475    kVmsr,
476    kVmul,
477    kVmull,
478    kVmvn,
479    kVneg,
480    kVnmla,
481    kVnmls,
482    kVnmul,
483    kVorn,
484    kVorr,
485    kVpadal,
486    kVpadd,
487    kVpaddl,
488    kVpmax,
489    kVpmin,
490    kVpop,
491    kVpush,
492    kVqabs,
493    kVqadd,
494    kVqdmlal,
495    kVqdmlsl,
496    kVqdmulh,
497    kVqdmull,
498    kVqmovn,
499    kVqmovun,
500    kVqneg,
501    kVqrdmulh,
502    kVqrshl,
503    kVqrshrn,
504    kVqrshrun,
505    kVqshl,
506    kVqshlu,
507    kVqshrn,
508    kVqshrun,
509    kVqsub,
510    kVraddhn,
511    kVrecpe,
512    kVrecps,
513    kVrev16,
514    kVrev32,
515    kVrev64,
516    kVrhadd,
517    kVrinta,
518    kVrintm,
519    kVrintn,
520    kVrintp,
521    kVrintr,
522    kVrintx,
523    kVrintz,
524    kVrshl,
525    kVrshr,
526    kVrshrn,
527    kVrsqrte,
528    kVrsqrts,
529    kVrsra,
530    kVrsubhn,
531    kVseleq,
532    kVselge,
533    kVselgt,
534    kVselvs,
535    kVshl,
536    kVshll,
537    kVshr,
538    kVshrn,
539    kVsli,
540    kVsqrt,
541    kVsra,
542    kVsri,
543    kVst1,
544    kVst2,
545    kVst3,
546    kVst4,
547    kVstm,
548    kVstmdb,
549    kVstmia,
550    kVstr,
551    kVsub,
552    kVsubhn,
553    kVsubl,
554    kVsubw,
555    kVswp,
556    kVtbl,
557    kVtbx,
558    kVtrn,
559    kVtst,
560    kVuzp,
561    kVzip,
562    kYield
563  };
564  typedef void (Assembler::*InstructionCondSizeRROp)(Condition cond,
565                                                     EncodingSize size,
566                                                     Register rd,
567                                                     Register rn,
568                                                     const Operand& operand);
569  typedef void (Assembler::*InstructionCondROp)(Condition cond,
570                                                Register rd,
571                                                const Operand& operand);
572  typedef void (Assembler::*InstructionROp)(Register rd,
573                                            const Operand& operand);
574  typedef void (Assembler::*InstructionCondRROp)(Condition cond,
575                                                 Register rd,
576                                                 Register rn,
577                                                 const Operand& operand);
578  typedef void (Assembler::*InstructionCondSizeRL)(Condition cond,
579                                                   EncodingSize size,
580                                                   Register rd,
581                                                   Label* label);
582  typedef void (Assembler::*InstructionCondSizeL)(Condition cond,
583                                                  EncodingSize size,
584                                                  Label* label);
585  typedef void (Assembler::*InstructionCondRIOp)(Condition cond,
586                                                 Register rd,
587                                                 uint32_t lsb,
588                                                 const Operand& operand);
589  typedef void (Assembler::*InstructionCondRRIOp)(Condition cond,
590                                                  Register rd,
591                                                  Register rn,
592                                                  uint32_t lsb,
593                                                  const Operand& operand);
594  typedef void (Assembler::*InstructionCondI)(Condition cond, uint32_t imm);
595  typedef void (Assembler::*InstructionCondL)(Condition cond, Label* label);
596  typedef void (Assembler::*InstructionCondR)(Condition cond, Register rm);
597  typedef void (Assembler::*InstructionRL)(Register rn, Label* label);
598  typedef void (Assembler::*InstructionCond)(Condition cond);
599  typedef void (Assembler::*InstructionCondRR)(Condition cond,
600                                               Register rd,
601                                               Register rm);
602  typedef void (Assembler::*InstructionCondSizeROp)(Condition cond,
603                                                    EncodingSize size,
604                                                    Register rn,
605                                                    const Operand& operand);
606  typedef void (Assembler::*InstructionCondRRR)(Condition cond,
607                                                Register rd,
608                                                Register rn,
609                                                Register rm);
610  typedef void (Assembler::*InstructionCondBa)(Condition cond,
611                                               MemoryBarrier option);
612  typedef void (Assembler::*InstructionCondRwbDrl)(Condition cond,
613                                                   Register rn,
614                                                   WriteBack write_back,
615                                                   DRegisterList dreglist);
616  typedef void (Assembler::*InstructionCondRMop)(Condition cond,
617                                                 Register rt,
618                                                 const MemOperand& operand);
619  typedef void (Assembler::*InstructionCondRRMop)(Condition cond,
620                                                  Register rt,
621                                                  Register rt2,
622                                                  const MemOperand& operand);
623  typedef void (Assembler::*InstructionCondSizeRwbRl)(Condition cond,
624                                                      EncodingSize size,
625                                                      Register rn,
626                                                      WriteBack write_back,
627                                                      RegisterList registers);
628  typedef void (Assembler::*InstructionCondRwbRl)(Condition cond,
629                                                  Register rn,
630                                                  WriteBack write_back,
631                                                  RegisterList registers);
632  typedef void (Assembler::*InstructionCondSizeRMop)(Condition cond,
633                                                     EncodingSize size,
634                                                     Register rt,
635                                                     const MemOperand& operand);
636  typedef void (Assembler::*InstructionCondRL)(Condition cond,
637                                               Register rt,
638                                               Label* label);
639  typedef void (Assembler::*InstructionCondRRL)(Condition cond,
640                                                Register rt,
641                                                Register rt2,
642                                                Label* label);
643  typedef void (Assembler::*InstructionCondRRRR)(
644      Condition cond, Register rd, Register rn, Register rm, Register ra);
645  typedef void (Assembler::*InstructionCondRSr)(Condition cond,
646                                                Register rd,
647                                                SpecialRegister spec_reg);
648  typedef void (Assembler::*InstructionCondMsrOp)(
649      Condition cond, MaskedSpecialRegister spec_reg, const Operand& operand);
650  typedef void (Assembler::*InstructionCondSizeRRR)(
651      Condition cond, EncodingSize size, Register rd, Register rn, Register rm);
652  typedef void (Assembler::*InstructionCondSize)(Condition cond,
653                                                 EncodingSize size);
654  typedef void (Assembler::*InstructionCondMop)(Condition cond,
655                                                const MemOperand& operand);
656  typedef void (Assembler::*InstructionCondSizeRl)(Condition cond,
657                                                   EncodingSize size,
658                                                   RegisterList registers);
659  typedef void (Assembler::*InstructionCondSizeOrl)(Condition cond,
660                                                    EncodingSize size,
661                                                    Register rt);
662  typedef void (Assembler::*InstructionCondSizeRR)(Condition cond,
663                                                   EncodingSize size,
664                                                   Register rd,
665                                                   Register rm);
666  typedef void (Assembler::*InstructionDtQQQ)(DataType dt,
667                                              QRegister rd,
668                                              QRegister rn,
669                                              QRegister rm);
670  typedef void (Assembler::*InstructionCondRIR)(Condition cond,
671                                                Register rd,
672                                                uint32_t imm,
673                                                Register rn);
674  typedef void (Assembler::*InstructionCondRRRMop)(Condition cond,
675                                                   Register rd,
676                                                   Register rt,
677                                                   Register rt2,
678                                                   const MemOperand& operand);
679  typedef void (Assembler::*InstructionCondSizeI)(Condition cond,
680                                                  EncodingSize size,
681                                                  uint32_t imm);
682  typedef void (Assembler::*InstructionCondDtDDD)(
683      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
684  typedef void (Assembler::*InstructionCondDtQQQ)(
685      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
686  typedef void (Assembler::*InstructionCondDtQDD)(
687      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
688  typedef void (Assembler::*InstructionCondDtDD)(Condition cond,
689                                                 DataType dt,
690                                                 DRegister rd,
691                                                 DRegister rm);
692  typedef void (Assembler::*InstructionCondDtQQ)(Condition cond,
693                                                 DataType dt,
694                                                 QRegister rd,
695                                                 QRegister rm);
696  typedef void (Assembler::*InstructionCondDtSS)(Condition cond,
697                                                 DataType dt,
698                                                 SRegister rd,
699                                                 SRegister rm);
700  typedef void (Assembler::*InstructionCondDtSSS)(
701      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
702  typedef void (Assembler::*InstructionCondDtDQQ)(
703      Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
704  typedef void (Assembler::*InstructionCondDtQQD)(
705      Condition cond, DataType dt, QRegister rd, QRegister rn, DRegister rm);
706  typedef void (Assembler::*InstructionCondDtDDDop)(Condition cond,
707                                                    DataType dt,
708                                                    DRegister rd,
709                                                    DRegister rn,
710                                                    const DOperand& operand);
711  typedef void (Assembler::*InstructionCondDtQQQop)(Condition cond,
712                                                    DataType dt,
713                                                    QRegister rd,
714                                                    QRegister rn,
715                                                    const QOperand& operand);
716  typedef void (Assembler::*InstructionCondDtSFi)(Condition cond,
717                                                  DataType dt,
718                                                  SRegister rd,
719                                                  double imm);
720  typedef void (Assembler::*InstructionCondDtDFi)(Condition cond,
721                                                  DataType dt,
722                                                  DRegister rd,
723                                                  double imm);
724  typedef void (Assembler::*InstructionCondDtDtDS)(
725      Condition cond, DataType dt1, DataType dt2, DRegister rd, SRegister rm);
726  typedef void (Assembler::*InstructionCondDtDtSD)(
727      Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
728  typedef void (Assembler::*InstructionCondDtDtDDSi)(Condition cond,
729                                                     DataType dt1,
730                                                     DataType dt2,
731                                                     DRegister rd,
732                                                     DRegister rm,
733                                                     int32_t fbits);
734  typedef void (Assembler::*InstructionCondDtDtQQSi)(Condition cond,
735                                                     DataType dt1,
736                                                     DataType dt2,
737                                                     QRegister rd,
738                                                     QRegister rm,
739                                                     int32_t fbits);
740  typedef void (Assembler::*InstructionCondDtDtSSSi)(Condition cond,
741                                                     DataType dt1,
742                                                     DataType dt2,
743                                                     SRegister rd,
744                                                     SRegister rm,
745                                                     int32_t fbits);
746  typedef void (Assembler::*InstructionCondDtDtDD)(
747      Condition cond, DataType dt1, DataType dt2, DRegister rd, DRegister rm);
748  typedef void (Assembler::*InstructionCondDtDtQQ)(
749      Condition cond, DataType dt1, DataType dt2, QRegister rd, QRegister rm);
750  typedef void (Assembler::*InstructionCondDtDtDQ)(
751      Condition cond, DataType dt1, DataType dt2, DRegister rd, QRegister rm);
752  typedef void (Assembler::*InstructionCondDtDtQD)(
753      Condition cond, DataType dt1, DataType dt2, QRegister rd, DRegister rm);
754  typedef void (Assembler::*InstructionCondDtDtSS)(
755      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
756  typedef void (Assembler::*InstructionDtDtDD)(DataType dt1,
757                                               DataType dt2,
758                                               DRegister rd,
759                                               DRegister rm);
760  typedef void (Assembler::*InstructionDtDtQQ)(DataType dt1,
761                                               DataType dt2,
762                                               QRegister rd,
763                                               QRegister rm);
764  typedef void (Assembler::*InstructionDtDtSS)(DataType dt1,
765                                               DataType dt2,
766                                               SRegister rd,
767                                               SRegister rm);
768  typedef void (Assembler::*InstructionDtDtSD)(DataType dt1,
769                                               DataType dt2,
770                                               SRegister rd,
771                                               DRegister rm);
772  typedef void (Assembler::*InstructionCondDtQR)(Condition cond,
773                                                 DataType dt,
774                                                 QRegister rd,
775                                                 Register rt);
776  typedef void (Assembler::*InstructionCondDtDR)(Condition cond,
777                                                 DataType dt,
778                                                 DRegister rd,
779                                                 Register rt);
780  typedef void (Assembler::*InstructionCondDtDDx)(Condition cond,
781                                                  DataType dt,
782                                                  DRegister rd,
783                                                  DRegisterLane rm);
784  typedef void (Assembler::*InstructionCondDtQDx)(Condition cond,
785                                                  DataType dt,
786                                                  QRegister rd,
787                                                  DRegisterLane rm);
788  typedef void (Assembler::*InstructionCondDtDDDDop)(Condition cond,
789                                                     DataType dt,
790                                                     DRegister rd,
791                                                     DRegister rn,
792                                                     DRegister rm,
793                                                     const DOperand& operand);
794  typedef void (Assembler::*InstructionCondDtQQQQop)(Condition cond,
795                                                     DataType dt,
796                                                     QRegister rd,
797                                                     QRegister rn,
798                                                     QRegister rm,
799                                                     const QOperand& operand);
800  typedef void (Assembler::*InstructionCondDtNrlAmop)(
801      Condition cond,
802      DataType dt,
803      const NeonRegisterList& nreglist,
804      const AlignedMemOperand& operand);
805  typedef void (Assembler::*InstructionCondDtNrlMop)(
806      Condition cond,
807      DataType dt,
808      const NeonRegisterList& nreglist,
809      const MemOperand& operand);
810  typedef void (Assembler::*InstructionCondDtRwbDrl)(Condition cond,
811                                                     DataType dt,
812                                                     Register rn,
813                                                     WriteBack write_back,
814                                                     DRegisterList dreglist);
815  typedef void (Assembler::*InstructionCondDtRwbSrl)(Condition cond,
816                                                     DataType dt,
817                                                     Register rn,
818                                                     WriteBack write_back,
819                                                     SRegisterList sreglist);
820  typedef void (Assembler::*InstructionCondDtDL)(Condition cond,
821                                                 DataType dt,
822                                                 DRegister rd,
823                                                 Label* label);
824  typedef void (Assembler::*InstructionCondDtDMop)(Condition cond,
825                                                   DataType dt,
826                                                   DRegister rd,
827                                                   const MemOperand& operand);
828  typedef void (Assembler::*InstructionCondDtSL)(Condition cond,
829                                                 DataType dt,
830                                                 SRegister rd,
831                                                 Label* label);
832  typedef void (Assembler::*InstructionCondDtSMop)(Condition cond,
833                                                   DataType dt,
834                                                   SRegister rd,
835                                                   const MemOperand& operand);
836  typedef void (Assembler::*InstructionDtDDD)(DataType dt,
837                                              DRegister rd,
838                                              DRegister rn,
839                                              DRegister rm);
840  typedef void (Assembler::*InstructionDtSSS)(DataType dt,
841                                              SRegister rd,
842                                              SRegister rn,
843                                              SRegister rm);
844  typedef void (Assembler::*InstructionCondDtDDDx)(Condition cond,
845                                                   DataType dt,
846                                                   DRegister rd,
847                                                   DRegister rn,
848                                                   DRegisterLane rm);
849  typedef void (Assembler::*InstructionCondDtQQDx)(Condition cond,
850                                                   DataType dt,
851                                                   QRegister rd,
852                                                   QRegister rn,
853                                                   DRegisterLane rm);
854  typedef void (Assembler::*InstructionCondDtQDDx)(Condition cond,
855                                                   DataType dt,
856                                                   QRegister rd,
857                                                   DRegister rn,
858                                                   DRegisterLane rm);
859  typedef void (Assembler::*InstructionCondRS)(Condition cond,
860                                               Register rt,
861                                               SRegister rn);
862  typedef void (Assembler::*InstructionCondSR)(Condition cond,
863                                               SRegister rn,
864                                               Register rt);
865  typedef void (Assembler::*InstructionCondRRD)(Condition cond,
866                                                Register rt,
867                                                Register rt2,
868                                                DRegister rm);
869  typedef void (Assembler::*InstructionCondDRR)(Condition cond,
870                                                DRegister rm,
871                                                Register rt,
872                                                Register rt2);
873  typedef void (Assembler::*InstructionCondRRSS)(
874      Condition cond, Register rt, Register rt2, SRegister rm, SRegister rm1);
875  typedef void (Assembler::*InstructionCondSSRR)(
876      Condition cond, SRegister rm, SRegister rm1, Register rt, Register rt2);
877  typedef void (Assembler::*InstructionCondDtDxR)(Condition cond,
878                                                  DataType dt,
879                                                  DRegisterLane rd,
880                                                  Register rt);
881  typedef void (Assembler::*InstructionCondDtDDop)(Condition cond,
882                                                   DataType dt,
883                                                   DRegister rd,
884                                                   const DOperand& operand);
885  typedef void (Assembler::*InstructionCondDtQQop)(Condition cond,
886                                                   DataType dt,
887                                                   QRegister rd,
888                                                   const QOperand& operand);
889  typedef void (Assembler::*InstructionCondDtSSop)(Condition cond,
890                                                   DataType dt,
891                                                   SRegister rd,
892                                                   const SOperand& operand);
893  typedef void (Assembler::*InstructionCondDtRDx)(Condition cond,
894                                                  DataType dt,
895                                                  Register rt,
896                                                  DRegisterLane rn);
897  typedef void (Assembler::*InstructionCondDtQD)(Condition cond,
898                                                 DataType dt,
899                                                 QRegister rd,
900                                                 DRegister rm);
901  typedef void (Assembler::*InstructionCondDtDQ)(Condition cond,
902                                                 DataType dt,
903                                                 DRegister rd,
904                                                 QRegister rm);
905  typedef void (Assembler::*InstructionCondRoaSfp)(Condition cond,
906                                                   RegisterOrAPSR_nzcv rt,
907                                                   SpecialFPRegister spec_reg);
908  typedef void (Assembler::*InstructionCondSfpR)(Condition cond,
909                                                 SpecialFPRegister spec_reg,
910                                                 Register rt);
911  typedef void (Assembler::*InstructionCondDtDDIr)(Condition cond,
912                                                   DataType dt,
913                                                   DRegister rd,
914                                                   DRegister rn,
915                                                   DRegister dm,
916                                                   unsigned index);
917  typedef void (Assembler::*InstructionCondDtQQIr)(Condition cond,
918                                                   DataType dt,
919                                                   QRegister rd,
920                                                   QRegister rn,
921                                                   DRegister dm,
922                                                   unsigned index);
923  typedef void (Assembler::*InstructionCondDtQDIr)(Condition cond,
924                                                   DataType dt,
925                                                   QRegister rd,
926                                                   DRegister rn,
927                                                   DRegister dm,
928                                                   unsigned index);
929  typedef void (Assembler::*InstructionCondDtDrl)(Condition cond,
930                                                  DataType dt,
931                                                  DRegisterList dreglist);
932  typedef void (Assembler::*InstructionCondDtSrl)(Condition cond,
933                                                  DataType dt,
934                                                  SRegisterList sreglist);
935  typedef void (Assembler::*InstructionCondDtDQQop)(Condition cond,
936                                                    DataType dt,
937                                                    DRegister rd,
938                                                    QRegister rm,
939                                                    const QOperand& operand);
940  typedef void (Assembler::*InstructionCondDtQDDop)(Condition cond,
941                                                    DataType dt,
942                                                    QRegister rd,
943                                                    DRegister rm,
944                                                    const DOperand& operand);
945  typedef void (Assembler::*InstructionCondDtDNrlD)(
946      Condition cond,
947      DataType dt,
948      DRegister rd,
949      const NeonRegisterList& nreglist,
950      DRegister rm);
951  virtual void Delegate(InstructionType type,
952                        InstructionCondSizeRROp /*instruction*/,
953                        Condition /*cond*/,
954                        EncodingSize /*size*/,
955                        Register /*rd*/,
956                        Register /*rn*/,
957                        const Operand& /*operand*/) {
958    UnimplementedDelegate(type);
959  }
960  virtual void Delegate(InstructionType type,
961                        InstructionCondROp /*instruction*/,
962                        Condition /*cond*/,
963                        Register /*rd*/,
964                        const Operand& /*operand*/) {
965    UnimplementedDelegate(type);
966  }
967  virtual void Delegate(InstructionType type,
968                        InstructionROp /*instruction*/,
969                        Register /*rd*/,
970                        const Operand& /*operand*/) {
971    UnimplementedDelegate(type);
972  }
973  virtual void Delegate(InstructionType type,
974                        InstructionCondRROp /*instruction*/,
975                        Condition /*cond*/,
976                        Register /*rd*/,
977                        Register /*rn*/,
978                        const Operand& /*operand*/) {
979    UnimplementedDelegate(type);
980  }
981  virtual void Delegate(InstructionType type,
982                        InstructionCondSizeRL /*instruction*/,
983                        Condition /*cond*/,
984                        EncodingSize /*size*/,
985                        Register /*rd*/,
986                        Label* /*label*/) {
987    UnimplementedDelegate(type);
988  }
989  virtual void Delegate(InstructionType type,
990                        InstructionCondSizeL /*instruction*/,
991                        Condition /*cond*/,
992                        EncodingSize /*size*/,
993                        Label* /*label*/) {
994    UnimplementedDelegate(type);
995  }
996  virtual void Delegate(InstructionType type,
997                        InstructionCondRIOp /*instruction*/,
998                        Condition /*cond*/,
999                        Register /*rd*/,
1000                        uint32_t /*lsb*/,
1001                        const Operand& /*operand*/) {
1002    UnimplementedDelegate(type);
1003  }
1004  virtual void Delegate(InstructionType type,
1005                        InstructionCondRRIOp /*instruction*/,
1006                        Condition /*cond*/,
1007                        Register /*rd*/,
1008                        Register /*rn*/,
1009                        uint32_t /*lsb*/,
1010                        const Operand& /*operand*/) {
1011    UnimplementedDelegate(type);
1012  }
1013  virtual void Delegate(InstructionType type,
1014                        InstructionCondI /*instruction*/,
1015                        Condition /*cond*/,
1016                        uint32_t /*imm*/) {
1017    UnimplementedDelegate(type);
1018  }
1019  virtual void Delegate(InstructionType type,
1020                        InstructionCondL /*instruction*/,
1021                        Condition /*cond*/,
1022                        Label* /*label*/) {
1023    UnimplementedDelegate(type);
1024  }
1025  virtual void Delegate(InstructionType type,
1026                        InstructionCondR /*instruction*/,
1027                        Condition /*cond*/,
1028                        Register /*rm*/) {
1029    UnimplementedDelegate(type);
1030  }
1031  virtual void Delegate(InstructionType type,
1032                        InstructionRL /*instruction*/,
1033                        Register /*rn*/,
1034                        Label* /*label*/) {
1035    UnimplementedDelegate(type);
1036  }
1037  virtual void Delegate(InstructionType type,
1038                        InstructionCond /*instruction*/,
1039                        Condition /*cond*/) {
1040    UnimplementedDelegate(type);
1041  }
1042  virtual void Delegate(InstructionType type,
1043                        InstructionCondRR /*instruction*/,
1044                        Condition /*cond*/,
1045                        Register /*rd*/,
1046                        Register /*rm*/) {
1047    UnimplementedDelegate(type);
1048  }
1049  virtual void Delegate(InstructionType type,
1050                        InstructionCondSizeROp /*instruction*/,
1051                        Condition /*cond*/,
1052                        EncodingSize /*size*/,
1053                        Register /*rn*/,
1054                        const Operand& /*operand*/) {
1055    UnimplementedDelegate(type);
1056  }
1057  virtual void Delegate(InstructionType type,
1058                        InstructionCondRRR /*instruction*/,
1059                        Condition /*cond*/,
1060                        Register /*rd*/,
1061                        Register /*rn*/,
1062                        Register /*rm*/) {
1063    UnimplementedDelegate(type);
1064  }
1065  virtual void Delegate(InstructionType type,
1066                        InstructionCondBa /*instruction*/,
1067                        Condition /*cond*/,
1068                        MemoryBarrier /*option*/) {
1069    UnimplementedDelegate(type);
1070  }
1071  virtual void Delegate(InstructionType type,
1072                        InstructionCondRwbDrl /*instruction*/,
1073                        Condition /*cond*/,
1074                        Register /*rn*/,
1075                        WriteBack /*write_back*/,
1076                        DRegisterList /*dreglist*/) {
1077    UnimplementedDelegate(type);
1078  }
1079  virtual void DelegateIt(Condition /*cond*/, uint16_t /*mask*/) {
1080    UnimplementedDelegate(kIt);
1081  }
1082  virtual void Delegate(InstructionType type,
1083                        InstructionCondRMop /*instruction*/,
1084                        Condition /*cond*/,
1085                        Register /*rt*/,
1086                        const MemOperand& /*operand*/) {
1087    UnimplementedDelegate(type);
1088  }
1089  virtual void Delegate(InstructionType type,
1090                        InstructionCondRRMop /*instruction*/,
1091                        Condition /*cond*/,
1092                        Register /*rt*/,
1093                        Register /*rt2*/,
1094                        const MemOperand& /*operand*/) {
1095    UnimplementedDelegate(type);
1096  }
1097  virtual void Delegate(InstructionType type,
1098                        InstructionCondSizeRwbRl /*instruction*/,
1099                        Condition /*cond*/,
1100                        EncodingSize /*size*/,
1101                        Register /*rn*/,
1102                        WriteBack /*write_back*/,
1103                        RegisterList /*registers*/) {
1104    UnimplementedDelegate(type);
1105  }
1106  virtual void Delegate(InstructionType type,
1107                        InstructionCondRwbRl /*instruction*/,
1108                        Condition /*cond*/,
1109                        Register /*rn*/,
1110                        WriteBack /*write_back*/,
1111                        RegisterList /*registers*/) {
1112    UnimplementedDelegate(type);
1113  }
1114  virtual void Delegate(InstructionType type,
1115                        InstructionCondSizeRMop /*instruction*/,
1116                        Condition /*cond*/,
1117                        EncodingSize /*size*/,
1118                        Register /*rt*/,
1119                        const MemOperand& /*operand*/) {
1120    UnimplementedDelegate(type);
1121  }
1122  virtual void Delegate(InstructionType type,
1123                        InstructionCondRL /*instruction*/,
1124                        Condition /*cond*/,
1125                        Register /*rt*/,
1126                        Label* /*label*/) {
1127    UnimplementedDelegate(type);
1128  }
1129  virtual void Delegate(InstructionType type,
1130                        InstructionCondRRL /*instruction*/,
1131                        Condition /*cond*/,
1132                        Register /*rt*/,
1133                        Register /*rt2*/,
1134                        Label* /*label*/) {
1135    UnimplementedDelegate(type);
1136  }
1137  virtual void Delegate(InstructionType type,
1138                        InstructionCondRRRR /*instruction*/,
1139                        Condition /*cond*/,
1140                        Register /*rd*/,
1141                        Register /*rn*/,
1142                        Register /*rm*/,
1143                        Register /*ra*/) {
1144    UnimplementedDelegate(type);
1145  }
1146  virtual void Delegate(InstructionType type,
1147                        InstructionCondRSr /*instruction*/,
1148                        Condition /*cond*/,
1149                        Register /*rd*/,
1150                        SpecialRegister /*spec_reg*/) {
1151    UnimplementedDelegate(type);
1152  }
1153  virtual void Delegate(InstructionType type,
1154                        InstructionCondMsrOp /*instruction*/,
1155                        Condition /*cond*/,
1156                        MaskedSpecialRegister /*spec_reg*/,
1157                        const Operand& /*operand*/) {
1158    UnimplementedDelegate(type);
1159  }
1160  virtual void Delegate(InstructionType type,
1161                        InstructionCondSizeRRR /*instruction*/,
1162                        Condition /*cond*/,
1163                        EncodingSize /*size*/,
1164                        Register /*rd*/,
1165                        Register /*rn*/,
1166                        Register /*rm*/) {
1167    UnimplementedDelegate(type);
1168  }
1169  virtual void Delegate(InstructionType type,
1170                        InstructionCondSize /*instruction*/,
1171                        Condition /*cond*/,
1172                        EncodingSize /*size*/) {
1173    UnimplementedDelegate(type);
1174  }
1175  virtual void Delegate(InstructionType type,
1176                        InstructionCondMop /*instruction*/,
1177                        Condition /*cond*/,
1178                        const MemOperand& /*operand*/) {
1179    UnimplementedDelegate(type);
1180  }
1181  virtual void Delegate(InstructionType type,
1182                        InstructionCondSizeRl /*instruction*/,
1183                        Condition /*cond*/,
1184                        EncodingSize /*size*/,
1185                        RegisterList /*registers*/) {
1186    UnimplementedDelegate(type);
1187  }
1188  virtual void Delegate(InstructionType type,
1189                        InstructionCondSizeOrl /*instruction*/,
1190                        Condition /*cond*/,
1191                        EncodingSize /*size*/,
1192                        Register /*rt*/) {
1193    UnimplementedDelegate(type);
1194  }
1195  virtual void Delegate(InstructionType type,
1196                        InstructionCondSizeRR /*instruction*/,
1197                        Condition /*cond*/,
1198                        EncodingSize /*size*/,
1199                        Register /*rd*/,
1200                        Register /*rm*/) {
1201    UnimplementedDelegate(type);
1202  }
1203  virtual void Delegate(InstructionType type,
1204                        InstructionDtQQQ /*instruction*/,
1205                        DataType /*dt*/,
1206                        QRegister /*rd*/,
1207                        QRegister /*rn*/,
1208                        QRegister /*rm*/) {
1209    UnimplementedDelegate(type);
1210  }
1211  virtual void Delegate(InstructionType type,
1212                        InstructionCondRIR /*instruction*/,
1213                        Condition /*cond*/,
1214                        Register /*rd*/,
1215                        uint32_t /*imm*/,
1216                        Register /*rn*/) {
1217    UnimplementedDelegate(type);
1218  }
1219  virtual void Delegate(InstructionType type,
1220                        InstructionCondRRRMop /*instruction*/,
1221                        Condition /*cond*/,
1222                        Register /*rd*/,
1223                        Register /*rt*/,
1224                        Register /*rt2*/,
1225                        const MemOperand& /*operand*/) {
1226    UnimplementedDelegate(type);
1227  }
1228  virtual void Delegate(InstructionType type,
1229                        InstructionCondSizeI /*instruction*/,
1230                        Condition /*cond*/,
1231                        EncodingSize /*size*/,
1232                        uint32_t /*imm*/) {
1233    UnimplementedDelegate(type);
1234  }
1235  virtual void Delegate(InstructionType type,
1236                        InstructionCondDtDDD /*instruction*/,
1237                        Condition /*cond*/,
1238                        DataType /*dt*/,
1239                        DRegister /*rd*/,
1240                        DRegister /*rn*/,
1241                        DRegister /*rm*/) {
1242    UnimplementedDelegate(type);
1243  }
1244  virtual void Delegate(InstructionType type,
1245                        InstructionCondDtQQQ /*instruction*/,
1246                        Condition /*cond*/,
1247                        DataType /*dt*/,
1248                        QRegister /*rd*/,
1249                        QRegister /*rn*/,
1250                        QRegister /*rm*/) {
1251    UnimplementedDelegate(type);
1252  }
1253  virtual void Delegate(InstructionType type,
1254                        InstructionCondDtQDD /*instruction*/,
1255                        Condition /*cond*/,
1256                        DataType /*dt*/,
1257                        QRegister /*rd*/,
1258                        DRegister /*rn*/,
1259                        DRegister /*rm*/) {
1260    UnimplementedDelegate(type);
1261  }
1262  virtual void Delegate(InstructionType type,
1263                        InstructionCondDtDD /*instruction*/,
1264                        Condition /*cond*/,
1265                        DataType /*dt*/,
1266                        DRegister /*rd*/,
1267                        DRegister /*rm*/) {
1268    UnimplementedDelegate(type);
1269  }
1270  virtual void Delegate(InstructionType type,
1271                        InstructionCondDtQQ /*instruction*/,
1272                        Condition /*cond*/,
1273                        DataType /*dt*/,
1274                        QRegister /*rd*/,
1275                        QRegister /*rm*/) {
1276    UnimplementedDelegate(type);
1277  }
1278  virtual void Delegate(InstructionType type,
1279                        InstructionCondDtSS /*instruction*/,
1280                        Condition /*cond*/,
1281                        DataType /*dt*/,
1282                        SRegister /*rd*/,
1283                        SRegister /*rm*/) {
1284    UnimplementedDelegate(type);
1285  }
1286  virtual void Delegate(InstructionType type,
1287                        InstructionCondDtSSS /*instruction*/,
1288                        Condition /*cond*/,
1289                        DataType /*dt*/,
1290                        SRegister /*rd*/,
1291                        SRegister /*rn*/,
1292                        SRegister /*rm*/) {
1293    UnimplementedDelegate(type);
1294  }
1295  virtual void Delegate(InstructionType type,
1296                        InstructionCondDtDQQ /*instruction*/,
1297                        Condition /*cond*/,
1298                        DataType /*dt*/,
1299                        DRegister /*rd*/,
1300                        QRegister /*rn*/,
1301                        QRegister /*rm*/) {
1302    UnimplementedDelegate(type);
1303  }
1304  virtual void Delegate(InstructionType type,
1305                        InstructionCondDtQQD /*instruction*/,
1306                        Condition /*cond*/,
1307                        DataType /*dt*/,
1308                        QRegister /*rd*/,
1309                        QRegister /*rn*/,
1310                        DRegister /*rm*/) {
1311    UnimplementedDelegate(type);
1312  }
1313  virtual void Delegate(InstructionType type,
1314                        InstructionCondDtDDDop /*instruction*/,
1315                        Condition /*cond*/,
1316                        DataType /*dt*/,
1317                        DRegister /*rd*/,
1318                        DRegister /*rn*/,
1319                        const DOperand& /*operand*/) {
1320    UnimplementedDelegate(type);
1321  }
1322  virtual void Delegate(InstructionType type,
1323                        InstructionCondDtQQQop /*instruction*/,
1324                        Condition /*cond*/,
1325                        DataType /*dt*/,
1326                        QRegister /*rd*/,
1327                        QRegister /*rn*/,
1328                        const QOperand& /*operand*/) {
1329    UnimplementedDelegate(type);
1330  }
1331  virtual void Delegate(InstructionType type,
1332                        InstructionCondDtSFi /*instruction*/,
1333                        Condition /*cond*/,
1334                        DataType /*dt*/,
1335                        SRegister /*rd*/,
1336                        double /*imm*/) {
1337    UnimplementedDelegate(type);
1338  }
1339  virtual void Delegate(InstructionType type,
1340                        InstructionCondDtDFi /*instruction*/,
1341                        Condition /*cond*/,
1342                        DataType /*dt*/,
1343                        DRegister /*rd*/,
1344                        double /*imm*/) {
1345    UnimplementedDelegate(type);
1346  }
1347  virtual void Delegate(InstructionType type,
1348                        InstructionCondDtDtDS /*instruction*/,
1349                        Condition /*cond*/,
1350                        DataType /*dt1*/,
1351                        DataType /*dt2*/,
1352                        DRegister /*rd*/,
1353                        SRegister /*rm*/) {
1354    UnimplementedDelegate(type);
1355  }
1356  virtual void Delegate(InstructionType type,
1357                        InstructionCondDtDtSD /*instruction*/,
1358                        Condition /*cond*/,
1359                        DataType /*dt1*/,
1360                        DataType /*dt2*/,
1361                        SRegister /*rd*/,
1362                        DRegister /*rm*/) {
1363    UnimplementedDelegate(type);
1364  }
1365  virtual void Delegate(InstructionType type,
1366                        InstructionCondDtDtDDSi /*instruction*/,
1367                        Condition /*cond*/,
1368                        DataType /*dt1*/,
1369                        DataType /*dt2*/,
1370                        DRegister /*rd*/,
1371                        DRegister /*rm*/,
1372                        int32_t /*fbits*/) {
1373    UnimplementedDelegate(type);
1374  }
1375  virtual void Delegate(InstructionType type,
1376                        InstructionCondDtDtQQSi /*instruction*/,
1377                        Condition /*cond*/,
1378                        DataType /*dt1*/,
1379                        DataType /*dt2*/,
1380                        QRegister /*rd*/,
1381                        QRegister /*rm*/,
1382                        int32_t /*fbits*/) {
1383    UnimplementedDelegate(type);
1384  }
1385  virtual void Delegate(InstructionType type,
1386                        InstructionCondDtDtSSSi /*instruction*/,
1387                        Condition /*cond*/,
1388                        DataType /*dt1*/,
1389                        DataType /*dt2*/,
1390                        SRegister /*rd*/,
1391                        SRegister /*rm*/,
1392                        int32_t /*fbits*/) {
1393    UnimplementedDelegate(type);
1394  }
1395  virtual void Delegate(InstructionType type,
1396                        InstructionCondDtDtDD /*instruction*/,
1397                        Condition /*cond*/,
1398                        DataType /*dt1*/,
1399                        DataType /*dt2*/,
1400                        DRegister /*rd*/,
1401                        DRegister /*rm*/) {
1402    UnimplementedDelegate(type);
1403  }
1404  virtual void Delegate(InstructionType type,
1405                        InstructionCondDtDtQQ /*instruction*/,
1406                        Condition /*cond*/,
1407                        DataType /*dt1*/,
1408                        DataType /*dt2*/,
1409                        QRegister /*rd*/,
1410                        QRegister /*rm*/) {
1411    UnimplementedDelegate(type);
1412  }
1413  virtual void Delegate(InstructionType type,
1414                        InstructionCondDtDtDQ /*instruction*/,
1415                        Condition /*cond*/,
1416                        DataType /*dt1*/,
1417                        DataType /*dt2*/,
1418                        DRegister /*rd*/,
1419                        QRegister /*rm*/) {
1420    UnimplementedDelegate(type);
1421  }
1422  virtual void Delegate(InstructionType type,
1423                        InstructionCondDtDtQD /*instruction*/,
1424                        Condition /*cond*/,
1425                        DataType /*dt1*/,
1426                        DataType /*dt2*/,
1427                        QRegister /*rd*/,
1428                        DRegister /*rm*/) {
1429    UnimplementedDelegate(type);
1430  }
1431  virtual void Delegate(InstructionType type,
1432                        InstructionCondDtDtSS /*instruction*/,
1433                        Condition /*cond*/,
1434                        DataType /*dt1*/,
1435                        DataType /*dt2*/,
1436                        SRegister /*rd*/,
1437                        SRegister /*rm*/) {
1438    UnimplementedDelegate(type);
1439  }
1440  virtual void Delegate(InstructionType type,
1441                        InstructionDtDtDD /*instruction*/,
1442                        DataType /*dt1*/,
1443                        DataType /*dt2*/,
1444                        DRegister /*rd*/,
1445                        DRegister /*rm*/) {
1446    UnimplementedDelegate(type);
1447  }
1448  virtual void Delegate(InstructionType type,
1449                        InstructionDtDtQQ /*instruction*/,
1450                        DataType /*dt1*/,
1451                        DataType /*dt2*/,
1452                        QRegister /*rd*/,
1453                        QRegister /*rm*/) {
1454    UnimplementedDelegate(type);
1455  }
1456  virtual void Delegate(InstructionType type,
1457                        InstructionDtDtSS /*instruction*/,
1458                        DataType /*dt1*/,
1459                        DataType /*dt2*/,
1460                        SRegister /*rd*/,
1461                        SRegister /*rm*/) {
1462    UnimplementedDelegate(type);
1463  }
1464  virtual void Delegate(InstructionType type,
1465                        InstructionDtDtSD /*instruction*/,
1466                        DataType /*dt1*/,
1467                        DataType /*dt2*/,
1468                        SRegister /*rd*/,
1469                        DRegister /*rm*/) {
1470    UnimplementedDelegate(type);
1471  }
1472  virtual void Delegate(InstructionType type,
1473                        InstructionCondDtQR /*instruction*/,
1474                        Condition /*cond*/,
1475                        DataType /*dt*/,
1476                        QRegister /*rd*/,
1477                        Register /*rt*/) {
1478    UnimplementedDelegate(type);
1479  }
1480  virtual void Delegate(InstructionType type,
1481                        InstructionCondDtDR /*instruction*/,
1482                        Condition /*cond*/,
1483                        DataType /*dt*/,
1484                        DRegister /*rd*/,
1485                        Register /*rt*/) {
1486    UnimplementedDelegate(type);
1487  }
1488  virtual void Delegate(InstructionType type,
1489                        InstructionCondDtDDx /*instruction*/,
1490                        Condition /*cond*/,
1491                        DataType /*dt*/,
1492                        DRegister /*rd*/,
1493                        DRegisterLane /*rm*/) {
1494    UnimplementedDelegate(type);
1495  }
1496  virtual void Delegate(InstructionType type,
1497                        InstructionCondDtQDx /*instruction*/,
1498                        Condition /*cond*/,
1499                        DataType /*dt*/,
1500                        QRegister /*rd*/,
1501                        DRegisterLane /*rm*/) {
1502    UnimplementedDelegate(type);
1503  }
1504  virtual void Delegate(InstructionType type,
1505                        InstructionCondDtDDDDop /*instruction*/,
1506                        Condition /*cond*/,
1507                        DataType /*dt*/,
1508                        DRegister /*rd*/,
1509                        DRegister /*rn*/,
1510                        DRegister /*rm*/,
1511                        const DOperand& /*operand*/) {
1512    UnimplementedDelegate(type);
1513  }
1514  virtual void Delegate(InstructionType type,
1515                        InstructionCondDtQQQQop /*instruction*/,
1516                        Condition /*cond*/,
1517                        DataType /*dt*/,
1518                        QRegister /*rd*/,
1519                        QRegister /*rn*/,
1520                        QRegister /*rm*/,
1521                        const QOperand& /*operand*/) {
1522    UnimplementedDelegate(type);
1523  }
1524  virtual void Delegate(InstructionType type,
1525                        InstructionCondDtNrlAmop /*instruction*/,
1526                        Condition /*cond*/,
1527                        DataType /*dt*/,
1528                        const NeonRegisterList& /*nreglist*/,
1529                        const AlignedMemOperand& /*operand*/) {
1530    UnimplementedDelegate(type);
1531  }
1532  virtual void Delegate(InstructionType type,
1533                        InstructionCondDtNrlMop /*instruction*/,
1534                        Condition /*cond*/,
1535                        DataType /*dt*/,
1536                        const NeonRegisterList& /*nreglist*/,
1537                        const MemOperand& /*operand*/) {
1538    UnimplementedDelegate(type);
1539  }
1540  virtual void Delegate(InstructionType type,
1541                        InstructionCondDtRwbDrl /*instruction*/,
1542                        Condition /*cond*/,
1543                        DataType /*dt*/,
1544                        Register /*rn*/,
1545                        WriteBack /*write_back*/,
1546                        DRegisterList /*dreglist*/) {
1547    UnimplementedDelegate(type);
1548  }
1549  virtual void Delegate(InstructionType type,
1550                        InstructionCondDtRwbSrl /*instruction*/,
1551                        Condition /*cond*/,
1552                        DataType /*dt*/,
1553                        Register /*rn*/,
1554                        WriteBack /*write_back*/,
1555                        SRegisterList /*sreglist*/) {
1556    UnimplementedDelegate(type);
1557  }
1558  virtual void Delegate(InstructionType type,
1559                        InstructionCondDtDL /*instruction*/,
1560                        Condition /*cond*/,
1561                        DataType /*dt*/,
1562                        DRegister /*rd*/,
1563                        Label* /*label*/) {
1564    UnimplementedDelegate(type);
1565  }
1566  virtual void Delegate(InstructionType type,
1567                        InstructionCondDtDMop /*instruction*/,
1568                        Condition /*cond*/,
1569                        DataType /*dt*/,
1570                        DRegister /*rd*/,
1571                        const MemOperand& /*operand*/) {
1572    UnimplementedDelegate(type);
1573  }
1574  virtual void Delegate(InstructionType type,
1575                        InstructionCondDtSL /*instruction*/,
1576                        Condition /*cond*/,
1577                        DataType /*dt*/,
1578                        SRegister /*rd*/,
1579                        Label* /*label*/) {
1580    UnimplementedDelegate(type);
1581  }
1582  virtual void Delegate(InstructionType type,
1583                        InstructionCondDtSMop /*instruction*/,
1584                        Condition /*cond*/,
1585                        DataType /*dt*/,
1586                        SRegister /*rd*/,
1587                        const MemOperand& /*operand*/) {
1588    UnimplementedDelegate(type);
1589  }
1590  virtual void Delegate(InstructionType type,
1591                        InstructionDtDDD /*instruction*/,
1592                        DataType /*dt*/,
1593                        DRegister /*rd*/,
1594                        DRegister /*rn*/,
1595                        DRegister /*rm*/) {
1596    UnimplementedDelegate(type);
1597  }
1598  virtual void Delegate(InstructionType type,
1599                        InstructionDtSSS /*instruction*/,
1600                        DataType /*dt*/,
1601                        SRegister /*rd*/,
1602                        SRegister /*rn*/,
1603                        SRegister /*rm*/) {
1604    UnimplementedDelegate(type);
1605  }
1606  virtual void Delegate(InstructionType type,
1607                        InstructionCondDtDDDx /*instruction*/,
1608                        Condition /*cond*/,
1609                        DataType /*dt*/,
1610                        DRegister /*rd*/,
1611                        DRegister /*rn*/,
1612                        DRegisterLane /*rm*/) {
1613    UnimplementedDelegate(type);
1614  }
1615  virtual void Delegate(InstructionType type,
1616                        InstructionCondDtQQDx /*instruction*/,
1617                        Condition /*cond*/,
1618                        DataType /*dt*/,
1619                        QRegister /*rd*/,
1620                        QRegister /*rn*/,
1621                        DRegisterLane /*rm*/) {
1622    UnimplementedDelegate(type);
1623  }
1624  virtual void Delegate(InstructionType type,
1625                        InstructionCondDtQDDx /*instruction*/,
1626                        Condition /*cond*/,
1627                        DataType /*dt*/,
1628                        QRegister /*rd*/,
1629                        DRegister /*rn*/,
1630                        DRegisterLane /*rm*/) {
1631    UnimplementedDelegate(type);
1632  }
1633  virtual void Delegate(InstructionType type,
1634                        InstructionCondRS /*instruction*/,
1635                        Condition /*cond*/,
1636                        Register /*rt*/,
1637                        SRegister /*rn*/) {
1638    UnimplementedDelegate(type);
1639  }
1640  virtual void Delegate(InstructionType type,
1641                        InstructionCondSR /*instruction*/,
1642                        Condition /*cond*/,
1643                        SRegister /*rn*/,
1644                        Register /*rt*/) {
1645    UnimplementedDelegate(type);
1646  }
1647  virtual void Delegate(InstructionType type,
1648                        InstructionCondRRD /*instruction*/,
1649                        Condition /*cond*/,
1650                        Register /*rt*/,
1651                        Register /*rt2*/,
1652                        DRegister /*rm*/) {
1653    UnimplementedDelegate(type);
1654  }
1655  virtual void Delegate(InstructionType type,
1656                        InstructionCondDRR /*instruction*/,
1657                        Condition /*cond*/,
1658                        DRegister /*rm*/,
1659                        Register /*rt*/,
1660                        Register /*rt2*/) {
1661    UnimplementedDelegate(type);
1662  }
1663  virtual void Delegate(InstructionType type,
1664                        InstructionCondRRSS /*instruction*/,
1665                        Condition /*cond*/,
1666                        Register /*rt*/,
1667                        Register /*rt2*/,
1668                        SRegister /*rm*/,
1669                        SRegister /*rm1*/) {
1670    UnimplementedDelegate(type);
1671  }
1672  virtual void Delegate(InstructionType type,
1673                        InstructionCondSSRR /*instruction*/,
1674                        Condition /*cond*/,
1675                        SRegister /*rm*/,
1676                        SRegister /*rm1*/,
1677                        Register /*rt*/,
1678                        Register /*rt2*/) {
1679    UnimplementedDelegate(type);
1680  }
1681  virtual void Delegate(InstructionType type,
1682                        InstructionCondDtDxR /*instruction*/,
1683                        Condition /*cond*/,
1684                        DataType /*dt*/,
1685                        DRegisterLane /*rd*/,
1686                        Register /*rt*/) {
1687    UnimplementedDelegate(type);
1688  }
1689  virtual void Delegate(InstructionType type,
1690                        InstructionCondDtDDop /*instruction*/,
1691                        Condition /*cond*/,
1692                        DataType /*dt*/,
1693                        DRegister /*rd*/,
1694                        const DOperand& /*operand*/) {
1695    UnimplementedDelegate(type);
1696  }
1697  virtual void Delegate(InstructionType type,
1698                        InstructionCondDtQQop /*instruction*/,
1699                        Condition /*cond*/,
1700                        DataType /*dt*/,
1701                        QRegister /*rd*/,
1702                        const QOperand& /*operand*/) {
1703    UnimplementedDelegate(type);
1704  }
1705  virtual void Delegate(InstructionType type,
1706                        InstructionCondDtSSop /*instruction*/,
1707                        Condition /*cond*/,
1708                        DataType /*dt*/,
1709                        SRegister /*rd*/,
1710                        const SOperand& /*operand*/) {
1711    UnimplementedDelegate(type);
1712  }
1713  virtual void Delegate(InstructionType type,
1714                        InstructionCondDtRDx /*instruction*/,
1715                        Condition /*cond*/,
1716                        DataType /*dt*/,
1717                        Register /*rt*/,
1718                        DRegisterLane /*rn*/) {
1719    UnimplementedDelegate(type);
1720  }
1721  virtual void Delegate(InstructionType type,
1722                        InstructionCondDtQD /*instruction*/,
1723                        Condition /*cond*/,
1724                        DataType /*dt*/,
1725                        QRegister /*rd*/,
1726                        DRegister /*rm*/) {
1727    UnimplementedDelegate(type);
1728  }
1729  virtual void Delegate(InstructionType type,
1730                        InstructionCondDtDQ /*instruction*/,
1731                        Condition /*cond*/,
1732                        DataType /*dt*/,
1733                        DRegister /*rd*/,
1734                        QRegister /*rm*/) {
1735    UnimplementedDelegate(type);
1736  }
1737  virtual void Delegate(InstructionType type,
1738                        InstructionCondRoaSfp /*instruction*/,
1739                        Condition /*cond*/,
1740                        RegisterOrAPSR_nzcv /*rt*/,
1741                        SpecialFPRegister /*spec_reg*/) {
1742    UnimplementedDelegate(type);
1743  }
1744  virtual void Delegate(InstructionType type,
1745                        InstructionCondSfpR /*instruction*/,
1746                        Condition /*cond*/,
1747                        SpecialFPRegister /*spec_reg*/,
1748                        Register /*rt*/) {
1749    UnimplementedDelegate(type);
1750  }
1751  virtual void Delegate(InstructionType type,
1752                        InstructionCondDtDDIr /*instruction*/,
1753                        Condition /*cond*/,
1754                        DataType /*dt*/,
1755                        DRegister /*rd*/,
1756                        DRegister /*rn*/,
1757                        DRegister /*dm*/,
1758                        unsigned /*index*/) {
1759    UnimplementedDelegate(type);
1760  }
1761  virtual void Delegate(InstructionType type,
1762                        InstructionCondDtQQIr /*instruction*/,
1763                        Condition /*cond*/,
1764                        DataType /*dt*/,
1765                        QRegister /*rd*/,
1766                        QRegister /*rn*/,
1767                        DRegister /*dm*/,
1768                        unsigned /*index*/) {
1769    UnimplementedDelegate(type);
1770  }
1771  virtual void Delegate(InstructionType type,
1772                        InstructionCondDtQDIr /*instruction*/,
1773                        Condition /*cond*/,
1774                        DataType /*dt*/,
1775                        QRegister /*rd*/,
1776                        DRegister /*rn*/,
1777                        DRegister /*dm*/,
1778                        unsigned /*index*/) {
1779    UnimplementedDelegate(type);
1780  }
1781  virtual void Delegate(InstructionType type,
1782                        InstructionCondDtDrl /*instruction*/,
1783                        Condition /*cond*/,
1784                        DataType /*dt*/,
1785                        DRegisterList /*dreglist*/) {
1786    UnimplementedDelegate(type);
1787  }
1788  virtual void Delegate(InstructionType type,
1789                        InstructionCondDtSrl /*instruction*/,
1790                        Condition /*cond*/,
1791                        DataType /*dt*/,
1792                        SRegisterList /*sreglist*/) {
1793    UnimplementedDelegate(type);
1794  }
1795  virtual void Delegate(InstructionType type,
1796                        InstructionCondDtDQQop /*instruction*/,
1797                        Condition /*cond*/,
1798                        DataType /*dt*/,
1799                        DRegister /*rd*/,
1800                        QRegister /*rm*/,
1801                        const QOperand& /*operand*/) {
1802    UnimplementedDelegate(type);
1803  }
1804  virtual void Delegate(InstructionType type,
1805                        InstructionCondDtQDDop /*instruction*/,
1806                        Condition /*cond*/,
1807                        DataType /*dt*/,
1808                        QRegister /*rd*/,
1809                        DRegister /*rm*/,
1810                        const DOperand& /*operand*/) {
1811    UnimplementedDelegate(type);
1812  }
1813  virtual void Delegate(InstructionType type,
1814                        InstructionCondDtDNrlD /*instruction*/,
1815                        Condition /*cond*/,
1816                        DataType /*dt*/,
1817                        DRegister /*rd*/,
1818                        const NeonRegisterList& /*nreglist*/,
1819                        DRegister /*rm*/) {
1820    UnimplementedDelegate(type);
1821  }
1822
1823  void adc(Condition cond,
1824           EncodingSize size,
1825           Register rd,
1826           Register rn,
1827           const Operand& operand);
1828  void adc(Register rd, Register rn, const Operand& operand) {
1829    adc(al, Best, rd, rn, operand);
1830  }
1831  void adc(Condition cond, Register rd, Register rn, const Operand& operand) {
1832    adc(cond, Best, rd, rn, operand);
1833  }
1834  void adc(EncodingSize size,
1835           Register rd,
1836           Register rn,
1837           const Operand& operand) {
1838    adc(al, size, rd, rn, operand);
1839  }
1840
1841  void adcs(Condition cond,
1842            EncodingSize size,
1843            Register rd,
1844            Register rn,
1845            const Operand& operand);
1846  void adcs(Register rd, Register rn, const Operand& operand) {
1847    adcs(al, Best, rd, rn, operand);
1848  }
1849  void adcs(Condition cond, Register rd, Register rn, const Operand& operand) {
1850    adcs(cond, Best, rd, rn, operand);
1851  }
1852  void adcs(EncodingSize size,
1853            Register rd,
1854            Register rn,
1855            const Operand& operand) {
1856    adcs(al, size, rd, rn, operand);
1857  }
1858
1859  void add(Condition cond,
1860           EncodingSize size,
1861           Register rd,
1862           Register rn,
1863           const Operand& operand);
1864  void add(Register rd, Register rn, const Operand& operand) {
1865    add(al, Best, rd, rn, operand);
1866  }
1867  void add(Condition cond, Register rd, Register rn, const Operand& operand) {
1868    add(cond, Best, rd, rn, operand);
1869  }
1870  void add(EncodingSize size,
1871           Register rd,
1872           Register rn,
1873           const Operand& operand) {
1874    add(al, size, rd, rn, operand);
1875  }
1876
1877  void add(Condition cond, Register rd, const Operand& operand);
1878  void add(Register rd, const Operand& operand) { add(al, rd, operand); }
1879
1880  void adds(Condition cond,
1881            EncodingSize size,
1882            Register rd,
1883            Register rn,
1884            const Operand& operand);
1885  void adds(Register rd, Register rn, const Operand& operand) {
1886    adds(al, Best, rd, rn, operand);
1887  }
1888  void adds(Condition cond, Register rd, Register rn, const Operand& operand) {
1889    adds(cond, Best, rd, rn, operand);
1890  }
1891  void adds(EncodingSize size,
1892            Register rd,
1893            Register rn,
1894            const Operand& operand) {
1895    adds(al, size, rd, rn, operand);
1896  }
1897
1898  void adds(Register rd, const Operand& operand);
1899
1900  void addw(Condition cond, Register rd, Register rn, const Operand& operand);
1901  void addw(Register rd, Register rn, const Operand& operand) {
1902    addw(al, rd, rn, operand);
1903  }
1904
1905  void adr(Condition cond, EncodingSize size, Register rd, Label* label);
1906  void adr(Register rd, Label* label) { adr(al, Best, rd, label); }
1907  void adr(Condition cond, Register rd, Label* label) {
1908    adr(cond, Best, rd, label);
1909  }
1910  void adr(EncodingSize size, Register rd, Label* label) {
1911    adr(al, size, rd, label);
1912  }
1913
1914  void and_(Condition cond,
1915            EncodingSize size,
1916            Register rd,
1917            Register rn,
1918            const Operand& operand);
1919  void and_(Register rd, Register rn, const Operand& operand) {
1920    and_(al, Best, rd, rn, operand);
1921  }
1922  void and_(Condition cond, Register rd, Register rn, const Operand& operand) {
1923    and_(cond, Best, rd, rn, operand);
1924  }
1925  void and_(EncodingSize size,
1926            Register rd,
1927            Register rn,
1928            const Operand& operand) {
1929    and_(al, size, rd, rn, operand);
1930  }
1931
1932  void ands(Condition cond,
1933            EncodingSize size,
1934            Register rd,
1935            Register rn,
1936            const Operand& operand);
1937  void ands(Register rd, Register rn, const Operand& operand) {
1938    ands(al, Best, rd, rn, operand);
1939  }
1940  void ands(Condition cond, Register rd, Register rn, const Operand& operand) {
1941    ands(cond, Best, rd, rn, operand);
1942  }
1943  void ands(EncodingSize size,
1944            Register rd,
1945            Register rn,
1946            const Operand& operand) {
1947    ands(al, size, rd, rn, operand);
1948  }
1949
1950  void asr(Condition cond,
1951           EncodingSize size,
1952           Register rd,
1953           Register rm,
1954           const Operand& operand);
1955  void asr(Register rd, Register rm, const Operand& operand) {
1956    asr(al, Best, rd, rm, operand);
1957  }
1958  void asr(Condition cond, Register rd, Register rm, const Operand& operand) {
1959    asr(cond, Best, rd, rm, operand);
1960  }
1961  void asr(EncodingSize size,
1962           Register rd,
1963           Register rm,
1964           const Operand& operand) {
1965    asr(al, size, rd, rm, operand);
1966  }
1967
1968  void asrs(Condition cond,
1969            EncodingSize size,
1970            Register rd,
1971            Register rm,
1972            const Operand& operand);
1973  void asrs(Register rd, Register rm, const Operand& operand) {
1974    asrs(al, Best, rd, rm, operand);
1975  }
1976  void asrs(Condition cond, Register rd, Register rm, const Operand& operand) {
1977    asrs(cond, Best, rd, rm, operand);
1978  }
1979  void asrs(EncodingSize size,
1980            Register rd,
1981            Register rm,
1982            const Operand& operand) {
1983    asrs(al, size, rd, rm, operand);
1984  }
1985
1986  void b(Condition cond, EncodingSize size, Label* label);
1987  void b(Label* label) { b(al, Best, label); }
1988  void b(Condition cond, Label* label) { b(cond, Best, label); }
1989  void b(EncodingSize size, Label* label) { b(al, size, label); }
1990
1991  void bfc(Condition cond, Register rd, uint32_t lsb, const Operand& operand);
1992  void bfc(Register rd, uint32_t lsb, const Operand& operand) {
1993    bfc(al, rd, lsb, operand);
1994  }
1995
1996  void bfi(Condition cond,
1997           Register rd,
1998           Register rn,
1999           uint32_t lsb,
2000           const Operand& operand);
2001  void bfi(Register rd, Register rn, uint32_t lsb, const Operand& operand) {
2002    bfi(al, rd, rn, lsb, operand);
2003  }
2004
2005  void bic(Condition cond,
2006           EncodingSize size,
2007           Register rd,
2008           Register rn,
2009           const Operand& operand);
2010  void bic(Register rd, Register rn, const Operand& operand) {
2011    bic(al, Best, rd, rn, operand);
2012  }
2013  void bic(Condition cond, Register rd, Register rn, const Operand& operand) {
2014    bic(cond, Best, rd, rn, operand);
2015  }
2016  void bic(EncodingSize size,
2017           Register rd,
2018           Register rn,
2019           const Operand& operand) {
2020    bic(al, size, rd, rn, operand);
2021  }
2022
2023  void bics(Condition cond,
2024            EncodingSize size,
2025            Register rd,
2026            Register rn,
2027            const Operand& operand);
2028  void bics(Register rd, Register rn, const Operand& operand) {
2029    bics(al, Best, rd, rn, operand);
2030  }
2031  void bics(Condition cond, Register rd, Register rn, const Operand& operand) {
2032    bics(cond, Best, rd, rn, operand);
2033  }
2034  void bics(EncodingSize size,
2035            Register rd,
2036            Register rn,
2037            const Operand& operand) {
2038    bics(al, size, rd, rn, operand);
2039  }
2040
2041  void bkpt(Condition cond, uint32_t imm);
2042  void bkpt(uint32_t imm) { bkpt(al, imm); }
2043
2044  void bl(Condition cond, Label* label);
2045  void bl(Label* label) { bl(al, label); }
2046
2047  void blx(Condition cond, Label* label);
2048  void blx(Label* label) { blx(al, label); }
2049
2050  void blx(Condition cond, Register rm);
2051  void blx(Register rm) { blx(al, rm); }
2052
2053  void bx(Condition cond, Register rm);
2054  void bx(Register rm) { bx(al, rm); }
2055
2056  void bxj(Condition cond, Register rm);
2057  void bxj(Register rm) { bxj(al, rm); }
2058
2059  void cbnz(Register rn, Label* label);
2060
2061  void cbz(Register rn, Label* label);
2062
2063  void clrex(Condition cond);
2064  void clrex() { clrex(al); }
2065
2066  void clz(Condition cond, Register rd, Register rm);
2067  void clz(Register rd, Register rm) { clz(al, rd, rm); }
2068
2069  void cmn(Condition cond,
2070           EncodingSize size,
2071           Register rn,
2072           const Operand& operand);
2073  void cmn(Register rn, const Operand& operand) { cmn(al, Best, rn, operand); }
2074  void cmn(Condition cond, Register rn, const Operand& operand) {
2075    cmn(cond, Best, rn, operand);
2076  }
2077  void cmn(EncodingSize size, Register rn, const Operand& operand) {
2078    cmn(al, size, rn, operand);
2079  }
2080
2081  void cmp(Condition cond,
2082           EncodingSize size,
2083           Register rn,
2084           const Operand& operand);
2085  void cmp(Register rn, const Operand& operand) { cmp(al, Best, rn, operand); }
2086  void cmp(Condition cond, Register rn, const Operand& operand) {
2087    cmp(cond, Best, rn, operand);
2088  }
2089  void cmp(EncodingSize size, Register rn, const Operand& operand) {
2090    cmp(al, size, rn, operand);
2091  }
2092
2093  void crc32b(Condition cond, Register rd, Register rn, Register rm);
2094  void crc32b(Register rd, Register rn, Register rm) { crc32b(al, rd, rn, rm); }
2095
2096  void crc32cb(Condition cond, Register rd, Register rn, Register rm);
2097  void crc32cb(Register rd, Register rn, Register rm) {
2098    crc32cb(al, rd, rn, rm);
2099  }
2100
2101  void crc32ch(Condition cond, Register rd, Register rn, Register rm);
2102  void crc32ch(Register rd, Register rn, Register rm) {
2103    crc32ch(al, rd, rn, rm);
2104  }
2105
2106  void crc32cw(Condition cond, Register rd, Register rn, Register rm);
2107  void crc32cw(Register rd, Register rn, Register rm) {
2108    crc32cw(al, rd, rn, rm);
2109  }
2110
2111  void crc32h(Condition cond, Register rd, Register rn, Register rm);
2112  void crc32h(Register rd, Register rn, Register rm) { crc32h(al, rd, rn, rm); }
2113
2114  void crc32w(Condition cond, Register rd, Register rn, Register rm);
2115  void crc32w(Register rd, Register rn, Register rm) { crc32w(al, rd, rn, rm); }
2116
2117  void dmb(Condition cond, MemoryBarrier option);
2118  void dmb(MemoryBarrier option) { dmb(al, option); }
2119
2120  void dsb(Condition cond, MemoryBarrier option);
2121  void dsb(MemoryBarrier option) { dsb(al, option); }
2122
2123  void eor(Condition cond,
2124           EncodingSize size,
2125           Register rd,
2126           Register rn,
2127           const Operand& operand);
2128  void eor(Register rd, Register rn, const Operand& operand) {
2129    eor(al, Best, rd, rn, operand);
2130  }
2131  void eor(Condition cond, Register rd, Register rn, const Operand& operand) {
2132    eor(cond, Best, rd, rn, operand);
2133  }
2134  void eor(EncodingSize size,
2135           Register rd,
2136           Register rn,
2137           const Operand& operand) {
2138    eor(al, size, rd, rn, operand);
2139  }
2140
2141  void eors(Condition cond,
2142            EncodingSize size,
2143            Register rd,
2144            Register rn,
2145            const Operand& operand);
2146  void eors(Register rd, Register rn, const Operand& operand) {
2147    eors(al, Best, rd, rn, operand);
2148  }
2149  void eors(Condition cond, Register rd, Register rn, const Operand& operand) {
2150    eors(cond, Best, rd, rn, operand);
2151  }
2152  void eors(EncodingSize size,
2153            Register rd,
2154            Register rn,
2155            const Operand& operand) {
2156    eors(al, size, rd, rn, operand);
2157  }
2158
2159  void fldmdbx(Condition cond,
2160               Register rn,
2161               WriteBack write_back,
2162               DRegisterList dreglist);
2163  void fldmdbx(Register rn, WriteBack write_back, DRegisterList dreglist) {
2164    fldmdbx(al, rn, write_back, dreglist);
2165  }
2166
2167  void fldmiax(Condition cond,
2168               Register rn,
2169               WriteBack write_back,
2170               DRegisterList dreglist);
2171  void fldmiax(Register rn, WriteBack write_back, DRegisterList dreglist) {
2172    fldmiax(al, rn, write_back, dreglist);
2173  }
2174
2175  void fstmdbx(Condition cond,
2176               Register rn,
2177               WriteBack write_back,
2178               DRegisterList dreglist);
2179  void fstmdbx(Register rn, WriteBack write_back, DRegisterList dreglist) {
2180    fstmdbx(al, rn, write_back, dreglist);
2181  }
2182
2183  void fstmiax(Condition cond,
2184               Register rn,
2185               WriteBack write_back,
2186               DRegisterList dreglist);
2187  void fstmiax(Register rn, WriteBack write_back, DRegisterList dreglist) {
2188    fstmiax(al, rn, write_back, dreglist);
2189  }
2190
2191  void hlt(Condition cond, uint32_t imm);
2192  void hlt(uint32_t imm) { hlt(al, imm); }
2193
2194  void hvc(Condition cond, uint32_t imm);
2195  void hvc(uint32_t imm) { hvc(al, imm); }
2196
2197  void isb(Condition cond, MemoryBarrier option);
2198  void isb(MemoryBarrier option) { isb(al, option); }
2199
2200  void it(Condition cond, uint16_t mask);
2201
2202  void lda(Condition cond, Register rt, const MemOperand& operand);
2203  void lda(Register rt, const MemOperand& operand) { lda(al, rt, operand); }
2204
2205  void ldab(Condition cond, Register rt, const MemOperand& operand);
2206  void ldab(Register rt, const MemOperand& operand) { ldab(al, rt, operand); }
2207
2208  void ldaex(Condition cond, Register rt, const MemOperand& operand);
2209  void ldaex(Register rt, const MemOperand& operand) { ldaex(al, rt, operand); }
2210
2211  void ldaexb(Condition cond, Register rt, const MemOperand& operand);
2212  void ldaexb(Register rt, const MemOperand& operand) {
2213    ldaexb(al, rt, operand);
2214  }
2215
2216  void ldaexd(Condition cond,
2217              Register rt,
2218              Register rt2,
2219              const MemOperand& operand);
2220  void ldaexd(Register rt, Register rt2, const MemOperand& operand) {
2221    ldaexd(al, rt, rt2, operand);
2222  }
2223
2224  void ldaexh(Condition cond, Register rt, const MemOperand& operand);
2225  void ldaexh(Register rt, const MemOperand& operand) {
2226    ldaexh(al, rt, operand);
2227  }
2228
2229  void ldah(Condition cond, Register rt, const MemOperand& operand);
2230  void ldah(Register rt, const MemOperand& operand) { ldah(al, rt, operand); }
2231
2232  void ldm(Condition cond,
2233           EncodingSize size,
2234           Register rn,
2235           WriteBack write_back,
2236           RegisterList registers);
2237  void ldm(Register rn, WriteBack write_back, RegisterList registers) {
2238    ldm(al, Best, rn, write_back, registers);
2239  }
2240  void ldm(Condition cond,
2241           Register rn,
2242           WriteBack write_back,
2243           RegisterList registers) {
2244    ldm(cond, Best, rn, write_back, registers);
2245  }
2246  void ldm(EncodingSize size,
2247           Register rn,
2248           WriteBack write_back,
2249           RegisterList registers) {
2250    ldm(al, size, rn, write_back, registers);
2251  }
2252
2253  void ldmda(Condition cond,
2254             Register rn,
2255             WriteBack write_back,
2256             RegisterList registers);
2257  void ldmda(Register rn, WriteBack write_back, RegisterList registers) {
2258    ldmda(al, rn, write_back, registers);
2259  }
2260
2261  void ldmdb(Condition cond,
2262             Register rn,
2263             WriteBack write_back,
2264             RegisterList registers);
2265  void ldmdb(Register rn, WriteBack write_back, RegisterList registers) {
2266    ldmdb(al, rn, write_back, registers);
2267  }
2268
2269  void ldmea(Condition cond,
2270             Register rn,
2271             WriteBack write_back,
2272             RegisterList registers);
2273  void ldmea(Register rn, WriteBack write_back, RegisterList registers) {
2274    ldmea(al, rn, write_back, registers);
2275  }
2276
2277  void ldmed(Condition cond,
2278             Register rn,
2279             WriteBack write_back,
2280             RegisterList registers);
2281  void ldmed(Register rn, WriteBack write_back, RegisterList registers) {
2282    ldmed(al, rn, write_back, registers);
2283  }
2284
2285  void ldmfa(Condition cond,
2286             Register rn,
2287             WriteBack write_back,
2288             RegisterList registers);
2289  void ldmfa(Register rn, WriteBack write_back, RegisterList registers) {
2290    ldmfa(al, rn, write_back, registers);
2291  }
2292
2293  void ldmfd(Condition cond,
2294             EncodingSize size,
2295             Register rn,
2296             WriteBack write_back,
2297             RegisterList registers);
2298  void ldmfd(Register rn, WriteBack write_back, RegisterList registers) {
2299    ldmfd(al, Best, rn, write_back, registers);
2300  }
2301  void ldmfd(Condition cond,
2302             Register rn,
2303             WriteBack write_back,
2304             RegisterList registers) {
2305    ldmfd(cond, Best, rn, write_back, registers);
2306  }
2307  void ldmfd(EncodingSize size,
2308             Register rn,
2309             WriteBack write_back,
2310             RegisterList registers) {
2311    ldmfd(al, size, rn, write_back, registers);
2312  }
2313
2314  void ldmib(Condition cond,
2315             Register rn,
2316             WriteBack write_back,
2317             RegisterList registers);
2318  void ldmib(Register rn, WriteBack write_back, RegisterList registers) {
2319    ldmib(al, rn, write_back, registers);
2320  }
2321
2322  void ldr(Condition cond,
2323           EncodingSize size,
2324           Register rt,
2325           const MemOperand& operand);
2326  void ldr(Register rt, const MemOperand& operand) {
2327    ldr(al, Best, rt, operand);
2328  }
2329  void ldr(Condition cond, Register rt, const MemOperand& operand) {
2330    ldr(cond, Best, rt, operand);
2331  }
2332  void ldr(EncodingSize size, Register rt, const MemOperand& operand) {
2333    ldr(al, size, rt, operand);
2334  }
2335
2336  void ldr(Condition cond, EncodingSize size, Register rt, Label* label);
2337  void ldr(Register rt, Label* label) { ldr(al, Best, rt, label); }
2338  void ldr(Condition cond, Register rt, Label* label) {
2339    ldr(cond, Best, rt, label);
2340  }
2341  void ldr(EncodingSize size, Register rt, Label* label) {
2342    ldr(al, size, rt, label);
2343  }
2344
2345  void ldrb(Condition cond,
2346            EncodingSize size,
2347            Register rt,
2348            const MemOperand& operand);
2349  void ldrb(Register rt, const MemOperand& operand) {
2350    ldrb(al, Best, rt, operand);
2351  }
2352  void ldrb(Condition cond, Register rt, const MemOperand& operand) {
2353    ldrb(cond, Best, rt, operand);
2354  }
2355  void ldrb(EncodingSize size, Register rt, const MemOperand& operand) {
2356    ldrb(al, size, rt, operand);
2357  }
2358
2359  void ldrb(Condition cond, Register rt, Label* label);
2360  void ldrb(Register rt, Label* label) { ldrb(al, rt, label); }
2361
2362  void ldrd(Condition cond,
2363            Register rt,
2364            Register rt2,
2365            const MemOperand& operand);
2366  void ldrd(Register rt, Register rt2, const MemOperand& operand) {
2367    ldrd(al, rt, rt2, operand);
2368  }
2369
2370  void ldrd(Condition cond, Register rt, Register rt2, Label* label);
2371  void ldrd(Register rt, Register rt2, Label* label) {
2372    ldrd(al, rt, rt2, label);
2373  }
2374
2375  void ldrex(Condition cond, Register rt, const MemOperand& operand);
2376  void ldrex(Register rt, const MemOperand& operand) { ldrex(al, rt, operand); }
2377
2378  void ldrexb(Condition cond, Register rt, const MemOperand& operand);
2379  void ldrexb(Register rt, const MemOperand& operand) {
2380    ldrexb(al, rt, operand);
2381  }
2382
2383  void ldrexd(Condition cond,
2384              Register rt,
2385              Register rt2,
2386              const MemOperand& operand);
2387  void ldrexd(Register rt, Register rt2, const MemOperand& operand) {
2388    ldrexd(al, rt, rt2, operand);
2389  }
2390
2391  void ldrexh(Condition cond, Register rt, const MemOperand& operand);
2392  void ldrexh(Register rt, const MemOperand& operand) {
2393    ldrexh(al, rt, operand);
2394  }
2395
2396  void ldrh(Condition cond,
2397            EncodingSize size,
2398            Register rt,
2399            const MemOperand& operand);
2400  void ldrh(Register rt, const MemOperand& operand) {
2401    ldrh(al, Best, rt, operand);
2402  }
2403  void ldrh(Condition cond, Register rt, const MemOperand& operand) {
2404    ldrh(cond, Best, rt, operand);
2405  }
2406  void ldrh(EncodingSize size, Register rt, const MemOperand& operand) {
2407    ldrh(al, size, rt, operand);
2408  }
2409
2410  void ldrh(Condition cond, Register rt, Label* label);
2411  void ldrh(Register rt, Label* label) { ldrh(al, rt, label); }
2412
2413  void ldrsb(Condition cond,
2414             EncodingSize size,
2415             Register rt,
2416             const MemOperand& operand);
2417  void ldrsb(Register rt, const MemOperand& operand) {
2418    ldrsb(al, Best, rt, operand);
2419  }
2420  void ldrsb(Condition cond, Register rt, const MemOperand& operand) {
2421    ldrsb(cond, Best, rt, operand);
2422  }
2423  void ldrsb(EncodingSize size, Register rt, const MemOperand& operand) {
2424    ldrsb(al, size, rt, operand);
2425  }
2426
2427  void ldrsb(Condition cond, Register rt, Label* label);
2428  void ldrsb(Register rt, Label* label) { ldrsb(al, rt, label); }
2429
2430  void ldrsh(Condition cond,
2431             EncodingSize size,
2432             Register rt,
2433             const MemOperand& operand);
2434  void ldrsh(Register rt, const MemOperand& operand) {
2435    ldrsh(al, Best, rt, operand);
2436  }
2437  void ldrsh(Condition cond, Register rt, const MemOperand& operand) {
2438    ldrsh(cond, Best, rt, operand);
2439  }
2440  void ldrsh(EncodingSize size, Register rt, const MemOperand& operand) {
2441    ldrsh(al, size, rt, operand);
2442  }
2443
2444  void ldrsh(Condition cond, Register rt, Label* label);
2445  void ldrsh(Register rt, Label* label) { ldrsh(al, rt, label); }
2446
2447  void lsl(Condition cond,
2448           EncodingSize size,
2449           Register rd,
2450           Register rm,
2451           const Operand& operand);
2452  void lsl(Register rd, Register rm, const Operand& operand) {
2453    lsl(al, Best, rd, rm, operand);
2454  }
2455  void lsl(Condition cond, Register rd, Register rm, const Operand& operand) {
2456    lsl(cond, Best, rd, rm, operand);
2457  }
2458  void lsl(EncodingSize size,
2459           Register rd,
2460           Register rm,
2461           const Operand& operand) {
2462    lsl(al, size, rd, rm, operand);
2463  }
2464
2465  void lsls(Condition cond,
2466            EncodingSize size,
2467            Register rd,
2468            Register rm,
2469            const Operand& operand);
2470  void lsls(Register rd, Register rm, const Operand& operand) {
2471    lsls(al, Best, rd, rm, operand);
2472  }
2473  void lsls(Condition cond, Register rd, Register rm, const Operand& operand) {
2474    lsls(cond, Best, rd, rm, operand);
2475  }
2476  void lsls(EncodingSize size,
2477            Register rd,
2478            Register rm,
2479            const Operand& operand) {
2480    lsls(al, size, rd, rm, operand);
2481  }
2482
2483  void lsr(Condition cond,
2484           EncodingSize size,
2485           Register rd,
2486           Register rm,
2487           const Operand& operand);
2488  void lsr(Register rd, Register rm, const Operand& operand) {
2489    lsr(al, Best, rd, rm, operand);
2490  }
2491  void lsr(Condition cond, Register rd, Register rm, const Operand& operand) {
2492    lsr(cond, Best, rd, rm, operand);
2493  }
2494  void lsr(EncodingSize size,
2495           Register rd,
2496           Register rm,
2497           const Operand& operand) {
2498    lsr(al, size, rd, rm, operand);
2499  }
2500
2501  void lsrs(Condition cond,
2502            EncodingSize size,
2503            Register rd,
2504            Register rm,
2505            const Operand& operand);
2506  void lsrs(Register rd, Register rm, const Operand& operand) {
2507    lsrs(al, Best, rd, rm, operand);
2508  }
2509  void lsrs(Condition cond, Register rd, Register rm, const Operand& operand) {
2510    lsrs(cond, Best, rd, rm, operand);
2511  }
2512  void lsrs(EncodingSize size,
2513            Register rd,
2514            Register rm,
2515            const Operand& operand) {
2516    lsrs(al, size, rd, rm, operand);
2517  }
2518
2519  void mla(Condition cond, Register rd, Register rn, Register rm, Register ra);
2520  void mla(Register rd, Register rn, Register rm, Register ra) {
2521    mla(al, rd, rn, rm, ra);
2522  }
2523
2524  void mlas(Condition cond, Register rd, Register rn, Register rm, Register ra);
2525  void mlas(Register rd, Register rn, Register rm, Register ra) {
2526    mlas(al, rd, rn, rm, ra);
2527  }
2528
2529  void mls(Condition cond, Register rd, Register rn, Register rm, Register ra);
2530  void mls(Register rd, Register rn, Register rm, Register ra) {
2531    mls(al, rd, rn, rm, ra);
2532  }
2533
2534  void mov(Condition cond,
2535           EncodingSize size,
2536           Register rd,
2537           const Operand& operand);
2538  void mov(Register rd, const Operand& operand) { mov(al, Best, rd, operand); }
2539  void mov(Condition cond, Register rd, const Operand& operand) {
2540    mov(cond, Best, rd, operand);
2541  }
2542  void mov(EncodingSize size, Register rd, const Operand& operand) {
2543    mov(al, size, rd, operand);
2544  }
2545
2546  void movs(Condition cond,
2547            EncodingSize size,
2548            Register rd,
2549            const Operand& operand);
2550  void movs(Register rd, const Operand& operand) {
2551    movs(al, Best, rd, operand);
2552  }
2553  void movs(Condition cond, Register rd, const Operand& operand) {
2554    movs(cond, Best, rd, operand);
2555  }
2556  void movs(EncodingSize size, Register rd, const Operand& operand) {
2557    movs(al, size, rd, operand);
2558  }
2559
2560  void movt(Condition cond, Register rd, const Operand& operand);
2561  void movt(Register rd, const Operand& operand) { movt(al, rd, operand); }
2562
2563  void movw(Condition cond, Register rd, const Operand& operand);
2564  void movw(Register rd, const Operand& operand) { movw(al, rd, operand); }
2565
2566  void mrs(Condition cond, Register rd, SpecialRegister spec_reg);
2567  void mrs(Register rd, SpecialRegister spec_reg) { mrs(al, rd, spec_reg); }
2568
2569  void msr(Condition cond,
2570           MaskedSpecialRegister spec_reg,
2571           const Operand& operand);
2572  void msr(MaskedSpecialRegister spec_reg, const Operand& operand) {
2573    msr(al, spec_reg, operand);
2574  }
2575
2576  void mul(
2577      Condition cond, EncodingSize size, Register rd, Register rn, Register rm);
2578  void mul(Register rd, Register rn, Register rm) { mul(al, Best, rd, rn, rm); }
2579  void mul(Condition cond, Register rd, Register rn, Register rm) {
2580    mul(cond, Best, rd, rn, rm);
2581  }
2582  void mul(EncodingSize size, Register rd, Register rn, Register rm) {
2583    mul(al, size, rd, rn, rm);
2584  }
2585
2586  void muls(Condition cond, Register rd, Register rn, Register rm);
2587  void muls(Register rd, Register rn, Register rm) { muls(al, rd, rn, rm); }
2588
2589  void mvn(Condition cond,
2590           EncodingSize size,
2591           Register rd,
2592           const Operand& operand);
2593  void mvn(Register rd, const Operand& operand) { mvn(al, Best, rd, operand); }
2594  void mvn(Condition cond, Register rd, const Operand& operand) {
2595    mvn(cond, Best, rd, operand);
2596  }
2597  void mvn(EncodingSize size, Register rd, const Operand& operand) {
2598    mvn(al, size, rd, operand);
2599  }
2600
2601  void mvns(Condition cond,
2602            EncodingSize size,
2603            Register rd,
2604            const Operand& operand);
2605  void mvns(Register rd, const Operand& operand) {
2606    mvns(al, Best, rd, operand);
2607  }
2608  void mvns(Condition cond, Register rd, const Operand& operand) {
2609    mvns(cond, Best, rd, operand);
2610  }
2611  void mvns(EncodingSize size, Register rd, const Operand& operand) {
2612    mvns(al, size, rd, operand);
2613  }
2614
2615  void nop(Condition cond, EncodingSize size);
2616  void nop() { nop(al, Best); }
2617  void nop(Condition cond) { nop(cond, Best); }
2618  void nop(EncodingSize size) { nop(al, size); }
2619
2620  void orn(Condition cond, Register rd, Register rn, const Operand& operand);
2621  void orn(Register rd, Register rn, const Operand& operand) {
2622    orn(al, rd, rn, operand);
2623  }
2624
2625  void orns(Condition cond, Register rd, Register rn, const Operand& operand);
2626  void orns(Register rd, Register rn, const Operand& operand) {
2627    orns(al, rd, rn, operand);
2628  }
2629
2630  void orr(Condition cond,
2631           EncodingSize size,
2632           Register rd,
2633           Register rn,
2634           const Operand& operand);
2635  void orr(Register rd, Register rn, const Operand& operand) {
2636    orr(al, Best, rd, rn, operand);
2637  }
2638  void orr(Condition cond, Register rd, Register rn, const Operand& operand) {
2639    orr(cond, Best, rd, rn, operand);
2640  }
2641  void orr(EncodingSize size,
2642           Register rd,
2643           Register rn,
2644           const Operand& operand) {
2645    orr(al, size, rd, rn, operand);
2646  }
2647
2648  void orrs(Condition cond,
2649            EncodingSize size,
2650            Register rd,
2651            Register rn,
2652            const Operand& operand);
2653  void orrs(Register rd, Register rn, const Operand& operand) {
2654    orrs(al, Best, rd, rn, operand);
2655  }
2656  void orrs(Condition cond, Register rd, Register rn, const Operand& operand) {
2657    orrs(cond, Best, rd, rn, operand);
2658  }
2659  void orrs(EncodingSize size,
2660            Register rd,
2661            Register rn,
2662            const Operand& operand) {
2663    orrs(al, size, rd, rn, operand);
2664  }
2665
2666  void pkhbt(Condition cond, Register rd, Register rn, const Operand& operand);
2667  void pkhbt(Register rd, Register rn, const Operand& operand) {
2668    pkhbt(al, rd, rn, operand);
2669  }
2670
2671  void pkhtb(Condition cond, Register rd, Register rn, const Operand& operand);
2672  void pkhtb(Register rd, Register rn, const Operand& operand) {
2673    pkhtb(al, rd, rn, operand);
2674  }
2675
2676  void pld(Condition cond, Label* label);
2677  void pld(Label* label) { pld(al, label); }
2678
2679  void pld(Condition cond, const MemOperand& operand);
2680  void pld(const MemOperand& operand) { pld(al, operand); }
2681
2682  void pldw(Condition cond, const MemOperand& operand);
2683  void pldw(const MemOperand& operand) { pldw(al, operand); }
2684
2685  void pli(Condition cond, const MemOperand& operand);
2686  void pli(const MemOperand& operand) { pli(al, operand); }
2687
2688  void pli(Condition cond, Label* label);
2689  void pli(Label* label) { pli(al, label); }
2690
2691  void pop(Condition cond, EncodingSize size, RegisterList registers);
2692  void pop(RegisterList registers) { pop(al, Best, registers); }
2693  void pop(Condition cond, RegisterList registers) {
2694    pop(cond, Best, registers);
2695  }
2696  void pop(EncodingSize size, RegisterList registers) {
2697    pop(al, size, registers);
2698  }
2699
2700  void pop(Condition cond, EncodingSize size, Register rt);
2701  void pop(Register rt) { pop(al, Best, rt); }
2702  void pop(Condition cond, Register rt) { pop(cond, Best, rt); }
2703  void pop(EncodingSize size, Register rt) { pop(al, size, rt); }
2704
2705  void push(Condition cond, EncodingSize size, RegisterList registers);
2706  void push(RegisterList registers) { push(al, Best, registers); }
2707  void push(Condition cond, RegisterList registers) {
2708    push(cond, Best, registers);
2709  }
2710  void push(EncodingSize size, RegisterList registers) {
2711    push(al, size, registers);
2712  }
2713
2714  void push(Condition cond, EncodingSize size, Register rt);
2715  void push(Register rt) { push(al, Best, rt); }
2716  void push(Condition cond, Register rt) { push(cond, Best, rt); }
2717  void push(EncodingSize size, Register rt) { push(al, size, rt); }
2718
2719  void qadd(Condition cond, Register rd, Register rm, Register rn);
2720  void qadd(Register rd, Register rm, Register rn) { qadd(al, rd, rm, rn); }
2721
2722  void qadd16(Condition cond, Register rd, Register rn, Register rm);
2723  void qadd16(Register rd, Register rn, Register rm) { qadd16(al, rd, rn, rm); }
2724
2725  void qadd8(Condition cond, Register rd, Register rn, Register rm);
2726  void qadd8(Register rd, Register rn, Register rm) { qadd8(al, rd, rn, rm); }
2727
2728  void qasx(Condition cond, Register rd, Register rn, Register rm);
2729  void qasx(Register rd, Register rn, Register rm) { qasx(al, rd, rn, rm); }
2730
2731  void qdadd(Condition cond, Register rd, Register rm, Register rn);
2732  void qdadd(Register rd, Register rm, Register rn) { qdadd(al, rd, rm, rn); }
2733
2734  void qdsub(Condition cond, Register rd, Register rm, Register rn);
2735  void qdsub(Register rd, Register rm, Register rn) { qdsub(al, rd, rm, rn); }
2736
2737  void qsax(Condition cond, Register rd, Register rn, Register rm);
2738  void qsax(Register rd, Register rn, Register rm) { qsax(al, rd, rn, rm); }
2739
2740  void qsub(Condition cond, Register rd, Register rm, Register rn);
2741  void qsub(Register rd, Register rm, Register rn) { qsub(al, rd, rm, rn); }
2742
2743  void qsub16(Condition cond, Register rd, Register rn, Register rm);
2744  void qsub16(Register rd, Register rn, Register rm) { qsub16(al, rd, rn, rm); }
2745
2746  void qsub8(Condition cond, Register rd, Register rn, Register rm);
2747  void qsub8(Register rd, Register rn, Register rm) { qsub8(al, rd, rn, rm); }
2748
2749  void rbit(Condition cond, Register rd, Register rm);
2750  void rbit(Register rd, Register rm) { rbit(al, rd, rm); }
2751
2752  void rev(Condition cond, EncodingSize size, Register rd, Register rm);
2753  void rev(Register rd, Register rm) { rev(al, Best, rd, rm); }
2754  void rev(Condition cond, Register rd, Register rm) {
2755    rev(cond, Best, rd, rm);
2756  }
2757  void rev(EncodingSize size, Register rd, Register rm) {
2758    rev(al, size, rd, rm);
2759  }
2760
2761  void rev16(Condition cond, EncodingSize size, Register rd, Register rm);
2762  void rev16(Register rd, Register rm) { rev16(al, Best, rd, rm); }
2763  void rev16(Condition cond, Register rd, Register rm) {
2764    rev16(cond, Best, rd, rm);
2765  }
2766  void rev16(EncodingSize size, Register rd, Register rm) {
2767    rev16(al, size, rd, rm);
2768  }
2769
2770  void revsh(Condition cond, EncodingSize size, Register rd, Register rm);
2771  void revsh(Register rd, Register rm) { revsh(al, Best, rd, rm); }
2772  void revsh(Condition cond, Register rd, Register rm) {
2773    revsh(cond, Best, rd, rm);
2774  }
2775  void revsh(EncodingSize size, Register rd, Register rm) {
2776    revsh(al, size, rd, rm);
2777  }
2778
2779  void ror(Condition cond,
2780           EncodingSize size,
2781           Register rd,
2782           Register rm,
2783           const Operand& operand);
2784  void ror(Register rd, Register rm, const Operand& operand) {
2785    ror(al, Best, rd, rm, operand);
2786  }
2787  void ror(Condition cond, Register rd, Register rm, const Operand& operand) {
2788    ror(cond, Best, rd, rm, operand);
2789  }
2790  void ror(EncodingSize size,
2791           Register rd,
2792           Register rm,
2793           const Operand& operand) {
2794    ror(al, size, rd, rm, operand);
2795  }
2796
2797  void rors(Condition cond,
2798            EncodingSize size,
2799            Register rd,
2800            Register rm,
2801            const Operand& operand);
2802  void rors(Register rd, Register rm, const Operand& operand) {
2803    rors(al, Best, rd, rm, operand);
2804  }
2805  void rors(Condition cond, Register rd, Register rm, const Operand& operand) {
2806    rors(cond, Best, rd, rm, operand);
2807  }
2808  void rors(EncodingSize size,
2809            Register rd,
2810            Register rm,
2811            const Operand& operand) {
2812    rors(al, size, rd, rm, operand);
2813  }
2814
2815  void rrx(Condition cond, Register rd, Register rm);
2816  void rrx(Register rd, Register rm) { rrx(al, rd, rm); }
2817
2818  void rrxs(Condition cond, Register rd, Register rm);
2819  void rrxs(Register rd, Register rm) { rrxs(al, rd, rm); }
2820
2821  void rsb(Condition cond,
2822           EncodingSize size,
2823           Register rd,
2824           Register rn,
2825           const Operand& operand);
2826  void rsb(Register rd, Register rn, const Operand& operand) {
2827    rsb(al, Best, rd, rn, operand);
2828  }
2829  void rsb(Condition cond, Register rd, Register rn, const Operand& operand) {
2830    rsb(cond, Best, rd, rn, operand);
2831  }
2832  void rsb(EncodingSize size,
2833           Register rd,
2834           Register rn,
2835           const Operand& operand) {
2836    rsb(al, size, rd, rn, operand);
2837  }
2838
2839  void rsbs(Condition cond,
2840            EncodingSize size,
2841            Register rd,
2842            Register rn,
2843            const Operand& operand);
2844  void rsbs(Register rd, Register rn, const Operand& operand) {
2845    rsbs(al, Best, rd, rn, operand);
2846  }
2847  void rsbs(Condition cond, Register rd, Register rn, const Operand& operand) {
2848    rsbs(cond, Best, rd, rn, operand);
2849  }
2850  void rsbs(EncodingSize size,
2851            Register rd,
2852            Register rn,
2853            const Operand& operand) {
2854    rsbs(al, size, rd, rn, operand);
2855  }
2856
2857  void rsc(Condition cond, Register rd, Register rn, const Operand& operand);
2858  void rsc(Register rd, Register rn, const Operand& operand) {
2859    rsc(al, rd, rn, operand);
2860  }
2861
2862  void rscs(Condition cond, Register rd, Register rn, const Operand& operand);
2863  void rscs(Register rd, Register rn, const Operand& operand) {
2864    rscs(al, rd, rn, operand);
2865  }
2866
2867  void sadd16(Condition cond, Register rd, Register rn, Register rm);
2868  void sadd16(Register rd, Register rn, Register rm) { sadd16(al, rd, rn, rm); }
2869
2870  void sadd8(Condition cond, Register rd, Register rn, Register rm);
2871  void sadd8(Register rd, Register rn, Register rm) { sadd8(al, rd, rn, rm); }
2872
2873  void sasx(Condition cond, Register rd, Register rn, Register rm);
2874  void sasx(Register rd, Register rn, Register rm) { sasx(al, rd, rn, rm); }
2875
2876  void sbc(Condition cond,
2877           EncodingSize size,
2878           Register rd,
2879           Register rn,
2880           const Operand& operand);
2881  void sbc(Register rd, Register rn, const Operand& operand) {
2882    sbc(al, Best, rd, rn, operand);
2883  }
2884  void sbc(Condition cond, Register rd, Register rn, const Operand& operand) {
2885    sbc(cond, Best, rd, rn, operand);
2886  }
2887  void sbc(EncodingSize size,
2888           Register rd,
2889           Register rn,
2890           const Operand& operand) {
2891    sbc(al, size, rd, rn, operand);
2892  }
2893
2894  void sbcs(Condition cond,
2895            EncodingSize size,
2896            Register rd,
2897            Register rn,
2898            const Operand& operand);
2899  void sbcs(Register rd, Register rn, const Operand& operand) {
2900    sbcs(al, Best, rd, rn, operand);
2901  }
2902  void sbcs(Condition cond, Register rd, Register rn, const Operand& operand) {
2903    sbcs(cond, Best, rd, rn, operand);
2904  }
2905  void sbcs(EncodingSize size,
2906            Register rd,
2907            Register rn,
2908            const Operand& operand) {
2909    sbcs(al, size, rd, rn, operand);
2910  }
2911
2912  void sbfx(Condition cond,
2913            Register rd,
2914            Register rn,
2915            uint32_t lsb,
2916            const Operand& operand);
2917  void sbfx(Register rd, Register rn, uint32_t lsb, const Operand& operand) {
2918    sbfx(al, rd, rn, lsb, operand);
2919  }
2920
2921  void sdiv(Condition cond, Register rd, Register rn, Register rm);
2922  void sdiv(Register rd, Register rn, Register rm) { sdiv(al, rd, rn, rm); }
2923
2924  void sel(Condition cond, Register rd, Register rn, Register rm);
2925  void sel(Register rd, Register rn, Register rm) { sel(al, rd, rn, rm); }
2926
2927  void shadd16(Condition cond, Register rd, Register rn, Register rm);
2928  void shadd16(Register rd, Register rn, Register rm) {
2929    shadd16(al, rd, rn, rm);
2930  }
2931
2932  void shadd8(Condition cond, Register rd, Register rn, Register rm);
2933  void shadd8(Register rd, Register rn, Register rm) { shadd8(al, rd, rn, rm); }
2934
2935  void shasx(Condition cond, Register rd, Register rn, Register rm);
2936  void shasx(Register rd, Register rn, Register rm) { shasx(al, rd, rn, rm); }
2937
2938  void shsax(Condition cond, Register rd, Register rn, Register rm);
2939  void shsax(Register rd, Register rn, Register rm) { shsax(al, rd, rn, rm); }
2940
2941  void shsub16(Condition cond, Register rd, Register rn, Register rm);
2942  void shsub16(Register rd, Register rn, Register rm) {
2943    shsub16(al, rd, rn, rm);
2944  }
2945
2946  void shsub8(Condition cond, Register rd, Register rn, Register rm);
2947  void shsub8(Register rd, Register rn, Register rm) { shsub8(al, rd, rn, rm); }
2948
2949  void smlabb(
2950      Condition cond, Register rd, Register rn, Register rm, Register ra);
2951  void smlabb(Register rd, Register rn, Register rm, Register ra) {
2952    smlabb(al, rd, rn, rm, ra);
2953  }
2954
2955  void smlabt(
2956      Condition cond, Register rd, Register rn, Register rm, Register ra);
2957  void smlabt(Register rd, Register rn, Register rm, Register ra) {
2958    smlabt(al, rd, rn, rm, ra);
2959  }
2960
2961  void smlad(
2962      Condition cond, Register rd, Register rn, Register rm, Register ra);
2963  void smlad(Register rd, Register rn, Register rm, Register ra) {
2964    smlad(al, rd, rn, rm, ra);
2965  }
2966
2967  void smladx(
2968      Condition cond, Register rd, Register rn, Register rm, Register ra);
2969  void smladx(Register rd, Register rn, Register rm, Register ra) {
2970    smladx(al, rd, rn, rm, ra);
2971  }
2972
2973  void smlal(
2974      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
2975  void smlal(Register rdlo, Register rdhi, Register rn, Register rm) {
2976    smlal(al, rdlo, rdhi, rn, rm);
2977  }
2978
2979  void smlalbb(
2980      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
2981  void smlalbb(Register rdlo, Register rdhi, Register rn, Register rm) {
2982    smlalbb(al, rdlo, rdhi, rn, rm);
2983  }
2984
2985  void smlalbt(
2986      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
2987  void smlalbt(Register rdlo, Register rdhi, Register rn, Register rm) {
2988    smlalbt(al, rdlo, rdhi, rn, rm);
2989  }
2990
2991  void smlald(
2992      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
2993  void smlald(Register rdlo, Register rdhi, Register rn, Register rm) {
2994    smlald(al, rdlo, rdhi, rn, rm);
2995  }
2996
2997  void smlaldx(
2998      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
2999  void smlaldx(Register rdlo, Register rdhi, Register rn, Register rm) {
3000    smlaldx(al, rdlo, rdhi, rn, rm);
3001  }
3002
3003  void smlals(
3004      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
3005  void smlals(Register rdlo, Register rdhi, Register rn, Register rm) {
3006    smlals(al, rdlo, rdhi, rn, rm);
3007  }
3008
3009  void smlaltb(
3010      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
3011  void smlaltb(Register rdlo, Register rdhi, Register rn, Register rm) {
3012    smlaltb(al, rdlo, rdhi, rn, rm);
3013  }
3014
3015  void smlaltt(
3016      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
3017  void smlaltt(Register rdlo, Register rdhi, Register rn, Register rm) {
3018    smlaltt(al, rdlo, rdhi, rn, rm);
3019  }
3020
3021  void smlatb(
3022      Condition cond, Register rd, Register rn, Register rm, Register ra);
3023  void smlatb(Register rd, Register rn, Register rm, Register ra) {
3024    smlatb(al, rd, rn, rm, ra);
3025  }
3026
3027  void smlatt(
3028      Condition cond, Register rd, Register rn, Register rm, Register ra);
3029  void smlatt(Register rd, Register rn, Register rm, Register ra) {
3030    smlatt(al, rd, rn, rm, ra);
3031  }
3032
3033  void smlawb(
3034      Condition cond, Register rd, Register rn, Register rm, Register ra);
3035  void smlawb(Register rd, Register rn, Register rm, Register ra) {
3036    smlawb(al, rd, rn, rm, ra);
3037  }
3038
3039  void smlawt(
3040      Condition cond, Register rd, Register rn, Register rm, Register ra);
3041  void smlawt(Register rd, Register rn, Register rm, Register ra) {
3042    smlawt(al, rd, rn, rm, ra);
3043  }
3044
3045  void smlsd(
3046      Condition cond, Register rd, Register rn, Register rm, Register ra);
3047  void smlsd(Register rd, Register rn, Register rm, Register ra) {
3048    smlsd(al, rd, rn, rm, ra);
3049  }
3050
3051  void smlsdx(
3052      Condition cond, Register rd, Register rn, Register rm, Register ra);
3053  void smlsdx(Register rd, Register rn, Register rm, Register ra) {
3054    smlsdx(al, rd, rn, rm, ra);
3055  }
3056
3057  void smlsld(
3058      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
3059  void smlsld(Register rdlo, Register rdhi, Register rn, Register rm) {
3060    smlsld(al, rdlo, rdhi, rn, rm);
3061  }
3062
3063  void smlsldx(
3064      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
3065  void smlsldx(Register rdlo, Register rdhi, Register rn, Register rm) {
3066    smlsldx(al, rdlo, rdhi, rn, rm);
3067  }
3068
3069  void smmla(
3070      Condition cond, Register rd, Register rn, Register rm, Register ra);
3071  void smmla(Register rd, Register rn, Register rm, Register ra) {
3072    smmla(al, rd, rn, rm, ra);
3073  }
3074
3075  void smmlar(
3076      Condition cond, Register rd, Register rn, Register rm, Register ra);
3077  void smmlar(Register rd, Register rn, Register rm, Register ra) {
3078    smmlar(al, rd, rn, rm, ra);
3079  }
3080
3081  void smmls(
3082      Condition cond, Register rd, Register rn, Register rm, Register ra);
3083  void smmls(Register rd, Register rn, Register rm, Register ra) {
3084    smmls(al, rd, rn, rm, ra);
3085  }
3086
3087  void smmlsr(
3088      Condition cond, Register rd, Register rn, Register rm, Register ra);
3089  void smmlsr(Register rd, Register rn, Register rm, Register ra) {
3090    smmlsr(al, rd, rn, rm, ra);
3091  }
3092
3093  void smmul(Condition cond, Register rd, Register rn, Register rm);
3094  void smmul(Register rd, Register rn, Register rm) { smmul(al, rd, rn, rm); }
3095
3096  void smmulr(Condition cond, Register rd, Register rn, Register rm);
3097  void smmulr(Register rd, Register rn, Register rm) { smmulr(al, rd, rn, rm); }
3098
3099  void smuad(Condition cond, Register rd, Register rn, Register rm);
3100  void smuad(Register rd, Register rn, Register rm) { smuad(al, rd, rn, rm); }
3101
3102  void smuadx(Condition cond, Register rd, Register rn, Register rm);
3103  void smuadx(Register rd, Register rn, Register rm) { smuadx(al, rd, rn, rm); }
3104
3105  void smulbb(Condition cond, Register rd, Register rn, Register rm);
3106  void smulbb(Register rd, Register rn, Register rm) { smulbb(al, rd, rn, rm); }
3107
3108  void smulbt(Condition cond, Register rd, Register rn, Register rm);
3109  void smulbt(Register rd, Register rn, Register rm) { smulbt(al, rd, rn, rm); }
3110
3111  void smull(
3112      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
3113  void smull(Register rdlo, Register rdhi, Register rn, Register rm) {
3114    smull(al, rdlo, rdhi, rn, rm);
3115  }
3116
3117  void smulls(
3118      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
3119  void smulls(Register rdlo, Register rdhi, Register rn, Register rm) {
3120    smulls(al, rdlo, rdhi, rn, rm);
3121  }
3122
3123  void smultb(Condition cond, Register rd, Register rn, Register rm);
3124  void smultb(Register rd, Register rn, Register rm) { smultb(al, rd, rn, rm); }
3125
3126  void smultt(Condition cond, Register rd, Register rn, Register rm);
3127  void smultt(Register rd, Register rn, Register rm) { smultt(al, rd, rn, rm); }
3128
3129  void smulwb(Condition cond, Register rd, Register rn, Register rm);
3130  void smulwb(Register rd, Register rn, Register rm) { smulwb(al, rd, rn, rm); }
3131
3132  void smulwt(Condition cond, Register rd, Register rn, Register rm);
3133  void smulwt(Register rd, Register rn, Register rm) { smulwt(al, rd, rn, rm); }
3134
3135  void smusd(Condition cond, Register rd, Register rn, Register rm);
3136  void smusd(Register rd, Register rn, Register rm) { smusd(al, rd, rn, rm); }
3137
3138  void smusdx(Condition cond, Register rd, Register rn, Register rm);
3139  void smusdx(Register rd, Register rn, Register rm) { smusdx(al, rd, rn, rm); }
3140
3141  void ssat(Condition cond, Register rd, uint32_t imm, const Operand& operand);
3142  void ssat(Register rd, uint32_t imm, const Operand& operand) {
3143    ssat(al, rd, imm, operand);
3144  }
3145
3146  void ssat16(Condition cond, Register rd, uint32_t imm, Register rn);
3147  void ssat16(Register rd, uint32_t imm, Register rn) {
3148    ssat16(al, rd, imm, rn);
3149  }
3150
3151  void ssax(Condition cond, Register rd, Register rn, Register rm);
3152  void ssax(Register rd, Register rn, Register rm) { ssax(al, rd, rn, rm); }
3153
3154  void ssub16(Condition cond, Register rd, Register rn, Register rm);
3155  void ssub16(Register rd, Register rn, Register rm) { ssub16(al, rd, rn, rm); }
3156
3157  void ssub8(Condition cond, Register rd, Register rn, Register rm);
3158  void ssub8(Register rd, Register rn, Register rm) { ssub8(al, rd, rn, rm); }
3159
3160  void stl(Condition cond, Register rt, const MemOperand& operand);
3161  void stl(Register rt, const MemOperand& operand) { stl(al, rt, operand); }
3162
3163  void stlb(Condition cond, Register rt, const MemOperand& operand);
3164  void stlb(Register rt, const MemOperand& operand) { stlb(al, rt, operand); }
3165
3166  void stlex(Condition cond,
3167             Register rd,
3168             Register rt,
3169             const MemOperand& operand);
3170  void stlex(Register rd, Register rt, const MemOperand& operand) {
3171    stlex(al, rd, rt, operand);
3172  }
3173
3174  void stlexb(Condition cond,
3175              Register rd,
3176              Register rt,
3177              const MemOperand& operand);
3178  void stlexb(Register rd, Register rt, const MemOperand& operand) {
3179    stlexb(al, rd, rt, operand);
3180  }
3181
3182  void stlexd(Condition cond,
3183              Register rd,
3184              Register rt,
3185              Register rt2,
3186              const MemOperand& operand);
3187  void stlexd(Register rd,
3188              Register rt,
3189              Register rt2,
3190              const MemOperand& operand) {
3191    stlexd(al, rd, rt, rt2, operand);
3192  }
3193
3194  void stlexh(Condition cond,
3195              Register rd,
3196              Register rt,
3197              const MemOperand& operand);
3198  void stlexh(Register rd, Register rt, const MemOperand& operand) {
3199    stlexh(al, rd, rt, operand);
3200  }
3201
3202  void stlh(Condition cond, Register rt, const MemOperand& operand);
3203  void stlh(Register rt, const MemOperand& operand) { stlh(al, rt, operand); }
3204
3205  void stm(Condition cond,
3206           EncodingSize size,
3207           Register rn,
3208           WriteBack write_back,
3209           RegisterList registers);
3210  void stm(Register rn, WriteBack write_back, RegisterList registers) {
3211    stm(al, Best, rn, write_back, registers);
3212  }
3213  void stm(Condition cond,
3214           Register rn,
3215           WriteBack write_back,
3216           RegisterList registers) {
3217    stm(cond, Best, rn, write_back, registers);
3218  }
3219  void stm(EncodingSize size,
3220           Register rn,
3221           WriteBack write_back,
3222           RegisterList registers) {
3223    stm(al, size, rn, write_back, registers);
3224  }
3225
3226  void stmda(Condition cond,
3227             Register rn,
3228             WriteBack write_back,
3229             RegisterList registers);
3230  void stmda(Register rn, WriteBack write_back, RegisterList registers) {
3231    stmda(al, rn, write_back, registers);
3232  }
3233
3234  void stmdb(Condition cond,
3235             EncodingSize size,
3236             Register rn,
3237             WriteBack write_back,
3238             RegisterList registers);
3239  void stmdb(Register rn, WriteBack write_back, RegisterList registers) {
3240    stmdb(al, Best, rn, write_back, registers);
3241  }
3242  void stmdb(Condition cond,
3243             Register rn,
3244             WriteBack write_back,
3245             RegisterList registers) {
3246    stmdb(cond, Best, rn, write_back, registers);
3247  }
3248  void stmdb(EncodingSize size,
3249             Register rn,
3250             WriteBack write_back,
3251             RegisterList registers) {
3252    stmdb(al, size, rn, write_back, registers);
3253  }
3254
3255  void stmea(Condition cond,
3256             EncodingSize size,
3257             Register rn,
3258             WriteBack write_back,
3259             RegisterList registers);
3260  void stmea(Register rn, WriteBack write_back, RegisterList registers) {
3261    stmea(al, Best, rn, write_back, registers);
3262  }
3263  void stmea(Condition cond,
3264             Register rn,
3265             WriteBack write_back,
3266             RegisterList registers) {
3267    stmea(cond, Best, rn, write_back, registers);
3268  }
3269  void stmea(EncodingSize size,
3270             Register rn,
3271             WriteBack write_back,
3272             RegisterList registers) {
3273    stmea(al, size, rn, write_back, registers);
3274  }
3275
3276  void stmed(Condition cond,
3277             Register rn,
3278             WriteBack write_back,
3279             RegisterList registers);
3280  void stmed(Register rn, WriteBack write_back, RegisterList registers) {
3281    stmed(al, rn, write_back, registers);
3282  }
3283
3284  void stmfa(Condition cond,
3285             Register rn,
3286             WriteBack write_back,
3287             RegisterList registers);
3288  void stmfa(Register rn, WriteBack write_back, RegisterList registers) {
3289    stmfa(al, rn, write_back, registers);
3290  }
3291
3292  void stmfd(Condition cond,
3293             Register rn,
3294             WriteBack write_back,
3295             RegisterList registers);
3296  void stmfd(Register rn, WriteBack write_back, RegisterList registers) {
3297    stmfd(al, rn, write_back, registers);
3298  }
3299
3300  void stmib(Condition cond,
3301             Register rn,
3302             WriteBack write_back,
3303             RegisterList registers);
3304  void stmib(Register rn, WriteBack write_back, RegisterList registers) {
3305    stmib(al, rn, write_back, registers);
3306  }
3307
3308  void str(Condition cond,
3309           EncodingSize size,
3310           Register rt,
3311           const MemOperand& operand);
3312  void str(Register rt, const MemOperand& operand) {
3313    str(al, Best, rt, operand);
3314  }
3315  void str(Condition cond, Register rt, const MemOperand& operand) {
3316    str(cond, Best, rt, operand);
3317  }
3318  void str(EncodingSize size, Register rt, const MemOperand& operand) {
3319    str(al, size, rt, operand);
3320  }
3321
3322  void strb(Condition cond,
3323            EncodingSize size,
3324            Register rt,
3325            const MemOperand& operand);
3326  void strb(Register rt, const MemOperand& operand) {
3327    strb(al, Best, rt, operand);
3328  }
3329  void strb(Condition cond, Register rt, const MemOperand& operand) {
3330    strb(cond, Best, rt, operand);
3331  }
3332  void strb(EncodingSize size, Register rt, const MemOperand& operand) {
3333    strb(al, size, rt, operand);
3334  }
3335
3336  void strd(Condition cond,
3337            Register rt,
3338            Register rt2,
3339            const MemOperand& operand);
3340  void strd(Register rt, Register rt2, const MemOperand& operand) {
3341    strd(al, rt, rt2, operand);
3342  }
3343
3344  void strex(Condition cond,
3345             Register rd,
3346             Register rt,
3347             const MemOperand& operand);
3348  void strex(Register rd, Register rt, const MemOperand& operand) {
3349    strex(al, rd, rt, operand);
3350  }
3351
3352  void strexb(Condition cond,
3353              Register rd,
3354              Register rt,
3355              const MemOperand& operand);
3356  void strexb(Register rd, Register rt, const MemOperand& operand) {
3357    strexb(al, rd, rt, operand);
3358  }
3359
3360  void strexd(Condition cond,
3361              Register rd,
3362              Register rt,
3363              Register rt2,
3364              const MemOperand& operand);
3365  void strexd(Register rd,
3366              Register rt,
3367              Register rt2,
3368              const MemOperand& operand) {
3369    strexd(al, rd, rt, rt2, operand);
3370  }
3371
3372  void strexh(Condition cond,
3373              Register rd,
3374              Register rt,
3375              const MemOperand& operand);
3376  void strexh(Register rd, Register rt, const MemOperand& operand) {
3377    strexh(al, rd, rt, operand);
3378  }
3379
3380  void strh(Condition cond,
3381            EncodingSize size,
3382            Register rt,
3383            const MemOperand& operand);
3384  void strh(Register rt, const MemOperand& operand) {
3385    strh(al, Best, rt, operand);
3386  }
3387  void strh(Condition cond, Register rt, const MemOperand& operand) {
3388    strh(cond, Best, rt, operand);
3389  }
3390  void strh(EncodingSize size, Register rt, const MemOperand& operand) {
3391    strh(al, size, rt, operand);
3392  }
3393
3394  void sub(Condition cond,
3395           EncodingSize size,
3396           Register rd,
3397           Register rn,
3398           const Operand& operand);
3399  void sub(Register rd, Register rn, const Operand& operand) {
3400    sub(al, Best, rd, rn, operand);
3401  }
3402  void sub(Condition cond, Register rd, Register rn, const Operand& operand) {
3403    sub(cond, Best, rd, rn, operand);
3404  }
3405  void sub(EncodingSize size,
3406           Register rd,
3407           Register rn,
3408           const Operand& operand) {
3409    sub(al, size, rd, rn, operand);
3410  }
3411
3412  void sub(Condition cond, Register rd, const Operand& operand);
3413  void sub(Register rd, const Operand& operand) { sub(al, rd, operand); }
3414
3415  void subs(Condition cond,
3416            EncodingSize size,
3417            Register rd,
3418            Register rn,
3419            const Operand& operand);
3420  void subs(Register rd, Register rn, const Operand& operand) {
3421    subs(al, Best, rd, rn, operand);
3422  }
3423  void subs(Condition cond, Register rd, Register rn, const Operand& operand) {
3424    subs(cond, Best, rd, rn, operand);
3425  }
3426  void subs(EncodingSize size,
3427            Register rd,
3428            Register rn,
3429            const Operand& operand) {
3430    subs(al, size, rd, rn, operand);
3431  }
3432
3433  void subs(Register rd, const Operand& operand);
3434
3435  void subw(Condition cond, Register rd, Register rn, const Operand& operand);
3436  void subw(Register rd, Register rn, const Operand& operand) {
3437    subw(al, rd, rn, operand);
3438  }
3439
3440  void svc(Condition cond, uint32_t imm);
3441  void svc(uint32_t imm) { svc(al, imm); }
3442
3443  void sxtab(Condition cond, Register rd, Register rn, const Operand& operand);
3444  void sxtab(Register rd, Register rn, const Operand& operand) {
3445    sxtab(al, rd, rn, operand);
3446  }
3447
3448  void sxtab16(Condition cond,
3449               Register rd,
3450               Register rn,
3451               const Operand& operand);
3452  void sxtab16(Register rd, Register rn, const Operand& operand) {
3453    sxtab16(al, rd, rn, operand);
3454  }
3455
3456  void sxtah(Condition cond, Register rd, Register rn, const Operand& operand);
3457  void sxtah(Register rd, Register rn, const Operand& operand) {
3458    sxtah(al, rd, rn, operand);
3459  }
3460
3461  void sxtb(Condition cond,
3462            EncodingSize size,
3463            Register rd,
3464            const Operand& operand);
3465  void sxtb(Register rd, const Operand& operand) {
3466    sxtb(al, Best, rd, operand);
3467  }
3468  void sxtb(Condition cond, Register rd, const Operand& operand) {
3469    sxtb(cond, Best, rd, operand);
3470  }
3471  void sxtb(EncodingSize size, Register rd, const Operand& operand) {
3472    sxtb(al, size, rd, operand);
3473  }
3474
3475  void sxtb16(Condition cond, Register rd, const Operand& operand);
3476  void sxtb16(Register rd, const Operand& operand) { sxtb16(al, rd, operand); }
3477
3478  void sxth(Condition cond,
3479            EncodingSize size,
3480            Register rd,
3481            const Operand& operand);
3482  void sxth(Register rd, const Operand& operand) {
3483    sxth(al, Best, rd, operand);
3484  }
3485  void sxth(Condition cond, Register rd, const Operand& operand) {
3486    sxth(cond, Best, rd, operand);
3487  }
3488  void sxth(EncodingSize size, Register rd, const Operand& operand) {
3489    sxth(al, size, rd, operand);
3490  }
3491
3492  void tbb(Condition cond, Register rn, Register rm);
3493  void tbb(Register rn, Register rm) { tbb(al, rn, rm); }
3494
3495  void tbh(Condition cond, Register rn, Register rm);
3496  void tbh(Register rn, Register rm) { tbh(al, rn, rm); }
3497
3498  void teq(Condition cond, Register rn, const Operand& operand);
3499  void teq(Register rn, const Operand& operand) { teq(al, rn, operand); }
3500
3501  void tst(Condition cond,
3502           EncodingSize size,
3503           Register rn,
3504           const Operand& operand);
3505  void tst(Register rn, const Operand& operand) { tst(al, Best, rn, operand); }
3506  void tst(Condition cond, Register rn, const Operand& operand) {
3507    tst(cond, Best, rn, operand);
3508  }
3509  void tst(EncodingSize size, Register rn, const Operand& operand) {
3510    tst(al, size, rn, operand);
3511  }
3512
3513  void uadd16(Condition cond, Register rd, Register rn, Register rm);
3514  void uadd16(Register rd, Register rn, Register rm) { uadd16(al, rd, rn, rm); }
3515
3516  void uadd8(Condition cond, Register rd, Register rn, Register rm);
3517  void uadd8(Register rd, Register rn, Register rm) { uadd8(al, rd, rn, rm); }
3518
3519  void uasx(Condition cond, Register rd, Register rn, Register rm);
3520  void uasx(Register rd, Register rn, Register rm) { uasx(al, rd, rn, rm); }
3521
3522  void ubfx(Condition cond,
3523            Register rd,
3524            Register rn,
3525            uint32_t lsb,
3526            const Operand& operand);
3527  void ubfx(Register rd, Register rn, uint32_t lsb, const Operand& operand) {
3528    ubfx(al, rd, rn, lsb, operand);
3529  }
3530
3531  void udf(Condition cond, EncodingSize size, uint32_t imm);
3532  void udf(uint32_t imm) { udf(al, Best, imm); }
3533  void udf(Condition cond, uint32_t imm) { udf(cond, Best, imm); }
3534  void udf(EncodingSize size, uint32_t imm) { udf(al, size, imm); }
3535
3536  void udiv(Condition cond, Register rd, Register rn, Register rm);
3537  void udiv(Register rd, Register rn, Register rm) { udiv(al, rd, rn, rm); }
3538
3539  void uhadd16(Condition cond, Register rd, Register rn, Register rm);
3540  void uhadd16(Register rd, Register rn, Register rm) {
3541    uhadd16(al, rd, rn, rm);
3542  }
3543
3544  void uhadd8(Condition cond, Register rd, Register rn, Register rm);
3545  void uhadd8(Register rd, Register rn, Register rm) { uhadd8(al, rd, rn, rm); }
3546
3547  void uhasx(Condition cond, Register rd, Register rn, Register rm);
3548  void uhasx(Register rd, Register rn, Register rm) { uhasx(al, rd, rn, rm); }
3549
3550  void uhsax(Condition cond, Register rd, Register rn, Register rm);
3551  void uhsax(Register rd, Register rn, Register rm) { uhsax(al, rd, rn, rm); }
3552
3553  void uhsub16(Condition cond, Register rd, Register rn, Register rm);
3554  void uhsub16(Register rd, Register rn, Register rm) {
3555    uhsub16(al, rd, rn, rm);
3556  }
3557
3558  void uhsub8(Condition cond, Register rd, Register rn, Register rm);
3559  void uhsub8(Register rd, Register rn, Register rm) { uhsub8(al, rd, rn, rm); }
3560
3561  void umaal(
3562      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
3563  void umaal(Register rdlo, Register rdhi, Register rn, Register rm) {
3564    umaal(al, rdlo, rdhi, rn, rm);
3565  }
3566
3567  void umlal(
3568      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
3569  void umlal(Register rdlo, Register rdhi, Register rn, Register rm) {
3570    umlal(al, rdlo, rdhi, rn, rm);
3571  }
3572
3573  void umlals(
3574      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
3575  void umlals(Register rdlo, Register rdhi, Register rn, Register rm) {
3576    umlals(al, rdlo, rdhi, rn, rm);
3577  }
3578
3579  void umull(
3580      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
3581  void umull(Register rdlo, Register rdhi, Register rn, Register rm) {
3582    umull(al, rdlo, rdhi, rn, rm);
3583  }
3584
3585  void umulls(
3586      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
3587  void umulls(Register rdlo, Register rdhi, Register rn, Register rm) {
3588    umulls(al, rdlo, rdhi, rn, rm);
3589  }
3590
3591  void uqadd16(Condition cond, Register rd, Register rn, Register rm);
3592  void uqadd16(Register rd, Register rn, Register rm) {
3593    uqadd16(al, rd, rn, rm);
3594  }
3595
3596  void uqadd8(Condition cond, Register rd, Register rn, Register rm);
3597  void uqadd8(Register rd, Register rn, Register rm) { uqadd8(al, rd, rn, rm); }
3598
3599  void uqasx(Condition cond, Register rd, Register rn, Register rm);
3600  void uqasx(Register rd, Register rn, Register rm) { uqasx(al, rd, rn, rm); }
3601
3602  void uqsax(Condition cond, Register rd, Register rn, Register rm);
3603  void uqsax(Register rd, Register rn, Register rm) { uqsax(al, rd, rn, rm); }
3604
3605  void uqsub16(Condition cond, Register rd, Register rn, Register rm);
3606  void uqsub16(Register rd, Register rn, Register rm) {
3607    uqsub16(al, rd, rn, rm);
3608  }
3609
3610  void uqsub8(Condition cond, Register rd, Register rn, Register rm);
3611  void uqsub8(Register rd, Register rn, Register rm) { uqsub8(al, rd, rn, rm); }
3612
3613  void usad8(Condition cond, Register rd, Register rn, Register rm);
3614  void usad8(Register rd, Register rn, Register rm) { usad8(al, rd, rn, rm); }
3615
3616  void usada8(
3617      Condition cond, Register rd, Register rn, Register rm, Register ra);
3618  void usada8(Register rd, Register rn, Register rm, Register ra) {
3619    usada8(al, rd, rn, rm, ra);
3620  }
3621
3622  void usat(Condition cond, Register rd, uint32_t imm, const Operand& operand);
3623  void usat(Register rd, uint32_t imm, const Operand& operand) {
3624    usat(al, rd, imm, operand);
3625  }
3626
3627  void usat16(Condition cond, Register rd, uint32_t imm, Register rn);
3628  void usat16(Register rd, uint32_t imm, Register rn) {
3629    usat16(al, rd, imm, rn);
3630  }
3631
3632  void usax(Condition cond, Register rd, Register rn, Register rm);
3633  void usax(Register rd, Register rn, Register rm) { usax(al, rd, rn, rm); }
3634
3635  void usub16(Condition cond, Register rd, Register rn, Register rm);
3636  void usub16(Register rd, Register rn, Register rm) { usub16(al, rd, rn, rm); }
3637
3638  void usub8(Condition cond, Register rd, Register rn, Register rm);
3639  void usub8(Register rd, Register rn, Register rm) { usub8(al, rd, rn, rm); }
3640
3641  void uxtab(Condition cond, Register rd, Register rn, const Operand& operand);
3642  void uxtab(Register rd, Register rn, const Operand& operand) {
3643    uxtab(al, rd, rn, operand);
3644  }
3645
3646  void uxtab16(Condition cond,
3647               Register rd,
3648               Register rn,
3649               const Operand& operand);
3650  void uxtab16(Register rd, Register rn, const Operand& operand) {
3651    uxtab16(al, rd, rn, operand);
3652  }
3653
3654  void uxtah(Condition cond, Register rd, Register rn, const Operand& operand);
3655  void uxtah(Register rd, Register rn, const Operand& operand) {
3656    uxtah(al, rd, rn, operand);
3657  }
3658
3659  void uxtb(Condition cond,
3660            EncodingSize size,
3661            Register rd,
3662            const Operand& operand);
3663  void uxtb(Register rd, const Operand& operand) {
3664    uxtb(al, Best, rd, operand);
3665  }
3666  void uxtb(Condition cond, Register rd, const Operand& operand) {
3667    uxtb(cond, Best, rd, operand);
3668  }
3669  void uxtb(EncodingSize size, Register rd, const Operand& operand) {
3670    uxtb(al, size, rd, operand);
3671  }
3672
3673  void uxtb16(Condition cond, Register rd, const Operand& operand);
3674  void uxtb16(Register rd, const Operand& operand) { uxtb16(al, rd, operand); }
3675
3676  void uxth(Condition cond,
3677            EncodingSize size,
3678            Register rd,
3679            const Operand& operand);
3680  void uxth(Register rd, const Operand& operand) {
3681    uxth(al, Best, rd, operand);
3682  }
3683  void uxth(Condition cond, Register rd, const Operand& operand) {
3684    uxth(cond, Best, rd, operand);
3685  }
3686  void uxth(EncodingSize size, Register rd, const Operand& operand) {
3687    uxth(al, size, rd, operand);
3688  }
3689
3690  void vaba(
3691      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
3692  void vaba(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
3693    vaba(al, dt, rd, rn, rm);
3694  }
3695
3696  void vaba(
3697      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
3698  void vaba(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
3699    vaba(al, dt, rd, rn, rm);
3700  }
3701
3702  void vabal(
3703      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
3704  void vabal(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
3705    vabal(al, dt, rd, rn, rm);
3706  }
3707
3708  void vabd(
3709      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
3710  void vabd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
3711    vabd(al, dt, rd, rn, rm);
3712  }
3713
3714  void vabd(
3715      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
3716  void vabd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
3717    vabd(al, dt, rd, rn, rm);
3718  }
3719
3720  void vabdl(
3721      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
3722  void vabdl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
3723    vabdl(al, dt, rd, rn, rm);
3724  }
3725
3726  void vabs(Condition cond, DataType dt, DRegister rd, DRegister rm);
3727  void vabs(DataType dt, DRegister rd, DRegister rm) { vabs(al, dt, rd, rm); }
3728
3729  void vabs(Condition cond, DataType dt, QRegister rd, QRegister rm);
3730  void vabs(DataType dt, QRegister rd, QRegister rm) { vabs(al, dt, rd, rm); }
3731
3732  void vabs(Condition cond, DataType dt, SRegister rd, SRegister rm);
3733  void vabs(DataType dt, SRegister rd, SRegister rm) { vabs(al, dt, rd, rm); }
3734
3735  void vacge(
3736      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
3737  void vacge(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
3738    vacge(al, dt, rd, rn, rm);
3739  }
3740
3741  void vacge(
3742      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
3743  void vacge(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
3744    vacge(al, dt, rd, rn, rm);
3745  }
3746
3747  void vacgt(
3748      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
3749  void vacgt(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
3750    vacgt(al, dt, rd, rn, rm);
3751  }
3752
3753  void vacgt(
3754      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
3755  void vacgt(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
3756    vacgt(al, dt, rd, rn, rm);
3757  }
3758
3759  void vacle(
3760      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
3761  void vacle(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
3762    vacle(al, dt, rd, rn, rm);
3763  }
3764
3765  void vacle(
3766      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
3767  void vacle(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
3768    vacle(al, dt, rd, rn, rm);
3769  }
3770
3771  void vaclt(
3772      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
3773  void vaclt(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
3774    vaclt(al, dt, rd, rn, rm);
3775  }
3776
3777  void vaclt(
3778      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
3779  void vaclt(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
3780    vaclt(al, dt, rd, rn, rm);
3781  }
3782
3783  void vadd(
3784      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
3785  void vadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
3786    vadd(al, dt, rd, rn, rm);
3787  }
3788
3789  void vadd(
3790      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
3791  void vadd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
3792    vadd(al, dt, rd, rn, rm);
3793  }
3794
3795  void vadd(
3796      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
3797  void vadd(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
3798    vadd(al, dt, rd, rn, rm);
3799  }
3800
3801  void vaddhn(
3802      Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
3803  void vaddhn(DataType dt, DRegister rd, QRegister rn, QRegister rm) {
3804    vaddhn(al, dt, rd, rn, rm);
3805  }
3806
3807  void vaddl(
3808      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
3809  void vaddl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
3810    vaddl(al, dt, rd, rn, rm);
3811  }
3812
3813  void vaddw(
3814      Condition cond, DataType dt, QRegister rd, QRegister rn, DRegister rm);
3815  void vaddw(DataType dt, QRegister rd, QRegister rn, DRegister rm) {
3816    vaddw(al, dt, rd, rn, rm);
3817  }
3818
3819  void vand(Condition cond,
3820            DataType dt,
3821            DRegister rd,
3822            DRegister rn,
3823            const DOperand& operand);
3824  void vand(DataType dt, DRegister rd, DRegister rn, const DOperand& operand) {
3825    vand(al, dt, rd, rn, operand);
3826  }
3827
3828  void vand(Condition cond,
3829            DataType dt,
3830            QRegister rd,
3831            QRegister rn,
3832            const QOperand& operand);
3833  void vand(DataType dt, QRegister rd, QRegister rn, const QOperand& operand) {
3834    vand(al, dt, rd, rn, operand);
3835  }
3836
3837  void vbic(Condition cond,
3838            DataType dt,
3839            DRegister rd,
3840            DRegister rn,
3841            const DOperand& operand);
3842  void vbic(DataType dt, DRegister rd, DRegister rn, const DOperand& operand) {
3843    vbic(al, dt, rd, rn, operand);
3844  }
3845
3846  void vbic(Condition cond,
3847            DataType dt,
3848            QRegister rd,
3849            QRegister rn,
3850            const QOperand& operand);
3851  void vbic(DataType dt, QRegister rd, QRegister rn, const QOperand& operand) {
3852    vbic(al, dt, rd, rn, operand);
3853  }
3854
3855  void vbif(
3856      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
3857  void vbif(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
3858    vbif(al, dt, rd, rn, rm);
3859  }
3860  void vbif(DRegister rd, DRegister rn, DRegister rm) {
3861    vbif(al, kDataTypeValueNone, rd, rn, rm);
3862  }
3863  void vbif(Condition cond, DRegister rd, DRegister rn, DRegister rm) {
3864    vbif(cond, kDataTypeValueNone, rd, rn, rm);
3865  }
3866
3867  void vbif(
3868      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
3869  void vbif(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
3870    vbif(al, dt, rd, rn, rm);
3871  }
3872  void vbif(QRegister rd, QRegister rn, QRegister rm) {
3873    vbif(al, kDataTypeValueNone, rd, rn, rm);
3874  }
3875  void vbif(Condition cond, QRegister rd, QRegister rn, QRegister rm) {
3876    vbif(cond, kDataTypeValueNone, rd, rn, rm);
3877  }
3878
3879  void vbit(
3880      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
3881  void vbit(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
3882    vbit(al, dt, rd, rn, rm);
3883  }
3884  void vbit(DRegister rd, DRegister rn, DRegister rm) {
3885    vbit(al, kDataTypeValueNone, rd, rn, rm);
3886  }
3887  void vbit(Condition cond, DRegister rd, DRegister rn, DRegister rm) {
3888    vbit(cond, kDataTypeValueNone, rd, rn, rm);
3889  }
3890
3891  void vbit(
3892      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
3893  void vbit(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
3894    vbit(al, dt, rd, rn, rm);
3895  }
3896  void vbit(QRegister rd, QRegister rn, QRegister rm) {
3897    vbit(al, kDataTypeValueNone, rd, rn, rm);
3898  }
3899  void vbit(Condition cond, QRegister rd, QRegister rn, QRegister rm) {
3900    vbit(cond, kDataTypeValueNone, rd, rn, rm);
3901  }
3902
3903  void vbsl(
3904      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
3905  void vbsl(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
3906    vbsl(al, dt, rd, rn, rm);
3907  }
3908  void vbsl(DRegister rd, DRegister rn, DRegister rm) {
3909    vbsl(al, kDataTypeValueNone, rd, rn, rm);
3910  }
3911  void vbsl(Condition cond, DRegister rd, DRegister rn, DRegister rm) {
3912    vbsl(cond, kDataTypeValueNone, rd, rn, rm);
3913  }
3914
3915  void vbsl(
3916      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
3917  void vbsl(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
3918    vbsl(al, dt, rd, rn, rm);
3919  }
3920  void vbsl(QRegister rd, QRegister rn, QRegister rm) {
3921    vbsl(al, kDataTypeValueNone, rd, rn, rm);
3922  }
3923  void vbsl(Condition cond, QRegister rd, QRegister rn, QRegister rm) {
3924    vbsl(cond, kDataTypeValueNone, rd, rn, rm);
3925  }
3926
3927  void vceq(Condition cond,
3928            DataType dt,
3929            DRegister rd,
3930            DRegister rm,
3931            const DOperand& operand);
3932  void vceq(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
3933    vceq(al, dt, rd, rm, operand);
3934  }
3935
3936  void vceq(Condition cond,
3937            DataType dt,
3938            QRegister rd,
3939            QRegister rm,
3940            const QOperand& operand);
3941  void vceq(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
3942    vceq(al, dt, rd, rm, operand);
3943  }
3944
3945  void vceq(
3946      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
3947  void vceq(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
3948    vceq(al, dt, rd, rn, rm);
3949  }
3950
3951  void vceq(
3952      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
3953  void vceq(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
3954    vceq(al, dt, rd, rn, rm);
3955  }
3956
3957  void vcge(Condition cond,
3958            DataType dt,
3959            DRegister rd,
3960            DRegister rm,
3961            const DOperand& operand);
3962  void vcge(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
3963    vcge(al, dt, rd, rm, operand);
3964  }
3965
3966  void vcge(Condition cond,
3967            DataType dt,
3968            QRegister rd,
3969            QRegister rm,
3970            const QOperand& operand);
3971  void vcge(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
3972    vcge(al, dt, rd, rm, operand);
3973  }
3974
3975  void vcge(
3976      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
3977  void vcge(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
3978    vcge(al, dt, rd, rn, rm);
3979  }
3980
3981  void vcge(
3982      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
3983  void vcge(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
3984    vcge(al, dt, rd, rn, rm);
3985  }
3986
3987  void vcgt(Condition cond,
3988            DataType dt,
3989            DRegister rd,
3990            DRegister rm,
3991            const DOperand& operand);
3992  void vcgt(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
3993    vcgt(al, dt, rd, rm, operand);
3994  }
3995
3996  void vcgt(Condition cond,
3997            DataType dt,
3998            QRegister rd,
3999            QRegister rm,
4000            const QOperand& operand);
4001  void vcgt(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
4002    vcgt(al, dt, rd, rm, operand);
4003  }
4004
4005  void vcgt(
4006      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4007  void vcgt(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4008    vcgt(al, dt, rd, rn, rm);
4009  }
4010
4011  void vcgt(
4012      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
4013  void vcgt(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
4014    vcgt(al, dt, rd, rn, rm);
4015  }
4016
4017  void vcle(Condition cond,
4018            DataType dt,
4019            DRegister rd,
4020            DRegister rm,
4021            const DOperand& operand);
4022  void vcle(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
4023    vcle(al, dt, rd, rm, operand);
4024  }
4025
4026  void vcle(Condition cond,
4027            DataType dt,
4028            QRegister rd,
4029            QRegister rm,
4030            const QOperand& operand);
4031  void vcle(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
4032    vcle(al, dt, rd, rm, operand);
4033  }
4034
4035  void vcle(
4036      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4037  void vcle(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4038    vcle(al, dt, rd, rn, rm);
4039  }
4040
4041  void vcle(
4042      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
4043  void vcle(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
4044    vcle(al, dt, rd, rn, rm);
4045  }
4046
4047  void vcls(Condition cond, DataType dt, DRegister rd, DRegister rm);
4048  void vcls(DataType dt, DRegister rd, DRegister rm) { vcls(al, dt, rd, rm); }
4049
4050  void vcls(Condition cond, DataType dt, QRegister rd, QRegister rm);
4051  void vcls(DataType dt, QRegister rd, QRegister rm) { vcls(al, dt, rd, rm); }
4052
4053  void vclt(Condition cond,
4054            DataType dt,
4055            DRegister rd,
4056            DRegister rm,
4057            const DOperand& operand);
4058  void vclt(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
4059    vclt(al, dt, rd, rm, operand);
4060  }
4061
4062  void vclt(Condition cond,
4063            DataType dt,
4064            QRegister rd,
4065            QRegister rm,
4066            const QOperand& operand);
4067  void vclt(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
4068    vclt(al, dt, rd, rm, operand);
4069  }
4070
4071  void vclt(
4072      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4073  void vclt(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4074    vclt(al, dt, rd, rn, rm);
4075  }
4076
4077  void vclt(
4078      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
4079  void vclt(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
4080    vclt(al, dt, rd, rn, rm);
4081  }
4082
4083  void vclz(Condition cond, DataType dt, DRegister rd, DRegister rm);
4084  void vclz(DataType dt, DRegister rd, DRegister rm) { vclz(al, dt, rd, rm); }
4085
4086  void vclz(Condition cond, DataType dt, QRegister rd, QRegister rm);
4087  void vclz(DataType dt, QRegister rd, QRegister rm) { vclz(al, dt, rd, rm); }
4088
4089  void vcmp(Condition cond, DataType dt, SRegister rd, SRegister rm);
4090  void vcmp(DataType dt, SRegister rd, SRegister rm) { vcmp(al, dt, rd, rm); }
4091
4092  void vcmp(Condition cond, DataType dt, DRegister rd, DRegister rm);
4093  void vcmp(DataType dt, DRegister rd, DRegister rm) { vcmp(al, dt, rd, rm); }
4094
4095  void vcmp(Condition cond, DataType dt, SRegister rd, double imm);
4096  void vcmp(DataType dt, SRegister rd, double imm) { vcmp(al, dt, rd, imm); }
4097
4098  void vcmp(Condition cond, DataType dt, DRegister rd, double imm);
4099  void vcmp(DataType dt, DRegister rd, double imm) { vcmp(al, dt, rd, imm); }
4100
4101  void vcmpe(Condition cond, DataType dt, SRegister rd, SRegister rm);
4102  void vcmpe(DataType dt, SRegister rd, SRegister rm) { vcmpe(al, dt, rd, rm); }
4103
4104  void vcmpe(Condition cond, DataType dt, DRegister rd, DRegister rm);
4105  void vcmpe(DataType dt, DRegister rd, DRegister rm) { vcmpe(al, dt, rd, rm); }
4106
4107  void vcmpe(Condition cond, DataType dt, SRegister rd, double imm);
4108  void vcmpe(DataType dt, SRegister rd, double imm) { vcmpe(al, dt, rd, imm); }
4109
4110  void vcmpe(Condition cond, DataType dt, DRegister rd, double imm);
4111  void vcmpe(DataType dt, DRegister rd, double imm) { vcmpe(al, dt, rd, imm); }
4112
4113  void vcnt(Condition cond, DataType dt, DRegister rd, DRegister rm);
4114  void vcnt(DataType dt, DRegister rd, DRegister rm) { vcnt(al, dt, rd, rm); }
4115
4116  void vcnt(Condition cond, DataType dt, QRegister rd, QRegister rm);
4117  void vcnt(DataType dt, QRegister rd, QRegister rm) { vcnt(al, dt, rd, rm); }
4118
4119  void vcvt(
4120      Condition cond, DataType dt1, DataType dt2, DRegister rd, SRegister rm);
4121  void vcvt(DataType dt1, DataType dt2, DRegister rd, SRegister rm) {
4122    vcvt(al, dt1, dt2, rd, rm);
4123  }
4124
4125  void vcvt(
4126      Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
4127  void vcvt(DataType dt1, DataType dt2, SRegister rd, DRegister rm) {
4128    vcvt(al, dt1, dt2, rd, rm);
4129  }
4130
4131  void vcvt(Condition cond,
4132            DataType dt1,
4133            DataType dt2,
4134            DRegister rd,
4135            DRegister rm,
4136            int32_t fbits);
4137  void vcvt(
4138      DataType dt1, DataType dt2, DRegister rd, DRegister rm, int32_t fbits) {
4139    vcvt(al, dt1, dt2, rd, rm, fbits);
4140  }
4141
4142  void vcvt(Condition cond,
4143            DataType dt1,
4144            DataType dt2,
4145            QRegister rd,
4146            QRegister rm,
4147            int32_t fbits);
4148  void vcvt(
4149      DataType dt1, DataType dt2, QRegister rd, QRegister rm, int32_t fbits) {
4150    vcvt(al, dt1, dt2, rd, rm, fbits);
4151  }
4152
4153  void vcvt(Condition cond,
4154            DataType dt1,
4155            DataType dt2,
4156            SRegister rd,
4157            SRegister rm,
4158            int32_t fbits);
4159  void vcvt(
4160      DataType dt1, DataType dt2, SRegister rd, SRegister rm, int32_t fbits) {
4161    vcvt(al, dt1, dt2, rd, rm, fbits);
4162  }
4163
4164  void vcvt(
4165      Condition cond, DataType dt1, DataType dt2, DRegister rd, DRegister rm);
4166  void vcvt(DataType dt1, DataType dt2, DRegister rd, DRegister rm) {
4167    vcvt(al, dt1, dt2, rd, rm);
4168  }
4169
4170  void vcvt(
4171      Condition cond, DataType dt1, DataType dt2, QRegister rd, QRegister rm);
4172  void vcvt(DataType dt1, DataType dt2, QRegister rd, QRegister rm) {
4173    vcvt(al, dt1, dt2, rd, rm);
4174  }
4175
4176  void vcvt(
4177      Condition cond, DataType dt1, DataType dt2, DRegister rd, QRegister rm);
4178  void vcvt(DataType dt1, DataType dt2, DRegister rd, QRegister rm) {
4179    vcvt(al, dt1, dt2, rd, rm);
4180  }
4181
4182  void vcvt(
4183      Condition cond, DataType dt1, DataType dt2, QRegister rd, DRegister rm);
4184  void vcvt(DataType dt1, DataType dt2, QRegister rd, DRegister rm) {
4185    vcvt(al, dt1, dt2, rd, rm);
4186  }
4187
4188  void vcvt(
4189      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
4190  void vcvt(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
4191    vcvt(al, dt1, dt2, rd, rm);
4192  }
4193
4194  void vcvta(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
4195
4196  void vcvta(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
4197
4198  void vcvta(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
4199
4200  void vcvta(DataType dt1, DataType dt2, SRegister rd, DRegister rm);
4201
4202  void vcvtb(
4203      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
4204  void vcvtb(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
4205    vcvtb(al, dt1, dt2, rd, rm);
4206  }
4207
4208  void vcvtb(
4209      Condition cond, DataType dt1, DataType dt2, DRegister rd, SRegister rm);
4210  void vcvtb(DataType dt1, DataType dt2, DRegister rd, SRegister rm) {
4211    vcvtb(al, dt1, dt2, rd, rm);
4212  }
4213
4214  void vcvtb(
4215      Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
4216  void vcvtb(DataType dt1, DataType dt2, SRegister rd, DRegister rm) {
4217    vcvtb(al, dt1, dt2, rd, rm);
4218  }
4219
4220  void vcvtm(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
4221
4222  void vcvtm(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
4223
4224  void vcvtm(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
4225
4226  void vcvtm(DataType dt1, DataType dt2, SRegister rd, DRegister rm);
4227
4228  void vcvtn(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
4229
4230  void vcvtn(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
4231
4232  void vcvtn(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
4233
4234  void vcvtn(DataType dt1, DataType dt2, SRegister rd, DRegister rm);
4235
4236  void vcvtp(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
4237
4238  void vcvtp(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
4239
4240  void vcvtp(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
4241
4242  void vcvtp(DataType dt1, DataType dt2, SRegister rd, DRegister rm);
4243
4244  void vcvtr(
4245      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
4246  void vcvtr(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
4247    vcvtr(al, dt1, dt2, rd, rm);
4248  }
4249
4250  void vcvtr(
4251      Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
4252  void vcvtr(DataType dt1, DataType dt2, SRegister rd, DRegister rm) {
4253    vcvtr(al, dt1, dt2, rd, rm);
4254  }
4255
4256  void vcvtt(
4257      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
4258  void vcvtt(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
4259    vcvtt(al, dt1, dt2, rd, rm);
4260  }
4261
4262  void vcvtt(
4263      Condition cond, DataType dt1, DataType dt2, DRegister rd, SRegister rm);
4264  void vcvtt(DataType dt1, DataType dt2, DRegister rd, SRegister rm) {
4265    vcvtt(al, dt1, dt2, rd, rm);
4266  }
4267
4268  void vcvtt(
4269      Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
4270  void vcvtt(DataType dt1, DataType dt2, SRegister rd, DRegister rm) {
4271    vcvtt(al, dt1, dt2, rd, rm);
4272  }
4273
4274  void vdiv(
4275      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
4276  void vdiv(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
4277    vdiv(al, dt, rd, rn, rm);
4278  }
4279
4280  void vdiv(
4281      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4282  void vdiv(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4283    vdiv(al, dt, rd, rn, rm);
4284  }
4285
4286  void vdup(Condition cond, DataType dt, QRegister rd, Register rt);
4287  void vdup(DataType dt, QRegister rd, Register rt) { vdup(al, dt, rd, rt); }
4288
4289  void vdup(Condition cond, DataType dt, DRegister rd, Register rt);
4290  void vdup(DataType dt, DRegister rd, Register rt) { vdup(al, dt, rd, rt); }
4291
4292  void vdup(Condition cond, DataType dt, DRegister rd, DRegisterLane rm);
4293  void vdup(DataType dt, DRegister rd, DRegisterLane rm) {
4294    vdup(al, dt, rd, rm);
4295  }
4296
4297  void vdup(Condition cond, DataType dt, QRegister rd, DRegisterLane rm);
4298  void vdup(DataType dt, QRegister rd, DRegisterLane rm) {
4299    vdup(al, dt, rd, rm);
4300  }
4301
4302  void veor(
4303      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4304  void veor(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4305    veor(al, dt, rd, rn, rm);
4306  }
4307  void veor(DRegister rd, DRegister rn, DRegister rm) {
4308    veor(al, kDataTypeValueNone, rd, rn, rm);
4309  }
4310  void veor(Condition cond, DRegister rd, DRegister rn, DRegister rm) {
4311    veor(cond, kDataTypeValueNone, rd, rn, rm);
4312  }
4313
4314  void veor(
4315      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
4316  void veor(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
4317    veor(al, dt, rd, rn, rm);
4318  }
4319  void veor(QRegister rd, QRegister rn, QRegister rm) {
4320    veor(al, kDataTypeValueNone, rd, rn, rm);
4321  }
4322  void veor(Condition cond, QRegister rd, QRegister rn, QRegister rm) {
4323    veor(cond, kDataTypeValueNone, rd, rn, rm);
4324  }
4325
4326  void vext(Condition cond,
4327            DataType dt,
4328            DRegister rd,
4329            DRegister rn,
4330            DRegister rm,
4331            const DOperand& operand);
4332  void vext(DataType dt,
4333            DRegister rd,
4334            DRegister rn,
4335            DRegister rm,
4336            const DOperand& operand) {
4337    vext(al, dt, rd, rn, rm, operand);
4338  }
4339
4340  void vext(Condition cond,
4341            DataType dt,
4342            QRegister rd,
4343            QRegister rn,
4344            QRegister rm,
4345            const QOperand& operand);
4346  void vext(DataType dt,
4347            QRegister rd,
4348            QRegister rn,
4349            QRegister rm,
4350            const QOperand& operand) {
4351    vext(al, dt, rd, rn, rm, operand);
4352  }
4353
4354  void vfma(
4355      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4356  void vfma(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4357    vfma(al, dt, rd, rn, rm);
4358  }
4359
4360  void vfma(
4361      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
4362  void vfma(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
4363    vfma(al, dt, rd, rn, rm);
4364  }
4365
4366  void vfma(
4367      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
4368  void vfma(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
4369    vfma(al, dt, rd, rn, rm);
4370  }
4371
4372  void vfms(
4373      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4374  void vfms(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4375    vfms(al, dt, rd, rn, rm);
4376  }
4377
4378  void vfms(
4379      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
4380  void vfms(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
4381    vfms(al, dt, rd, rn, rm);
4382  }
4383
4384  void vfms(
4385      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
4386  void vfms(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
4387    vfms(al, dt, rd, rn, rm);
4388  }
4389
4390  void vfnma(
4391      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
4392  void vfnma(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
4393    vfnma(al, dt, rd, rn, rm);
4394  }
4395
4396  void vfnma(
4397      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4398  void vfnma(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4399    vfnma(al, dt, rd, rn, rm);
4400  }
4401
4402  void vfnms(
4403      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
4404  void vfnms(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
4405    vfnms(al, dt, rd, rn, rm);
4406  }
4407
4408  void vfnms(
4409      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4410  void vfnms(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4411    vfnms(al, dt, rd, rn, rm);
4412  }
4413
4414  void vhadd(
4415      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4416  void vhadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4417    vhadd(al, dt, rd, rn, rm);
4418  }
4419
4420  void vhadd(
4421      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
4422  void vhadd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
4423    vhadd(al, dt, rd, rn, rm);
4424  }
4425
4426  void vhsub(
4427      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4428  void vhsub(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4429    vhsub(al, dt, rd, rn, rm);
4430  }
4431
4432  void vhsub(
4433      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
4434  void vhsub(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
4435    vhsub(al, dt, rd, rn, rm);
4436  }
4437
4438  void vld1(Condition cond,
4439            DataType dt,
4440            const NeonRegisterList& nreglist,
4441            const AlignedMemOperand& operand);
4442  void vld1(DataType dt,
4443            const NeonRegisterList& nreglist,
4444            const AlignedMemOperand& operand) {
4445    vld1(al, dt, nreglist, operand);
4446  }
4447
4448  void vld2(Condition cond,
4449            DataType dt,
4450            const NeonRegisterList& nreglist,
4451            const AlignedMemOperand& operand);
4452  void vld2(DataType dt,
4453            const NeonRegisterList& nreglist,
4454            const AlignedMemOperand& operand) {
4455    vld2(al, dt, nreglist, operand);
4456  }
4457
4458  void vld3(Condition cond,
4459            DataType dt,
4460            const NeonRegisterList& nreglist,
4461            const AlignedMemOperand& operand);
4462  void vld3(DataType dt,
4463            const NeonRegisterList& nreglist,
4464            const AlignedMemOperand& operand) {
4465    vld3(al, dt, nreglist, operand);
4466  }
4467
4468  void vld3(Condition cond,
4469            DataType dt,
4470            const NeonRegisterList& nreglist,
4471            const MemOperand& operand);
4472  void vld3(DataType dt,
4473            const NeonRegisterList& nreglist,
4474            const MemOperand& operand) {
4475    vld3(al, dt, nreglist, operand);
4476  }
4477
4478  void vld4(Condition cond,
4479            DataType dt,
4480            const NeonRegisterList& nreglist,
4481            const AlignedMemOperand& operand);
4482  void vld4(DataType dt,
4483            const NeonRegisterList& nreglist,
4484            const AlignedMemOperand& operand) {
4485    vld4(al, dt, nreglist, operand);
4486  }
4487
4488  void vldm(Condition cond,
4489            DataType dt,
4490            Register rn,
4491            WriteBack write_back,
4492            DRegisterList dreglist);
4493  void vldm(DataType dt,
4494            Register rn,
4495            WriteBack write_back,
4496            DRegisterList dreglist) {
4497    vldm(al, dt, rn, write_back, dreglist);
4498  }
4499  void vldm(Register rn, WriteBack write_back, DRegisterList dreglist) {
4500    vldm(al, kDataTypeValueNone, rn, write_back, dreglist);
4501  }
4502  void vldm(Condition cond,
4503            Register rn,
4504            WriteBack write_back,
4505            DRegisterList dreglist) {
4506    vldm(cond, kDataTypeValueNone, rn, write_back, dreglist);
4507  }
4508
4509  void vldm(Condition cond,
4510            DataType dt,
4511            Register rn,
4512            WriteBack write_back,
4513            SRegisterList sreglist);
4514  void vldm(DataType dt,
4515            Register rn,
4516            WriteBack write_back,
4517            SRegisterList sreglist) {
4518    vldm(al, dt, rn, write_back, sreglist);
4519  }
4520  void vldm(Register rn, WriteBack write_back, SRegisterList sreglist) {
4521    vldm(al, kDataTypeValueNone, rn, write_back, sreglist);
4522  }
4523  void vldm(Condition cond,
4524            Register rn,
4525            WriteBack write_back,
4526            SRegisterList sreglist) {
4527    vldm(cond, kDataTypeValueNone, rn, write_back, sreglist);
4528  }
4529
4530  void vldmdb(Condition cond,
4531              DataType dt,
4532              Register rn,
4533              WriteBack write_back,
4534              DRegisterList dreglist);
4535  void vldmdb(DataType dt,
4536              Register rn,
4537              WriteBack write_back,
4538              DRegisterList dreglist) {
4539    vldmdb(al, dt, rn, write_back, dreglist);
4540  }
4541  void vldmdb(Register rn, WriteBack write_back, DRegisterList dreglist) {
4542    vldmdb(al, kDataTypeValueNone, rn, write_back, dreglist);
4543  }
4544  void vldmdb(Condition cond,
4545              Register rn,
4546              WriteBack write_back,
4547              DRegisterList dreglist) {
4548    vldmdb(cond, kDataTypeValueNone, rn, write_back, dreglist);
4549  }
4550
4551  void vldmdb(Condition cond,
4552              DataType dt,
4553              Register rn,
4554              WriteBack write_back,
4555              SRegisterList sreglist);
4556  void vldmdb(DataType dt,
4557              Register rn,
4558              WriteBack write_back,
4559              SRegisterList sreglist) {
4560    vldmdb(al, dt, rn, write_back, sreglist);
4561  }
4562  void vldmdb(Register rn, WriteBack write_back, SRegisterList sreglist) {
4563    vldmdb(al, kDataTypeValueNone, rn, write_back, sreglist);
4564  }
4565  void vldmdb(Condition cond,
4566              Register rn,
4567              WriteBack write_back,
4568              SRegisterList sreglist) {
4569    vldmdb(cond, kDataTypeValueNone, rn, write_back, sreglist);
4570  }
4571
4572  void vldmia(Condition cond,
4573              DataType dt,
4574              Register rn,
4575              WriteBack write_back,
4576              DRegisterList dreglist);
4577  void vldmia(DataType dt,
4578              Register rn,
4579              WriteBack write_back,
4580              DRegisterList dreglist) {
4581    vldmia(al, dt, rn, write_back, dreglist);
4582  }
4583  void vldmia(Register rn, WriteBack write_back, DRegisterList dreglist) {
4584    vldmia(al, kDataTypeValueNone, rn, write_back, dreglist);
4585  }
4586  void vldmia(Condition cond,
4587              Register rn,
4588              WriteBack write_back,
4589              DRegisterList dreglist) {
4590    vldmia(cond, kDataTypeValueNone, rn, write_back, dreglist);
4591  }
4592
4593  void vldmia(Condition cond,
4594              DataType dt,
4595              Register rn,
4596              WriteBack write_back,
4597              SRegisterList sreglist);
4598  void vldmia(DataType dt,
4599              Register rn,
4600              WriteBack write_back,
4601              SRegisterList sreglist) {
4602    vldmia(al, dt, rn, write_back, sreglist);
4603  }
4604  void vldmia(Register rn, WriteBack write_back, SRegisterList sreglist) {
4605    vldmia(al, kDataTypeValueNone, rn, write_back, sreglist);
4606  }
4607  void vldmia(Condition cond,
4608              Register rn,
4609              WriteBack write_back,
4610              SRegisterList sreglist) {
4611    vldmia(cond, kDataTypeValueNone, rn, write_back, sreglist);
4612  }
4613
4614  void vldr(Condition cond, DataType dt, DRegister rd, Label* label);
4615  void vldr(DataType dt, DRegister rd, Label* label) {
4616    vldr(al, dt, rd, label);
4617  }
4618  void vldr(DRegister rd, Label* label) { vldr(al, Untyped64, rd, label); }
4619  void vldr(Condition cond, DRegister rd, Label* label) {
4620    vldr(cond, Untyped64, rd, label);
4621  }
4622
4623  void vldr(Condition cond,
4624            DataType dt,
4625            DRegister rd,
4626            const MemOperand& operand);
4627  void vldr(DataType dt, DRegister rd, const MemOperand& operand) {
4628    vldr(al, dt, rd, operand);
4629  }
4630  void vldr(DRegister rd, const MemOperand& operand) {
4631    vldr(al, Untyped64, rd, operand);
4632  }
4633  void vldr(Condition cond, DRegister rd, const MemOperand& operand) {
4634    vldr(cond, Untyped64, rd, operand);
4635  }
4636
4637  void vldr(Condition cond, DataType dt, SRegister rd, Label* label);
4638  void vldr(DataType dt, SRegister rd, Label* label) {
4639    vldr(al, dt, rd, label);
4640  }
4641  void vldr(SRegister rd, Label* label) { vldr(al, Untyped32, rd, label); }
4642  void vldr(Condition cond, SRegister rd, Label* label) {
4643    vldr(cond, Untyped32, rd, label);
4644  }
4645
4646  void vldr(Condition cond,
4647            DataType dt,
4648            SRegister rd,
4649            const MemOperand& operand);
4650  void vldr(DataType dt, SRegister rd, const MemOperand& operand) {
4651    vldr(al, dt, rd, operand);
4652  }
4653  void vldr(SRegister rd, const MemOperand& operand) {
4654    vldr(al, Untyped32, rd, operand);
4655  }
4656  void vldr(Condition cond, SRegister rd, const MemOperand& operand) {
4657    vldr(cond, Untyped32, rd, operand);
4658  }
4659
4660  void vmax(
4661      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4662  void vmax(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4663    vmax(al, dt, rd, rn, rm);
4664  }
4665
4666  void vmax(
4667      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
4668  void vmax(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
4669    vmax(al, dt, rd, rn, rm);
4670  }
4671
4672  void vmaxnm(DataType dt, DRegister rd, DRegister rn, DRegister rm);
4673
4674  void vmaxnm(DataType dt, QRegister rd, QRegister rn, QRegister rm);
4675
4676  void vmaxnm(DataType dt, SRegister rd, SRegister rn, SRegister rm);
4677
4678  void vmin(
4679      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4680  void vmin(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4681    vmin(al, dt, rd, rn, rm);
4682  }
4683
4684  void vmin(
4685      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
4686  void vmin(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
4687    vmin(al, dt, rd, rn, rm);
4688  }
4689
4690  void vminnm(DataType dt, DRegister rd, DRegister rn, DRegister rm);
4691
4692  void vminnm(DataType dt, QRegister rd, QRegister rn, QRegister rm);
4693
4694  void vminnm(DataType dt, SRegister rd, SRegister rn, SRegister rm);
4695
4696  void vmla(Condition cond,
4697            DataType dt,
4698            DRegister rd,
4699            DRegister rn,
4700            DRegisterLane rm);
4701  void vmla(DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
4702    vmla(al, dt, rd, rn, rm);
4703  }
4704
4705  void vmla(Condition cond,
4706            DataType dt,
4707            QRegister rd,
4708            QRegister rn,
4709            DRegisterLane rm);
4710  void vmla(DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
4711    vmla(al, dt, rd, rn, rm);
4712  }
4713
4714  void vmla(
4715      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4716  void vmla(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4717    vmla(al, dt, rd, rn, rm);
4718  }
4719
4720  void vmla(
4721      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
4722  void vmla(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
4723    vmla(al, dt, rd, rn, rm);
4724  }
4725
4726  void vmla(
4727      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
4728  void vmla(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
4729    vmla(al, dt, rd, rn, rm);
4730  }
4731
4732  void vmlal(Condition cond,
4733             DataType dt,
4734             QRegister rd,
4735             DRegister rn,
4736             DRegisterLane rm);
4737  void vmlal(DataType dt, QRegister rd, DRegister rn, DRegisterLane rm) {
4738    vmlal(al, dt, rd, rn, rm);
4739  }
4740
4741  void vmlal(
4742      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
4743  void vmlal(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
4744    vmlal(al, dt, rd, rn, rm);
4745  }
4746
4747  void vmls(Condition cond,
4748            DataType dt,
4749            DRegister rd,
4750            DRegister rn,
4751            DRegisterLane rm);
4752  void vmls(DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
4753    vmls(al, dt, rd, rn, rm);
4754  }
4755
4756  void vmls(Condition cond,
4757            DataType dt,
4758            QRegister rd,
4759            QRegister rn,
4760            DRegisterLane rm);
4761  void vmls(DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
4762    vmls(al, dt, rd, rn, rm);
4763  }
4764
4765  void vmls(
4766      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4767  void vmls(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4768    vmls(al, dt, rd, rn, rm);
4769  }
4770
4771  void vmls(
4772      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
4773  void vmls(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
4774    vmls(al, dt, rd, rn, rm);
4775  }
4776
4777  void vmls(
4778      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
4779  void vmls(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
4780    vmls(al, dt, rd, rn, rm);
4781  }
4782
4783  void vmlsl(Condition cond,
4784             DataType dt,
4785             QRegister rd,
4786             DRegister rn,
4787             DRegisterLane rm);
4788  void vmlsl(DataType dt, QRegister rd, DRegister rn, DRegisterLane rm) {
4789    vmlsl(al, dt, rd, rn, rm);
4790  }
4791
4792  void vmlsl(
4793      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
4794  void vmlsl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
4795    vmlsl(al, dt, rd, rn, rm);
4796  }
4797
4798  void vmov(Condition cond, Register rt, SRegister rn);
4799  void vmov(Register rt, SRegister rn) { vmov(al, rt, rn); }
4800
4801  void vmov(Condition cond, SRegister rn, Register rt);
4802  void vmov(SRegister rn, Register rt) { vmov(al, rn, rt); }
4803
4804  void vmov(Condition cond, Register rt, Register rt2, DRegister rm);
4805  void vmov(Register rt, Register rt2, DRegister rm) { vmov(al, rt, rt2, rm); }
4806
4807  void vmov(Condition cond, DRegister rm, Register rt, Register rt2);
4808  void vmov(DRegister rm, Register rt, Register rt2) { vmov(al, rm, rt, rt2); }
4809
4810  void vmov(
4811      Condition cond, Register rt, Register rt2, SRegister rm, SRegister rm1);
4812  void vmov(Register rt, Register rt2, SRegister rm, SRegister rm1) {
4813    vmov(al, rt, rt2, rm, rm1);
4814  }
4815
4816  void vmov(
4817      Condition cond, SRegister rm, SRegister rm1, Register rt, Register rt2);
4818  void vmov(SRegister rm, SRegister rm1, Register rt, Register rt2) {
4819    vmov(al, rm, rm1, rt, rt2);
4820  }
4821
4822  void vmov(Condition cond, DataType dt, DRegisterLane rd, Register rt);
4823  void vmov(DataType dt, DRegisterLane rd, Register rt) {
4824    vmov(al, dt, rd, rt);
4825  }
4826  void vmov(DRegisterLane rd, Register rt) {
4827    vmov(al, kDataTypeValueNone, rd, rt);
4828  }
4829  void vmov(Condition cond, DRegisterLane rd, Register rt) {
4830    vmov(cond, kDataTypeValueNone, rd, rt);
4831  }
4832
4833  void vmov(Condition cond, DataType dt, DRegister rd, const DOperand& operand);
4834  void vmov(DataType dt, DRegister rd, const DOperand& operand) {
4835    vmov(al, dt, rd, operand);
4836  }
4837
4838  void vmov(Condition cond, DataType dt, QRegister rd, const QOperand& operand);
4839  void vmov(DataType dt, QRegister rd, const QOperand& operand) {
4840    vmov(al, dt, rd, operand);
4841  }
4842
4843  void vmov(Condition cond, DataType dt, SRegister rd, const SOperand& operand);
4844  void vmov(DataType dt, SRegister rd, const SOperand& operand) {
4845    vmov(al, dt, rd, operand);
4846  }
4847
4848  void vmov(Condition cond, DataType dt, Register rt, DRegisterLane rn);
4849  void vmov(DataType dt, Register rt, DRegisterLane rn) {
4850    vmov(al, dt, rt, rn);
4851  }
4852  void vmov(Register rt, DRegisterLane rn) {
4853    vmov(al, kDataTypeValueNone, rt, rn);
4854  }
4855  void vmov(Condition cond, Register rt, DRegisterLane rn) {
4856    vmov(cond, kDataTypeValueNone, rt, rn);
4857  }
4858
4859  void vmovl(Condition cond, DataType dt, QRegister rd, DRegister rm);
4860  void vmovl(DataType dt, QRegister rd, DRegister rm) { vmovl(al, dt, rd, rm); }
4861
4862  void vmovn(Condition cond, DataType dt, DRegister rd, QRegister rm);
4863  void vmovn(DataType dt, DRegister rd, QRegister rm) { vmovn(al, dt, rd, rm); }
4864
4865  void vmrs(Condition cond, RegisterOrAPSR_nzcv rt, SpecialFPRegister spec_reg);
4866  void vmrs(RegisterOrAPSR_nzcv rt, SpecialFPRegister spec_reg) {
4867    vmrs(al, rt, spec_reg);
4868  }
4869
4870  void vmsr(Condition cond, SpecialFPRegister spec_reg, Register rt);
4871  void vmsr(SpecialFPRegister spec_reg, Register rt) { vmsr(al, spec_reg, rt); }
4872
4873  void vmul(Condition cond,
4874            DataType dt,
4875            DRegister rd,
4876            DRegister rn,
4877            DRegister dm,
4878            unsigned index);
4879  void vmul(
4880      DataType dt, DRegister rd, DRegister rn, DRegister dm, unsigned index) {
4881    vmul(al, dt, rd, rn, dm, index);
4882  }
4883
4884  void vmul(Condition cond,
4885            DataType dt,
4886            QRegister rd,
4887            QRegister rn,
4888            DRegister dm,
4889            unsigned index);
4890  void vmul(
4891      DataType dt, QRegister rd, QRegister rn, DRegister dm, unsigned index) {
4892    vmul(al, dt, rd, rn, dm, index);
4893  }
4894
4895  void vmul(
4896      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4897  void vmul(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4898    vmul(al, dt, rd, rn, rm);
4899  }
4900
4901  void vmul(
4902      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
4903  void vmul(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
4904    vmul(al, dt, rd, rn, rm);
4905  }
4906
4907  void vmul(
4908      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
4909  void vmul(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
4910    vmul(al, dt, rd, rn, rm);
4911  }
4912
4913  void vmull(Condition cond,
4914             DataType dt,
4915             QRegister rd,
4916             DRegister rn,
4917             DRegister dm,
4918             unsigned index);
4919  void vmull(
4920      DataType dt, QRegister rd, DRegister rn, DRegister dm, unsigned index) {
4921    vmull(al, dt, rd, rn, dm, index);
4922  }
4923
4924  void vmull(
4925      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
4926  void vmull(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
4927    vmull(al, dt, rd, rn, rm);
4928  }
4929
4930  void vmvn(Condition cond, DataType dt, DRegister rd, const DOperand& operand);
4931  void vmvn(DataType dt, DRegister rd, const DOperand& operand) {
4932    vmvn(al, dt, rd, operand);
4933  }
4934
4935  void vmvn(Condition cond, DataType dt, QRegister rd, const QOperand& operand);
4936  void vmvn(DataType dt, QRegister rd, const QOperand& operand) {
4937    vmvn(al, dt, rd, operand);
4938  }
4939
4940  void vneg(Condition cond, DataType dt, DRegister rd, DRegister rm);
4941  void vneg(DataType dt, DRegister rd, DRegister rm) { vneg(al, dt, rd, rm); }
4942
4943  void vneg(Condition cond, DataType dt, QRegister rd, QRegister rm);
4944  void vneg(DataType dt, QRegister rd, QRegister rm) { vneg(al, dt, rd, rm); }
4945
4946  void vneg(Condition cond, DataType dt, SRegister rd, SRegister rm);
4947  void vneg(DataType dt, SRegister rd, SRegister rm) { vneg(al, dt, rd, rm); }
4948
4949  void vnmla(
4950      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
4951  void vnmla(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
4952    vnmla(al, dt, rd, rn, rm);
4953  }
4954
4955  void vnmla(
4956      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4957  void vnmla(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4958    vnmla(al, dt, rd, rn, rm);
4959  }
4960
4961  void vnmls(
4962      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
4963  void vnmls(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
4964    vnmls(al, dt, rd, rn, rm);
4965  }
4966
4967  void vnmls(
4968      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4969  void vnmls(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4970    vnmls(al, dt, rd, rn, rm);
4971  }
4972
4973  void vnmul(
4974      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
4975  void vnmul(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
4976    vnmul(al, dt, rd, rn, rm);
4977  }
4978
4979  void vnmul(
4980      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
4981  void vnmul(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
4982    vnmul(al, dt, rd, rn, rm);
4983  }
4984
4985  void vorn(Condition cond,
4986            DataType dt,
4987            DRegister rd,
4988            DRegister rn,
4989            const DOperand& operand);
4990  void vorn(DataType dt, DRegister rd, DRegister rn, const DOperand& operand) {
4991    vorn(al, dt, rd, rn, operand);
4992  }
4993
4994  void vorn(Condition cond,
4995            DataType dt,
4996            QRegister rd,
4997            QRegister rn,
4998            const QOperand& operand);
4999  void vorn(DataType dt, QRegister rd, QRegister rn, const QOperand& operand) {
5000    vorn(al, dt, rd, rn, operand);
5001  }
5002
5003  void vorr(Condition cond,
5004            DataType dt,
5005            DRegister rd,
5006            DRegister rn,
5007            const DOperand& operand);
5008  void vorr(DataType dt, DRegister rd, DRegister rn, const DOperand& operand) {
5009    vorr(al, dt, rd, rn, operand);
5010  }
5011  void vorr(DRegister rd, DRegister rn, const DOperand& operand) {
5012    vorr(al, kDataTypeValueNone, rd, rn, operand);
5013  }
5014  void vorr(Condition cond,
5015            DRegister rd,
5016            DRegister rn,
5017            const DOperand& operand) {
5018    vorr(cond, kDataTypeValueNone, rd, rn, operand);
5019  }
5020
5021  void vorr(Condition cond,
5022            DataType dt,
5023            QRegister rd,
5024            QRegister rn,
5025            const QOperand& operand);
5026  void vorr(DataType dt, QRegister rd, QRegister rn, const QOperand& operand) {
5027    vorr(al, dt, rd, rn, operand);
5028  }
5029  void vorr(QRegister rd, QRegister rn, const QOperand& operand) {
5030    vorr(al, kDataTypeValueNone, rd, rn, operand);
5031  }
5032  void vorr(Condition cond,
5033            QRegister rd,
5034            QRegister rn,
5035            const QOperand& operand) {
5036    vorr(cond, kDataTypeValueNone, rd, rn, operand);
5037  }
5038
5039  void vpadal(Condition cond, DataType dt, DRegister rd, DRegister rm);
5040  void vpadal(DataType dt, DRegister rd, DRegister rm) {
5041    vpadal(al, dt, rd, rm);
5042  }
5043
5044  void vpadal(Condition cond, DataType dt, QRegister rd, QRegister rm);
5045  void vpadal(DataType dt, QRegister rd, QRegister rm) {
5046    vpadal(al, dt, rd, rm);
5047  }
5048
5049  void vpadd(
5050      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
5051  void vpadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
5052    vpadd(al, dt, rd, rn, rm);
5053  }
5054
5055  void vpaddl(Condition cond, DataType dt, DRegister rd, DRegister rm);
5056  void vpaddl(DataType dt, DRegister rd, DRegister rm) {
5057    vpaddl(al, dt, rd, rm);
5058  }
5059
5060  void vpaddl(Condition cond, DataType dt, QRegister rd, QRegister rm);
5061  void vpaddl(DataType dt, QRegister rd, QRegister rm) {
5062    vpaddl(al, dt, rd, rm);
5063  }
5064
5065  void vpmax(
5066      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
5067  void vpmax(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
5068    vpmax(al, dt, rd, rn, rm);
5069  }
5070
5071  void vpmin(
5072      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
5073  void vpmin(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
5074    vpmin(al, dt, rd, rn, rm);
5075  }
5076
5077  void vpop(Condition cond, DataType dt, DRegisterList dreglist);
5078  void vpop(DataType dt, DRegisterList dreglist) { vpop(al, dt, dreglist); }
5079  void vpop(DRegisterList dreglist) { vpop(al, kDataTypeValueNone, dreglist); }
5080  void vpop(Condition cond, DRegisterList dreglist) {
5081    vpop(cond, kDataTypeValueNone, dreglist);
5082  }
5083
5084  void vpop(Condition cond, DataType dt, SRegisterList sreglist);
5085  void vpop(DataType dt, SRegisterList sreglist) { vpop(al, dt, sreglist); }
5086  void vpop(SRegisterList sreglist) { vpop(al, kDataTypeValueNone, sreglist); }
5087  void vpop(Condition cond, SRegisterList sreglist) {
5088    vpop(cond, kDataTypeValueNone, sreglist);
5089  }
5090
5091  void vpush(Condition cond, DataType dt, DRegisterList dreglist);
5092  void vpush(DataType dt, DRegisterList dreglist) { vpush(al, dt, dreglist); }
5093  void vpush(DRegisterList dreglist) {
5094    vpush(al, kDataTypeValueNone, dreglist);
5095  }
5096  void vpush(Condition cond, DRegisterList dreglist) {
5097    vpush(cond, kDataTypeValueNone, dreglist);
5098  }
5099
5100  void vpush(Condition cond, DataType dt, SRegisterList sreglist);
5101  void vpush(DataType dt, SRegisterList sreglist) { vpush(al, dt, sreglist); }
5102  void vpush(SRegisterList sreglist) {
5103    vpush(al, kDataTypeValueNone, sreglist);
5104  }
5105  void vpush(Condition cond, SRegisterList sreglist) {
5106    vpush(cond, kDataTypeValueNone, sreglist);
5107  }
5108
5109  void vqabs(Condition cond, DataType dt, DRegister rd, DRegister rm);
5110  void vqabs(DataType dt, DRegister rd, DRegister rm) { vqabs(al, dt, rd, rm); }
5111
5112  void vqabs(Condition cond, DataType dt, QRegister rd, QRegister rm);
5113  void vqabs(DataType dt, QRegister rd, QRegister rm) { vqabs(al, dt, rd, rm); }
5114
5115  void vqadd(
5116      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
5117  void vqadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
5118    vqadd(al, dt, rd, rn, rm);
5119  }
5120
5121  void vqadd(
5122      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
5123  void vqadd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
5124    vqadd(al, dt, rd, rn, rm);
5125  }
5126
5127  void vqdmlal(
5128      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
5129  void vqdmlal(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
5130    vqdmlal(al, dt, rd, rn, rm);
5131  }
5132
5133  void vqdmlal(Condition cond,
5134               DataType dt,
5135               QRegister rd,
5136               DRegister rn,
5137               DRegister dm,
5138               unsigned index);
5139  void vqdmlal(
5140      DataType dt, QRegister rd, DRegister rn, DRegister dm, unsigned index) {
5141    vqdmlal(al, dt, rd, rn, dm, index);
5142  }
5143
5144  void vqdmlsl(
5145      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
5146  void vqdmlsl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
5147    vqdmlsl(al, dt, rd, rn, rm);
5148  }
5149
5150  void vqdmlsl(Condition cond,
5151               DataType dt,
5152               QRegister rd,
5153               DRegister rn,
5154               DRegister dm,
5155               unsigned index);
5156  void vqdmlsl(
5157      DataType dt, QRegister rd, DRegister rn, DRegister dm, unsigned index) {
5158    vqdmlsl(al, dt, rd, rn, dm, index);
5159  }
5160
5161  void vqdmulh(
5162      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
5163  void vqdmulh(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
5164    vqdmulh(al, dt, rd, rn, rm);
5165  }
5166
5167  void vqdmulh(
5168      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
5169  void vqdmulh(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
5170    vqdmulh(al, dt, rd, rn, rm);
5171  }
5172
5173  void vqdmulh(Condition cond,
5174               DataType dt,
5175               DRegister rd,
5176               DRegister rn,
5177               DRegisterLane rm);
5178  void vqdmulh(DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
5179    vqdmulh(al, dt, rd, rn, rm);
5180  }
5181
5182  void vqdmulh(Condition cond,
5183               DataType dt,
5184               QRegister rd,
5185               QRegister rn,
5186               DRegisterLane rm);
5187  void vqdmulh(DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
5188    vqdmulh(al, dt, rd, rn, rm);
5189  }
5190
5191  void vqdmull(
5192      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
5193  void vqdmull(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
5194    vqdmull(al, dt, rd, rn, rm);
5195  }
5196
5197  void vqdmull(Condition cond,
5198               DataType dt,
5199               QRegister rd,
5200               DRegister rn,
5201               DRegisterLane rm);
5202  void vqdmull(DataType dt, QRegister rd, DRegister rn, DRegisterLane rm) {
5203    vqdmull(al, dt, rd, rn, rm);
5204  }
5205
5206  void vqmovn(Condition cond, DataType dt, DRegister rd, QRegister rm);
5207  void vqmovn(DataType dt, DRegister rd, QRegister rm) {
5208    vqmovn(al, dt, rd, rm);
5209  }
5210
5211  void vqmovun(Condition cond, DataType dt, DRegister rd, QRegister rm);
5212  void vqmovun(DataType dt, DRegister rd, QRegister rm) {
5213    vqmovun(al, dt, rd, rm);
5214  }
5215
5216  void vqneg(Condition cond, DataType dt, DRegister rd, DRegister rm);
5217  void vqneg(DataType dt, DRegister rd, DRegister rm) { vqneg(al, dt, rd, rm); }
5218
5219  void vqneg(Condition cond, DataType dt, QRegister rd, QRegister rm);
5220  void vqneg(DataType dt, QRegister rd, QRegister rm) { vqneg(al, dt, rd, rm); }
5221
5222  void vqrdmulh(
5223      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
5224  void vqrdmulh(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
5225    vqrdmulh(al, dt, rd, rn, rm);
5226  }
5227
5228  void vqrdmulh(
5229      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
5230  void vqrdmulh(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
5231    vqrdmulh(al, dt, rd, rn, rm);
5232  }
5233
5234  void vqrdmulh(Condition cond,
5235                DataType dt,
5236                DRegister rd,
5237                DRegister rn,
5238                DRegisterLane rm);
5239  void vqrdmulh(DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
5240    vqrdmulh(al, dt, rd, rn, rm);
5241  }
5242
5243  void vqrdmulh(Condition cond,
5244                DataType dt,
5245                QRegister rd,
5246                QRegister rn,
5247                DRegisterLane rm);
5248  void vqrdmulh(DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
5249    vqrdmulh(al, dt, rd, rn, rm);
5250  }
5251
5252  void vqrshl(
5253      Condition cond, DataType dt, DRegister rd, DRegister rm, DRegister rn);
5254  void vqrshl(DataType dt, DRegister rd, DRegister rm, DRegister rn) {
5255    vqrshl(al, dt, rd, rm, rn);
5256  }
5257
5258  void vqrshl(
5259      Condition cond, DataType dt, QRegister rd, QRegister rm, QRegister rn);
5260  void vqrshl(DataType dt, QRegister rd, QRegister rm, QRegister rn) {
5261    vqrshl(al, dt, rd, rm, rn);
5262  }
5263
5264  void vqrshrn(Condition cond,
5265               DataType dt,
5266               DRegister rd,
5267               QRegister rm,
5268               const QOperand& operand);
5269  void vqrshrn(DataType dt,
5270               DRegister rd,
5271               QRegister rm,
5272               const QOperand& operand) {
5273    vqrshrn(al, dt, rd, rm, operand);
5274  }
5275
5276  void vqrshrun(Condition cond,
5277                DataType dt,
5278                DRegister rd,
5279                QRegister rm,
5280                const QOperand& operand);
5281  void vqrshrun(DataType dt,
5282                DRegister rd,
5283                QRegister rm,
5284                const QOperand& operand) {
5285    vqrshrun(al, dt, rd, rm, operand);
5286  }
5287
5288  void vqshl(Condition cond,
5289             DataType dt,
5290             DRegister rd,
5291             DRegister rm,
5292             const DOperand& operand);
5293  void vqshl(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
5294    vqshl(al, dt, rd, rm, operand);
5295  }
5296
5297  void vqshl(Condition cond,
5298             DataType dt,
5299             QRegister rd,
5300             QRegister rm,
5301             const QOperand& operand);
5302  void vqshl(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
5303    vqshl(al, dt, rd, rm, operand);
5304  }
5305
5306  void vqshlu(Condition cond,
5307              DataType dt,
5308              DRegister rd,
5309              DRegister rm,
5310              const DOperand& operand);
5311  void vqshlu(DataType dt,
5312              DRegister rd,
5313              DRegister rm,
5314              const DOperand& operand) {
5315    vqshlu(al, dt, rd, rm, operand);
5316  }
5317
5318  void vqshlu(Condition cond,
5319              DataType dt,
5320              QRegister rd,
5321              QRegister rm,
5322              const QOperand& operand);
5323  void vqshlu(DataType dt,
5324              QRegister rd,
5325              QRegister rm,
5326              const QOperand& operand) {
5327    vqshlu(al, dt, rd, rm, operand);
5328  }
5329
5330  void vqshrn(Condition cond,
5331              DataType dt,
5332              DRegister rd,
5333              QRegister rm,
5334              const QOperand& operand);
5335  void vqshrn(DataType dt,
5336              DRegister rd,
5337              QRegister rm,
5338              const QOperand& operand) {
5339    vqshrn(al, dt, rd, rm, operand);
5340  }
5341
5342  void vqshrun(Condition cond,
5343               DataType dt,
5344               DRegister rd,
5345               QRegister rm,
5346               const QOperand& operand);
5347  void vqshrun(DataType dt,
5348               DRegister rd,
5349               QRegister rm,
5350               const QOperand& operand) {
5351    vqshrun(al, dt, rd, rm, operand);
5352  }
5353
5354  void vqsub(
5355      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
5356  void vqsub(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
5357    vqsub(al, dt, rd, rn, rm);
5358  }
5359
5360  void vqsub(
5361      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
5362  void vqsub(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
5363    vqsub(al, dt, rd, rn, rm);
5364  }
5365
5366  void vraddhn(
5367      Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
5368  void vraddhn(DataType dt, DRegister rd, QRegister rn, QRegister rm) {
5369    vraddhn(al, dt, rd, rn, rm);
5370  }
5371
5372  void vrecpe(Condition cond, DataType dt, DRegister rd, DRegister rm);
5373  void vrecpe(DataType dt, DRegister rd, DRegister rm) {
5374    vrecpe(al, dt, rd, rm);
5375  }
5376
5377  void vrecpe(Condition cond, DataType dt, QRegister rd, QRegister rm);
5378  void vrecpe(DataType dt, QRegister rd, QRegister rm) {
5379    vrecpe(al, dt, rd, rm);
5380  }
5381
5382  void vrecps(
5383      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
5384  void vrecps(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
5385    vrecps(al, dt, rd, rn, rm);
5386  }
5387
5388  void vrecps(
5389      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
5390  void vrecps(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
5391    vrecps(al, dt, rd, rn, rm);
5392  }
5393
5394  void vrev16(Condition cond, DataType dt, DRegister rd, DRegister rm);
5395  void vrev16(DataType dt, DRegister rd, DRegister rm) {
5396    vrev16(al, dt, rd, rm);
5397  }
5398
5399  void vrev16(Condition cond, DataType dt, QRegister rd, QRegister rm);
5400  void vrev16(DataType dt, QRegister rd, QRegister rm) {
5401    vrev16(al, dt, rd, rm);
5402  }
5403
5404  void vrev32(Condition cond, DataType dt, DRegister rd, DRegister rm);
5405  void vrev32(DataType dt, DRegister rd, DRegister rm) {
5406    vrev32(al, dt, rd, rm);
5407  }
5408
5409  void vrev32(Condition cond, DataType dt, QRegister rd, QRegister rm);
5410  void vrev32(DataType dt, QRegister rd, QRegister rm) {
5411    vrev32(al, dt, rd, rm);
5412  }
5413
5414  void vrev64(Condition cond, DataType dt, DRegister rd, DRegister rm);
5415  void vrev64(DataType dt, DRegister rd, DRegister rm) {
5416    vrev64(al, dt, rd, rm);
5417  }
5418
5419  void vrev64(Condition cond, DataType dt, QRegister rd, QRegister rm);
5420  void vrev64(DataType dt, QRegister rd, QRegister rm) {
5421    vrev64(al, dt, rd, rm);
5422  }
5423
5424  void vrhadd(
5425      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
5426  void vrhadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
5427    vrhadd(al, dt, rd, rn, rm);
5428  }
5429
5430  void vrhadd(
5431      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
5432  void vrhadd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
5433    vrhadd(al, dt, rd, rn, rm);
5434  }
5435
5436  void vrinta(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
5437
5438  void vrinta(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
5439
5440  void vrinta(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
5441
5442  void vrintm(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
5443
5444  void vrintm(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
5445
5446  void vrintm(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
5447
5448  void vrintn(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
5449
5450  void vrintn(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
5451
5452  void vrintn(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
5453
5454  void vrintp(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
5455
5456  void vrintp(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
5457
5458  void vrintp(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
5459
5460  void vrintr(
5461      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
5462  void vrintr(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
5463    vrintr(al, dt1, dt2, rd, rm);
5464  }
5465
5466  void vrintr(
5467      Condition cond, DataType dt1, DataType dt2, DRegister rd, DRegister rm);
5468  void vrintr(DataType dt1, DataType dt2, DRegister rd, DRegister rm) {
5469    vrintr(al, dt1, dt2, rd, rm);
5470  }
5471
5472  void vrintx(
5473      Condition cond, DataType dt1, DataType dt2, DRegister rd, DRegister rm);
5474  void vrintx(DataType dt1, DataType dt2, DRegister rd, DRegister rm) {
5475    vrintx(al, dt1, dt2, rd, rm);
5476  }
5477
5478  void vrintx(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
5479
5480  void vrintx(
5481      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
5482  void vrintx(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
5483    vrintx(al, dt1, dt2, rd, rm);
5484  }
5485
5486  void vrintz(
5487      Condition cond, DataType dt1, DataType dt2, DRegister rd, DRegister rm);
5488  void vrintz(DataType dt1, DataType dt2, DRegister rd, DRegister rm) {
5489    vrintz(al, dt1, dt2, rd, rm);
5490  }
5491
5492  void vrintz(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
5493
5494  void vrintz(
5495      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
5496  void vrintz(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
5497    vrintz(al, dt1, dt2, rd, rm);
5498  }
5499
5500  void vrshl(
5501      Condition cond, DataType dt, DRegister rd, DRegister rm, DRegister rn);
5502  void vrshl(DataType dt, DRegister rd, DRegister rm, DRegister rn) {
5503    vrshl(al, dt, rd, rm, rn);
5504  }
5505
5506  void vrshl(
5507      Condition cond, DataType dt, QRegister rd, QRegister rm, QRegister rn);
5508  void vrshl(DataType dt, QRegister rd, QRegister rm, QRegister rn) {
5509    vrshl(al, dt, rd, rm, rn);
5510  }
5511
5512  void vrshr(Condition cond,
5513             DataType dt,
5514             DRegister rd,
5515             DRegister rm,
5516             const DOperand& operand);
5517  void vrshr(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
5518    vrshr(al, dt, rd, rm, operand);
5519  }
5520
5521  void vrshr(Condition cond,
5522             DataType dt,
5523             QRegister rd,
5524             QRegister rm,
5525             const QOperand& operand);
5526  void vrshr(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
5527    vrshr(al, dt, rd, rm, operand);
5528  }
5529
5530  void vrshrn(Condition cond,
5531              DataType dt,
5532              DRegister rd,
5533              QRegister rm,
5534              const QOperand& operand);
5535  void vrshrn(DataType dt,
5536              DRegister rd,
5537              QRegister rm,
5538              const QOperand& operand) {
5539    vrshrn(al, dt, rd, rm, operand);
5540  }
5541
5542  void vrsqrte(Condition cond, DataType dt, DRegister rd, DRegister rm);
5543  void vrsqrte(DataType dt, DRegister rd, DRegister rm) {
5544    vrsqrte(al, dt, rd, rm);
5545  }
5546
5547  void vrsqrte(Condition cond, DataType dt, QRegister rd, QRegister rm);
5548  void vrsqrte(DataType dt, QRegister rd, QRegister rm) {
5549    vrsqrte(al, dt, rd, rm);
5550  }
5551
5552  void vrsqrts(
5553      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
5554  void vrsqrts(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
5555    vrsqrts(al, dt, rd, rn, rm);
5556  }
5557
5558  void vrsqrts(
5559      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
5560  void vrsqrts(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
5561    vrsqrts(al, dt, rd, rn, rm);
5562  }
5563
5564  void vrsra(Condition cond,
5565             DataType dt,
5566             DRegister rd,
5567             DRegister rm,
5568             const DOperand& operand);
5569  void vrsra(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
5570    vrsra(al, dt, rd, rm, operand);
5571  }
5572
5573  void vrsra(Condition cond,
5574             DataType dt,
5575             QRegister rd,
5576             QRegister rm,
5577             const QOperand& operand);
5578  void vrsra(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
5579    vrsra(al, dt, rd, rm, operand);
5580  }
5581
5582  void vrsubhn(
5583      Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
5584  void vrsubhn(DataType dt, DRegister rd, QRegister rn, QRegister rm) {
5585    vrsubhn(al, dt, rd, rn, rm);
5586  }
5587
5588  void vseleq(DataType dt, DRegister rd, DRegister rn, DRegister rm);
5589
5590  void vseleq(DataType dt, SRegister rd, SRegister rn, SRegister rm);
5591
5592  void vselge(DataType dt, DRegister rd, DRegister rn, DRegister rm);
5593
5594  void vselge(DataType dt, SRegister rd, SRegister rn, SRegister rm);
5595
5596  void vselgt(DataType dt, DRegister rd, DRegister rn, DRegister rm);
5597
5598  void vselgt(DataType dt, SRegister rd, SRegister rn, SRegister rm);
5599
5600  void vselvs(DataType dt, DRegister rd, DRegister rn, DRegister rm);
5601
5602  void vselvs(DataType dt, SRegister rd, SRegister rn, SRegister rm);
5603
5604  void vshl(Condition cond,
5605            DataType dt,
5606            DRegister rd,
5607            DRegister rm,
5608            const DOperand& operand);
5609  void vshl(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
5610    vshl(al, dt, rd, rm, operand);
5611  }
5612
5613  void vshl(Condition cond,
5614            DataType dt,
5615            QRegister rd,
5616            QRegister rm,
5617            const QOperand& operand);
5618  void vshl(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
5619    vshl(al, dt, rd, rm, operand);
5620  }
5621
5622  void vshll(Condition cond,
5623             DataType dt,
5624             QRegister rd,
5625             DRegister rm,
5626             const DOperand& operand);
5627  void vshll(DataType dt, QRegister rd, DRegister rm, const DOperand& operand) {
5628    vshll(al, dt, rd, rm, operand);
5629  }
5630
5631  void vshr(Condition cond,
5632            DataType dt,
5633            DRegister rd,
5634            DRegister rm,
5635            const DOperand& operand);
5636  void vshr(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
5637    vshr(al, dt, rd, rm, operand);
5638  }
5639
5640  void vshr(Condition cond,
5641            DataType dt,
5642            QRegister rd,
5643            QRegister rm,
5644            const QOperand& operand);
5645  void vshr(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
5646    vshr(al, dt, rd, rm, operand);
5647  }
5648
5649  void vshrn(Condition cond,
5650             DataType dt,
5651             DRegister rd,
5652             QRegister rm,
5653             const QOperand& operand);
5654  void vshrn(DataType dt, DRegister rd, QRegister rm, const QOperand& operand) {
5655    vshrn(al, dt, rd, rm, operand);
5656  }
5657
5658  void vsli(Condition cond,
5659            DataType dt,
5660            DRegister rd,
5661            DRegister rm,
5662            const DOperand& operand);
5663  void vsli(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
5664    vsli(al, dt, rd, rm, operand);
5665  }
5666
5667  void vsli(Condition cond,
5668            DataType dt,
5669            QRegister rd,
5670            QRegister rm,
5671            const QOperand& operand);
5672  void vsli(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
5673    vsli(al, dt, rd, rm, operand);
5674  }
5675
5676  void vsqrt(Condition cond, DataType dt, SRegister rd, SRegister rm);
5677  void vsqrt(DataType dt, SRegister rd, SRegister rm) { vsqrt(al, dt, rd, rm); }
5678
5679  void vsqrt(Condition cond, DataType dt, DRegister rd, DRegister rm);
5680  void vsqrt(DataType dt, DRegister rd, DRegister rm) { vsqrt(al, dt, rd, rm); }
5681
5682  void vsra(Condition cond,
5683            DataType dt,
5684            DRegister rd,
5685            DRegister rm,
5686            const DOperand& operand);
5687  void vsra(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
5688    vsra(al, dt, rd, rm, operand);
5689  }
5690
5691  void vsra(Condition cond,
5692            DataType dt,
5693            QRegister rd,
5694            QRegister rm,
5695            const QOperand& operand);
5696  void vsra(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
5697    vsra(al, dt, rd, rm, operand);
5698  }
5699
5700  void vsri(Condition cond,
5701            DataType dt,
5702            DRegister rd,
5703            DRegister rm,
5704            const DOperand& operand);
5705  void vsri(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
5706    vsri(al, dt, rd, rm, operand);
5707  }
5708
5709  void vsri(Condition cond,
5710            DataType dt,
5711            QRegister rd,
5712            QRegister rm,
5713            const QOperand& operand);
5714  void vsri(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
5715    vsri(al, dt, rd, rm, operand);
5716  }
5717
5718  void vst1(Condition cond,
5719            DataType dt,
5720            const NeonRegisterList& nreglist,
5721            const AlignedMemOperand& operand);
5722  void vst1(DataType dt,
5723            const NeonRegisterList& nreglist,
5724            const AlignedMemOperand& operand) {
5725    vst1(al, dt, nreglist, operand);
5726  }
5727
5728  void vst2(Condition cond,
5729            DataType dt,
5730            const NeonRegisterList& nreglist,
5731            const AlignedMemOperand& operand);
5732  void vst2(DataType dt,
5733            const NeonRegisterList& nreglist,
5734            const AlignedMemOperand& operand) {
5735    vst2(al, dt, nreglist, operand);
5736  }
5737
5738  void vst3(Condition cond,
5739            DataType dt,
5740            const NeonRegisterList& nreglist,
5741            const AlignedMemOperand& operand);
5742  void vst3(DataType dt,
5743            const NeonRegisterList& nreglist,
5744            const AlignedMemOperand& operand) {
5745    vst3(al, dt, nreglist, operand);
5746  }
5747
5748  void vst3(Condition cond,
5749            DataType dt,
5750            const NeonRegisterList& nreglist,
5751            const MemOperand& operand);
5752  void vst3(DataType dt,
5753            const NeonRegisterList& nreglist,
5754            const MemOperand& operand) {
5755    vst3(al, dt, nreglist, operand);
5756  }
5757
5758  void vst4(Condition cond,
5759            DataType dt,
5760            const NeonRegisterList& nreglist,
5761            const AlignedMemOperand& operand);
5762  void vst4(DataType dt,
5763            const NeonRegisterList& nreglist,
5764            const AlignedMemOperand& operand) {
5765    vst4(al, dt, nreglist, operand);
5766  }
5767
5768  void vstm(Condition cond,
5769            DataType dt,
5770            Register rn,
5771            WriteBack write_back,
5772            DRegisterList dreglist);
5773  void vstm(DataType dt,
5774            Register rn,
5775            WriteBack write_back,
5776            DRegisterList dreglist) {
5777    vstm(al, dt, rn, write_back, dreglist);
5778  }
5779  void vstm(Register rn, WriteBack write_back, DRegisterList dreglist) {
5780    vstm(al, kDataTypeValueNone, rn, write_back, dreglist);
5781  }
5782  void vstm(Condition cond,
5783            Register rn,
5784            WriteBack write_back,
5785            DRegisterList dreglist) {
5786    vstm(cond, kDataTypeValueNone, rn, write_back, dreglist);
5787  }
5788
5789  void vstm(Condition cond,
5790            DataType dt,
5791            Register rn,
5792            WriteBack write_back,
5793            SRegisterList sreglist);
5794  void vstm(DataType dt,
5795            Register rn,
5796            WriteBack write_back,
5797            SRegisterList sreglist) {
5798    vstm(al, dt, rn, write_back, sreglist);
5799  }
5800  void vstm(Register rn, WriteBack write_back, SRegisterList sreglist) {
5801    vstm(al, kDataTypeValueNone, rn, write_back, sreglist);
5802  }
5803  void vstm(Condition cond,
5804            Register rn,
5805            WriteBack write_back,
5806            SRegisterList sreglist) {
5807    vstm(cond, kDataTypeValueNone, rn, write_back, sreglist);
5808  }
5809
5810  void vstmdb(Condition cond,
5811              DataType dt,
5812              Register rn,
5813              WriteBack write_back,
5814              DRegisterList dreglist);
5815  void vstmdb(DataType dt,
5816              Register rn,
5817              WriteBack write_back,
5818              DRegisterList dreglist) {
5819    vstmdb(al, dt, rn, write_back, dreglist);
5820  }
5821  void vstmdb(Register rn, WriteBack write_back, DRegisterList dreglist) {
5822    vstmdb(al, kDataTypeValueNone, rn, write_back, dreglist);
5823  }
5824  void vstmdb(Condition cond,
5825              Register rn,
5826              WriteBack write_back,
5827              DRegisterList dreglist) {
5828    vstmdb(cond, kDataTypeValueNone, rn, write_back, dreglist);
5829  }
5830
5831  void vstmdb(Condition cond,
5832              DataType dt,
5833              Register rn,
5834              WriteBack write_back,
5835              SRegisterList sreglist);
5836  void vstmdb(DataType dt,
5837              Register rn,
5838              WriteBack write_back,
5839              SRegisterList sreglist) {
5840    vstmdb(al, dt, rn, write_back, sreglist);
5841  }
5842  void vstmdb(Register rn, WriteBack write_back, SRegisterList sreglist) {
5843    vstmdb(al, kDataTypeValueNone, rn, write_back, sreglist);
5844  }
5845  void vstmdb(Condition cond,
5846              Register rn,
5847              WriteBack write_back,
5848              SRegisterList sreglist) {
5849    vstmdb(cond, kDataTypeValueNone, rn, write_back, sreglist);
5850  }
5851
5852  void vstmia(Condition cond,
5853              DataType dt,
5854              Register rn,
5855              WriteBack write_back,
5856              DRegisterList dreglist);
5857  void vstmia(DataType dt,
5858              Register rn,
5859              WriteBack write_back,
5860              DRegisterList dreglist) {
5861    vstmia(al, dt, rn, write_back, dreglist);
5862  }
5863  void vstmia(Register rn, WriteBack write_back, DRegisterList dreglist) {
5864    vstmia(al, kDataTypeValueNone, rn, write_back, dreglist);
5865  }
5866  void vstmia(Condition cond,
5867              Register rn,
5868              WriteBack write_back,
5869              DRegisterList dreglist) {
5870    vstmia(cond, kDataTypeValueNone, rn, write_back, dreglist);
5871  }
5872
5873  void vstmia(Condition cond,
5874              DataType dt,
5875              Register rn,
5876              WriteBack write_back,
5877              SRegisterList sreglist);
5878  void vstmia(DataType dt,
5879              Register rn,
5880              WriteBack write_back,
5881              SRegisterList sreglist) {
5882    vstmia(al, dt, rn, write_back, sreglist);
5883  }
5884  void vstmia(Register rn, WriteBack write_back, SRegisterList sreglist) {
5885    vstmia(al, kDataTypeValueNone, rn, write_back, sreglist);
5886  }
5887  void vstmia(Condition cond,
5888              Register rn,
5889              WriteBack write_back,
5890              SRegisterList sreglist) {
5891    vstmia(cond, kDataTypeValueNone, rn, write_back, sreglist);
5892  }
5893
5894  void vstr(Condition cond,
5895            DataType dt,
5896            DRegister rd,
5897            const MemOperand& operand);
5898  void vstr(DataType dt, DRegister rd, const MemOperand& operand) {
5899    vstr(al, dt, rd, operand);
5900  }
5901  void vstr(DRegister rd, const MemOperand& operand) {
5902    vstr(al, Untyped64, rd, operand);
5903  }
5904  void vstr(Condition cond, DRegister rd, const MemOperand& operand) {
5905    vstr(cond, Untyped64, rd, operand);
5906  }
5907
5908  void vstr(Condition cond,
5909            DataType dt,
5910            SRegister rd,
5911            const MemOperand& operand);
5912  void vstr(DataType dt, SRegister rd, const MemOperand& operand) {
5913    vstr(al, dt, rd, operand);
5914  }
5915  void vstr(SRegister rd, const MemOperand& operand) {
5916    vstr(al, Untyped32, rd, operand);
5917  }
5918  void vstr(Condition cond, SRegister rd, const MemOperand& operand) {
5919    vstr(cond, Untyped32, rd, operand);
5920  }
5921
5922  void vsub(
5923      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
5924  void vsub(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
5925    vsub(al, dt, rd, rn, rm);
5926  }
5927
5928  void vsub(
5929      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
5930  void vsub(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
5931    vsub(al, dt, rd, rn, rm);
5932  }
5933
5934  void vsub(
5935      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
5936  void vsub(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
5937    vsub(al, dt, rd, rn, rm);
5938  }
5939
5940  void vsubhn(
5941      Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
5942  void vsubhn(DataType dt, DRegister rd, QRegister rn, QRegister rm) {
5943    vsubhn(al, dt, rd, rn, rm);
5944  }
5945
5946  void vsubl(
5947      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
5948  void vsubl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
5949    vsubl(al, dt, rd, rn, rm);
5950  }
5951
5952  void vsubw(
5953      Condition cond, DataType dt, QRegister rd, QRegister rn, DRegister rm);
5954  void vsubw(DataType dt, QRegister rd, QRegister rn, DRegister rm) {
5955    vsubw(al, dt, rd, rn, rm);
5956  }
5957
5958  void vswp(Condition cond, DataType dt, DRegister rd, DRegister rm);
5959  void vswp(DataType dt, DRegister rd, DRegister rm) { vswp(al, dt, rd, rm); }
5960  void vswp(DRegister rd, DRegister rm) {
5961    vswp(al, kDataTypeValueNone, rd, rm);
5962  }
5963  void vswp(Condition cond, DRegister rd, DRegister rm) {
5964    vswp(cond, kDataTypeValueNone, rd, rm);
5965  }
5966
5967  void vswp(Condition cond, DataType dt, QRegister rd, QRegister rm);
5968  void vswp(DataType dt, QRegister rd, QRegister rm) { vswp(al, dt, rd, rm); }
5969  void vswp(QRegister rd, QRegister rm) {
5970    vswp(al, kDataTypeValueNone, rd, rm);
5971  }
5972  void vswp(Condition cond, QRegister rd, QRegister rm) {
5973    vswp(cond, kDataTypeValueNone, rd, rm);
5974  }
5975
5976  void vtbl(Condition cond,
5977            DataType dt,
5978            DRegister rd,
5979            const NeonRegisterList& nreglist,
5980            DRegister rm);
5981  void vtbl(DataType dt,
5982            DRegister rd,
5983            const NeonRegisterList& nreglist,
5984            DRegister rm) {
5985    vtbl(al, dt, rd, nreglist, rm);
5986  }
5987
5988  void vtbx(Condition cond,
5989            DataType dt,
5990            DRegister rd,
5991            const NeonRegisterList& nreglist,
5992            DRegister rm);
5993  void vtbx(DataType dt,
5994            DRegister rd,
5995            const NeonRegisterList& nreglist,
5996            DRegister rm) {
5997    vtbx(al, dt, rd, nreglist, rm);
5998  }
5999
6000  void vtrn(Condition cond, DataType dt, DRegister rd, DRegister rm);
6001  void vtrn(DataType dt, DRegister rd, DRegister rm) { vtrn(al, dt, rd, rm); }
6002
6003  void vtrn(Condition cond, DataType dt, QRegister rd, QRegister rm);
6004  void vtrn(DataType dt, QRegister rd, QRegister rm) { vtrn(al, dt, rd, rm); }
6005
6006  void vtst(
6007      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
6008  void vtst(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
6009    vtst(al, dt, rd, rn, rm);
6010  }
6011
6012  void vtst(
6013      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
6014  void vtst(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
6015    vtst(al, dt, rd, rn, rm);
6016  }
6017
6018  void vuzp(Condition cond, DataType dt, DRegister rd, DRegister rm);
6019  void vuzp(DataType dt, DRegister rd, DRegister rm) { vuzp(al, dt, rd, rm); }
6020
6021  void vuzp(Condition cond, DataType dt, QRegister rd, QRegister rm);
6022  void vuzp(DataType dt, QRegister rd, QRegister rm) { vuzp(al, dt, rd, rm); }
6023
6024  void vzip(Condition cond, DataType dt, DRegister rd, DRegister rm);
6025  void vzip(DataType dt, DRegister rd, DRegister rm) { vzip(al, dt, rd, rm); }
6026
6027  void vzip(Condition cond, DataType dt, QRegister rd, QRegister rm);
6028  void vzip(DataType dt, QRegister rd, QRegister rm) { vzip(al, dt, rd, rm); }
6029
6030  void yield(Condition cond, EncodingSize size);
6031  void yield() { yield(al, Best); }
6032  void yield(Condition cond) { yield(cond, Best); }
6033  void yield(EncodingSize size) { yield(al, size); }
6034  // End of generated code.
6035  virtual void UnimplementedDelegate(InstructionType /*type*/) {
6036    VIXL_ABORT_WITH_MSG("Unimplemented delegate\n");
6037  }
6038  virtual bool AllowUnpredictable() {
6039    VIXL_ABORT_WITH_MSG("Unpredictable instruction\n");
6040    return false;
6041  }
6042  virtual bool AllowStronglyDiscouraged() {
6043    VIXL_ABORT_WITH_MSG(
6044        "ARM strongly recommends to not use this instruction\n");
6045    return false;
6046  }
6047};
6048
6049}  // namespace aarch32
6050}  // namespace vixl
6051
6052#endif  // VIXL_AARCH32_ASSEMBLER_AARCH32_H_
6053