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