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