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