1b78f13911bfe6eda303e91ef215c87a165aae8aeAlexandre Rames// Copyright 2015, VIXL authors
288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// All rights reserved.
388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois//
488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// Redistribution and use in source and binary forms, with or without
588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// modification, are permitted provided that the following conditions are met:
688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois//
788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois//   * Redistributions of source code must retain the above copyright notice,
888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois//     this list of conditions and the following disclaimer.
988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois//   * Redistributions in binary form must reproduce the above copyright notice,
1088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois//     this list of conditions and the following disclaimer in the documentation
1188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois//     and/or other materials provided with the distribution.
1288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois//   * Neither the name of ARM Limited nor the names of its contributors may be
1388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois//     used to endorse or promote products derived from this software without
1488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois//     specific prior written permission.
1588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois//
1688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
1788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
2088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
2388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
27d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#ifndef VIXL_AARCH32_ASSEMBLER_AARCH32_H_
28d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#define VIXL_AARCH32_ASSEMBLER_AARCH32_H_
2988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
30919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames#include "assembler-base-vixl.h"
31bf01e787b9ca4ff28b8c4d4355fd575c4ac81dfaAnton Kirilov
32bf01e787b9ca4ff28b8c4d4355fd575c4ac81dfaAnton Kirilov#include "aarch32/instructions-aarch32.h"
33d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/label-aarch32.h"
3488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
3588c46b84df005638546de5e4e965bdcc31352f48Pierre Langloisnamespace vixl {
3688c46b84df005638546de5e4e965bdcc31352f48Pierre Langloisnamespace aarch32 {
3788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
38919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Ramesclass Assembler : public internal::AssemblerBase {
3910dae1a549308bddc1931f29754d6a4459f70c9bJacob Bramley  InstructionSet isa_;
4088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  Condition first_condition_;
4188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  uint16_t it_mask_;
4288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  bool has_32_dregs_;
43d17e348e16bf0d6eca4f9ea0e935c7544098d045Vincent Belliard  bool allow_unpredictable_;
44d17e348e16bf0d6eca4f9ea0e935c7544098d045Vincent Belliard  bool allow_strongly_discouraged_;
4588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
4688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois protected:
4788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void EmitT32_16(uint16_t instr);
4888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void EmitT32_32(uint32_t instr);
4988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void EmitA32(uint32_t instr);
5088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  // Check that the condition of the current instruction is consistent with the
5188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  // IT state.
5288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void CheckIT(Condition condition) {
5388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#ifdef VIXL_DEBUG
5488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    PerformCheckIT(condition);
5588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#else
5688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    USE(condition);
5788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#endif
5888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
5988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#ifdef VIXL_DEBUG
6088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void PerformCheckIT(Condition condition);
6188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#endif
6288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void AdvanceIT() { it_mask_ = (it_mask_ << 1) & 0xf; }
63e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard  void BindHelper(Label* label);
64e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard  void PlaceHelper(RawLiteral* literal) {
65e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard    BindHelper(literal);
66e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard    GetBuffer()->EmitData(literal->GetDataAddress(), literal->GetSize());
67e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard  }
68e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard  uint32_t Link(uint32_t instr,
69e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard                Label* label,
70e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard                const Label::LabelEmitOperator& op);
7188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
7288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois public:
730cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois  class AllowUnpredictableScope {
740cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois    Assembler* assembler_;
750cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois    bool old_;
760cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois
770cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois   public:
780cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois    explicit AllowUnpredictableScope(Assembler* assembler)
790cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois        : assembler_(assembler), old_(assembler->allow_unpredictable_) {
800cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois      assembler_->allow_unpredictable_ = true;
810cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois    }
820cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois    ~AllowUnpredictableScope() { assembler_->allow_unpredictable_ = old_; }
830cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois  };
840cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois  class AllowStronglyDiscouragedScope {
850cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois    Assembler* assembler_;
860cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois    bool old_;
870cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois
880cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois   public:
890cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois    explicit AllowStronglyDiscouragedScope(Assembler* assembler)
900cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois        : assembler_(assembler), old_(assembler->allow_strongly_discouraged_) {
910cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois      assembler_->allow_strongly_discouraged_ = true;
920cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois    }
930cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois    ~AllowStronglyDiscouragedScope() {
940cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois      assembler_->allow_strongly_discouraged_ = old_;
950cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois    }
960cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois  };
970cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois
989a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta  explicit Assembler(InstructionSet isa = kDefaultISA)
998885c17bce593f82cf90c086da242e52943c50efVincent Belliard      : isa_(isa),
1008885c17bce593f82cf90c086da242e52943c50efVincent Belliard        first_condition_(al),
1018885c17bce593f82cf90c086da242e52943c50efVincent Belliard        it_mask_(0),
1028885c17bce593f82cf90c086da242e52943c50efVincent Belliard        has_32_dregs_(true),
103d17e348e16bf0d6eca4f9ea0e935c7544098d045Vincent Belliard        allow_unpredictable_(false),
1049a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta        allow_strongly_discouraged_(false) {
1059a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#if defined(VIXL_INCLUDE_TARGET_A32_ONLY)
1069a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta    // Avoid compiler warning.
1079a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta    USE(isa_);
1089a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta    VIXL_ASSERT(isa == A32);
1099a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#elif defined(VIXL_INCLUDE_TARGET_T32_ONLY)
1109a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta    USE(isa_);
1119a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta    VIXL_ASSERT(isa == T32);
1129a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#endif
1139a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta  }
1149a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta  explicit Assembler(size_t capacity, InstructionSet isa = kDefaultISA)
115919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames      : AssemblerBase(capacity),
116919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames        isa_(isa),
11788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois        first_condition_(al),
11888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois        it_mask_(0),
11988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois        has_32_dregs_(true),
120d17e348e16bf0d6eca4f9ea0e935c7544098d045Vincent Belliard        allow_unpredictable_(false),
1219a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta        allow_strongly_discouraged_(false) {
1229a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#if defined(VIXL_INCLUDE_TARGET_A32_ONLY)
1239a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta    VIXL_ASSERT(isa == A32);
1249a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#elif defined(VIXL_INCLUDE_TARGET_T32_ONLY)
1259a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta    VIXL_ASSERT(isa == T32);
1269a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#endif
1279a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta  }
1289a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta  Assembler(byte* buffer, size_t capacity, InstructionSet isa = kDefaultISA)
129919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames      : AssemblerBase(buffer, capacity),
130919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames        isa_(isa),
13188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois        first_condition_(al),
13288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois        it_mask_(0),
13388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois        has_32_dregs_(true),
134d17e348e16bf0d6eca4f9ea0e935c7544098d045Vincent Belliard        allow_unpredictable_(false),
1359a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta        allow_strongly_discouraged_(false) {
1369a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#if defined(VIXL_INCLUDE_TARGET_A32_ONLY)
1379a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta    VIXL_ASSERT(isa == A32);
1389a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#elif defined(VIXL_INCLUDE_TARGET_T32_ONLY)
1399a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta    VIXL_ASSERT(isa == T32);
1409a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#endif
1419a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta  }
14288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual ~Assembler() {}
1439a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta
14410dae1a549308bddc1931f29754d6a4459f70c9bJacob Bramley  void UseInstructionSet(InstructionSet isa) {
1459a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#if defined(VIXL_INCLUDE_TARGET_A32_ONLY)
1469a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta    USE(isa);
1479a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta    VIXL_ASSERT(isa == A32);
1489a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#elif defined(VIXL_INCLUDE_TARGET_T32_ONLY)
1499a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta    USE(isa);
1509a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta    VIXL_ASSERT(isa == T32);
1519a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#else
15210dae1a549308bddc1931f29754d6a4459f70c9bJacob Bramley    VIXL_ASSERT((isa_ == isa) || (GetCursorOffset() == 0));
15310dae1a549308bddc1931f29754d6a4459f70c9bJacob Bramley    isa_ = isa;
1549a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#endif
15588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
1569a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta
1579a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#if defined(VIXL_INCLUDE_TARGET_A32_ONLY)
1589a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta  InstructionSet GetInstructionSetInUse() const { return A32; }
1599a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#elif defined(VIXL_INCLUDE_TARGET_T32_ONLY)
1609a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta  InstructionSet GetInstructionSetInUse() const { return T32; }
1619a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#else
16210dae1a549308bddc1931f29754d6a4459f70c9bJacob Bramley  InstructionSet GetInstructionSetInUse() const { return isa_; }
1639a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#endif
1649a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta
16510dae1a549308bddc1931f29754d6a4459f70c9bJacob Bramley  void UseT32() { UseInstructionSet(T32); }
16610dae1a549308bddc1931f29754d6a4459f70c9bJacob Bramley  void UseA32() { UseInstructionSet(A32); }
16710dae1a549308bddc1931f29754d6a4459f70c9bJacob Bramley  bool IsUsingT32() const { return GetInstructionSetInUse() == T32; }
16810dae1a549308bddc1931f29754d6a4459f70c9bJacob Bramley  bool IsUsingA32() const { return GetInstructionSetInUse() == A32; }
1699a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta
17088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void SetIT(Condition first_condition, uint16_t it_mask) {
17188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    VIXL_ASSERT(it_mask_ == 0);
17288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    first_condition_ = first_condition;
17388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    it_mask_ = it_mask;
17488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
17588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  bool Is16BitEncoding(uint16_t instr) const {
17610dae1a549308bddc1931f29754d6a4459f70c9bJacob Bramley    VIXL_ASSERT(IsUsingT32());
17788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    return instr < 0xe800;
17888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
17988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  bool InITBlock() { return it_mask_ != 0; }
18088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  bool OutsideITBlock() { return it_mask_ == 0; }
18188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  bool OutsideITBlockOrLast() { return (it_mask_ == 0) || (it_mask_ == 0x8); }
18288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  bool OutsideITBlockAndAlOrLast(Condition cond) {
18388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    return ((it_mask_ == 0) && cond.Is(al)) || (it_mask_ == 0x8);
18488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
18588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void CheckNotIT() { VIXL_ASSERT(it_mask_ == 0); }
18688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  bool Has32DRegs() const { return has_32_dregs_; }
18788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void SetHas32DRegs(bool has_32_dregs) { has_32_dregs_ = has_32_dregs; }
18888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
189f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois  int32_t GetCursorOffset() const {
190f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois    ptrdiff_t offset = buffer_.GetCursorOffset();
191f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois    VIXL_ASSERT(IsInt32(offset));
192f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois    return static_cast<int32_t>(offset);
193f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois  }
194f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois
195f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois  uint32_t GetArchitectureStatePCOffset() const { return IsUsingT32() ? 4 : 8; }
196e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard  void bind(Label* label) {
197e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard    VIXL_ASSERT(AllowAssembler());
198e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard    BindHelper(label);
199e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard  }
20088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void place(RawLiteral* literal) {
201e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard    VIXL_ASSERT(AllowAssembler());
202000f93f0af01f9a3f250ad8fb8cd7a42e7b31c99Baptiste Afsa    VIXL_ASSERT(literal->IsManuallyPlaced());
203e42218c6ca969b7d4032da978fb05f06641df100Vincent Belliard    PlaceHelper(literal);
20488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
20588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
20688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  size_t GetSizeOfCodeGeneratedSince(Label* label) const {
20788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    VIXL_ASSERT(label->IsBound());
20888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    return buffer_.GetOffsetFrom(label->GetLocation());
20988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
21088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
2117827144797ee5ebfa0b574f45ad8ff235f919304Vincent Belliard  void EncodeLabelFor(const Label::ForwardReference& forward, Label* label);
2127827144797ee5ebfa0b574f45ad8ff235f919304Vincent Belliard
21388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  // Helpers for it instruction.
21488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void it(Condition cond) { it(cond, 0x8); }
21588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void itt(Condition cond) { it(cond, 0x4); }
21688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ite(Condition cond) { it(cond, 0xc); }
21788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ittt(Condition cond) { it(cond, 0x2); }
21888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void itet(Condition cond) { it(cond, 0xa); }
21988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void itte(Condition cond) { it(cond, 0x6); }
22088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void itee(Condition cond) { it(cond, 0xe); }
22188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void itttt(Condition cond) { it(cond, 0x1); }
22288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void itett(Condition cond) { it(cond, 0x9); }
22388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ittet(Condition cond) { it(cond, 0x5); }
22488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void iteet(Condition cond) { it(cond, 0xd); }
22588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ittte(Condition cond) { it(cond, 0x3); }
22688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void itete(Condition cond) { it(cond, 0xb); }
22788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ittee(Condition cond) { it(cond, 0x7); }
22888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void iteee(Condition cond) { it(cond, 0xf); }
22988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
23088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  // Start of generated code.
23188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSizeRROp)(Condition cond,
23288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     EncodingSize size,
23388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     Register rd,
23488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     Register rn,
23588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     const Operand& operand);
23688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondROp)(Condition cond,
23788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Register rd,
23888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                const Operand& operand);
23988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionROp)(Register rd,
24088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                            const Operand& operand);
24188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRROp)(Condition cond,
24288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 Register rd,
24388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 Register rn,
24488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 const Operand& operand);
24588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSizeRL)(Condition cond,
24688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   EncodingSize size,
24788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   Register rd,
24888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   Label* label);
24988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSizeL)(Condition cond,
25088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  EncodingSize size,
25188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  Label* label);
25288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRIOp)(Condition cond,
25388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 Register rd,
25488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 uint32_t lsb,
25588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 const Operand& operand);
25688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRRIOp)(Condition cond,
25788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  Register rd,
25888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  Register rn,
25988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  uint32_t lsb,
26088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  const Operand& operand);
26188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondI)(Condition cond, uint32_t imm);
26288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondL)(Condition cond, Label* label);
26388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondR)(Condition cond, Register rm);
26488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionRL)(Register rn, Label* label);
26588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCond)(Condition cond);
26688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRR)(Condition cond,
26788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               Register rd,
26888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               Register rm);
26988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSizeROp)(Condition cond,
27088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    EncodingSize size,
27188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    Register rn,
27288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    const Operand& operand);
27388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRRR)(Condition cond,
27488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Register rd,
27588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Register rn,
27688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Register rm);
27788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondBa)(Condition cond,
27888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               MemoryBarrier option);
27988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRwbDrl)(Condition cond,
28088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   Register rn,
28188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   WriteBack write_back,
28288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegisterList dreglist);
28388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRMop)(Condition cond,
28488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 Register rt,
28588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 const MemOperand& operand);
28688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRRMop)(Condition cond,
28788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  Register rt,
28888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  Register rt2,
28988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  const MemOperand& operand);
29088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSizeRwbRl)(Condition cond,
29188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                      EncodingSize size,
29288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                      Register rn,
29388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                      WriteBack write_back,
29488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                      RegisterList registers);
29588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRwbRl)(Condition cond,
29688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  Register rn,
29788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  WriteBack write_back,
29888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  RegisterList registers);
29988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSizeRMop)(Condition cond,
30088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     EncodingSize size,
30188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     Register rt,
30288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     const MemOperand& operand);
30388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRL)(Condition cond,
30488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               Register rt,
30588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               Label* label);
30688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRRL)(Condition cond,
30788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Register rt,
30888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Register rt2,
30988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Label* label);
31088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRRRR)(
31188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
31288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRSr)(Condition cond,
31388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Register rd,
31488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                SpecialRegister spec_reg);
31588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondMsrOp)(
31688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, MaskedSpecialRegister spec_reg, const Operand& operand);
31788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSizeRRR)(
31888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, EncodingSize size, Register rd, Register rn, Register rm);
31988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSize)(Condition cond,
32088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 EncodingSize size);
32188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondMop)(Condition cond,
32288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                const MemOperand& operand);
32388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSizeRl)(Condition cond,
32488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   EncodingSize size,
32588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   RegisterList registers);
32688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSizeOrl)(Condition cond,
32788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    EncodingSize size,
32888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    Register rt);
32988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSizeRR)(Condition cond,
33088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   EncodingSize size,
33188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   Register rd,
33288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   Register rm);
33388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionDtQQQ)(DataType dt,
33488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                              QRegister rd,
33588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                              QRegister rn,
33688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                              QRegister rm);
33788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRIR)(Condition cond,
33888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Register rd,
33988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                uint32_t imm,
34088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Register rn);
34188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRRRMop)(Condition cond,
34288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   Register rd,
34388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   Register rt,
34488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   Register rt2,
34588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   const MemOperand& operand);
34688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSizeI)(Condition cond,
34788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  EncodingSize size,
34888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  uint32_t imm);
34988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDDD)(
35088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
35188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQQQ)(
35288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
35388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQDD)(
35488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
35588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDD)(Condition cond,
35688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DataType dt,
35788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DRegister rd,
35888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DRegister rm);
35988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQQ)(Condition cond,
36088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DataType dt,
36188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 QRegister rd,
36288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 QRegister rm);
36388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtSS)(Condition cond,
36488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DataType dt,
36588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 SRegister rd,
36688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 SRegister rm);
36788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtSSS)(
36888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
36988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDQQ)(
37088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
37188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQQD)(
37288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, DRegister rm);
37388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDDDop)(Condition cond,
37488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    DataType dt,
37588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    DRegister rd,
37688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    DRegister rn,
37788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    const DOperand& operand);
37888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQQQop)(Condition cond,
37988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    DataType dt,
38088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    QRegister rd,
38188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    QRegister rn,
38288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    const QOperand& operand);
38388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtSFi)(Condition cond,
38488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DataType dt,
38588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  SRegister rd,
38688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  double imm);
38788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDFi)(Condition cond,
38888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DataType dt,
38988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DRegister rd,
39088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  double imm);
39188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDtDS)(
39288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, DRegister rd, SRegister rm);
39388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDtSD)(
39488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
39588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDtDDSi)(Condition cond,
39688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DataType dt1,
39788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DataType dt2,
39888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DRegister rd,
39988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DRegister rm,
40088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     int32_t fbits);
40188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDtQQSi)(Condition cond,
40288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DataType dt1,
40388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DataType dt2,
40488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     QRegister rd,
40588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     QRegister rm,
40688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     int32_t fbits);
40788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDtSSSi)(Condition cond,
40888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DataType dt1,
40988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DataType dt2,
41088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     SRegister rd,
41188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     SRegister rm,
41288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     int32_t fbits);
41388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDtDD)(
41488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, DRegister rd, DRegister rm);
41588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDtQQ)(
41688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, QRegister rd, QRegister rm);
41788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDtDQ)(
41888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, DRegister rd, QRegister rm);
41988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDtQD)(
42088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, QRegister rd, DRegister rm);
42188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDtSS)(
42288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
42388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionDtDtDD)(DataType dt1,
42488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               DataType dt2,
42588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               DRegister rd,
42688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               DRegister rm);
42788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionDtDtQQ)(DataType dt1,
42888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               DataType dt2,
42988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               QRegister rd,
43088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               QRegister rm);
43188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionDtDtSS)(DataType dt1,
43288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               DataType dt2,
43388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               SRegister rd,
43488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               SRegister rm);
43588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionDtDtSD)(DataType dt1,
43688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               DataType dt2,
43788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               SRegister rd,
43888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               DRegister rm);
43988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQR)(Condition cond,
44088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DataType dt,
44188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 QRegister rd,
44288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 Register rt);
44388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDR)(Condition cond,
44488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DataType dt,
44588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DRegister rd,
44688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 Register rt);
44788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDDx)(Condition cond,
44888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DataType dt,
44988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DRegister rd,
45088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DRegisterLane rm);
45188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQDx)(Condition cond,
45288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DataType dt,
45388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  QRegister rd,
45488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DRegisterLane rm);
45588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDDDDop)(Condition cond,
45688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DataType dt,
45788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DRegister rd,
45888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DRegister rn,
45988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DRegister rm,
46088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     const DOperand& operand);
46188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQQQQop)(Condition cond,
46288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DataType dt,
46388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     QRegister rd,
46488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     QRegister rn,
46588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     QRegister rm,
46688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     const QOperand& operand);
46788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtNrlAmop)(
46888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond,
46988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      DataType dt,
47088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      const NeonRegisterList& nreglist,
47188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      const AlignedMemOperand& operand);
47288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtNrlMop)(
47388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond,
47488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      DataType dt,
47588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      const NeonRegisterList& nreglist,
47688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      const MemOperand& operand);
47788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtRwbDrl)(Condition cond,
47888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DataType dt,
47988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     Register rn,
48088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     WriteBack write_back,
48188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DRegisterList dreglist);
48288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtRwbSrl)(Condition cond,
48388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     DataType dt,
48488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     Register rn,
48588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     WriteBack write_back,
48688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                     SRegisterList sreglist);
48788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDL)(Condition cond,
48888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DataType dt,
48988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DRegister rd,
49088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 Label* label);
49188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDMop)(Condition cond,
49288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DataType dt,
49388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegister rd,
49488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   const MemOperand& operand);
49588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtSL)(Condition cond,
49688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DataType dt,
49788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 SRegister rd,
49888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 Label* label);
49988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtSMop)(Condition cond,
50088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DataType dt,
50188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   SRegister rd,
50288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   const MemOperand& operand);
50388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionDtDDD)(DataType dt,
50488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                              DRegister rd,
50588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                              DRegister rn,
50688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                              DRegister rm);
50788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionDtSSS)(DataType dt,
50888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                              SRegister rd,
50988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                              SRegister rn,
51088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                              SRegister rm);
51188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDDDx)(Condition cond,
51288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DataType dt,
51388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegister rd,
51488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegister rn,
51588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegisterLane rm);
51688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQQDx)(Condition cond,
51788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DataType dt,
51888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   QRegister rd,
51988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   QRegister rn,
52088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegisterLane rm);
52188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQDDx)(Condition cond,
52288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DataType dt,
52388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   QRegister rd,
52488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegister rn,
52588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegisterLane rm);
52688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRS)(Condition cond,
52788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               Register rt,
52888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               SRegister rn);
52988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSR)(Condition cond,
53088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               SRegister rn,
53188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                               Register rt);
53288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRRD)(Condition cond,
53388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Register rt,
53488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Register rt2,
53588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                DRegister rm);
53688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDRR)(Condition cond,
53788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                DRegister rm,
53888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Register rt,
53988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                Register rt2);
54088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRRSS)(
54188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rt, Register rt2, SRegister rm, SRegister rm1);
54288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSSRR)(
54388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, SRegister rm, SRegister rm1, Register rt, Register rt2);
54488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDxR)(Condition cond,
54588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DataType dt,
54688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DRegisterLane rd,
54788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  Register rt);
54888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDDop)(Condition cond,
54988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DataType dt,
55088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegister rd,
55188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   const DOperand& operand);
55288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQQop)(Condition cond,
55388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DataType dt,
55488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   QRegister rd,
55588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   const QOperand& operand);
55688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtSSop)(Condition cond,
55788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DataType dt,
55888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   SRegister rd,
55988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   const SOperand& operand);
56088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtRDx)(Condition cond,
56188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DataType dt,
56288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  Register rt,
56388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DRegisterLane rn);
56488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQD)(Condition cond,
56588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DataType dt,
56688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 QRegister rd,
56788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DRegister rm);
56888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDQ)(Condition cond,
56988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DataType dt,
57088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 DRegister rd,
57188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 QRegister rm);
57288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondRoaSfp)(Condition cond,
57388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   RegisterOrAPSR_nzcv rt,
57488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   SpecialFPRegister spec_reg);
57588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondSfpR)(Condition cond,
57688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 SpecialFPRegister spec_reg,
57788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                 Register rt);
57888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDDIr)(Condition cond,
57988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DataType dt,
58088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegister rd,
58188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegister rn,
58288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegister dm,
58388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   unsigned index);
58488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQQIr)(Condition cond,
58588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DataType dt,
58688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   QRegister rd,
58788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   QRegister rn,
58888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegister dm,
58988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   unsigned index);
59088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQDIr)(Condition cond,
59188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DataType dt,
59288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   QRegister rd,
59388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegister rn,
59488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   DRegister dm,
59588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                   unsigned index);
59688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDrl)(Condition cond,
59788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DataType dt,
59888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DRegisterList dreglist);
59988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtSrl)(Condition cond,
60088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  DataType dt,
60188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                  SRegisterList sreglist);
60288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDQQop)(Condition cond,
60388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    DataType dt,
60488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    DRegister rd,
60588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    QRegister rm,
60688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    const QOperand& operand);
60788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtQDDop)(Condition cond,
60888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    DataType dt,
60988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    QRegister rd,
61088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    DRegister rm,
61188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                                                    const DOperand& operand);
61288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  typedef void (Assembler::*InstructionCondDtDNrlD)(
61388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond,
61488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      DataType dt,
61588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      DRegister rd,
61688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      const NeonRegisterList& nreglist,
61788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      DRegister rm);
61888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
61988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSizeRROp /*instruction*/,
62088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
62188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        EncodingSize /*size*/,
62288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
62388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/,
62488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const Operand& /*operand*/) {
6259ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
6269ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kAdc) || (type == kAdcs) || (type == kAdd) ||
6279ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kAdds) || (type == kAnd) || (type == kAnds) ||
6289ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kAsr) || (type == kAsrs) || (type == kBic) ||
6299ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kBics) || (type == kEor) || (type == kEors) ||
6309ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kLsl) || (type == kLsls) || (type == kLsr) ||
6319ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kLsrs) || (type == kOrr) || (type == kOrrs) ||
6329ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kRor) || (type == kRors) || (type == kRsb) ||
6339ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kRsbs) || (type == kSbc) || (type == kSbcs) ||
6349ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSub) || (type == kSubs));
63588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
63688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
63788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
63888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondROp /*instruction*/,
63988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
64088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
64188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const Operand& /*operand*/) {
6429ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
6439ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kAdd) || (type == kMovt) || (type == kMovw) ||
6449ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSub) || (type == kSxtb16) || (type == kTeq) ||
6459ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kUxtb16));
64688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
64788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
64888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
64988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionROp /*instruction*/,
65088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
65188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const Operand& /*operand*/) {
6529ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
6539ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kAdds) || (type == kSubs));
65488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
65588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
65688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
65788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRROp /*instruction*/,
65888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
65988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
66088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/,
66188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const Operand& /*operand*/) {
6629ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
6639ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kAddw) || (type == kOrn) || (type == kOrns) ||
6649ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kPkhbt) || (type == kPkhtb) || (type == kRsc) ||
6659ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kRscs) || (type == kSubw) || (type == kSxtab) ||
6669ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSxtab16) || (type == kSxtah) || (type == kUxtab) ||
6679ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kUxtab16) || (type == kUxtah));
66888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
66988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
67088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
67188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSizeRL /*instruction*/,
67288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
67388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        EncodingSize /*size*/,
67488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
67588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Label* /*label*/) {
6769ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
6779ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kAdr) || (type == kLdr));
67888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
67988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
68088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
68188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSizeL /*instruction*/,
68288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
68388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        EncodingSize /*size*/,
68488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Label* /*label*/) {
6859ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
6869ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kB));
68788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
68888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
68988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
69088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRIOp /*instruction*/,
69188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
69288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
69388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        uint32_t /*lsb*/,
69488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const Operand& /*operand*/) {
6959ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
6969ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kBfc) || (type == kSsat) || (type == kUsat));
69788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
69888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
69988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
70088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRRIOp /*instruction*/,
70188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
70288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
70388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/,
70488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        uint32_t /*lsb*/,
70588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const Operand& /*operand*/) {
7069ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
7079ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kBfi) || (type == kSbfx) || (type == kUbfx));
70888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
70988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
71088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
71188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondI /*instruction*/,
71288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
71388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        uint32_t /*imm*/) {
7149ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
7159ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kBkpt) || (type == kHlt) || (type == kHvc) ||
7169ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSvc));
71788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
71888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
71988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
72088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondL /*instruction*/,
72188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
72288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Label* /*label*/) {
7239ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
7249ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kBl) || (type == kBlx) || (type == kPld) ||
7259ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kPli));
72688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
72788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
72888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
72988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondR /*instruction*/,
73088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
73188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rm*/) {
7329ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
7339ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kBlx) || (type == kBx) || (type == kBxj));
73488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
73588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
73688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
73788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionRL /*instruction*/,
73888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/,
73988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Label* /*label*/) {
7409ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
7419ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kCbnz) || (type == kCbz));
74288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
74388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
74488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
74588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCond /*instruction*/,
74688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/) {
7479ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
7489ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kClrex));
74988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
75088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
75188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
75288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRR /*instruction*/,
75388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
75488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
75588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rm*/) {
7569ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
7579ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kClz) || (type == kRbit) || (type == kRrx) ||
7589ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kRrxs));
75988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
76088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
76188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
76288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSizeROp /*instruction*/,
76388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
76488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        EncodingSize /*size*/,
76588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/,
76688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const Operand& /*operand*/) {
7679ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
7689ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kCmn) || (type == kCmp) || (type == kMov) ||
7699ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kMovs) || (type == kMvn) || (type == kMvns) ||
7709ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSxtb) || (type == kSxth) || (type == kTst) ||
7719ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kUxtb) || (type == kUxth));
77288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
77388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
77488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
77588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRRR /*instruction*/,
77688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
77788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
77888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/,
77988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rm*/) {
7809ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
7819ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kCrc32b) || (type == kCrc32cb) || (type == kCrc32ch) ||
7829ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kCrc32cw) || (type == kCrc32h) || (type == kCrc32w) ||
7839ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kMuls) || (type == kQadd) || (type == kQadd16) ||
7849ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kQadd8) || (type == kQasx) || (type == kQdadd) ||
7859ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kQdsub) || (type == kQsax) || (type == kQsub) ||
7869ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kQsub16) || (type == kQsub8) || (type == kSadd16) ||
7879ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSadd8) || (type == kSasx) || (type == kSdiv) ||
7889ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSel) || (type == kShadd16) || (type == kShadd8) ||
7899ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kShasx) || (type == kShsax) || (type == kShsub16) ||
7909ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kShsub8) || (type == kSmmul) || (type == kSmmulr) ||
7919ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSmuad) || (type == kSmuadx) || (type == kSmulbb) ||
7929ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSmulbt) || (type == kSmultb) || (type == kSmultt) ||
7939ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSmulwb) || (type == kSmulwt) || (type == kSmusd) ||
7949ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSmusdx) || (type == kSsax) || (type == kSsub16) ||
7959ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSsub8) || (type == kUadd16) || (type == kUadd8) ||
7969ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kUasx) || (type == kUdiv) || (type == kUhadd16) ||
7979ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kUhadd8) || (type == kUhasx) || (type == kUhsax) ||
7989ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kUhsub16) || (type == kUhsub8) || (type == kUqadd16) ||
7999ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kUqadd8) || (type == kUqasx) || (type == kUqsax) ||
8009ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kUqsub16) || (type == kUqsub8) || (type == kUsad8) ||
8019ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kUsax) || (type == kUsub16) || (type == kUsub8));
80288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
80388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
80488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
80588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondBa /*instruction*/,
80688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
80788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        MemoryBarrier /*option*/) {
8089ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
8099ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kDmb) || (type == kDsb) || (type == kIsb));
81088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
81188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
81288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
81388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRwbDrl /*instruction*/,
81488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
81588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/,
81688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        WriteBack /*write_back*/,
81788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegisterList /*dreglist*/) {
8189ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
8199ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kFldmdbx) || (type == kFldmiax) ||
8209ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kFstmdbx) || (type == kFstmiax));
82188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
82288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
82388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void DelegateIt(Condition /*cond*/, uint16_t /*mask*/) {
82488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(kIt);
82588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
82688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
82788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRMop /*instruction*/,
82888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
82988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/,
83088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const MemOperand& /*operand*/) {
8319ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
8329ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kLda) || (type == kLdab) || (type == kLdaex) ||
8339ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kLdaexb) || (type == kLdaexh) || (type == kLdah) ||
8349ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kLdrex) || (type == kLdrexb) || (type == kLdrexh) ||
8359ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kStl) || (type == kStlb) || (type == kStlh));
83688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
83788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
83888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
83988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRRMop /*instruction*/,
84088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
84188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/,
84288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt2*/,
84388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const MemOperand& /*operand*/) {
8449ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
8459ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kLdaexd) || (type == kLdrd) || (type == kLdrexd) ||
8469ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kStlex) || (type == kStlexb) || (type == kStlexh) ||
8479ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kStrd) || (type == kStrex) || (type == kStrexb) ||
8489ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kStrexh));
84988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
85088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
85188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
85288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSizeRwbRl /*instruction*/,
85388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
85488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        EncodingSize /*size*/,
85588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/,
85688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        WriteBack /*write_back*/,
85788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        RegisterList /*registers*/) {
8589ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
8599ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kLdm) || (type == kLdmfd) || (type == kStm) ||
8609ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kStmdb) || (type == kStmea));
86188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
86288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
86388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
86488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRwbRl /*instruction*/,
86588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
86688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/,
86788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        WriteBack /*write_back*/,
86888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        RegisterList /*registers*/) {
8699ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
8709ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kLdmda) || (type == kLdmdb) || (type == kLdmea) ||
8719ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kLdmed) || (type == kLdmfa) || (type == kLdmib) ||
8729ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kStmda) || (type == kStmed) || (type == kStmfa) ||
8739ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kStmfd) || (type == kStmib));
87488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
87588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
87688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
87788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSizeRMop /*instruction*/,
87888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
87988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        EncodingSize /*size*/,
88088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/,
88188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const MemOperand& /*operand*/) {
8829ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
8839ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kLdr) || (type == kLdrb) || (type == kLdrh) ||
8849ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kLdrsb) || (type == kLdrsh) || (type == kStr) ||
8859ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kStrb) || (type == kStrh));
88688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
88788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
88888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
88988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRL /*instruction*/,
89088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
89188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/,
89288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Label* /*label*/) {
8939ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
8949ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kLdrb) || (type == kLdrh) || (type == kLdrsb) ||
8959ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kLdrsh));
89688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
89788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
89888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
89988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRRL /*instruction*/,
90088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
90188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/,
90288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt2*/,
90388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Label* /*label*/) {
9049ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
9059ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kLdrd));
90688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
90788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
90888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
90988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRRRR /*instruction*/,
91088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
91188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
91288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/,
91388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rm*/,
91488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*ra*/) {
9159ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
9169ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kMla) || (type == kMlas) || (type == kMls) ||
9179ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSmlabb) || (type == kSmlabt) || (type == kSmlad) ||
9189ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSmladx) || (type == kSmlal) || (type == kSmlalbb) ||
9199ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSmlalbt) || (type == kSmlald) || (type == kSmlaldx) ||
9209ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSmlals) || (type == kSmlaltb) || (type == kSmlaltt) ||
9219ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSmlatb) || (type == kSmlatt) || (type == kSmlawb) ||
9229ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSmlawt) || (type == kSmlsd) || (type == kSmlsdx) ||
9239ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSmlsld) || (type == kSmlsldx) || (type == kSmmla) ||
9249ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSmmlar) || (type == kSmmls) || (type == kSmmlsr) ||
9259ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kSmull) || (type == kSmulls) || (type == kUmaal) ||
9269ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kUmlal) || (type == kUmlals) || (type == kUmull) ||
9279ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kUmulls) || (type == kUsada8));
92888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
92988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
93088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
93188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRSr /*instruction*/,
93288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
93388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
93488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SpecialRegister /*spec_reg*/) {
9359ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
9369ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kMrs));
93788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
93888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
93988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
94088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondMsrOp /*instruction*/,
94188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
94288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        MaskedSpecialRegister /*spec_reg*/,
94388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const Operand& /*operand*/) {
9449ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
9459ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kMsr));
94688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
94788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
94888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
94988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSizeRRR /*instruction*/,
95088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
95188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        EncodingSize /*size*/,
95288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
95388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/,
95488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rm*/) {
9559ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
9569ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kMul));
95788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
95888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
95988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
96088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSize /*instruction*/,
96188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
96288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        EncodingSize /*size*/) {
9639ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
9649ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kNop) || (type == kYield));
96588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
96688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
96788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
96888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondMop /*instruction*/,
96988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
97088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const MemOperand& /*operand*/) {
9719ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
9729ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kPld) || (type == kPldw) || (type == kPli));
97388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
97488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
97588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
97688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSizeRl /*instruction*/,
97788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
97888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        EncodingSize /*size*/,
97988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        RegisterList /*registers*/) {
9809ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
9819ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kPop) || (type == kPush));
98288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
98388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
98488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
98588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSizeOrl /*instruction*/,
98688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
98788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        EncodingSize /*size*/,
98888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/) {
9899ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
9909ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kPop) || (type == kPush));
99188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
99288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
99388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
99488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSizeRR /*instruction*/,
99588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
99688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        EncodingSize /*size*/,
99788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
99888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rm*/) {
9999ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
10009ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kRev) || (type == kRev16) || (type == kRevsh));
100188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
100288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
100388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
100488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionDtQQQ /*instruction*/,
100588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
100688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
100788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rn*/,
100888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rm*/) {
10099ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
10109ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmaxnm) || (type == kVminnm));
101188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
101288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
101388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
101488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRIR /*instruction*/,
101588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
101688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
101788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        uint32_t /*imm*/,
101888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/) {
10199ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
10209ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kSsat16) || (type == kUsat16));
102188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
102288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
102388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
102488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRRRMop /*instruction*/,
102588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
102688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rd*/,
102788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/,
102888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt2*/,
102988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const MemOperand& /*operand*/) {
10309ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
10319ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kStlexd) || (type == kStrexd));
103288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
103388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
103488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
103588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSizeI /*instruction*/,
103688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
103788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        EncodingSize /*size*/,
103888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        uint32_t /*imm*/) {
10399ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
10409ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kUdf));
104188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
104288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
104388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
104488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDDD /*instruction*/,
104588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
104688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
104788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
104888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rn*/,
104988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/) {
10509ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
10519ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVaba) || (type == kVabd) || (type == kVacge) ||
10529ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVacgt) || (type == kVacle) || (type == kVaclt) ||
10539ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVadd) || (type == kVbif) || (type == kVbit) ||
10549ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVbsl) || (type == kVceq) || (type == kVcge) ||
10559ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVcgt) || (type == kVcle) || (type == kVclt) ||
10569ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVdiv) || (type == kVeor) || (type == kVfma) ||
10579ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVfms) || (type == kVfnma) || (type == kVfnms) ||
10589ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVhadd) || (type == kVhsub) || (type == kVmax) ||
10599ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVmin) || (type == kVmla) || (type == kVmls) ||
10609ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVmul) || (type == kVnmla) || (type == kVnmls) ||
10619ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVnmul) || (type == kVpadd) || (type == kVpmax) ||
10629ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVpmin) || (type == kVqadd) || (type == kVqdmulh) ||
10639ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVqrdmulh) || (type == kVqrshl) || (type == kVqsub) ||
10649ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrecps) || (type == kVrhadd) || (type == kVrshl) ||
10659ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrsqrts) || (type == kVsub) || (type == kVtst));
106688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
106788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
106888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
106988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQQQ /*instruction*/,
107088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
107188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
107288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
107388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rn*/,
107488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rm*/) {
10759ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
10769ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVaba) || (type == kVabd) || (type == kVacge) ||
10779ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVacgt) || (type == kVacle) || (type == kVaclt) ||
10789ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVadd) || (type == kVbif) || (type == kVbit) ||
10799ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVbsl) || (type == kVceq) || (type == kVcge) ||
10809ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVcgt) || (type == kVcle) || (type == kVclt) ||
10819ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVeor) || (type == kVfma) || (type == kVfms) ||
10829ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVhadd) || (type == kVhsub) || (type == kVmax) ||
10839ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVmin) || (type == kVmla) || (type == kVmls) ||
10849ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVmul) || (type == kVqadd) || (type == kVqdmulh) ||
10859ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVqrdmulh) || (type == kVqrshl) || (type == kVqsub) ||
10869ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrecps) || (type == kVrhadd) || (type == kVrshl) ||
10879ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrsqrts) || (type == kVsub) || (type == kVtst));
108888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
108988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
109088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
109188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQDD /*instruction*/,
109288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
109388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
109488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
109588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rn*/,
109688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/) {
10979ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
10989ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVabal) || (type == kVabdl) || (type == kVaddl) ||
10999ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVmlal) || (type == kVmlsl) || (type == kVmull) ||
11009ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVqdmlal) || (type == kVqdmlsl) ||
11019ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVqdmull) || (type == kVsubl));
110288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
110388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
110488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
110588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDD /*instruction*/,
110688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
110788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
110888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
110988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/) {
11109ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
11119ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVabs) || (type == kVcls) || (type == kVclz) ||
11129ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVcmp) || (type == kVcmpe) || (type == kVcnt) ||
11139ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVneg) || (type == kVpadal) || (type == kVpaddl) ||
11149ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVqabs) || (type == kVqneg) || (type == kVrecpe) ||
11159ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrev16) || (type == kVrev32) || (type == kVrev64) ||
11169ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrsqrte) || (type == kVsqrt) || (type == kVswp) ||
11179ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVtrn) || (type == kVuzp) || (type == kVzip));
111888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
111988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
112088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
112188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQQ /*instruction*/,
112288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
112388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
112488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
112588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rm*/) {
11269ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
11279ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVabs) || (type == kVcls) || (type == kVclz) ||
11289ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVcnt) || (type == kVneg) || (type == kVpadal) ||
11299ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVpaddl) || (type == kVqabs) || (type == kVqneg) ||
11309ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrecpe) || (type == kVrev16) || (type == kVrev32) ||
11319ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrev64) || (type == kVrsqrte) || (type == kVswp) ||
11329ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVtrn) || (type == kVuzp) || (type == kVzip));
113388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
113488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
113588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
113688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtSS /*instruction*/,
113788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
113888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
113988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rd*/,
114088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rm*/) {
11419ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
11429ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVabs) || (type == kVcmp) || (type == kVcmpe) ||
11439ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVneg) || (type == kVsqrt));
114488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
114588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
114688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
114788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtSSS /*instruction*/,
114888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
114988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
115088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rd*/,
115188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rn*/,
115288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rm*/) {
11539ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
11549ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVadd) || (type == kVdiv) || (type == kVfma) ||
11559ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVfms) || (type == kVfnma) || (type == kVfnms) ||
11569ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVmla) || (type == kVmls) || (type == kVmul) ||
11579ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVnmla) || (type == kVnmls) || (type == kVnmul) ||
11589ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVsub));
115988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
116088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
116188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
116288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDQQ /*instruction*/,
116388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
116488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
116588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
116688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rn*/,
116788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rm*/) {
11689ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
11699ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVaddhn) || (type == kVraddhn) || (type == kVrsubhn) ||
11709ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVsubhn));
117188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
117288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
117388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
117488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQQD /*instruction*/,
117588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
117688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
117788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
117888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rn*/,
117988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/) {
11809ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
11819ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVaddw) || (type == kVsubw));
118288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
118388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
118488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
118588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDDDop /*instruction*/,
118688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
118788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
118888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
118988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rn*/,
119088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const DOperand& /*operand*/) {
11919ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
11929ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVand) || (type == kVbic) || (type == kVceq) ||
11939ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVcge) || (type == kVcgt) || (type == kVcle) ||
11949ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVclt) || (type == kVorn) || (type == kVorr) ||
11959ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVqshl) || (type == kVqshlu) || (type == kVrshr) ||
11969ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrsra) || (type == kVshl) || (type == kVshr) ||
11979ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVsli) || (type == kVsra) || (type == kVsri));
119888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
119988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
120088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
120188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQQQop /*instruction*/,
120288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
120388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
120488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
120588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rn*/,
120688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const QOperand& /*operand*/) {
12079ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
12089ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVand) || (type == kVbic) || (type == kVceq) ||
12099ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVcge) || (type == kVcgt) || (type == kVcle) ||
12109ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVclt) || (type == kVorn) || (type == kVorr) ||
12119ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVqshl) || (type == kVqshlu) || (type == kVrshr) ||
12129ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrsra) || (type == kVshl) || (type == kVshr) ||
12139ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVsli) || (type == kVsra) || (type == kVsri));
121488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
121588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
121688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
121788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtSFi /*instruction*/,
121888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
121988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
122088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rd*/,
122188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        double /*imm*/) {
12229ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
12239ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcmp) || (type == kVcmpe));
122488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
122588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
122688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
122788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDFi /*instruction*/,
122888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
122988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
123088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
123188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        double /*imm*/) {
12329ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
12339ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcmp) || (type == kVcmpe));
123488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
123588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
123688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
123788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDtDS /*instruction*/,
123888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
123988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
124088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
124188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
124288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rm*/) {
12439ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
12449ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvt) || (type == kVcvtb) || (type == kVcvtt));
124588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
124688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
124788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
124888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDtSD /*instruction*/,
124988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
125088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
125188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
125288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rd*/,
125388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/) {
12549ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
12559ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvt) || (type == kVcvtb) || (type == kVcvtr) ||
12569ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVcvtt));
125788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
125888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
125988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
126088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDtDDSi /*instruction*/,
126188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
126288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
126388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
126488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
126588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/,
126688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        int32_t /*fbits*/) {
12679ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
12689ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvt));
126988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
127088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
127188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
127288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDtQQSi /*instruction*/,
127388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
127488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
127588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
127688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
127788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rm*/,
127888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        int32_t /*fbits*/) {
12799ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
12809ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvt));
128188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
128288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
128388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
128488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDtSSSi /*instruction*/,
128588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
128688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
128788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
128888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rd*/,
128988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rm*/,
129088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        int32_t /*fbits*/) {
12919ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
12929ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvt));
129388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
129488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
129588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
129688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDtDD /*instruction*/,
129788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
129888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
129988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
130088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
130188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/) {
13029ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
13039ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvt) || (type == kVrintr) || (type == kVrintx) ||
13049ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrintz));
130588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
130688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
130788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
130888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDtQQ /*instruction*/,
130988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
131088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
131188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
131288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
131388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rm*/) {
13149ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
13159ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvt));
131688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
131788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
131888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
131988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDtDQ /*instruction*/,
132088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
132188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
132288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
132388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
132488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rm*/) {
13259ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
13269ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvt));
132788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
132888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
132988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
133088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDtQD /*instruction*/,
133188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
133288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
133388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
133488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
133588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/) {
13369ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
13379ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvt));
133888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
133988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
134088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
134188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDtSS /*instruction*/,
134288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
134388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
134488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
134588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rd*/,
134688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rm*/) {
13479ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
13489ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvt) || (type == kVcvtb) || (type == kVcvtr) ||
13499ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVcvtt) || (type == kVrintr) || (type == kVrintx) ||
13509ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrintz));
135188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
135288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
135388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
135488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionDtDtDD /*instruction*/,
135588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
135688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
135788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
135888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/) {
13599ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
13609ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvta) || (type == kVcvtm) || (type == kVcvtn) ||
13619ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVcvtp) || (type == kVrinta) || (type == kVrintm) ||
13629ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrintn) || (type == kVrintp));
136388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
136488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
136588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
136688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionDtDtQQ /*instruction*/,
136788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
136888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
136988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
137088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rm*/) {
13719ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
13729ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvta) || (type == kVcvtm) || (type == kVcvtn) ||
13739ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVcvtp) || (type == kVrinta) || (type == kVrintm) ||
13749ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrintn) || (type == kVrintp) || (type == kVrintx) ||
13759ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrintz));
137688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
137788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
137888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
137988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionDtDtSS /*instruction*/,
138088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
138188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
138288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rd*/,
138388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rm*/) {
13849ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
13859ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvta) || (type == kVcvtm) || (type == kVcvtn) ||
13869ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVcvtp) || (type == kVrinta) || (type == kVrintm) ||
13879ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVrintn) || (type == kVrintp));
138888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
138988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
139088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
139188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionDtDtSD /*instruction*/,
139288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt1*/,
139388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt2*/,
139488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rd*/,
139588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/) {
13969ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
13979ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVcvta) || (type == kVcvtm) || (type == kVcvtn) ||
13989ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVcvtp));
139988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
140088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
140188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
140288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQR /*instruction*/,
140388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
140488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
140588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
140688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/) {
14079ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
14089ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVdup));
140988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
141088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
141188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
141288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDR /*instruction*/,
141388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
141488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
141588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
141688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/) {
14179ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
14189ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVdup));
141988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
142088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
142188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
142288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDDx /*instruction*/,
142388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
142488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
142588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
142688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegisterLane /*rm*/) {
14279ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
14289ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVdup));
142988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
143088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
143188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
143288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQDx /*instruction*/,
143388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
143488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
143588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
143688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegisterLane /*rm*/) {
14379ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
14389ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVdup));
143988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
144088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
144188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
144288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDDDDop /*instruction*/,
144388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
144488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
144588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
144688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rn*/,
144788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/,
144888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const DOperand& /*operand*/) {
14499ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
14509ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVext));
145188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
145288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
145388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
145488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQQQQop /*instruction*/,
145588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
145688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
145788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
145888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rn*/,
145988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rm*/,
146088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const QOperand& /*operand*/) {
14619ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
14629ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVext));
146388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
146488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
146588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
146688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtNrlAmop /*instruction*/,
146788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
146888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
146988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const NeonRegisterList& /*nreglist*/,
147088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const AlignedMemOperand& /*operand*/) {
14719ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
14729ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVld1) || (type == kVld2) || (type == kVld3) ||
14739ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVld4) || (type == kVst1) || (type == kVst2) ||
14749ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVst3) || (type == kVst4));
147588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
147688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
147788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
147888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtNrlMop /*instruction*/,
147988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
148088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
148188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const NeonRegisterList& /*nreglist*/,
148288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const MemOperand& /*operand*/) {
14839ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
14849ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVld3) || (type == kVst3));
148588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
148688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
148788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
148888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtRwbDrl /*instruction*/,
148988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
149088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
149188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/,
149288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        WriteBack /*write_back*/,
149388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegisterList /*dreglist*/) {
14949ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
14959ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVldm) || (type == kVldmdb) || (type == kVldmia) ||
14969ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVstm) || (type == kVstmdb) || (type == kVstmia));
149788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
149888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
149988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
150088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtRwbSrl /*instruction*/,
150188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
150288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
150388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rn*/,
150488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        WriteBack /*write_back*/,
150588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegisterList /*sreglist*/) {
15069ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
15079ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVldm) || (type == kVldmdb) || (type == kVldmia) ||
15089ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVstm) || (type == kVstmdb) || (type == kVstmia));
150988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
151088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
151188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
151288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDL /*instruction*/,
151388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
151488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
151588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
151688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Label* /*label*/) {
15179ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
15189ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVldr));
151988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
152088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
152188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
152288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDMop /*instruction*/,
152388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
152488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
152588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
152688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const MemOperand& /*operand*/) {
15279ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
15289ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVldr) || (type == kVstr));
152988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
153088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
153188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
153288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtSL /*instruction*/,
153388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
153488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
153588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rd*/,
153688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Label* /*label*/) {
15379ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
15389ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVldr));
153988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
154088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
154188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
154288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtSMop /*instruction*/,
154388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
154488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
154588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rd*/,
154688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const MemOperand& /*operand*/) {
15479ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
15489ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVldr) || (type == kVstr));
154988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
155088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
155188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
155288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionDtDDD /*instruction*/,
155388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
155488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
155588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rn*/,
155688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/) {
15579ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
15589ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmaxnm) || (type == kVminnm) || (type == kVseleq) ||
15599ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVselge) || (type == kVselgt) || (type == kVselvs));
156088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
156188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
156288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
156388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionDtSSS /*instruction*/,
156488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
156588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rd*/,
156688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rn*/,
156788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rm*/) {
15689ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
15699ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmaxnm) || (type == kVminnm) || (type == kVseleq) ||
15709ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVselge) || (type == kVselgt) || (type == kVselvs));
157188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
157288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
157388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
157488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDDDx /*instruction*/,
157588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
157688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
157788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
157888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rn*/,
157988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegisterLane /*rm*/) {
15809ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
15819ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmla) || (type == kVmls) || (type == kVqdmulh) ||
15829ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVqrdmulh));
158388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
158488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
158588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
158688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQQDx /*instruction*/,
158788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
158888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
158988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
159088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rn*/,
159188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegisterLane /*rm*/) {
15929ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
15939ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmla) || (type == kVmls) || (type == kVqdmulh) ||
15949ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVqrdmulh));
159588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
159688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
159788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
159888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQDDx /*instruction*/,
159988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
160088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
160188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
160288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rn*/,
160388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegisterLane /*rm*/) {
16049ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
16059ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmlal) || (type == kVmlsl) || (type == kVqdmull));
160688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
160788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
160888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
160988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRS /*instruction*/,
161088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
161188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/,
161288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rn*/) {
16139ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
16149ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmov));
161588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
161688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
161788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
161888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSR /*instruction*/,
161988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
162088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rn*/,
162188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/) {
16229ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
16239ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmov));
162488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
162588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
162688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
162788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRRD /*instruction*/,
162888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
162988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/,
163088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt2*/,
163188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/) {
16329ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
16339ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmov));
163488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
163588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
163688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
163788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDRR /*instruction*/,
163888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
163988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/,
164088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/,
164188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt2*/) {
16429ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
16439ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmov));
164488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
164588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
164688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
164788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRRSS /*instruction*/,
164888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
164988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/,
165088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt2*/,
165188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rm*/,
165288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rm1*/) {
16539ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
16549ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmov));
165588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
165688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
165788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
165888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSSRR /*instruction*/,
165988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
166088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rm*/,
166188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rm1*/,
166288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/,
166388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt2*/) {
16649ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
16659ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmov));
166688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
166788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
166888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
166988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDxR /*instruction*/,
167088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
167188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
167288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegisterLane /*rd*/,
167388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/) {
16749ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
16759ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmov));
167688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
167788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
167888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
167988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDDop /*instruction*/,
168088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
168188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
168288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
168388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const DOperand& /*operand*/) {
16849ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
16859ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmov) || (type == kVmvn));
168688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
168788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
168888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
168988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQQop /*instruction*/,
169088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
169188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
169288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
169388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const QOperand& /*operand*/) {
16949ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
16959ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmov) || (type == kVmvn));
169688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
169788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
169888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
169988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtSSop /*instruction*/,
170088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
170188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
170288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegister /*rd*/,
170388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const SOperand& /*operand*/) {
17049ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
17059ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmov));
170688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
170788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
170888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
170988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtRDx /*instruction*/,
171088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
171188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
171288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/,
171388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegisterLane /*rn*/) {
17149ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
17159ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmov));
171688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
171788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
171888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
171988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQD /*instruction*/,
172088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
172188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
172288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
172388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/) {
17249ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
17259ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmovl));
172688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
172788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
172888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
172988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDQ /*instruction*/,
173088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
173188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
173288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
173388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rm*/) {
17349ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
17359ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmovn) || (type == kVqmovn) || (type == kVqmovun));
173688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
173788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
173888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
173988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondRoaSfp /*instruction*/,
174088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
174188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        RegisterOrAPSR_nzcv /*rt*/,
174288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SpecialFPRegister /*spec_reg*/) {
17439ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
17449ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmrs));
174588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
174688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
174788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
174888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondSfpR /*instruction*/,
174988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
175088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SpecialFPRegister /*spec_reg*/,
175188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Register /*rt*/) {
17529ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
17539ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmsr));
175488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
175588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
175688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
175788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDDIr /*instruction*/,
175888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
175988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
176088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
176188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rn*/,
176288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*dm*/,
176388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        unsigned /*index*/) {
17649ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
17659ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmul));
176688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
176788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
176888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
176988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQQIr /*instruction*/,
177088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
177188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
177288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
177388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rn*/,
177488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*dm*/,
177588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        unsigned /*index*/) {
17769ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
17779ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmul));
177888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
177988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
178088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
178188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQDIr /*instruction*/,
178288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
178388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
178488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
178588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rn*/,
178688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*dm*/,
178788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        unsigned /*index*/) {
17889ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
17899ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVmull) || (type == kVqdmlal) || (type == kVqdmlsl));
179088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
179188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
179288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
179388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDrl /*instruction*/,
179488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
179588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
179688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegisterList /*dreglist*/) {
17979ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
17989ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVpop) || (type == kVpush));
179988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
180088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
180188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
180288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtSrl /*instruction*/,
180388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
180488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
180588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        SRegisterList /*sreglist*/) {
18069ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
18079ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVpop) || (type == kVpush));
180888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
180988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
181088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
181188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDQQop /*instruction*/,
181288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
181388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
181488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
181588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rm*/,
181688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const QOperand& /*operand*/) {
18179ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
18189ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVqrshrn) || (type == kVqrshrun) ||
18199ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVqshrn) || (type == kVqshrun) || (type == kVrshrn) ||
18209ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard                (type == kVshrn));
182188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
182288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
182388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
182488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtQDDop /*instruction*/,
182588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
182688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
182788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        QRegister /*rd*/,
182888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/,
182988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const DOperand& /*operand*/) {
18309ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
18319ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVshll));
183288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
183388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
183488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  virtual void Delegate(InstructionType type,
183588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        InstructionCondDtDNrlD /*instruction*/,
183688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        Condition /*cond*/,
183788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DataType /*dt*/,
183888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rd*/,
183988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        const NeonRegisterList& /*nreglist*/,
184088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                        DRegister /*rm*/) {
18419ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    USE(type);
18429ae5da2ba518573576cc92e93e7a01dd34c8d1f7Vincent Belliard    VIXL_ASSERT((type == kVtbl) || (type == kVtbx));
184388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    UnimplementedDelegate(type);
184488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
184588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
184688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adc(Condition cond,
184788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
184888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
184988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
185088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
185188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adc(Register rd, Register rn, const Operand& operand) {
185288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    adc(al, Best, rd, rn, operand);
185388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
185488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adc(Condition cond, Register rd, Register rn, const Operand& operand) {
185588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    adc(cond, Best, rd, rn, operand);
185688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
185788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adc(EncodingSize size,
185888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
185988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
186088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand) {
186188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    adc(al, size, rd, rn, operand);
186288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
186388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
186488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adcs(Condition cond,
186588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
186688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
186788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
186888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
186988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adcs(Register rd, Register rn, const Operand& operand) {
187088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    adcs(al, Best, rd, rn, operand);
187188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
187288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adcs(Condition cond, Register rd, Register rn, const Operand& operand) {
187388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    adcs(cond, Best, rd, rn, operand);
187488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
187588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adcs(EncodingSize size,
187688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
187788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
187888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
187988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    adcs(al, size, rd, rn, operand);
188088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
188188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
188288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void add(Condition cond,
188388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
188488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
188588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
188688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
188788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void add(Register rd, Register rn, const Operand& operand) {
188888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    add(al, Best, rd, rn, operand);
188988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
189088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void add(Condition cond, Register rd, Register rn, const Operand& operand) {
189188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    add(cond, Best, rd, rn, operand);
189288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
189388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void add(EncodingSize size,
189488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
189588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
189688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand) {
189788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    add(al, size, rd, rn, operand);
189888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
189988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
190088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void add(Condition cond, Register rd, const Operand& operand);
190188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void add(Register rd, const Operand& operand) { add(al, rd, operand); }
190288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
190388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adds(Condition cond,
190488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
190588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
190688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
190788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
190888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adds(Register rd, Register rn, const Operand& operand) {
190988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    adds(al, Best, rd, rn, operand);
191088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
191188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adds(Condition cond, Register rd, Register rn, const Operand& operand) {
191288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    adds(cond, Best, rd, rn, operand);
191388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
191488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adds(EncodingSize size,
191588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
191688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
191788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
191888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    adds(al, size, rd, rn, operand);
191988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
192088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
192188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adds(Register rd, const Operand& operand);
192288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
192388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void addw(Condition cond, Register rd, Register rn, const Operand& operand);
192488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void addw(Register rd, Register rn, const Operand& operand) {
192588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    addw(al, rd, rn, operand);
192688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
192788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
192888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adr(Condition cond, EncodingSize size, Register rd, Label* label);
192988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adr(Register rd, Label* label) { adr(al, Best, rd, label); }
193088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adr(Condition cond, Register rd, Label* label) {
193188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    adr(cond, Best, rd, label);
193288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
193388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void adr(EncodingSize size, Register rd, Label* label) {
193488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    adr(al, size, rd, label);
193588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
193688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
193788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void and_(Condition cond,
193888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
193988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
194088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
194188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
194288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void and_(Register rd, Register rn, const Operand& operand) {
194388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    and_(al, Best, rd, rn, operand);
194488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
194588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void and_(Condition cond, Register rd, Register rn, const Operand& operand) {
194688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    and_(cond, Best, rd, rn, operand);
194788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
194888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void and_(EncodingSize size,
194988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
195088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
195188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
195288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    and_(al, size, rd, rn, operand);
195388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
195488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
195588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ands(Condition cond,
195688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
195788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
195888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
195988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
196088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ands(Register rd, Register rn, const Operand& operand) {
196188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ands(al, Best, rd, rn, operand);
196288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
196388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ands(Condition cond, Register rd, Register rn, const Operand& operand) {
196488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ands(cond, Best, rd, rn, operand);
196588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
196688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ands(EncodingSize size,
196788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
196888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
196988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
197088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ands(al, size, rd, rn, operand);
197188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
197288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
197388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void asr(Condition cond,
197488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
197588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
197688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rm,
197788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
197888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void asr(Register rd, Register rm, const Operand& operand) {
197988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    asr(al, Best, rd, rm, operand);
198088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
198188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void asr(Condition cond, Register rd, Register rm, const Operand& operand) {
198288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    asr(cond, Best, rd, rm, operand);
198388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
198488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void asr(EncodingSize size,
198588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
198688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rm,
198788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand) {
198888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    asr(al, size, rd, rm, operand);
198988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
199088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
199188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void asrs(Condition cond,
199288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
199388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
199488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rm,
199588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
199688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void asrs(Register rd, Register rm, const Operand& operand) {
199788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    asrs(al, Best, rd, rm, operand);
199888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
199988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void asrs(Condition cond, Register rd, Register rm, const Operand& operand) {
200088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    asrs(cond, Best, rd, rm, operand);
200188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
200288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void asrs(EncodingSize size,
200388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
200488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rm,
200588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
200688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    asrs(al, size, rd, rm, operand);
200788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
200888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
200988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void b(Condition cond, EncodingSize size, Label* label);
201088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void b(Label* label) { b(al, Best, label); }
201188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void b(Condition cond, Label* label) { b(cond, Best, label); }
201288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void b(EncodingSize size, Label* label) { b(al, size, label); }
201388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
201488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bfc(Condition cond, Register rd, uint32_t lsb, const Operand& operand);
201588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bfc(Register rd, uint32_t lsb, const Operand& operand) {
201688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    bfc(al, rd, lsb, operand);
201788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
201888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
201988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bfi(Condition cond,
202088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
202188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
202288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           uint32_t lsb,
202388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
202488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bfi(Register rd, Register rn, uint32_t lsb, const Operand& operand) {
202588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    bfi(al, rd, rn, lsb, operand);
202688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
202788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
202888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bic(Condition cond,
202988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
203088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
203188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
203288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
203388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bic(Register rd, Register rn, const Operand& operand) {
203488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    bic(al, Best, rd, rn, operand);
203588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
203688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bic(Condition cond, Register rd, Register rn, const Operand& operand) {
203788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    bic(cond, Best, rd, rn, operand);
203888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
203988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bic(EncodingSize size,
204088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
204188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
204288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand) {
204388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    bic(al, size, rd, rn, operand);
204488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
204588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
204688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bics(Condition cond,
204788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
204888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
204988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
205088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
205188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bics(Register rd, Register rn, const Operand& operand) {
205288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    bics(al, Best, rd, rn, operand);
205388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
205488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bics(Condition cond, Register rd, Register rn, const Operand& operand) {
205588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    bics(cond, Best, rd, rn, operand);
205688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
205788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bics(EncodingSize size,
205888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
205988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
206088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
206188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    bics(al, size, rd, rn, operand);
206288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
206388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
206488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bkpt(Condition cond, uint32_t imm);
206588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bkpt(uint32_t imm) { bkpt(al, imm); }
206688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
206788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bl(Condition cond, Label* label);
206888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bl(Label* label) { bl(al, label); }
206988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
207088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void blx(Condition cond, Label* label);
207188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void blx(Label* label) { blx(al, label); }
207288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
207388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void blx(Condition cond, Register rm);
207488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void blx(Register rm) { blx(al, rm); }
207588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
207688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bx(Condition cond, Register rm);
207788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bx(Register rm) { bx(al, rm); }
207888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
207988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bxj(Condition cond, Register rm);
208088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void bxj(Register rm) { bxj(al, rm); }
208188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
208288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void cbnz(Register rn, Label* label);
208388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
208488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void cbz(Register rn, Label* label);
208588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
208688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void clrex(Condition cond);
208788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void clrex() { clrex(al); }
208888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
208988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void clz(Condition cond, Register rd, Register rm);
209088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void clz(Register rd, Register rm) { clz(al, rd, rm); }
209188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
209288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void cmn(Condition cond,
209388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
209488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
209588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
209688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void cmn(Register rn, const Operand& operand) { cmn(al, Best, rn, operand); }
209788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void cmn(Condition cond, Register rn, const Operand& operand) {
209888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    cmn(cond, Best, rn, operand);
209988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
210088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void cmn(EncodingSize size, Register rn, const Operand& operand) {
210188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    cmn(al, size, rn, operand);
210288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
210388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
210488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void cmp(Condition cond,
210588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
210688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
210788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
210888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void cmp(Register rn, const Operand& operand) { cmp(al, Best, rn, operand); }
210988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void cmp(Condition cond, Register rn, const Operand& operand) {
211088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    cmp(cond, Best, rn, operand);
211188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
211288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void cmp(EncodingSize size, Register rn, const Operand& operand) {
211388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    cmp(al, size, rn, operand);
211488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
211588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
211688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void crc32b(Condition cond, Register rd, Register rn, Register rm);
211788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void crc32b(Register rd, Register rn, Register rm) { crc32b(al, rd, rn, rm); }
211888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
211988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void crc32cb(Condition cond, Register rd, Register rn, Register rm);
212088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void crc32cb(Register rd, Register rn, Register rm) {
212188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    crc32cb(al, rd, rn, rm);
212288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
212388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
212488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void crc32ch(Condition cond, Register rd, Register rn, Register rm);
212588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void crc32ch(Register rd, Register rn, Register rm) {
212688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    crc32ch(al, rd, rn, rm);
212788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
212888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
212988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void crc32cw(Condition cond, Register rd, Register rn, Register rm);
213088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void crc32cw(Register rd, Register rn, Register rm) {
213188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    crc32cw(al, rd, rn, rm);
213288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
213388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
213488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void crc32h(Condition cond, Register rd, Register rn, Register rm);
213588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void crc32h(Register rd, Register rn, Register rm) { crc32h(al, rd, rn, rm); }
213688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
213788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void crc32w(Condition cond, Register rd, Register rn, Register rm);
213888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void crc32w(Register rd, Register rn, Register rm) { crc32w(al, rd, rn, rm); }
213988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
214088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void dmb(Condition cond, MemoryBarrier option);
214188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void dmb(MemoryBarrier option) { dmb(al, option); }
214288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
214388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void dsb(Condition cond, MemoryBarrier option);
214488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void dsb(MemoryBarrier option) { dsb(al, option); }
214588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
214688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void eor(Condition cond,
214788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
214888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
214988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
215088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
215188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void eor(Register rd, Register rn, const Operand& operand) {
215288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    eor(al, Best, rd, rn, operand);
215388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
215488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void eor(Condition cond, Register rd, Register rn, const Operand& operand) {
215588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    eor(cond, Best, rd, rn, operand);
215688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
215788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void eor(EncodingSize size,
215888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
215988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
216088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand) {
216188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    eor(al, size, rd, rn, operand);
216288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
216388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
216488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void eors(Condition cond,
216588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
216688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
216788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
216888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
216988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void eors(Register rd, Register rn, const Operand& operand) {
217088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    eors(al, Best, rd, rn, operand);
217188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
217288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void eors(Condition cond, Register rd, Register rn, const Operand& operand) {
217388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    eors(cond, Best, rd, rn, operand);
217488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
217588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void eors(EncodingSize size,
217688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
217788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
217888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
217988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    eors(al, size, rd, rn, operand);
218088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
218188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
218288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void fldmdbx(Condition cond,
218388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               Register rn,
218488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               WriteBack write_back,
218588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegisterList dreglist);
218688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void fldmdbx(Register rn, WriteBack write_back, DRegisterList dreglist) {
218788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    fldmdbx(al, rn, write_back, dreglist);
218888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
218988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
219088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void fldmiax(Condition cond,
219188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               Register rn,
219288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               WriteBack write_back,
219388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegisterList dreglist);
219488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void fldmiax(Register rn, WriteBack write_back, DRegisterList dreglist) {
219588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    fldmiax(al, rn, write_back, dreglist);
219688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
219788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
219888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void fstmdbx(Condition cond,
219988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               Register rn,
220088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               WriteBack write_back,
220188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegisterList dreglist);
220288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void fstmdbx(Register rn, WriteBack write_back, DRegisterList dreglist) {
220388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    fstmdbx(al, rn, write_back, dreglist);
220488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
220588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
220688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void fstmiax(Condition cond,
220788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               Register rn,
220888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               WriteBack write_back,
220988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegisterList dreglist);
221088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void fstmiax(Register rn, WriteBack write_back, DRegisterList dreglist) {
221188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    fstmiax(al, rn, write_back, dreglist);
221288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
221388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
221488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void hlt(Condition cond, uint32_t imm);
221588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void hlt(uint32_t imm) { hlt(al, imm); }
221688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
221788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void hvc(Condition cond, uint32_t imm);
221888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void hvc(uint32_t imm) { hvc(al, imm); }
221988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
222088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void isb(Condition cond, MemoryBarrier option);
222188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void isb(MemoryBarrier option) { isb(al, option); }
222288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
222388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void it(Condition cond, uint16_t mask);
222488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
222588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lda(Condition cond, Register rt, const MemOperand& operand);
222688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lda(Register rt, const MemOperand& operand) { lda(al, rt, operand); }
222788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
222888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldab(Condition cond, Register rt, const MemOperand& operand);
222988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldab(Register rt, const MemOperand& operand) { ldab(al, rt, operand); }
223088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
223188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldaex(Condition cond, Register rt, const MemOperand& operand);
223288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldaex(Register rt, const MemOperand& operand) { ldaex(al, rt, operand); }
223388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
223488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldaexb(Condition cond, Register rt, const MemOperand& operand);
223588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldaexb(Register rt, const MemOperand& operand) {
223688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldaexb(al, rt, operand);
223788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
223888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
223988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldaexd(Condition cond,
224088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt,
224188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt2,
224288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const MemOperand& operand);
224388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldaexd(Register rt, Register rt2, const MemOperand& operand) {
224488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldaexd(al, rt, rt2, operand);
224588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
224688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
224788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldaexh(Condition cond, Register rt, const MemOperand& operand);
224888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldaexh(Register rt, const MemOperand& operand) {
224988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldaexh(al, rt, operand);
225088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
225188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
225288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldah(Condition cond, Register rt, const MemOperand& operand);
225388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldah(Register rt, const MemOperand& operand) { ldah(al, rt, operand); }
225488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
225588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldm(Condition cond,
225688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
225788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
225888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           WriteBack write_back,
225988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           RegisterList registers);
226088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldm(Register rn, WriteBack write_back, RegisterList registers) {
226188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldm(al, Best, rn, write_back, registers);
226288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
226388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldm(Condition cond,
226488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
226588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           WriteBack write_back,
226688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           RegisterList registers) {
226788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldm(cond, Best, rn, write_back, registers);
226888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
226988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldm(EncodingSize size,
227088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
227188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           WriteBack write_back,
227288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           RegisterList registers) {
227388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldm(al, size, rn, write_back, registers);
227488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
227588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
227688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmda(Condition cond,
227788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
227888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
227988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
228088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmda(Register rn, WriteBack write_back, RegisterList registers) {
228188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldmda(al, rn, write_back, registers);
228288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
228388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
228488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmdb(Condition cond,
228588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
228688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
228788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
228888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmdb(Register rn, WriteBack write_back, RegisterList registers) {
228988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldmdb(al, rn, write_back, registers);
229088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
229188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
229288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmea(Condition cond,
229388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
229488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
229588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
229688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmea(Register rn, WriteBack write_back, RegisterList registers) {
229788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldmea(al, rn, write_back, registers);
229888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
229988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
230088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmed(Condition cond,
230188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
230288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
230388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
230488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmed(Register rn, WriteBack write_back, RegisterList registers) {
230588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldmed(al, rn, write_back, registers);
230688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
230788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
230888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmfa(Condition cond,
230988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
231088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
231188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
231288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmfa(Register rn, WriteBack write_back, RegisterList registers) {
231388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldmfa(al, rn, write_back, registers);
231488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
231588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
231688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmfd(Condition cond,
231788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             EncodingSize size,
231888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
231988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
232088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
232188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmfd(Register rn, WriteBack write_back, RegisterList registers) {
232288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldmfd(al, Best, rn, write_back, registers);
232388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
232488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmfd(Condition cond,
232588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
232688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
232788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers) {
232888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldmfd(cond, Best, rn, write_back, registers);
232988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
233088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmfd(EncodingSize size,
233188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
233288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
233388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers) {
233488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldmfd(al, size, rn, write_back, registers);
233588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
233688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
233788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmib(Condition cond,
233888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
233988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
234088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
234188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldmib(Register rn, WriteBack write_back, RegisterList registers) {
234288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldmib(al, rn, write_back, registers);
234388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
234488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
234588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldr(Condition cond,
234688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
234788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rt,
234888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const MemOperand& operand);
234988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldr(Register rt, const MemOperand& operand) {
235088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldr(al, Best, rt, operand);
235188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
235288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldr(Condition cond, Register rt, const MemOperand& operand) {
235388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldr(cond, Best, rt, operand);
235488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
235588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldr(EncodingSize size, Register rt, const MemOperand& operand) {
235688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldr(al, size, rt, operand);
235788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
235888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
235988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldr(Condition cond, EncodingSize size, Register rt, Label* label);
236088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldr(Register rt, Label* label) { ldr(al, Best, rt, label); }
236188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldr(Condition cond, Register rt, Label* label) {
236288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldr(cond, Best, rt, label);
236388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
236488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldr(EncodingSize size, Register rt, Label* label) {
236588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldr(al, size, rt, label);
236688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
236788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
236888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrb(Condition cond,
236988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
237088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rt,
237188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand);
237288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrb(Register rt, const MemOperand& operand) {
237388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrb(al, Best, rt, operand);
237488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
237588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrb(Condition cond, Register rt, const MemOperand& operand) {
237688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrb(cond, Best, rt, operand);
237788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
237888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrb(EncodingSize size, Register rt, const MemOperand& operand) {
237988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrb(al, size, rt, operand);
238088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
238188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
238288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrb(Condition cond, Register rt, Label* label);
238388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrb(Register rt, Label* label) { ldrb(al, rt, label); }
238488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
238588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrd(Condition cond,
238688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rt,
238788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rt2,
238888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand);
238988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrd(Register rt, Register rt2, const MemOperand& operand) {
239088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrd(al, rt, rt2, operand);
239188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
239288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
239388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrd(Condition cond, Register rt, Register rt2, Label* label);
239488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrd(Register rt, Register rt2, Label* label) {
239588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrd(al, rt, rt2, label);
239688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
239788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
239888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrex(Condition cond, Register rt, const MemOperand& operand);
239988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrex(Register rt, const MemOperand& operand) { ldrex(al, rt, operand); }
240088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
240188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrexb(Condition cond, Register rt, const MemOperand& operand);
240288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrexb(Register rt, const MemOperand& operand) {
240388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrexb(al, rt, operand);
240488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
240588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
240688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrexd(Condition cond,
240788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt,
240888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt2,
240988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const MemOperand& operand);
241088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrexd(Register rt, Register rt2, const MemOperand& operand) {
241188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrexd(al, rt, rt2, operand);
241288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
241388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
241488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrexh(Condition cond, Register rt, const MemOperand& operand);
241588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrexh(Register rt, const MemOperand& operand) {
241688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrexh(al, rt, operand);
241788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
241888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
241988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrh(Condition cond,
242088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
242188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rt,
242288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand);
242388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrh(Register rt, const MemOperand& operand) {
242488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrh(al, Best, rt, operand);
242588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
242688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrh(Condition cond, Register rt, const MemOperand& operand) {
242788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrh(cond, Best, rt, operand);
242888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
242988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrh(EncodingSize size, Register rt, const MemOperand& operand) {
243088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrh(al, size, rt, operand);
243188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
243288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
243388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrh(Condition cond, Register rt, Label* label);
243488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrh(Register rt, Label* label) { ldrh(al, rt, label); }
243588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
243688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrsb(Condition cond,
243788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             EncodingSize size,
243888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rt,
243988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             const MemOperand& operand);
244088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrsb(Register rt, const MemOperand& operand) {
244188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrsb(al, Best, rt, operand);
244288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
244388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrsb(Condition cond, Register rt, const MemOperand& operand) {
244488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrsb(cond, Best, rt, operand);
244588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
244688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrsb(EncodingSize size, Register rt, const MemOperand& operand) {
244788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrsb(al, size, rt, operand);
244888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
244988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
245088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrsb(Condition cond, Register rt, Label* label);
245188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrsb(Register rt, Label* label) { ldrsb(al, rt, label); }
245288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
245388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrsh(Condition cond,
245488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             EncodingSize size,
245588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rt,
245688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             const MemOperand& operand);
245788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrsh(Register rt, const MemOperand& operand) {
245888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrsh(al, Best, rt, operand);
245988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
246088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrsh(Condition cond, Register rt, const MemOperand& operand) {
246188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrsh(cond, Best, rt, operand);
246288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
246388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrsh(EncodingSize size, Register rt, const MemOperand& operand) {
246488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ldrsh(al, size, rt, operand);
246588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
246688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
246788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrsh(Condition cond, Register rt, Label* label);
246888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ldrsh(Register rt, Label* label) { ldrsh(al, rt, label); }
246988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
247088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsl(Condition cond,
247188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
247288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
247388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rm,
247488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
247588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsl(Register rd, Register rm, const Operand& operand) {
247688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    lsl(al, Best, rd, rm, operand);
247788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
247888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsl(Condition cond, Register rd, Register rm, const Operand& operand) {
247988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    lsl(cond, Best, rd, rm, operand);
248088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
248188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsl(EncodingSize size,
248288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
248388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rm,
248488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand) {
248588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    lsl(al, size, rd, rm, operand);
248688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
248788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
248888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsls(Condition cond,
248988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
249088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
249188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rm,
249288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
249388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsls(Register rd, Register rm, const Operand& operand) {
249488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    lsls(al, Best, rd, rm, operand);
249588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
249688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsls(Condition cond, Register rd, Register rm, const Operand& operand) {
249788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    lsls(cond, Best, rd, rm, operand);
249888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
249988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsls(EncodingSize size,
250088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
250188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rm,
250288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
250388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    lsls(al, size, rd, rm, operand);
250488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
250588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
250688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsr(Condition cond,
250788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
250888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
250988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rm,
251088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
251188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsr(Register rd, Register rm, const Operand& operand) {
251288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    lsr(al, Best, rd, rm, operand);
251388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
251488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsr(Condition cond, Register rd, Register rm, const Operand& operand) {
251588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    lsr(cond, Best, rd, rm, operand);
251688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
251788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsr(EncodingSize size,
251888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
251988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rm,
252088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand) {
252188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    lsr(al, size, rd, rm, operand);
252288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
252388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
252488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsrs(Condition cond,
252588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
252688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
252788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rm,
252888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
252988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsrs(Register rd, Register rm, const Operand& operand) {
253088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    lsrs(al, Best, rd, rm, operand);
253188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
253288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsrs(Condition cond, Register rd, Register rm, const Operand& operand) {
253388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    lsrs(cond, Best, rd, rm, operand);
253488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
253588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void lsrs(EncodingSize size,
253688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
253788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rm,
253888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
253988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    lsrs(al, size, rd, rm, operand);
254088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
254188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
254288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mla(Condition cond, Register rd, Register rn, Register rm, Register ra);
254388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mla(Register rd, Register rn, Register rm, Register ra) {
254488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    mla(al, rd, rn, rm, ra);
254588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
254688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
254788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mlas(Condition cond, Register rd, Register rn, Register rm, Register ra);
254888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mlas(Register rd, Register rn, Register rm, Register ra) {
254988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    mlas(al, rd, rn, rm, ra);
255088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
255188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
255288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mls(Condition cond, Register rd, Register rn, Register rm, Register ra);
255388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mls(Register rd, Register rn, Register rm, Register ra) {
255488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    mls(al, rd, rn, rm, ra);
255588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
255688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
255788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mov(Condition cond,
255888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
255988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
256088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
256188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mov(Register rd, const Operand& operand) { mov(al, Best, rd, operand); }
256288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mov(Condition cond, Register rd, const Operand& operand) {
256388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    mov(cond, Best, rd, operand);
256488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
256588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mov(EncodingSize size, Register rd, const Operand& operand) {
256688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    mov(al, size, rd, operand);
256788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
256888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
256988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void movs(Condition cond,
257088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
257188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
257288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
257388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void movs(Register rd, const Operand& operand) {
257488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    movs(al, Best, rd, operand);
257588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
257688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void movs(Condition cond, Register rd, const Operand& operand) {
257788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    movs(cond, Best, rd, operand);
257888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
257988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void movs(EncodingSize size, Register rd, const Operand& operand) {
258088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    movs(al, size, rd, operand);
258188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
258288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
258388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void movt(Condition cond, Register rd, const Operand& operand);
258488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void movt(Register rd, const Operand& operand) { movt(al, rd, operand); }
258588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
258688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void movw(Condition cond, Register rd, const Operand& operand);
258788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void movw(Register rd, const Operand& operand) { movw(al, rd, operand); }
258888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
258988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mrs(Condition cond, Register rd, SpecialRegister spec_reg);
259088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mrs(Register rd, SpecialRegister spec_reg) { mrs(al, rd, spec_reg); }
259188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
259288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void msr(Condition cond,
259388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           MaskedSpecialRegister spec_reg,
259488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
259588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void msr(MaskedSpecialRegister spec_reg, const Operand& operand) {
259688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    msr(al, spec_reg, operand);
259788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
259888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
259988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mul(
260088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, EncodingSize size, Register rd, Register rn, Register rm);
260188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mul(Register rd, Register rn, Register rm) { mul(al, Best, rd, rn, rm); }
260288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mul(Condition cond, Register rd, Register rn, Register rm) {
260388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    mul(cond, Best, rd, rn, rm);
260488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
260588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mul(EncodingSize size, Register rd, Register rn, Register rm) {
260688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    mul(al, size, rd, rn, rm);
260788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
260888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
260988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void muls(Condition cond, Register rd, Register rn, Register rm);
261088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void muls(Register rd, Register rn, Register rm) { muls(al, rd, rn, rm); }
261188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
261288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mvn(Condition cond,
261388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
261488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
261588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
261688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mvn(Register rd, const Operand& operand) { mvn(al, Best, rd, operand); }
261788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mvn(Condition cond, Register rd, const Operand& operand) {
261888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    mvn(cond, Best, rd, operand);
261988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
262088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mvn(EncodingSize size, Register rd, const Operand& operand) {
262188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    mvn(al, size, rd, operand);
262288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
262388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
262488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mvns(Condition cond,
262588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
262688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
262788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
262888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mvns(Register rd, const Operand& operand) {
262988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    mvns(al, Best, rd, operand);
263088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
263188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mvns(Condition cond, Register rd, const Operand& operand) {
263288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    mvns(cond, Best, rd, operand);
263388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
263488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void mvns(EncodingSize size, Register rd, const Operand& operand) {
263588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    mvns(al, size, rd, operand);
263688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
263788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
263888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void nop(Condition cond, EncodingSize size);
263988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void nop() { nop(al, Best); }
264088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void nop(Condition cond) { nop(cond, Best); }
264188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void nop(EncodingSize size) { nop(al, size); }
264288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
264388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void orn(Condition cond, Register rd, Register rn, const Operand& operand);
264488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void orn(Register rd, Register rn, const Operand& operand) {
264588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    orn(al, rd, rn, operand);
264688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
264788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
264888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void orns(Condition cond, Register rd, Register rn, const Operand& operand);
264988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void orns(Register rd, Register rn, const Operand& operand) {
265088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    orns(al, rd, rn, operand);
265188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
265288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
265388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void orr(Condition cond,
265488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
265588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
265688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
265788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
265888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void orr(Register rd, Register rn, const Operand& operand) {
265988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    orr(al, Best, rd, rn, operand);
266088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
266188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void orr(Condition cond, Register rd, Register rn, const Operand& operand) {
266288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    orr(cond, Best, rd, rn, operand);
266388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
266488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void orr(EncodingSize size,
266588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
266688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
266788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand) {
266888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    orr(al, size, rd, rn, operand);
266988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
267088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
267188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void orrs(Condition cond,
267288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
267388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
267488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
267588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
267688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void orrs(Register rd, Register rn, const Operand& operand) {
267788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    orrs(al, Best, rd, rn, operand);
267888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
267988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void orrs(Condition cond, Register rd, Register rn, const Operand& operand) {
268088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    orrs(cond, Best, rd, rn, operand);
268188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
268288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void orrs(EncodingSize size,
268388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
268488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
268588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
268688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    orrs(al, size, rd, rn, operand);
268788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
268888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
268988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pkhbt(Condition cond, Register rd, Register rn, const Operand& operand);
269088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pkhbt(Register rd, Register rn, const Operand& operand) {
269188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    pkhbt(al, rd, rn, operand);
269288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
269388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
269488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pkhtb(Condition cond, Register rd, Register rn, const Operand& operand);
269588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pkhtb(Register rd, Register rn, const Operand& operand) {
269688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    pkhtb(al, rd, rn, operand);
269788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
269888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
269988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pld(Condition cond, Label* label);
270088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pld(Label* label) { pld(al, label); }
270188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
270288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pld(Condition cond, const MemOperand& operand);
270388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pld(const MemOperand& operand) { pld(al, operand); }
270488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
270588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pldw(Condition cond, const MemOperand& operand);
270688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pldw(const MemOperand& operand) { pldw(al, operand); }
270788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
270888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pli(Condition cond, const MemOperand& operand);
270988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pli(const MemOperand& operand) { pli(al, operand); }
271088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
271188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pli(Condition cond, Label* label);
271288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pli(Label* label) { pli(al, label); }
271388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
271488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pop(Condition cond, EncodingSize size, RegisterList registers);
271588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pop(RegisterList registers) { pop(al, Best, registers); }
271688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pop(Condition cond, RegisterList registers) {
271788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    pop(cond, Best, registers);
271888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
271988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pop(EncodingSize size, RegisterList registers) {
272088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    pop(al, size, registers);
272188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
272288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
272388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pop(Condition cond, EncodingSize size, Register rt);
272488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pop(Register rt) { pop(al, Best, rt); }
272588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pop(Condition cond, Register rt) { pop(cond, Best, rt); }
272688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void pop(EncodingSize size, Register rt) { pop(al, size, rt); }
272788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
272888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void push(Condition cond, EncodingSize size, RegisterList registers);
272988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void push(RegisterList registers) { push(al, Best, registers); }
273088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void push(Condition cond, RegisterList registers) {
273188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    push(cond, Best, registers);
273288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
273388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void push(EncodingSize size, RegisterList registers) {
273488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    push(al, size, registers);
273588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
273688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
273788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void push(Condition cond, EncodingSize size, Register rt);
273888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void push(Register rt) { push(al, Best, rt); }
273988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void push(Condition cond, Register rt) { push(cond, Best, rt); }
274088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void push(EncodingSize size, Register rt) { push(al, size, rt); }
274188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
274288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qadd(Condition cond, Register rd, Register rm, Register rn);
274388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qadd(Register rd, Register rm, Register rn) { qadd(al, rd, rm, rn); }
274488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
274588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qadd16(Condition cond, Register rd, Register rn, Register rm);
274688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qadd16(Register rd, Register rn, Register rm) { qadd16(al, rd, rn, rm); }
274788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
274888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qadd8(Condition cond, Register rd, Register rn, Register rm);
274988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qadd8(Register rd, Register rn, Register rm) { qadd8(al, rd, rn, rm); }
275088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
275188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qasx(Condition cond, Register rd, Register rn, Register rm);
275288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qasx(Register rd, Register rn, Register rm) { qasx(al, rd, rn, rm); }
275388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
275488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qdadd(Condition cond, Register rd, Register rm, Register rn);
275588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qdadd(Register rd, Register rm, Register rn) { qdadd(al, rd, rm, rn); }
275688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
275788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qdsub(Condition cond, Register rd, Register rm, Register rn);
275888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qdsub(Register rd, Register rm, Register rn) { qdsub(al, rd, rm, rn); }
275988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
276088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qsax(Condition cond, Register rd, Register rn, Register rm);
276188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qsax(Register rd, Register rn, Register rm) { qsax(al, rd, rn, rm); }
276288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
276388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qsub(Condition cond, Register rd, Register rm, Register rn);
276488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qsub(Register rd, Register rm, Register rn) { qsub(al, rd, rm, rn); }
276588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
276688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qsub16(Condition cond, Register rd, Register rn, Register rm);
276788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qsub16(Register rd, Register rn, Register rm) { qsub16(al, rd, rn, rm); }
276888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
276988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qsub8(Condition cond, Register rd, Register rn, Register rm);
277088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void qsub8(Register rd, Register rn, Register rm) { qsub8(al, rd, rn, rm); }
277188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
277288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rbit(Condition cond, Register rd, Register rm);
277388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rbit(Register rd, Register rm) { rbit(al, rd, rm); }
277488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
277588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rev(Condition cond, EncodingSize size, Register rd, Register rm);
277688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rev(Register rd, Register rm) { rev(al, Best, rd, rm); }
277788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rev(Condition cond, Register rd, Register rm) {
277888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rev(cond, Best, rd, rm);
277988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
278088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rev(EncodingSize size, Register rd, Register rm) {
278188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rev(al, size, rd, rm);
278288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
278388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
278488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rev16(Condition cond, EncodingSize size, Register rd, Register rm);
278588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rev16(Register rd, Register rm) { rev16(al, Best, rd, rm); }
278688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rev16(Condition cond, Register rd, Register rm) {
278788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rev16(cond, Best, rd, rm);
278888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
278988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rev16(EncodingSize size, Register rd, Register rm) {
279088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rev16(al, size, rd, rm);
279188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
279288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
279388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void revsh(Condition cond, EncodingSize size, Register rd, Register rm);
279488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void revsh(Register rd, Register rm) { revsh(al, Best, rd, rm); }
279588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void revsh(Condition cond, Register rd, Register rm) {
279688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    revsh(cond, Best, rd, rm);
279788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
279888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void revsh(EncodingSize size, Register rd, Register rm) {
279988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    revsh(al, size, rd, rm);
280088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
280188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
280288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ror(Condition cond,
280388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
280488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
280588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rm,
280688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
280788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ror(Register rd, Register rm, const Operand& operand) {
280888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ror(al, Best, rd, rm, operand);
280988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
281088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ror(Condition cond, Register rd, Register rm, const Operand& operand) {
281188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ror(cond, Best, rd, rm, operand);
281288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
281388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ror(EncodingSize size,
281488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
281588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rm,
281688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand) {
281788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ror(al, size, rd, rm, operand);
281888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
281988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
282088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rors(Condition cond,
282188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
282288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
282388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rm,
282488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
282588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rors(Register rd, Register rm, const Operand& operand) {
282688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rors(al, Best, rd, rm, operand);
282788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
282888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rors(Condition cond, Register rd, Register rm, const Operand& operand) {
282988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rors(cond, Best, rd, rm, operand);
283088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
283188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rors(EncodingSize size,
283288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
283388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rm,
283488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
283588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rors(al, size, rd, rm, operand);
283688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
283788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
283888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rrx(Condition cond, Register rd, Register rm);
283988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rrx(Register rd, Register rm) { rrx(al, rd, rm); }
284088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
284188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rrxs(Condition cond, Register rd, Register rm);
284288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rrxs(Register rd, Register rm) { rrxs(al, rd, rm); }
284388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
284488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rsb(Condition cond,
284588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
284688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
284788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
284888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
284988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rsb(Register rd, Register rn, const Operand& operand) {
285088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rsb(al, Best, rd, rn, operand);
285188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
285288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rsb(Condition cond, Register rd, Register rn, const Operand& operand) {
285388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rsb(cond, Best, rd, rn, operand);
285488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
285588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rsb(EncodingSize size,
285688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
285788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
285888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand) {
285988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rsb(al, size, rd, rn, operand);
286088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
286188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
286288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rsbs(Condition cond,
286388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
286488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
286588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
286688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
286788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rsbs(Register rd, Register rn, const Operand& operand) {
286888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rsbs(al, Best, rd, rn, operand);
286988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
287088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rsbs(Condition cond, Register rd, Register rn, const Operand& operand) {
287188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rsbs(cond, Best, rd, rn, operand);
287288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
287388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rsbs(EncodingSize size,
287488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
287588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
287688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
287788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rsbs(al, size, rd, rn, operand);
287888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
287988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
288088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rsc(Condition cond, Register rd, Register rn, const Operand& operand);
288188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rsc(Register rd, Register rn, const Operand& operand) {
288288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rsc(al, rd, rn, operand);
288388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
288488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
288588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rscs(Condition cond, Register rd, Register rn, const Operand& operand);
288688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void rscs(Register rd, Register rn, const Operand& operand) {
288788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    rscs(al, rd, rn, operand);
288888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
288988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
289088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sadd16(Condition cond, Register rd, Register rn, Register rm);
289188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sadd16(Register rd, Register rn, Register rm) { sadd16(al, rd, rn, rm); }
289288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
289388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sadd8(Condition cond, Register rd, Register rn, Register rm);
289488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sadd8(Register rd, Register rn, Register rm) { sadd8(al, rd, rn, rm); }
289588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
289688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sasx(Condition cond, Register rd, Register rn, Register rm);
289788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sasx(Register rd, Register rn, Register rm) { sasx(al, rd, rn, rm); }
289888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
289988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sbc(Condition cond,
290088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
290188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
290288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
290388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
290488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sbc(Register rd, Register rn, const Operand& operand) {
290588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sbc(al, Best, rd, rn, operand);
290688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
290788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sbc(Condition cond, Register rd, Register rn, const Operand& operand) {
290888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sbc(cond, Best, rd, rn, operand);
290988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
291088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sbc(EncodingSize size,
291188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
291288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
291388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand) {
291488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sbc(al, size, rd, rn, operand);
291588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
291688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
291788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sbcs(Condition cond,
291888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
291988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
292088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
292188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
292288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sbcs(Register rd, Register rn, const Operand& operand) {
292388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sbcs(al, Best, rd, rn, operand);
292488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
292588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sbcs(Condition cond, Register rd, Register rn, const Operand& operand) {
292688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sbcs(cond, Best, rd, rn, operand);
292788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
292888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sbcs(EncodingSize size,
292988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
293088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
293188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
293288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sbcs(al, size, rd, rn, operand);
293388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
293488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
293588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sbfx(Condition cond,
293688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
293788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
293888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            uint32_t lsb,
293988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
294088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sbfx(Register rd, Register rn, uint32_t lsb, const Operand& operand) {
294188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sbfx(al, rd, rn, lsb, operand);
294288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
294388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
294488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sdiv(Condition cond, Register rd, Register rn, Register rm);
294588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sdiv(Register rd, Register rn, Register rm) { sdiv(al, rd, rn, rm); }
294688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
294788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sel(Condition cond, Register rd, Register rn, Register rm);
294888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sel(Register rd, Register rn, Register rm) { sel(al, rd, rn, rm); }
294988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
295088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void shadd16(Condition cond, Register rd, Register rn, Register rm);
295188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void shadd16(Register rd, Register rn, Register rm) {
295288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    shadd16(al, rd, rn, rm);
295388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
295488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
295588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void shadd8(Condition cond, Register rd, Register rn, Register rm);
295688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void shadd8(Register rd, Register rn, Register rm) { shadd8(al, rd, rn, rm); }
295788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
295888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void shasx(Condition cond, Register rd, Register rn, Register rm);
295988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void shasx(Register rd, Register rn, Register rm) { shasx(al, rd, rn, rm); }
296088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
296188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void shsax(Condition cond, Register rd, Register rn, Register rm);
296288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void shsax(Register rd, Register rn, Register rm) { shsax(al, rd, rn, rm); }
296388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
296488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void shsub16(Condition cond, Register rd, Register rn, Register rm);
296588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void shsub16(Register rd, Register rn, Register rm) {
296688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    shsub16(al, rd, rn, rm);
296788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
296888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
296988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void shsub8(Condition cond, Register rd, Register rn, Register rm);
297088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void shsub8(Register rd, Register rn, Register rm) { shsub8(al, rd, rn, rm); }
297188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
297288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlabb(
297388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
297488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlabb(Register rd, Register rn, Register rm, Register ra) {
297588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlabb(al, rd, rn, rm, ra);
297688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
297788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
297888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlabt(
297988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
298088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlabt(Register rd, Register rn, Register rm, Register ra) {
298188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlabt(al, rd, rn, rm, ra);
298288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
298388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
298488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlad(
298588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
298688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlad(Register rd, Register rn, Register rm, Register ra) {
298788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlad(al, rd, rn, rm, ra);
298888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
298988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
299088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smladx(
299188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
299288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smladx(Register rd, Register rn, Register rm, Register ra) {
299388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smladx(al, rd, rn, rm, ra);
299488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
299588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
299688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlal(
299788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
299888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlal(Register rdlo, Register rdhi, Register rn, Register rm) {
299988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlal(al, rdlo, rdhi, rn, rm);
300088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
300188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
300288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlalbb(
300388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
300488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlalbb(Register rdlo, Register rdhi, Register rn, Register rm) {
300588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlalbb(al, rdlo, rdhi, rn, rm);
300688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
300788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
300888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlalbt(
300988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
301088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlalbt(Register rdlo, Register rdhi, Register rn, Register rm) {
301188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlalbt(al, rdlo, rdhi, rn, rm);
301288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
301388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
301488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlald(
301588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
301688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlald(Register rdlo, Register rdhi, Register rn, Register rm) {
301788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlald(al, rdlo, rdhi, rn, rm);
301888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
301988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
302088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlaldx(
302188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
302288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlaldx(Register rdlo, Register rdhi, Register rn, Register rm) {
302388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlaldx(al, rdlo, rdhi, rn, rm);
302488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
302588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
302688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlals(
302788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
302888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlals(Register rdlo, Register rdhi, Register rn, Register rm) {
302988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlals(al, rdlo, rdhi, rn, rm);
303088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
303188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
303288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlaltb(
303388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
303488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlaltb(Register rdlo, Register rdhi, Register rn, Register rm) {
303588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlaltb(al, rdlo, rdhi, rn, rm);
303688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
303788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
303888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlaltt(
303988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
304088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlaltt(Register rdlo, Register rdhi, Register rn, Register rm) {
304188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlaltt(al, rdlo, rdhi, rn, rm);
304288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
304388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
304488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlatb(
304588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
304688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlatb(Register rd, Register rn, Register rm, Register ra) {
304788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlatb(al, rd, rn, rm, ra);
304888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
304988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
305088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlatt(
305188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
305288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlatt(Register rd, Register rn, Register rm, Register ra) {
305388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlatt(al, rd, rn, rm, ra);
305488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
305588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
305688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlawb(
305788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
305888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlawb(Register rd, Register rn, Register rm, Register ra) {
305988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlawb(al, rd, rn, rm, ra);
306088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
306188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
306288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlawt(
306388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
306488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlawt(Register rd, Register rn, Register rm, Register ra) {
306588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlawt(al, rd, rn, rm, ra);
306688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
306788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
306888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlsd(
306988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
307088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlsd(Register rd, Register rn, Register rm, Register ra) {
307188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlsd(al, rd, rn, rm, ra);
307288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
307388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
307488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlsdx(
307588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
307688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlsdx(Register rd, Register rn, Register rm, Register ra) {
307788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlsdx(al, rd, rn, rm, ra);
307888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
307988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
308088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlsld(
308188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
308288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlsld(Register rdlo, Register rdhi, Register rn, Register rm) {
308388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlsld(al, rdlo, rdhi, rn, rm);
308488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
308588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
308688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlsldx(
308788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
308888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smlsldx(Register rdlo, Register rdhi, Register rn, Register rm) {
308988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smlsldx(al, rdlo, rdhi, rn, rm);
309088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
309188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
309288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smmla(
309388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
309488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smmla(Register rd, Register rn, Register rm, Register ra) {
309588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smmla(al, rd, rn, rm, ra);
309688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
309788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
309888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smmlar(
309988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
310088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smmlar(Register rd, Register rn, Register rm, Register ra) {
310188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smmlar(al, rd, rn, rm, ra);
310288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
310388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
310488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smmls(
310588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
310688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smmls(Register rd, Register rn, Register rm, Register ra) {
310788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smmls(al, rd, rn, rm, ra);
310888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
310988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
311088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smmlsr(
311188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
311288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smmlsr(Register rd, Register rn, Register rm, Register ra) {
311388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smmlsr(al, rd, rn, rm, ra);
311488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
311588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
311688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smmul(Condition cond, Register rd, Register rn, Register rm);
311788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smmul(Register rd, Register rn, Register rm) { smmul(al, rd, rn, rm); }
311888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
311988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smmulr(Condition cond, Register rd, Register rn, Register rm);
312088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smmulr(Register rd, Register rn, Register rm) { smmulr(al, rd, rn, rm); }
312188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
312288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smuad(Condition cond, Register rd, Register rn, Register rm);
312388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smuad(Register rd, Register rn, Register rm) { smuad(al, rd, rn, rm); }
312488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
312588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smuadx(Condition cond, Register rd, Register rn, Register rm);
312688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smuadx(Register rd, Register rn, Register rm) { smuadx(al, rd, rn, rm); }
312788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
312888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smulbb(Condition cond, Register rd, Register rn, Register rm);
312988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smulbb(Register rd, Register rn, Register rm) { smulbb(al, rd, rn, rm); }
313088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
313188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smulbt(Condition cond, Register rd, Register rn, Register rm);
313288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smulbt(Register rd, Register rn, Register rm) { smulbt(al, rd, rn, rm); }
313388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
313488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smull(
313588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
313688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smull(Register rdlo, Register rdhi, Register rn, Register rm) {
313788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smull(al, rdlo, rdhi, rn, rm);
313888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
313988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
314088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smulls(
314188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
314288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smulls(Register rdlo, Register rdhi, Register rn, Register rm) {
314388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    smulls(al, rdlo, rdhi, rn, rm);
314488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
314588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
314688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smultb(Condition cond, Register rd, Register rn, Register rm);
314788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smultb(Register rd, Register rn, Register rm) { smultb(al, rd, rn, rm); }
314888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
314988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smultt(Condition cond, Register rd, Register rn, Register rm);
315088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smultt(Register rd, Register rn, Register rm) { smultt(al, rd, rn, rm); }
315188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
315288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smulwb(Condition cond, Register rd, Register rn, Register rm);
315388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smulwb(Register rd, Register rn, Register rm) { smulwb(al, rd, rn, rm); }
315488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
315588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smulwt(Condition cond, Register rd, Register rn, Register rm);
315688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smulwt(Register rd, Register rn, Register rm) { smulwt(al, rd, rn, rm); }
315788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
315888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smusd(Condition cond, Register rd, Register rn, Register rm);
315988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smusd(Register rd, Register rn, Register rm) { smusd(al, rd, rn, rm); }
316088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
316188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smusdx(Condition cond, Register rd, Register rn, Register rm);
316288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void smusdx(Register rd, Register rn, Register rm) { smusdx(al, rd, rn, rm); }
316388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
316488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ssat(Condition cond, Register rd, uint32_t imm, const Operand& operand);
316588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ssat(Register rd, uint32_t imm, const Operand& operand) {
316688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ssat(al, rd, imm, operand);
316788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
316888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
316988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ssat16(Condition cond, Register rd, uint32_t imm, Register rn);
317088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ssat16(Register rd, uint32_t imm, Register rn) {
317188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ssat16(al, rd, imm, rn);
317288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
317388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
317488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ssax(Condition cond, Register rd, Register rn, Register rm);
317588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ssax(Register rd, Register rn, Register rm) { ssax(al, rd, rn, rm); }
317688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
317788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ssub16(Condition cond, Register rd, Register rn, Register rm);
317888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ssub16(Register rd, Register rn, Register rm) { ssub16(al, rd, rn, rm); }
317988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
318088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ssub8(Condition cond, Register rd, Register rn, Register rm);
318188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ssub8(Register rd, Register rn, Register rm) { ssub8(al, rd, rn, rm); }
318288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
318388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stl(Condition cond, Register rt, const MemOperand& operand);
318488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stl(Register rt, const MemOperand& operand) { stl(al, rt, operand); }
318588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
318688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stlb(Condition cond, Register rt, const MemOperand& operand);
318788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stlb(Register rt, const MemOperand& operand) { stlb(al, rt, operand); }
318888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
318988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stlex(Condition cond,
319088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rd,
319188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rt,
319288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             const MemOperand& operand);
319388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stlex(Register rd, Register rt, const MemOperand& operand) {
319488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stlex(al, rd, rt, operand);
319588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
319688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
319788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stlexb(Condition cond,
319888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rd,
319988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt,
320088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const MemOperand& operand);
320188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stlexb(Register rd, Register rt, const MemOperand& operand) {
320288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stlexb(al, rd, rt, operand);
320388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
320488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
320588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stlexd(Condition cond,
320688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rd,
320788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt,
320888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt2,
320988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const MemOperand& operand);
321088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stlexd(Register rd,
321188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt,
321288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt2,
321388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const MemOperand& operand) {
321488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stlexd(al, rd, rt, rt2, operand);
321588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
321688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
321788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stlexh(Condition cond,
321888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rd,
321988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt,
322088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const MemOperand& operand);
322188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stlexh(Register rd, Register rt, const MemOperand& operand) {
322288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stlexh(al, rd, rt, operand);
322388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
322488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
322588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stlh(Condition cond, Register rt, const MemOperand& operand);
322688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stlh(Register rt, const MemOperand& operand) { stlh(al, rt, operand); }
322788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
322888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stm(Condition cond,
322988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
323088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
323188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           WriteBack write_back,
323288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           RegisterList registers);
323388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stm(Register rn, WriteBack write_back, RegisterList registers) {
323488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stm(al, Best, rn, write_back, registers);
323588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
323688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stm(Condition cond,
323788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
323888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           WriteBack write_back,
323988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           RegisterList registers) {
324088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stm(cond, Best, rn, write_back, registers);
324188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
324288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stm(EncodingSize size,
324388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
324488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           WriteBack write_back,
324588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           RegisterList registers) {
324688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stm(al, size, rn, write_back, registers);
324788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
324888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
324988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmda(Condition cond,
325088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
325188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
325288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
325388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmda(Register rn, WriteBack write_back, RegisterList registers) {
325488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stmda(al, rn, write_back, registers);
325588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
325688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
325788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmdb(Condition cond,
325888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             EncodingSize size,
325988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
326088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
326188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
326288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmdb(Register rn, WriteBack write_back, RegisterList registers) {
326388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stmdb(al, Best, rn, write_back, registers);
326488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
326588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmdb(Condition cond,
326688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
326788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
326888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers) {
326988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stmdb(cond, Best, rn, write_back, registers);
327088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
327188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmdb(EncodingSize size,
327288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
327388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
327488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers) {
327588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stmdb(al, size, rn, write_back, registers);
327688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
327788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
327888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmea(Condition cond,
327988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             EncodingSize size,
328088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
328188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
328288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
328388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmea(Register rn, WriteBack write_back, RegisterList registers) {
328488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stmea(al, Best, rn, write_back, registers);
328588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
328688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmea(Condition cond,
328788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
328888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
328988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers) {
329088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stmea(cond, Best, rn, write_back, registers);
329188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
329288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmea(EncodingSize size,
329388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
329488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
329588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers) {
329688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stmea(al, size, rn, write_back, registers);
329788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
329888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
329988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmed(Condition cond,
330088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
330188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
330288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
330388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmed(Register rn, WriteBack write_back, RegisterList registers) {
330488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stmed(al, rn, write_back, registers);
330588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
330688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
330788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmfa(Condition cond,
330888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
330988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
331088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
331188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmfa(Register rn, WriteBack write_back, RegisterList registers) {
331288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stmfa(al, rn, write_back, registers);
331388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
331488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
331588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmfd(Condition cond,
331688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
331788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
331888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
331988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmfd(Register rn, WriteBack write_back, RegisterList registers) {
332088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stmfd(al, rn, write_back, registers);
332188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
332288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
332388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmib(Condition cond,
332488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rn,
332588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             WriteBack write_back,
332688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             RegisterList registers);
332788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void stmib(Register rn, WriteBack write_back, RegisterList registers) {
332888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    stmib(al, rn, write_back, registers);
332988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
333088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
333188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void str(Condition cond,
333288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
333388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rt,
333488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const MemOperand& operand);
333588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void str(Register rt, const MemOperand& operand) {
333688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    str(al, Best, rt, operand);
333788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
333888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void str(Condition cond, Register rt, const MemOperand& operand) {
333988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    str(cond, Best, rt, operand);
334088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
334188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void str(EncodingSize size, Register rt, const MemOperand& operand) {
334288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    str(al, size, rt, operand);
334388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
334488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
334588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strb(Condition cond,
334688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
334788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rt,
334888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand);
334988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strb(Register rt, const MemOperand& operand) {
335088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    strb(al, Best, rt, operand);
335188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
335288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strb(Condition cond, Register rt, const MemOperand& operand) {
335388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    strb(cond, Best, rt, operand);
335488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
335588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strb(EncodingSize size, Register rt, const MemOperand& operand) {
335688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    strb(al, size, rt, operand);
335788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
335888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
335988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strd(Condition cond,
336088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rt,
336188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rt2,
336288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand);
336388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strd(Register rt, Register rt2, const MemOperand& operand) {
336488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    strd(al, rt, rt2, operand);
336588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
336688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
336788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strex(Condition cond,
336888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rd,
336988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             Register rt,
337088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             const MemOperand& operand);
337188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strex(Register rd, Register rt, const MemOperand& operand) {
337288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    strex(al, rd, rt, operand);
337388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
337488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
337588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strexb(Condition cond,
337688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rd,
337788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt,
337888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const MemOperand& operand);
337988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strexb(Register rd, Register rt, const MemOperand& operand) {
338088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    strexb(al, rd, rt, operand);
338188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
338288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
338388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strexd(Condition cond,
338488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rd,
338588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt,
338688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt2,
338788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const MemOperand& operand);
338888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strexd(Register rd,
338988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt,
339088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt2,
339188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const MemOperand& operand) {
339288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    strexd(al, rd, rt, rt2, operand);
339388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
339488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
339588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strexh(Condition cond,
339688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rd,
339788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rt,
339888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const MemOperand& operand);
339988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strexh(Register rd, Register rt, const MemOperand& operand) {
340088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    strexh(al, rd, rt, operand);
340188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
340288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
340388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strh(Condition cond,
340488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
340588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rt,
340688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand);
340788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strh(Register rt, const MemOperand& operand) {
340888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    strh(al, Best, rt, operand);
340988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
341088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strh(Condition cond, Register rt, const MemOperand& operand) {
341188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    strh(cond, Best, rt, operand);
341288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
341388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void strh(EncodingSize size, Register rt, const MemOperand& operand) {
341488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    strh(al, size, rt, operand);
341588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
341688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
341788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sub(Condition cond,
341888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
341988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
342088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
342188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
342288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sub(Register rd, Register rn, const Operand& operand) {
342388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sub(al, Best, rd, rn, operand);
342488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
342588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sub(Condition cond, Register rd, Register rn, const Operand& operand) {
342688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sub(cond, Best, rd, rn, operand);
342788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
342888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sub(EncodingSize size,
342988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rd,
343088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
343188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand) {
343288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sub(al, size, rd, rn, operand);
343388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
343488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
343588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sub(Condition cond, Register rd, const Operand& operand);
343688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sub(Register rd, const Operand& operand) { sub(al, rd, operand); }
343788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
343888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void subs(Condition cond,
343988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
344088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
344188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
344288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
344388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void subs(Register rd, Register rn, const Operand& operand) {
344488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    subs(al, Best, rd, rn, operand);
344588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
344688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void subs(Condition cond, Register rd, Register rn, const Operand& operand) {
344788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    subs(cond, Best, rd, rn, operand);
344888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
344988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void subs(EncodingSize size,
345088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
345188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
345288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand) {
345388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    subs(al, size, rd, rn, operand);
345488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
345588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
345688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void subs(Register rd, const Operand& operand);
345788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
345888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void subw(Condition cond, Register rd, Register rn, const Operand& operand);
345988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void subw(Register rd, Register rn, const Operand& operand) {
346088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    subw(al, rd, rn, operand);
346188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
346288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
346388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void svc(Condition cond, uint32_t imm);
346488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void svc(uint32_t imm) { svc(al, imm); }
346588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
346688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxtab(Condition cond, Register rd, Register rn, const Operand& operand);
346788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxtab(Register rd, Register rn, const Operand& operand) {
346888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sxtab(al, rd, rn, operand);
346988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
347088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
347188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxtab16(Condition cond,
347288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               Register rd,
347388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               Register rn,
347488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               const Operand& operand);
347588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxtab16(Register rd, Register rn, const Operand& operand) {
347688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sxtab16(al, rd, rn, operand);
347788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
347888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
347988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxtah(Condition cond, Register rd, Register rn, const Operand& operand);
348088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxtah(Register rd, Register rn, const Operand& operand) {
348188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sxtah(al, rd, rn, operand);
348288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
348388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
348488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxtb(Condition cond,
348588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
348688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
348788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
348888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxtb(Register rd, const Operand& operand) {
348988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sxtb(al, Best, rd, operand);
349088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
349188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxtb(Condition cond, Register rd, const Operand& operand) {
349288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sxtb(cond, Best, rd, operand);
349388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
349488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxtb(EncodingSize size, Register rd, const Operand& operand) {
349588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sxtb(al, size, rd, operand);
349688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
349788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
349888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxtb16(Condition cond, Register rd, const Operand& operand);
349988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxtb16(Register rd, const Operand& operand) { sxtb16(al, rd, operand); }
350088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
350188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxth(Condition cond,
350288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
350388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
350488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
350588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxth(Register rd, const Operand& operand) {
350688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sxth(al, Best, rd, operand);
350788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
350888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxth(Condition cond, Register rd, const Operand& operand) {
350988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sxth(cond, Best, rd, operand);
351088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
351188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void sxth(EncodingSize size, Register rd, const Operand& operand) {
351288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    sxth(al, size, rd, operand);
351388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
351488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
351588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void tbb(Condition cond, Register rn, Register rm);
351688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void tbb(Register rn, Register rm) { tbb(al, rn, rm); }
351788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
351888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void tbh(Condition cond, Register rn, Register rm);
351988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void tbh(Register rn, Register rm) { tbh(al, rn, rm); }
352088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
352188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void teq(Condition cond, Register rn, const Operand& operand);
352288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void teq(Register rn, const Operand& operand) { teq(al, rn, operand); }
352388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
352488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void tst(Condition cond,
352588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           EncodingSize size,
352688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           Register rn,
352788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois           const Operand& operand);
352888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void tst(Register rn, const Operand& operand) { tst(al, Best, rn, operand); }
352988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void tst(Condition cond, Register rn, const Operand& operand) {
353088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    tst(cond, Best, rn, operand);
353188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
353288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void tst(EncodingSize size, Register rn, const Operand& operand) {
353388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    tst(al, size, rn, operand);
353488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
353588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
353688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uadd16(Condition cond, Register rd, Register rn, Register rm);
353788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uadd16(Register rd, Register rn, Register rm) { uadd16(al, rd, rn, rm); }
353888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
353988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uadd8(Condition cond, Register rd, Register rn, Register rm);
354088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uadd8(Register rd, Register rn, Register rm) { uadd8(al, rd, rn, rm); }
354188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
354288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uasx(Condition cond, Register rd, Register rn, Register rm);
354388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uasx(Register rd, Register rn, Register rm) { uasx(al, rd, rn, rm); }
354488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
354588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ubfx(Condition cond,
354688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
354788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
354888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            uint32_t lsb,
354988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
355088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void ubfx(Register rd, Register rn, uint32_t lsb, const Operand& operand) {
355188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    ubfx(al, rd, rn, lsb, operand);
355288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
355388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
355488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void udf(Condition cond, EncodingSize size, uint32_t imm);
355588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void udf(uint32_t imm) { udf(al, Best, imm); }
355688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void udf(Condition cond, uint32_t imm) { udf(cond, Best, imm); }
355788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void udf(EncodingSize size, uint32_t imm) { udf(al, size, imm); }
355888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
355988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void udiv(Condition cond, Register rd, Register rn, Register rm);
356088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void udiv(Register rd, Register rn, Register rm) { udiv(al, rd, rn, rm); }
356188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
356288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uhadd16(Condition cond, Register rd, Register rn, Register rm);
356388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uhadd16(Register rd, Register rn, Register rm) {
356488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    uhadd16(al, rd, rn, rm);
356588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
356688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
356788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uhadd8(Condition cond, Register rd, Register rn, Register rm);
356888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uhadd8(Register rd, Register rn, Register rm) { uhadd8(al, rd, rn, rm); }
356988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
357088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uhasx(Condition cond, Register rd, Register rn, Register rm);
357188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uhasx(Register rd, Register rn, Register rm) { uhasx(al, rd, rn, rm); }
357288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
357388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uhsax(Condition cond, Register rd, Register rn, Register rm);
357488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uhsax(Register rd, Register rn, Register rm) { uhsax(al, rd, rn, rm); }
357588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
357688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uhsub16(Condition cond, Register rd, Register rn, Register rm);
357788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uhsub16(Register rd, Register rn, Register rm) {
357888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    uhsub16(al, rd, rn, rm);
357988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
358088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
358188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uhsub8(Condition cond, Register rd, Register rn, Register rm);
358288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uhsub8(Register rd, Register rn, Register rm) { uhsub8(al, rd, rn, rm); }
358388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
358488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void umaal(
358588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
358688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void umaal(Register rdlo, Register rdhi, Register rn, Register rm) {
358788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    umaal(al, rdlo, rdhi, rn, rm);
358888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
358988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
359088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void umlal(
359188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
359288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void umlal(Register rdlo, Register rdhi, Register rn, Register rm) {
359388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    umlal(al, rdlo, rdhi, rn, rm);
359488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
359588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
359688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void umlals(
359788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
359888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void umlals(Register rdlo, Register rdhi, Register rn, Register rm) {
359988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    umlals(al, rdlo, rdhi, rn, rm);
360088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
360188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
360288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void umull(
360388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
360488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void umull(Register rdlo, Register rdhi, Register rn, Register rm) {
360588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    umull(al, rdlo, rdhi, rn, rm);
360688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
360788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
360888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void umulls(
360988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
361088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void umulls(Register rdlo, Register rdhi, Register rn, Register rm) {
361188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    umulls(al, rdlo, rdhi, rn, rm);
361288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
361388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
361488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uqadd16(Condition cond, Register rd, Register rn, Register rm);
361588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uqadd16(Register rd, Register rn, Register rm) {
361688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    uqadd16(al, rd, rn, rm);
361788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
361888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
361988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uqadd8(Condition cond, Register rd, Register rn, Register rm);
362088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uqadd8(Register rd, Register rn, Register rm) { uqadd8(al, rd, rn, rm); }
362188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
362288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uqasx(Condition cond, Register rd, Register rn, Register rm);
362388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uqasx(Register rd, Register rn, Register rm) { uqasx(al, rd, rn, rm); }
362488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
362588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uqsax(Condition cond, Register rd, Register rn, Register rm);
362688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uqsax(Register rd, Register rn, Register rm) { uqsax(al, rd, rn, rm); }
362788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
362888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uqsub16(Condition cond, Register rd, Register rn, Register rm);
362988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uqsub16(Register rd, Register rn, Register rm) {
363088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    uqsub16(al, rd, rn, rm);
363188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
363288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
363388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uqsub8(Condition cond, Register rd, Register rn, Register rm);
363488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uqsub8(Register rd, Register rn, Register rm) { uqsub8(al, rd, rn, rm); }
363588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
363688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usad8(Condition cond, Register rd, Register rn, Register rm);
363788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usad8(Register rd, Register rn, Register rm) { usad8(al, rd, rn, rm); }
363888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
363988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usada8(
364088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rd, Register rn, Register rm, Register ra);
364188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usada8(Register rd, Register rn, Register rm, Register ra) {
364288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    usada8(al, rd, rn, rm, ra);
364388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
364488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
364588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usat(Condition cond, Register rd, uint32_t imm, const Operand& operand);
364688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usat(Register rd, uint32_t imm, const Operand& operand) {
364788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    usat(al, rd, imm, operand);
364888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
364988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
365088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usat16(Condition cond, Register rd, uint32_t imm, Register rn);
365188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usat16(Register rd, uint32_t imm, Register rn) {
365288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    usat16(al, rd, imm, rn);
365388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
365488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
365588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usax(Condition cond, Register rd, Register rn, Register rm);
365688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usax(Register rd, Register rn, Register rm) { usax(al, rd, rn, rm); }
365788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
365888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usub16(Condition cond, Register rd, Register rn, Register rm);
365988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usub16(Register rd, Register rn, Register rm) { usub16(al, rd, rn, rm); }
366088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
366188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usub8(Condition cond, Register rd, Register rn, Register rm);
366288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void usub8(Register rd, Register rn, Register rm) { usub8(al, rd, rn, rm); }
366388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
366488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxtab(Condition cond, Register rd, Register rn, const Operand& operand);
366588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxtab(Register rd, Register rn, const Operand& operand) {
366688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    uxtab(al, rd, rn, operand);
366788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
366888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
366988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxtab16(Condition cond,
367088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               Register rd,
367188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               Register rn,
367288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               const Operand& operand);
367388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxtab16(Register rd, Register rn, const Operand& operand) {
367488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    uxtab16(al, rd, rn, operand);
367588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
367688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
367788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxtah(Condition cond, Register rd, Register rn, const Operand& operand);
367888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxtah(Register rd, Register rn, const Operand& operand) {
367988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    uxtah(al, rd, rn, operand);
368088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
368188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
368288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxtb(Condition cond,
368388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
368488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
368588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
368688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxtb(Register rd, const Operand& operand) {
368788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    uxtb(al, Best, rd, operand);
368888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
368988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxtb(Condition cond, Register rd, const Operand& operand) {
369088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    uxtb(cond, Best, rd, operand);
369188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
369288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxtb(EncodingSize size, Register rd, const Operand& operand) {
369388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    uxtb(al, size, rd, operand);
369488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
369588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
369688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxtb16(Condition cond, Register rd, const Operand& operand);
369788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxtb16(Register rd, const Operand& operand) { uxtb16(al, rd, operand); }
369888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
369988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxth(Condition cond,
370088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            EncodingSize size,
370188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rd,
370288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const Operand& operand);
370388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxth(Register rd, const Operand& operand) {
370488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    uxth(al, Best, rd, operand);
370588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
370688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxth(Condition cond, Register rd, const Operand& operand) {
370788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    uxth(cond, Best, rd, operand);
370888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
370988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void uxth(EncodingSize size, Register rd, const Operand& operand) {
371088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    uxth(al, size, rd, operand);
371188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
371288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
371388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaba(
371488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
371588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaba(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
371688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vaba(al, dt, rd, rn, rm);
371788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
371888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
371988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaba(
372088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
372188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaba(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
372288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vaba(al, dt, rd, rn, rm);
372388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
372488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
372588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabal(
372688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
372788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabal(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
372888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vabal(al, dt, rd, rn, rm);
372988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
373088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
373188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabd(
373288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
373388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
373488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vabd(al, dt, rd, rn, rm);
373588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
373688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
373788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabd(
373888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
373988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
374088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vabd(al, dt, rd, rn, rm);
374188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
374288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
374388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabdl(
374488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
374588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabdl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
374688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vabdl(al, dt, rd, rn, rm);
374788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
374888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
374988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabs(Condition cond, DataType dt, DRegister rd, DRegister rm);
375088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabs(DataType dt, DRegister rd, DRegister rm) { vabs(al, dt, rd, rm); }
375188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
375288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabs(Condition cond, DataType dt, QRegister rd, QRegister rm);
375388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabs(DataType dt, QRegister rd, QRegister rm) { vabs(al, dt, rd, rm); }
375488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
375588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabs(Condition cond, DataType dt, SRegister rd, SRegister rm);
375688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vabs(DataType dt, SRegister rd, SRegister rm) { vabs(al, dt, rd, rm); }
375788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
375888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vacge(
375988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
376088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vacge(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
376188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vacge(al, dt, rd, rn, rm);
376288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
376388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
376488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vacge(
376588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
376688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vacge(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
376788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vacge(al, dt, rd, rn, rm);
376888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
376988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
377088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vacgt(
377188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
377288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vacgt(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
377388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vacgt(al, dt, rd, rn, rm);
377488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
377588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
377688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vacgt(
377788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
377888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vacgt(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
377988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vacgt(al, dt, rd, rn, rm);
378088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
378188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
378288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vacle(
378388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
378488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vacle(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
378588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vacle(al, dt, rd, rn, rm);
378688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
378788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
378888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vacle(
378988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
379088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vacle(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
379188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vacle(al, dt, rd, rn, rm);
379288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
379388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
379488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaclt(
379588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
379688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaclt(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
379788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vaclt(al, dt, rd, rn, rm);
379888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
379988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
380088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaclt(
380188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
380288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaclt(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
380388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vaclt(al, dt, rd, rn, rm);
380488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
380588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
380688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vadd(
380788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
380888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
380988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vadd(al, dt, rd, rn, rm);
381088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
381188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
381288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vadd(
381388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
381488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vadd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
381588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vadd(al, dt, rd, rn, rm);
381688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
381788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
381888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vadd(
381988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
382088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vadd(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
382188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vadd(al, dt, rd, rn, rm);
382288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
382388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
382488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaddhn(
382588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
382688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaddhn(DataType dt, DRegister rd, QRegister rn, QRegister rm) {
382788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vaddhn(al, dt, rd, rn, rm);
382888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
382988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
383088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaddl(
383188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
383288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaddl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
383388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vaddl(al, dt, rd, rn, rm);
383488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
383588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
383688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaddw(
383788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, DRegister rm);
383888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vaddw(DataType dt, QRegister rd, QRegister rn, DRegister rm) {
383988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vaddw(al, dt, rd, rn, rm);
384088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
384188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
384288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vand(Condition cond,
384388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
384488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
384588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rn,
384688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
384788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vand(DataType dt, DRegister rd, DRegister rn, const DOperand& operand) {
384888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vand(al, dt, rd, rn, operand);
384988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
385088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
385188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vand(Condition cond,
385288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
385388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
385488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rn,
385588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
385688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vand(DataType dt, QRegister rd, QRegister rn, const QOperand& operand) {
385788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vand(al, dt, rd, rn, operand);
385888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
385988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
386088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbic(Condition cond,
386188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
386288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
386388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rn,
386488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
386588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbic(DataType dt, DRegister rd, DRegister rn, const DOperand& operand) {
386688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbic(al, dt, rd, rn, operand);
386788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
386888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
386988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbic(Condition cond,
387088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
387188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
387288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rn,
387388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
387488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbic(DataType dt, QRegister rd, QRegister rn, const QOperand& operand) {
387588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbic(al, dt, rd, rn, operand);
387688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
387788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
387888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbif(
387988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
388088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbif(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
388188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbif(al, dt, rd, rn, rm);
388288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
388388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbif(DRegister rd, DRegister rn, DRegister rm) {
388488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbif(al, kDataTypeValueNone, rd, rn, rm);
388588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
388688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbif(Condition cond, DRegister rd, DRegister rn, DRegister rm) {
388788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbif(cond, kDataTypeValueNone, rd, rn, rm);
388888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
388988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
389088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbif(
389188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
389288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbif(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
389388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbif(al, dt, rd, rn, rm);
389488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
389588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbif(QRegister rd, QRegister rn, QRegister rm) {
389688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbif(al, kDataTypeValueNone, rd, rn, rm);
389788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
389888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbif(Condition cond, QRegister rd, QRegister rn, QRegister rm) {
389988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbif(cond, kDataTypeValueNone, rd, rn, rm);
390088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
390188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
390288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbit(
390388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
390488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbit(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
390588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbit(al, dt, rd, rn, rm);
390688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
390788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbit(DRegister rd, DRegister rn, DRegister rm) {
390888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbit(al, kDataTypeValueNone, rd, rn, rm);
390988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
391088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbit(Condition cond, DRegister rd, DRegister rn, DRegister rm) {
391188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbit(cond, kDataTypeValueNone, rd, rn, rm);
391288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
391388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
391488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbit(
391588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
391688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbit(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
391788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbit(al, dt, rd, rn, rm);
391888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
391988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbit(QRegister rd, QRegister rn, QRegister rm) {
392088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbit(al, kDataTypeValueNone, rd, rn, rm);
392188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
392288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbit(Condition cond, QRegister rd, QRegister rn, QRegister rm) {
392388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbit(cond, kDataTypeValueNone, rd, rn, rm);
392488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
392588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
392688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbsl(
392788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
392888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbsl(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
392988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbsl(al, dt, rd, rn, rm);
393088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
393188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbsl(DRegister rd, DRegister rn, DRegister rm) {
393288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbsl(al, kDataTypeValueNone, rd, rn, rm);
393388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
393488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbsl(Condition cond, DRegister rd, DRegister rn, DRegister rm) {
393588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbsl(cond, kDataTypeValueNone, rd, rn, rm);
393688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
393788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
393888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbsl(
393988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
394088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbsl(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
394188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbsl(al, dt, rd, rn, rm);
394288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
394388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbsl(QRegister rd, QRegister rn, QRegister rm) {
394488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbsl(al, kDataTypeValueNone, rd, rn, rm);
394588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
394688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vbsl(Condition cond, QRegister rd, QRegister rn, QRegister rm) {
394788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vbsl(cond, kDataTypeValueNone, rd, rn, rm);
394888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
394988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
395088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vceq(Condition cond,
395188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
395288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
395388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm,
395488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
395588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vceq(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
395688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vceq(al, dt, rd, rm, operand);
395788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
395888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
395988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vceq(Condition cond,
396088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
396188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
396288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rm,
396388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
396488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vceq(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
396588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vceq(al, dt, rd, rm, operand);
396688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
396788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
396888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vceq(
396988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
397088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vceq(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
397188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vceq(al, dt, rd, rn, rm);
397288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
397388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
397488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vceq(
397588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
397688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vceq(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
397788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vceq(al, dt, rd, rn, rm);
397888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
397988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
398088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcge(Condition cond,
398188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
398288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
398388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm,
398488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
398588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcge(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
398688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcge(al, dt, rd, rm, operand);
398788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
398888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
398988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcge(Condition cond,
399088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
399188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
399288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rm,
399388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
399488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcge(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
399588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcge(al, dt, rd, rm, operand);
399688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
399788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
399888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcge(
399988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
400088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcge(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
400188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcge(al, dt, rd, rn, rm);
400288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
400388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
400488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcge(
400588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
400688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcge(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
400788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcge(al, dt, rd, rn, rm);
400888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
400988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
401088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcgt(Condition cond,
401188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
401288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
401388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm,
401488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
401588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcgt(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
401688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcgt(al, dt, rd, rm, operand);
401788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
401888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
401988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcgt(Condition cond,
402088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
402188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
402288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rm,
402388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
402488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcgt(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
402588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcgt(al, dt, rd, rm, operand);
402688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
402788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
402888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcgt(
402988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
403088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcgt(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
403188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcgt(al, dt, rd, rn, rm);
403288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
403388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
403488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcgt(
403588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
403688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcgt(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
403788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcgt(al, dt, rd, rn, rm);
403888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
403988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
404088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcle(Condition cond,
404188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
404288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
404388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm,
404488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
404588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcle(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
404688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcle(al, dt, rd, rm, operand);
404788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
404888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
404988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcle(Condition cond,
405088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
405188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
405288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rm,
405388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
405488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcle(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
405588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcle(al, dt, rd, rm, operand);
405688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
405788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
405888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcle(
405988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
406088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcle(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
406188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcle(al, dt, rd, rn, rm);
406288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
406388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
406488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcle(
406588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
406688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcle(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
406788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcle(al, dt, rd, rn, rm);
406888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
406988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
407088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcls(Condition cond, DataType dt, DRegister rd, DRegister rm);
407188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcls(DataType dt, DRegister rd, DRegister rm) { vcls(al, dt, rd, rm); }
407288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
407388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcls(Condition cond, DataType dt, QRegister rd, QRegister rm);
407488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcls(DataType dt, QRegister rd, QRegister rm) { vcls(al, dt, rd, rm); }
407588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
407688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vclt(Condition cond,
407788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
407888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
407988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm,
408088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
408188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vclt(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
408288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vclt(al, dt, rd, rm, operand);
408388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
408488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
408588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vclt(Condition cond,
408688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
408788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
408888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rm,
408988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
409088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vclt(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
409188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vclt(al, dt, rd, rm, operand);
409288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
409388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
409488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vclt(
409588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
409688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vclt(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
409788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vclt(al, dt, rd, rn, rm);
409888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
409988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
410088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vclt(
410188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
410288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vclt(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
410388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vclt(al, dt, rd, rn, rm);
410488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
410588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
410688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vclz(Condition cond, DataType dt, DRegister rd, DRegister rm);
410788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vclz(DataType dt, DRegister rd, DRegister rm) { vclz(al, dt, rd, rm); }
410888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
410988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vclz(Condition cond, DataType dt, QRegister rd, QRegister rm);
411088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vclz(DataType dt, QRegister rd, QRegister rm) { vclz(al, dt, rd, rm); }
411188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
411288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmp(Condition cond, DataType dt, SRegister rd, SRegister rm);
411388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmp(DataType dt, SRegister rd, SRegister rm) { vcmp(al, dt, rd, rm); }
411488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
411588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmp(Condition cond, DataType dt, DRegister rd, DRegister rm);
411688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmp(DataType dt, DRegister rd, DRegister rm) { vcmp(al, dt, rd, rm); }
411788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
411888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmp(Condition cond, DataType dt, SRegister rd, double imm);
411988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmp(DataType dt, SRegister rd, double imm) { vcmp(al, dt, rd, imm); }
412088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
412188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmp(Condition cond, DataType dt, DRegister rd, double imm);
412288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmp(DataType dt, DRegister rd, double imm) { vcmp(al, dt, rd, imm); }
412388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
412488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmpe(Condition cond, DataType dt, SRegister rd, SRegister rm);
412588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmpe(DataType dt, SRegister rd, SRegister rm) { vcmpe(al, dt, rd, rm); }
412688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
412788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmpe(Condition cond, DataType dt, DRegister rd, DRegister rm);
412888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmpe(DataType dt, DRegister rd, DRegister rm) { vcmpe(al, dt, rd, rm); }
412988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
413088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmpe(Condition cond, DataType dt, SRegister rd, double imm);
413188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmpe(DataType dt, SRegister rd, double imm) { vcmpe(al, dt, rd, imm); }
413288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
413388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmpe(Condition cond, DataType dt, DRegister rd, double imm);
413488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcmpe(DataType dt, DRegister rd, double imm) { vcmpe(al, dt, rd, imm); }
413588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
413688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcnt(Condition cond, DataType dt, DRegister rd, DRegister rm);
413788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcnt(DataType dt, DRegister rd, DRegister rm) { vcnt(al, dt, rd, rm); }
413888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
413988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcnt(Condition cond, DataType dt, QRegister rd, QRegister rm);
414088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcnt(DataType dt, QRegister rd, QRegister rm) { vcnt(al, dt, rd, rm); }
414188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
414288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(
414388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, DRegister rd, SRegister rm);
414488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(DataType dt1, DataType dt2, DRegister rd, SRegister rm) {
414588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvt(al, dt1, dt2, rd, rm);
414688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
414788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
414888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(
414988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
415088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(DataType dt1, DataType dt2, SRegister rd, DRegister rm) {
415188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvt(al, dt1, dt2, rd, rm);
415288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
415388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
415488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(Condition cond,
415588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt1,
415688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt2,
415788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
415888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm,
415988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            int32_t fbits);
416088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(
416188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      DataType dt1, DataType dt2, DRegister rd, DRegister rm, int32_t fbits) {
416288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvt(al, dt1, dt2, rd, rm, fbits);
416388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
416488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
416588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(Condition cond,
416688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt1,
416788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt2,
416888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
416988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rm,
417088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            int32_t fbits);
417188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(
417288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      DataType dt1, DataType dt2, QRegister rd, QRegister rm, int32_t fbits) {
417388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvt(al, dt1, dt2, rd, rm, fbits);
417488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
417588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
417688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(Condition cond,
417788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt1,
417888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt2,
417988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            SRegister rd,
418088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            SRegister rm,
418188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            int32_t fbits);
418288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(
418388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      DataType dt1, DataType dt2, SRegister rd, SRegister rm, int32_t fbits) {
418488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvt(al, dt1, dt2, rd, rm, fbits);
418588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
418688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
418788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(
418888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, DRegister rd, DRegister rm);
418988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(DataType dt1, DataType dt2, DRegister rd, DRegister rm) {
419088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvt(al, dt1, dt2, rd, rm);
419188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
419288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
419388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(
419488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, QRegister rd, QRegister rm);
419588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(DataType dt1, DataType dt2, QRegister rd, QRegister rm) {
419688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvt(al, dt1, dt2, rd, rm);
419788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
419888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
419988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(
420088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, DRegister rd, QRegister rm);
420188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(DataType dt1, DataType dt2, DRegister rd, QRegister rm) {
420288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvt(al, dt1, dt2, rd, rm);
420388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
420488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
420588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(
420688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, QRegister rd, DRegister rm);
420788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(DataType dt1, DataType dt2, QRegister rd, DRegister rm) {
420888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvt(al, dt1, dt2, rd, rm);
420988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
421088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
421188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(
421288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
421388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvt(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
421488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvt(al, dt1, dt2, rd, rm);
421588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
421688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
421788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvta(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
421888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
421988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvta(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
422088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
422188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvta(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
422288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
422388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvta(DataType dt1, DataType dt2, SRegister rd, DRegister rm);
422488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
422588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtb(
422688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
422788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtb(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
422888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvtb(al, dt1, dt2, rd, rm);
422988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
423088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
423188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtb(
423288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, DRegister rd, SRegister rm);
423388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtb(DataType dt1, DataType dt2, DRegister rd, SRegister rm) {
423488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvtb(al, dt1, dt2, rd, rm);
423588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
423688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
423788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtb(
423888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
423988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtb(DataType dt1, DataType dt2, SRegister rd, DRegister rm) {
424088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvtb(al, dt1, dt2, rd, rm);
424188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
424288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
424388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtm(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
424488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
424588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtm(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
424688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
424788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtm(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
424888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
424988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtm(DataType dt1, DataType dt2, SRegister rd, DRegister rm);
425088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
425188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtn(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
425288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
425388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtn(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
425488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
425588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtn(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
425688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
425788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtn(DataType dt1, DataType dt2, SRegister rd, DRegister rm);
425888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
425988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtp(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
426088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
426188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtp(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
426288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
426388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtp(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
426488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
426588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtp(DataType dt1, DataType dt2, SRegister rd, DRegister rm);
426688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
426788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtr(
426888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
426988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtr(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
427088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvtr(al, dt1, dt2, rd, rm);
427188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
427288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
427388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtr(
427488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
427588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtr(DataType dt1, DataType dt2, SRegister rd, DRegister rm) {
427688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvtr(al, dt1, dt2, rd, rm);
427788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
427888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
427988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtt(
428088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
428188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtt(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
428288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvtt(al, dt1, dt2, rd, rm);
428388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
428488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
428588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtt(
428688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, DRegister rd, SRegister rm);
428788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtt(DataType dt1, DataType dt2, DRegister rd, SRegister rm) {
428888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvtt(al, dt1, dt2, rd, rm);
428988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
429088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
429188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtt(
429288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
429388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vcvtt(DataType dt1, DataType dt2, SRegister rd, DRegister rm) {
429488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vcvtt(al, dt1, dt2, rd, rm);
429588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
429688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
429788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vdiv(
429888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
429988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vdiv(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
430088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vdiv(al, dt, rd, rn, rm);
430188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
430288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
430388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vdiv(
430488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
430588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vdiv(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
430688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vdiv(al, dt, rd, rn, rm);
430788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
430888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
430988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vdup(Condition cond, DataType dt, QRegister rd, Register rt);
431088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vdup(DataType dt, QRegister rd, Register rt) { vdup(al, dt, rd, rt); }
431188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
431288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vdup(Condition cond, DataType dt, DRegister rd, Register rt);
431388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vdup(DataType dt, DRegister rd, Register rt) { vdup(al, dt, rd, rt); }
431488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
431588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vdup(Condition cond, DataType dt, DRegister rd, DRegisterLane rm);
431688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vdup(DataType dt, DRegister rd, DRegisterLane rm) {
431788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vdup(al, dt, rd, rm);
431888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
431988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
432088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vdup(Condition cond, DataType dt, QRegister rd, DRegisterLane rm);
432188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vdup(DataType dt, QRegister rd, DRegisterLane rm) {
432288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vdup(al, dt, rd, rm);
432388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
432488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
432588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void veor(
432688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
432788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void veor(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
432888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    veor(al, dt, rd, rn, rm);
432988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
433088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void veor(DRegister rd, DRegister rn, DRegister rm) {
433188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    veor(al, kDataTypeValueNone, rd, rn, rm);
433288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
433388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void veor(Condition cond, DRegister rd, DRegister rn, DRegister rm) {
433488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    veor(cond, kDataTypeValueNone, rd, rn, rm);
433588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
433688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
433788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void veor(
433888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
433988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void veor(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
434088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    veor(al, dt, rd, rn, rm);
434188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
434288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void veor(QRegister rd, QRegister rn, QRegister rm) {
434388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    veor(al, kDataTypeValueNone, rd, rn, rm);
434488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
434588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void veor(Condition cond, QRegister rd, QRegister rn, QRegister rm) {
434688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    veor(cond, kDataTypeValueNone, rd, rn, rm);
434788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
434888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
434988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vext(Condition cond,
435088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
435188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
435288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rn,
435388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm,
435488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
435588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vext(DataType dt,
435688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
435788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rn,
435888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm,
435988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand) {
436088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vext(al, dt, rd, rn, rm, operand);
436188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
436288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
436388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vext(Condition cond,
436488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
436588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
436688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rn,
436788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rm,
436888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
436988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vext(DataType dt,
437088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
437188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rn,
437288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rm,
437388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand) {
437488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vext(al, dt, rd, rn, rm, operand);
437588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
437688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
437788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfma(
437888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
437988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfma(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
438088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vfma(al, dt, rd, rn, rm);
438188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
438288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
438388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfma(
438488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
438588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfma(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
438688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vfma(al, dt, rd, rn, rm);
438788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
438888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
438988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfma(
439088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
439188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfma(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
439288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vfma(al, dt, rd, rn, rm);
439388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
439488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
439588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfms(
439688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
439788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfms(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
439888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vfms(al, dt, rd, rn, rm);
439988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
440088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
440188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfms(
440288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
440388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfms(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
440488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vfms(al, dt, rd, rn, rm);
440588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
440688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
440788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfms(
440888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
440988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfms(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
441088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vfms(al, dt, rd, rn, rm);
441188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
441288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
441388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfnma(
441488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
441588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfnma(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
441688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vfnma(al, dt, rd, rn, rm);
441788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
441888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
441988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfnma(
442088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
442188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfnma(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
442288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vfnma(al, dt, rd, rn, rm);
442388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
442488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
442588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfnms(
442688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
442788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfnms(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
442888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vfnms(al, dt, rd, rn, rm);
442988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
443088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
443188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfnms(
443288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
443388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vfnms(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
443488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vfnms(al, dt, rd, rn, rm);
443588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
443688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
443788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vhadd(
443888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
443988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vhadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
444088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vhadd(al, dt, rd, rn, rm);
444188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
444288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
444388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vhadd(
444488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
444588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vhadd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
444688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vhadd(al, dt, rd, rn, rm);
444788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
444888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
444988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vhsub(
445088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
445188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vhsub(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
445288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vhsub(al, dt, rd, rn, rm);
445388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
445488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
445588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vhsub(
445688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
445788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vhsub(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
445888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vhsub(al, dt, rd, rn, rm);
445988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
446088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
446188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vld1(Condition cond,
446288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
446388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
446488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand);
446588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vld1(DataType dt,
446688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
446788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand) {
446888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vld1(al, dt, nreglist, operand);
446988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
447088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
447188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vld2(Condition cond,
447288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
447388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
447488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand);
447588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vld2(DataType dt,
447688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
447788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand) {
447888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vld2(al, dt, nreglist, operand);
447988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
448088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
448188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vld3(Condition cond,
448288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
448388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
448488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand);
448588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vld3(DataType dt,
448688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
448788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand) {
448888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vld3(al, dt, nreglist, operand);
448988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
449088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
449188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vld3(Condition cond,
449288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
449388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
449488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand);
449588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vld3(DataType dt,
449688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
449788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand) {
449888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vld3(al, dt, nreglist, operand);
449988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
450088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
450188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vld4(Condition cond,
450288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
450388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
450488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand);
450588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vld4(DataType dt,
450688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
450788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand) {
450888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vld4(al, dt, nreglist, operand);
450988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
451088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
451188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldm(Condition cond,
451288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
451388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
451488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            WriteBack write_back,
451588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegisterList dreglist);
451688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldm(DataType dt,
451788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
451888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            WriteBack write_back,
451988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegisterList dreglist) {
452088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldm(al, dt, rn, write_back, dreglist);
452188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
452288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldm(Register rn, WriteBack write_back, DRegisterList dreglist) {
452388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldm(al, kDataTypeValueNone, rn, write_back, dreglist);
452488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
452588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldm(Condition cond,
452688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
452788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            WriteBack write_back,
452888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegisterList dreglist) {
452988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldm(cond, kDataTypeValueNone, rn, write_back, dreglist);
453088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
453188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
453288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldm(Condition cond,
453388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
453488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
453588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            WriteBack write_back,
453688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            SRegisterList sreglist);
453788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldm(DataType dt,
453888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
453988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            WriteBack write_back,
454088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            SRegisterList sreglist) {
454188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldm(al, dt, rn, write_back, sreglist);
454288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
454388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldm(Register rn, WriteBack write_back, SRegisterList sreglist) {
454488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldm(al, kDataTypeValueNone, rn, write_back, sreglist);
454588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
454688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldm(Condition cond,
454788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
454888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            WriteBack write_back,
454988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            SRegisterList sreglist) {
455088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldm(cond, kDataTypeValueNone, rn, write_back, sreglist);
455188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
455288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
455388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmdb(Condition cond,
455488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DataType dt,
455588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
455688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
455788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegisterList dreglist);
455888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmdb(DataType dt,
455988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
456088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
456188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegisterList dreglist) {
456288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldmdb(al, dt, rn, write_back, dreglist);
456388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
456488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmdb(Register rn, WriteBack write_back, DRegisterList dreglist) {
456588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldmdb(al, kDataTypeValueNone, rn, write_back, dreglist);
456688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
456788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmdb(Condition cond,
456888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
456988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
457088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegisterList dreglist) {
457188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldmdb(cond, kDataTypeValueNone, rn, write_back, dreglist);
457288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
457388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
457488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmdb(Condition cond,
457588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DataType dt,
457688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
457788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
457888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              SRegisterList sreglist);
457988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmdb(DataType dt,
458088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
458188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
458288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              SRegisterList sreglist) {
458388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldmdb(al, dt, rn, write_back, sreglist);
458488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
458588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmdb(Register rn, WriteBack write_back, SRegisterList sreglist) {
458688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldmdb(al, kDataTypeValueNone, rn, write_back, sreglist);
458788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
458888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmdb(Condition cond,
458988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
459088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
459188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              SRegisterList sreglist) {
459288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldmdb(cond, kDataTypeValueNone, rn, write_back, sreglist);
459388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
459488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
459588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmia(Condition cond,
459688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DataType dt,
459788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
459888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
459988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegisterList dreglist);
460088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmia(DataType dt,
460188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
460288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
460388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegisterList dreglist) {
460488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldmia(al, dt, rn, write_back, dreglist);
460588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
460688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmia(Register rn, WriteBack write_back, DRegisterList dreglist) {
460788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldmia(al, kDataTypeValueNone, rn, write_back, dreglist);
460888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
460988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmia(Condition cond,
461088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
461188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
461288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegisterList dreglist) {
461388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldmia(cond, kDataTypeValueNone, rn, write_back, dreglist);
461488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
461588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
461688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmia(Condition cond,
461788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DataType dt,
461888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
461988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
462088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              SRegisterList sreglist);
462188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmia(DataType dt,
462288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
462388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
462488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              SRegisterList sreglist) {
462588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldmia(al, dt, rn, write_back, sreglist);
462688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
462788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmia(Register rn, WriteBack write_back, SRegisterList sreglist) {
462888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldmia(al, kDataTypeValueNone, rn, write_back, sreglist);
462988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
463088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldmia(Condition cond,
463188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
463288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
463388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              SRegisterList sreglist) {
463488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldmia(cond, kDataTypeValueNone, rn, write_back, sreglist);
463588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
463688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
463788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(Condition cond, DataType dt, DRegister rd, Label* label);
463888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(DataType dt, DRegister rd, Label* label) {
463988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldr(al, dt, rd, label);
464088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
464188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(DRegister rd, Label* label) { vldr(al, Untyped64, rd, label); }
464288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(Condition cond, DRegister rd, Label* label) {
464388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldr(cond, Untyped64, rd, label);
464488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
464588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
464688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(Condition cond,
464788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
464888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
464988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand);
465088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(DataType dt, DRegister rd, const MemOperand& operand) {
465188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldr(al, dt, rd, operand);
465288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
465388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(DRegister rd, const MemOperand& operand) {
465488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldr(al, Untyped64, rd, operand);
465588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
465688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(Condition cond, DRegister rd, const MemOperand& operand) {
465788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldr(cond, Untyped64, rd, operand);
465888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
465988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
466088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(Condition cond, DataType dt, SRegister rd, Label* label);
466188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(DataType dt, SRegister rd, Label* label) {
466288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldr(al, dt, rd, label);
466388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
466488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(SRegister rd, Label* label) { vldr(al, Untyped32, rd, label); }
466588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(Condition cond, SRegister rd, Label* label) {
466688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldr(cond, Untyped32, rd, label);
466788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
466888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
466988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(Condition cond,
467088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
467188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            SRegister rd,
467288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand);
467388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(DataType dt, SRegister rd, const MemOperand& operand) {
467488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldr(al, dt, rd, operand);
467588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
467688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(SRegister rd, const MemOperand& operand) {
467788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldr(al, Untyped32, rd, operand);
467888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
467988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vldr(Condition cond, SRegister rd, const MemOperand& operand) {
468088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vldr(cond, Untyped32, rd, operand);
468188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
468288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
468388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmax(
468488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
468588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmax(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
468688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmax(al, dt, rd, rn, rm);
468788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
468888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
468988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmax(
469088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
469188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmax(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
469288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmax(al, dt, rd, rn, rm);
469388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
469488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
469588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmaxnm(DataType dt, DRegister rd, DRegister rn, DRegister rm);
469688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
469788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmaxnm(DataType dt, QRegister rd, QRegister rn, QRegister rm);
469888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
469988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmaxnm(DataType dt, SRegister rd, SRegister rn, SRegister rm);
470088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
470188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmin(
470288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
470388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmin(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
470488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmin(al, dt, rd, rn, rm);
470588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
470688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
470788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmin(
470888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
470988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmin(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
471088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmin(al, dt, rd, rn, rm);
471188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
471288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
471388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vminnm(DataType dt, DRegister rd, DRegister rn, DRegister rm);
471488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
471588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vminnm(DataType dt, QRegister rd, QRegister rn, QRegister rm);
471688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
471788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vminnm(DataType dt, SRegister rd, SRegister rn, SRegister rm);
471888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
471988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmla(Condition cond,
472088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
472188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
472288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rn,
472388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegisterLane rm);
472488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmla(DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
472588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmla(al, dt, rd, rn, rm);
472688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
472788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
472888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmla(Condition cond,
472988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
473088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
473188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rn,
473288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegisterLane rm);
473388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmla(DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
473488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmla(al, dt, rd, rn, rm);
473588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
473688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
473788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmla(
473888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
473988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmla(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
474088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmla(al, dt, rd, rn, rm);
474188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
474288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
474388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmla(
474488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
474588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmla(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
474688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmla(al, dt, rd, rn, rm);
474788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
474888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
474988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmla(
475088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
475188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmla(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
475288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmla(al, dt, rd, rn, rm);
475388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
475488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
475588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmlal(Condition cond,
475688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DataType dt,
475788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             QRegister rd,
475888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegister rn,
475988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegisterLane rm);
476088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmlal(DataType dt, QRegister rd, DRegister rn, DRegisterLane rm) {
476188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmlal(al, dt, rd, rn, rm);
476288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
476388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
476488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmlal(
476588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
476688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmlal(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
476788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmlal(al, dt, rd, rn, rm);
476888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
476988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
477088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmls(Condition cond,
477188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
477288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
477388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rn,
477488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegisterLane rm);
477588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmls(DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
477688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmls(al, dt, rd, rn, rm);
477788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
477888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
477988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmls(Condition cond,
478088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
478188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
478288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rn,
478388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegisterLane rm);
478488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmls(DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
478588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmls(al, dt, rd, rn, rm);
478688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
478788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
478888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmls(
478988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
479088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmls(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
479188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmls(al, dt, rd, rn, rm);
479288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
479388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
479488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmls(
479588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
479688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmls(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
479788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmls(al, dt, rd, rn, rm);
479888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
479988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
480088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmls(
480188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
480288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmls(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
480388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmls(al, dt, rd, rn, rm);
480488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
480588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
480688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmlsl(Condition cond,
480788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DataType dt,
480888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             QRegister rd,
480988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegister rn,
481088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegisterLane rm);
481188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmlsl(DataType dt, QRegister rd, DRegister rn, DRegisterLane rm) {
481288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmlsl(al, dt, rd, rn, rm);
481388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
481488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
481588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmlsl(
481688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
481788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmlsl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
481888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmlsl(al, dt, rd, rn, rm);
481988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
482088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
482188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Condition cond, Register rt, SRegister rn);
482288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Register rt, SRegister rn) { vmov(al, rt, rn); }
482388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
482488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Condition cond, SRegister rn, Register rt);
482588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(SRegister rn, Register rt) { vmov(al, rn, rt); }
482688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
482788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Condition cond, Register rt, Register rt2, DRegister rm);
482888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Register rt, Register rt2, DRegister rm) { vmov(al, rt, rt2, rm); }
482988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
483088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Condition cond, DRegister rm, Register rt, Register rt2);
483188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(DRegister rm, Register rt, Register rt2) { vmov(al, rm, rt, rt2); }
483288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
483388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(
483488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, Register rt, Register rt2, SRegister rm, SRegister rm1);
483588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Register rt, Register rt2, SRegister rm, SRegister rm1) {
483688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmov(al, rt, rt2, rm, rm1);
483788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
483888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
483988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(
484088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, SRegister rm, SRegister rm1, Register rt, Register rt2);
484188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(SRegister rm, SRegister rm1, Register rt, Register rt2) {
484288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmov(al, rm, rm1, rt, rt2);
484388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
484488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
484588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Condition cond, DataType dt, DRegisterLane rd, Register rt);
484688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(DataType dt, DRegisterLane rd, Register rt) {
484788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmov(al, dt, rd, rt);
484888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
484988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(DRegisterLane rd, Register rt) {
485088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmov(al, kDataTypeValueNone, rd, rt);
485188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
485288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Condition cond, DRegisterLane rd, Register rt) {
485388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmov(cond, kDataTypeValueNone, rd, rt);
485488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
485588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
485688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Condition cond, DataType dt, DRegister rd, const DOperand& operand);
485788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(DataType dt, DRegister rd, const DOperand& operand) {
485888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmov(al, dt, rd, operand);
485988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
486088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
486188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Condition cond, DataType dt, QRegister rd, const QOperand& operand);
486288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(DataType dt, QRegister rd, const QOperand& operand) {
486388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmov(al, dt, rd, operand);
486488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
486588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
486688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Condition cond, DataType dt, SRegister rd, const SOperand& operand);
486788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(DataType dt, SRegister rd, const SOperand& operand) {
486888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmov(al, dt, rd, operand);
486988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
487088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
487188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Condition cond, DataType dt, Register rt, DRegisterLane rn);
487288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(DataType dt, Register rt, DRegisterLane rn) {
487388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmov(al, dt, rt, rn);
487488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
487588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Register rt, DRegisterLane rn) {
487688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmov(al, kDataTypeValueNone, rt, rn);
487788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
487888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmov(Condition cond, Register rt, DRegisterLane rn) {
487988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmov(cond, kDataTypeValueNone, rt, rn);
488088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
488188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
488288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmovl(Condition cond, DataType dt, QRegister rd, DRegister rm);
488388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmovl(DataType dt, QRegister rd, DRegister rm) { vmovl(al, dt, rd, rm); }
488488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
488588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmovn(Condition cond, DataType dt, DRegister rd, QRegister rm);
488688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmovn(DataType dt, DRegister rd, QRegister rm) { vmovn(al, dt, rd, rm); }
488788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
488888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmrs(Condition cond, RegisterOrAPSR_nzcv rt, SpecialFPRegister spec_reg);
488988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmrs(RegisterOrAPSR_nzcv rt, SpecialFPRegister spec_reg) {
489088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmrs(al, rt, spec_reg);
489188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
489288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
489388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmsr(Condition cond, SpecialFPRegister spec_reg, Register rt);
489488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmsr(SpecialFPRegister spec_reg, Register rt) { vmsr(al, spec_reg, rt); }
489588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
489688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmul(Condition cond,
489788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
489888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
489988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rn,
490088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister dm,
490188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            unsigned index);
490288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmul(
490388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      DataType dt, DRegister rd, DRegister rn, DRegister dm, unsigned index) {
490488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmul(al, dt, rd, rn, dm, index);
490588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
490688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
490788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmul(Condition cond,
490888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
490988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
491088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rn,
491188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister dm,
491288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            unsigned index);
491388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmul(
491488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      DataType dt, QRegister rd, QRegister rn, DRegister dm, unsigned index) {
491588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmul(al, dt, rd, rn, dm, index);
491688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
491788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
491888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmul(
491988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
492088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmul(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
492188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmul(al, dt, rd, rn, rm);
492288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
492388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
492488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmul(
492588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
492688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmul(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
492788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmul(al, dt, rd, rn, rm);
492888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
492988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
493088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmul(
493188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
493288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmul(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
493388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmul(al, dt, rd, rn, rm);
493488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
493588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
493688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmull(Condition cond,
493788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DataType dt,
493888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             QRegister rd,
493988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegister rn,
494088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegister dm,
494188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             unsigned index);
494288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmull(
494388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      DataType dt, QRegister rd, DRegister rn, DRegister dm, unsigned index) {
494488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmull(al, dt, rd, rn, dm, index);
494588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
494688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
494788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmull(
494888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
494988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmull(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
495088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmull(al, dt, rd, rn, rm);
495188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
495288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
495388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmvn(Condition cond, DataType dt, DRegister rd, const DOperand& operand);
495488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmvn(DataType dt, DRegister rd, const DOperand& operand) {
495588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmvn(al, dt, rd, operand);
495688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
495788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
495888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmvn(Condition cond, DataType dt, QRegister rd, const QOperand& operand);
495988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vmvn(DataType dt, QRegister rd, const QOperand& operand) {
496088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vmvn(al, dt, rd, operand);
496188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
496288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
496388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vneg(Condition cond, DataType dt, DRegister rd, DRegister rm);
496488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vneg(DataType dt, DRegister rd, DRegister rm) { vneg(al, dt, rd, rm); }
496588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
496688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vneg(Condition cond, DataType dt, QRegister rd, QRegister rm);
496788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vneg(DataType dt, QRegister rd, QRegister rm) { vneg(al, dt, rd, rm); }
496888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
496988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vneg(Condition cond, DataType dt, SRegister rd, SRegister rm);
497088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vneg(DataType dt, SRegister rd, SRegister rm) { vneg(al, dt, rd, rm); }
497188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
497288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vnmla(
497388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
497488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vnmla(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
497588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vnmla(al, dt, rd, rn, rm);
497688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
497788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
497888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vnmla(
497988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
498088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vnmla(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
498188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vnmla(al, dt, rd, rn, rm);
498288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
498388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
498488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vnmls(
498588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
498688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vnmls(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
498788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vnmls(al, dt, rd, rn, rm);
498888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
498988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
499088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vnmls(
499188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
499288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vnmls(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
499388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vnmls(al, dt, rd, rn, rm);
499488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
499588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
499688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vnmul(
499788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
499888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vnmul(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
499988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vnmul(al, dt, rd, rn, rm);
500088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
500188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
500288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vnmul(
500388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
500488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vnmul(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
500588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vnmul(al, dt, rd, rn, rm);
500688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
500788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
500888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vorn(Condition cond,
500988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
501088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
501188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rn,
501288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
501388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vorn(DataType dt, DRegister rd, DRegister rn, const DOperand& operand) {
501488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vorn(al, dt, rd, rn, operand);
501588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
501688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
501788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vorn(Condition cond,
501888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
501988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
502088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rn,
502188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
502288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vorn(DataType dt, QRegister rd, QRegister rn, const QOperand& operand) {
502388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vorn(al, dt, rd, rn, operand);
502488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
502588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
502688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vorr(Condition cond,
502788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
502888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
502988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rn,
503088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
503188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vorr(DataType dt, DRegister rd, DRegister rn, const DOperand& operand) {
503288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vorr(al, dt, rd, rn, operand);
503388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
503488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vorr(DRegister rd, DRegister rn, const DOperand& operand) {
503588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vorr(al, kDataTypeValueNone, rd, rn, operand);
503688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
503788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vorr(Condition cond,
503888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
503988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rn,
504088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand) {
504188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vorr(cond, kDataTypeValueNone, rd, rn, operand);
504288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
504388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
504488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vorr(Condition cond,
504588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
504688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
504788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rn,
504888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
504988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vorr(DataType dt, QRegister rd, QRegister rn, const QOperand& operand) {
505088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vorr(al, dt, rd, rn, operand);
505188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
505288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vorr(QRegister rd, QRegister rn, const QOperand& operand) {
505388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vorr(al, kDataTypeValueNone, rd, rn, operand);
505488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
505588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vorr(Condition cond,
505688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
505788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rn,
505888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand) {
505988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vorr(cond, kDataTypeValueNone, rd, rn, operand);
506088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
506188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
506288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpadal(Condition cond, DataType dt, DRegister rd, DRegister rm);
506388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpadal(DataType dt, DRegister rd, DRegister rm) {
506488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vpadal(al, dt, rd, rm);
506588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
506688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
506788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpadal(Condition cond, DataType dt, QRegister rd, QRegister rm);
506888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpadal(DataType dt, QRegister rd, QRegister rm) {
506988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vpadal(al, dt, rd, rm);
507088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
507188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
507288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpadd(
507388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
507488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
507588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vpadd(al, dt, rd, rn, rm);
507688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
507788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
507888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpaddl(Condition cond, DataType dt, DRegister rd, DRegister rm);
507988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpaddl(DataType dt, DRegister rd, DRegister rm) {
508088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vpaddl(al, dt, rd, rm);
508188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
508288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
508388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpaddl(Condition cond, DataType dt, QRegister rd, QRegister rm);
508488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpaddl(DataType dt, QRegister rd, QRegister rm) {
508588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vpaddl(al, dt, rd, rm);
508688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
508788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
508888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpmax(
508988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
509088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpmax(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
509188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vpmax(al, dt, rd, rn, rm);
509288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
509388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
509488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpmin(
509588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
509688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpmin(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
509788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vpmin(al, dt, rd, rn, rm);
509888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
509988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
510088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpop(Condition cond, DataType dt, DRegisterList dreglist);
510188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpop(DataType dt, DRegisterList dreglist) { vpop(al, dt, dreglist); }
510288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpop(DRegisterList dreglist) { vpop(al, kDataTypeValueNone, dreglist); }
510388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpop(Condition cond, DRegisterList dreglist) {
510488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vpop(cond, kDataTypeValueNone, dreglist);
510588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
510688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
510788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpop(Condition cond, DataType dt, SRegisterList sreglist);
510888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpop(DataType dt, SRegisterList sreglist) { vpop(al, dt, sreglist); }
510988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpop(SRegisterList sreglist) { vpop(al, kDataTypeValueNone, sreglist); }
511088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpop(Condition cond, SRegisterList sreglist) {
511188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vpop(cond, kDataTypeValueNone, sreglist);
511288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
511388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
511488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpush(Condition cond, DataType dt, DRegisterList dreglist);
511588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpush(DataType dt, DRegisterList dreglist) { vpush(al, dt, dreglist); }
511688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpush(DRegisterList dreglist) {
511788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vpush(al, kDataTypeValueNone, dreglist);
511888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
511988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpush(Condition cond, DRegisterList dreglist) {
512088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vpush(cond, kDataTypeValueNone, dreglist);
512188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
512288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
512388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpush(Condition cond, DataType dt, SRegisterList sreglist);
512488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpush(DataType dt, SRegisterList sreglist) { vpush(al, dt, sreglist); }
512588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpush(SRegisterList sreglist) {
512688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vpush(al, kDataTypeValueNone, sreglist);
512788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
512888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vpush(Condition cond, SRegisterList sreglist) {
512988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vpush(cond, kDataTypeValueNone, sreglist);
513088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
513188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
513288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqabs(Condition cond, DataType dt, DRegister rd, DRegister rm);
513388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqabs(DataType dt, DRegister rd, DRegister rm) { vqabs(al, dt, rd, rm); }
513488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
513588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqabs(Condition cond, DataType dt, QRegister rd, QRegister rm);
513688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqabs(DataType dt, QRegister rd, QRegister rm) { vqabs(al, dt, rd, rm); }
513788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
513888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqadd(
513988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
514088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
514188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqadd(al, dt, rd, rn, rm);
514288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
514388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
514488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqadd(
514588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
514688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqadd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
514788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqadd(al, dt, rd, rn, rm);
514888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
514988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
515088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmlal(
515188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
515288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmlal(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
515388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqdmlal(al, dt, rd, rn, rm);
515488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
515588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
515688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmlal(Condition cond,
515788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DataType dt,
515888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               QRegister rd,
515988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegister rn,
516088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegister dm,
516188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               unsigned index);
516288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmlal(
516388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      DataType dt, QRegister rd, DRegister rn, DRegister dm, unsigned index) {
516488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqdmlal(al, dt, rd, rn, dm, index);
516588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
516688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
516788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmlsl(
516888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
516988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmlsl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
517088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqdmlsl(al, dt, rd, rn, rm);
517188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
517288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
517388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmlsl(Condition cond,
517488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DataType dt,
517588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               QRegister rd,
517688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegister rn,
517788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegister dm,
517888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               unsigned index);
517988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmlsl(
518088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      DataType dt, QRegister rd, DRegister rn, DRegister dm, unsigned index) {
518188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqdmlsl(al, dt, rd, rn, dm, index);
518288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
518388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
518488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmulh(
518588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
518688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmulh(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
518788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqdmulh(al, dt, rd, rn, rm);
518888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
518988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
519088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmulh(
519188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
519288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmulh(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
519388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqdmulh(al, dt, rd, rn, rm);
519488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
519588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
519688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmulh(Condition cond,
519788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DataType dt,
519888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegister rd,
519988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegister rn,
520088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegisterLane rm);
520188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmulh(DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
520288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqdmulh(al, dt, rd, rn, rm);
520388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
520488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
520588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmulh(Condition cond,
520688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DataType dt,
520788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               QRegister rd,
520888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               QRegister rn,
520988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegisterLane rm);
521088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmulh(DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
521188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqdmulh(al, dt, rd, rn, rm);
521288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
521388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
521488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmull(
521588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
521688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmull(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
521788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqdmull(al, dt, rd, rn, rm);
521888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
521988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
522088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmull(Condition cond,
522188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DataType dt,
522288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               QRegister rd,
522388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegister rn,
522488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegisterLane rm);
522588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqdmull(DataType dt, QRegister rd, DRegister rn, DRegisterLane rm) {
522688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqdmull(al, dt, rd, rn, rm);
522788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
522888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
522988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqmovn(Condition cond, DataType dt, DRegister rd, QRegister rm);
523088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqmovn(DataType dt, DRegister rd, QRegister rm) {
523188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqmovn(al, dt, rd, rm);
523288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
523388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
523488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqmovun(Condition cond, DataType dt, DRegister rd, QRegister rm);
523588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqmovun(DataType dt, DRegister rd, QRegister rm) {
523688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqmovun(al, dt, rd, rm);
523788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
523888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
523988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqneg(Condition cond, DataType dt, DRegister rd, DRegister rm);
524088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqneg(DataType dt, DRegister rd, DRegister rm) { vqneg(al, dt, rd, rm); }
524188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
524288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqneg(Condition cond, DataType dt, QRegister rd, QRegister rm);
524388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqneg(DataType dt, QRegister rd, QRegister rm) { vqneg(al, dt, rd, rm); }
524488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
524588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrdmulh(
524688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
524788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrdmulh(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
524888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqrdmulh(al, dt, rd, rn, rm);
524988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
525088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
525188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrdmulh(
525288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
525388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrdmulh(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
525488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqrdmulh(al, dt, rd, rn, rm);
525588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
525688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
525788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrdmulh(Condition cond,
525888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                DataType dt,
525988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                DRegister rd,
526088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                DRegister rn,
526188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                DRegisterLane rm);
526288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrdmulh(DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
526388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqrdmulh(al, dt, rd, rn, rm);
526488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
526588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
526688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrdmulh(Condition cond,
526788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                DataType dt,
526888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                QRegister rd,
526988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                QRegister rn,
527088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                DRegisterLane rm);
527188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrdmulh(DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
527288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqrdmulh(al, dt, rd, rn, rm);
527388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
527488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
527588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrshl(
527688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rm, DRegister rn);
527788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrshl(DataType dt, DRegister rd, DRegister rm, DRegister rn) {
527888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqrshl(al, dt, rd, rm, rn);
527988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
528088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
528188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrshl(
528288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rm, QRegister rn);
528388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrshl(DataType dt, QRegister rd, QRegister rm, QRegister rn) {
528488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqrshl(al, dt, rd, rm, rn);
528588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
528688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
528788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrshrn(Condition cond,
528888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DataType dt,
528988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegister rd,
529088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               QRegister rm,
529188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               const QOperand& operand);
529288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrshrn(DataType dt,
529388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegister rd,
529488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               QRegister rm,
529588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               const QOperand& operand) {
529688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqrshrn(al, dt, rd, rm, operand);
529788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
529888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
529988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrshrun(Condition cond,
530088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                DataType dt,
530188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                DRegister rd,
530288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                QRegister rm,
530388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                const QOperand& operand);
530488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqrshrun(DataType dt,
530588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                DRegister rd,
530688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                QRegister rm,
530788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois                const QOperand& operand) {
530888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqrshrun(al, dt, rd, rm, operand);
530988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
531088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
531188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqshl(Condition cond,
531288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DataType dt,
531388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegister rd,
531488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegister rm,
531588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             const DOperand& operand);
531688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqshl(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
531788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqshl(al, dt, rd, rm, operand);
531888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
531988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
532088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqshl(Condition cond,
532188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DataType dt,
532288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             QRegister rd,
532388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             QRegister rm,
532488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             const QOperand& operand);
532588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqshl(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
532688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqshl(al, dt, rd, rm, operand);
532788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
532888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
532988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqshlu(Condition cond,
533088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DataType dt,
533188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegister rd,
533288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegister rm,
533388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const DOperand& operand);
533488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqshlu(DataType dt,
533588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegister rd,
533688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegister rm,
533788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const DOperand& operand) {
533888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqshlu(al, dt, rd, rm, operand);
533988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
534088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
534188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqshlu(Condition cond,
534288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DataType dt,
534388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              QRegister rd,
534488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              QRegister rm,
534588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const QOperand& operand);
534688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqshlu(DataType dt,
534788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              QRegister rd,
534888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              QRegister rm,
534988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const QOperand& operand) {
535088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqshlu(al, dt, rd, rm, operand);
535188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
535288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
535388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqshrn(Condition cond,
535488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DataType dt,
535588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegister rd,
535688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              QRegister rm,
535788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const QOperand& operand);
535888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqshrn(DataType dt,
535988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegister rd,
536088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              QRegister rm,
536188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const QOperand& operand) {
536288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqshrn(al, dt, rd, rm, operand);
536388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
536488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
536588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqshrun(Condition cond,
536688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DataType dt,
536788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegister rd,
536888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               QRegister rm,
536988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               const QOperand& operand);
537088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqshrun(DataType dt,
537188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               DRegister rd,
537288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               QRegister rm,
537388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois               const QOperand& operand) {
537488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqshrun(al, dt, rd, rm, operand);
537588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
537688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
537788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqsub(
537888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
537988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqsub(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
538088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqsub(al, dt, rd, rn, rm);
538188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
538288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
538388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqsub(
538488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
538588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vqsub(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
538688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vqsub(al, dt, rd, rn, rm);
538788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
538888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
538988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vraddhn(
539088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
539188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vraddhn(DataType dt, DRegister rd, QRegister rn, QRegister rm) {
539288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vraddhn(al, dt, rd, rn, rm);
539388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
539488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
539588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrecpe(Condition cond, DataType dt, DRegister rd, DRegister rm);
539688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrecpe(DataType dt, DRegister rd, DRegister rm) {
539788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrecpe(al, dt, rd, rm);
539888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
539988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
540088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrecpe(Condition cond, DataType dt, QRegister rd, QRegister rm);
540188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrecpe(DataType dt, QRegister rd, QRegister rm) {
540288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrecpe(al, dt, rd, rm);
540388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
540488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
540588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrecps(
540688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
540788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrecps(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
540888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrecps(al, dt, rd, rn, rm);
540988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
541088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
541188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrecps(
541288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
541388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrecps(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
541488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrecps(al, dt, rd, rn, rm);
541588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
541688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
541788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrev16(Condition cond, DataType dt, DRegister rd, DRegister rm);
541888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrev16(DataType dt, DRegister rd, DRegister rm) {
541988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrev16(al, dt, rd, rm);
542088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
542188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
542288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrev16(Condition cond, DataType dt, QRegister rd, QRegister rm);
542388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrev16(DataType dt, QRegister rd, QRegister rm) {
542488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrev16(al, dt, rd, rm);
542588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
542688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
542788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrev32(Condition cond, DataType dt, DRegister rd, DRegister rm);
542888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrev32(DataType dt, DRegister rd, DRegister rm) {
542988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrev32(al, dt, rd, rm);
543088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
543188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
543288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrev32(Condition cond, DataType dt, QRegister rd, QRegister rm);
543388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrev32(DataType dt, QRegister rd, QRegister rm) {
543488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrev32(al, dt, rd, rm);
543588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
543688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
543788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrev64(Condition cond, DataType dt, DRegister rd, DRegister rm);
543888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrev64(DataType dt, DRegister rd, DRegister rm) {
543988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrev64(al, dt, rd, rm);
544088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
544188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
544288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrev64(Condition cond, DataType dt, QRegister rd, QRegister rm);
544388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrev64(DataType dt, QRegister rd, QRegister rm) {
544488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrev64(al, dt, rd, rm);
544588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
544688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
544788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrhadd(
544888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
544988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrhadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
545088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrhadd(al, dt, rd, rn, rm);
545188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
545288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
545388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrhadd(
545488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
545588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrhadd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
545688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrhadd(al, dt, rd, rn, rm);
545788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
545888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
545988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrinta(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
546088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
546188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrinta(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
546288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
546388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrinta(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
546488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
546588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintm(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
546688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
546788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintm(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
546888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
546988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintm(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
547088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
547188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintn(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
547288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
547388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintn(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
547488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
547588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintn(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
547688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
547788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintp(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
547888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
547988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintp(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
548088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
548188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintp(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
548288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
548388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintr(
548488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
548588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintr(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
548688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrintr(al, dt1, dt2, rd, rm);
548788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
548888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
548988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintr(
549088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, DRegister rd, DRegister rm);
549188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintr(DataType dt1, DataType dt2, DRegister rd, DRegister rm) {
549288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrintr(al, dt1, dt2, rd, rm);
549388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
549488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
549588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintx(
549688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, DRegister rd, DRegister rm);
549788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintx(DataType dt1, DataType dt2, DRegister rd, DRegister rm) {
549888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrintx(al, dt1, dt2, rd, rm);
549988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
550088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
550188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintx(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
550288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
550388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintx(
550488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
550588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintx(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
550688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrintx(al, dt1, dt2, rd, rm);
550788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
550888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
550988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintz(
551088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, DRegister rd, DRegister rm);
551188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintz(DataType dt1, DataType dt2, DRegister rd, DRegister rm) {
551288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrintz(al, dt1, dt2, rd, rm);
551388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
551488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
551588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintz(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
551688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
551788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintz(
551888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
551988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrintz(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
552088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrintz(al, dt1, dt2, rd, rm);
552188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
552288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
552388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrshl(
552488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rm, DRegister rn);
552588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrshl(DataType dt, DRegister rd, DRegister rm, DRegister rn) {
552688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrshl(al, dt, rd, rm, rn);
552788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
552888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
552988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrshl(
553088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rm, QRegister rn);
553188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrshl(DataType dt, QRegister rd, QRegister rm, QRegister rn) {
553288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrshl(al, dt, rd, rm, rn);
553388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
553488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
553588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrshr(Condition cond,
553688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DataType dt,
553788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegister rd,
553888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegister rm,
553988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             const DOperand& operand);
554088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrshr(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
554188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrshr(al, dt, rd, rm, operand);
554288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
554388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
554488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrshr(Condition cond,
554588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DataType dt,
554688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             QRegister rd,
554788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             QRegister rm,
554888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             const QOperand& operand);
554988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrshr(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
555088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrshr(al, dt, rd, rm, operand);
555188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
555288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
555388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrshrn(Condition cond,
555488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DataType dt,
555588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegister rd,
555688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              QRegister rm,
555788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const QOperand& operand);
555888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrshrn(DataType dt,
555988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegister rd,
556088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              QRegister rm,
556188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              const QOperand& operand) {
556288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrshrn(al, dt, rd, rm, operand);
556388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
556488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
556588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsqrte(Condition cond, DataType dt, DRegister rd, DRegister rm);
556688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsqrte(DataType dt, DRegister rd, DRegister rm) {
556788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrsqrte(al, dt, rd, rm);
556888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
556988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
557088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsqrte(Condition cond, DataType dt, QRegister rd, QRegister rm);
557188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsqrte(DataType dt, QRegister rd, QRegister rm) {
557288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrsqrte(al, dt, rd, rm);
557388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
557488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
557588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsqrts(
557688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
557788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsqrts(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
557888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrsqrts(al, dt, rd, rn, rm);
557988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
558088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
558188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsqrts(
558288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
558388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsqrts(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
558488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrsqrts(al, dt, rd, rn, rm);
558588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
558688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
558788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsra(Condition cond,
558888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DataType dt,
558988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegister rd,
559088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegister rm,
559188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             const DOperand& operand);
559288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsra(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
559388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrsra(al, dt, rd, rm, operand);
559488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
559588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
559688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsra(Condition cond,
559788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DataType dt,
559888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             QRegister rd,
559988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             QRegister rm,
560088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             const QOperand& operand);
560188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsra(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
560288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrsra(al, dt, rd, rm, operand);
560388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
560488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
560588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsubhn(
560688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
560788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vrsubhn(DataType dt, DRegister rd, QRegister rn, QRegister rm) {
560888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vrsubhn(al, dt, rd, rn, rm);
560988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
561088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
561188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vseleq(DataType dt, DRegister rd, DRegister rn, DRegister rm);
561288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
561388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vseleq(DataType dt, SRegister rd, SRegister rn, SRegister rm);
561488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
561588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vselge(DataType dt, DRegister rd, DRegister rn, DRegister rm);
561688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
561788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vselge(DataType dt, SRegister rd, SRegister rn, SRegister rm);
561888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
561988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vselgt(DataType dt, DRegister rd, DRegister rn, DRegister rm);
562088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
562188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vselgt(DataType dt, SRegister rd, SRegister rn, SRegister rm);
562288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
562388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vselvs(DataType dt, DRegister rd, DRegister rn, DRegister rm);
562488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
562588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vselvs(DataType dt, SRegister rd, SRegister rn, SRegister rm);
562688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
562788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vshl(Condition cond,
562888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
562988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
563088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm,
563188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
563288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vshl(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
563388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vshl(al, dt, rd, rm, operand);
563488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
563588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
563688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vshl(Condition cond,
563788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
563888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
563988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rm,
564088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
564188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vshl(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
564288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vshl(al, dt, rd, rm, operand);
564388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
564488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
564588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vshll(Condition cond,
564688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DataType dt,
564788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             QRegister rd,
564888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegister rm,
564988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             const DOperand& operand);
565088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vshll(DataType dt, QRegister rd, DRegister rm, const DOperand& operand) {
565188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vshll(al, dt, rd, rm, operand);
565288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
565388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
565488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vshr(Condition cond,
565588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
565688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
565788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm,
565888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
565988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vshr(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
566088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vshr(al, dt, rd, rm, operand);
566188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
566288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
566388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vshr(Condition cond,
566488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
566588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
566688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rm,
566788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
566888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vshr(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
566988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vshr(al, dt, rd, rm, operand);
567088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
567188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
567288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vshrn(Condition cond,
567388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DataType dt,
567488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             DRegister rd,
567588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             QRegister rm,
567688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois             const QOperand& operand);
567788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vshrn(DataType dt, DRegister rd, QRegister rm, const QOperand& operand) {
567888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vshrn(al, dt, rd, rm, operand);
567988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
568088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
568188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsli(Condition cond,
568288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
568388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
568488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm,
568588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
568688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsli(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
568788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vsli(al, dt, rd, rm, operand);
568888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
568988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
569088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsli(Condition cond,
569188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
569288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
569388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rm,
569488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
569588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsli(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
569688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vsli(al, dt, rd, rm, operand);
569788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
569888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
569988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsqrt(Condition cond, DataType dt, SRegister rd, SRegister rm);
570088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsqrt(DataType dt, SRegister rd, SRegister rm) { vsqrt(al, dt, rd, rm); }
570188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
570288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsqrt(Condition cond, DataType dt, DRegister rd, DRegister rm);
570388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsqrt(DataType dt, DRegister rd, DRegister rm) { vsqrt(al, dt, rd, rm); }
570488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
570588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsra(Condition cond,
570688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
570788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
570888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm,
570988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
571088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsra(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
571188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vsra(al, dt, rd, rm, operand);
571288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
571388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
571488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsra(Condition cond,
571588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
571688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
571788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rm,
571888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
571988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsra(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
572088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vsra(al, dt, rd, rm, operand);
572188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
572288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
572388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsri(Condition cond,
572488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
572588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
572688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm,
572788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const DOperand& operand);
572888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsri(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
572988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vsri(al, dt, rd, rm, operand);
573088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
573188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
573288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsri(Condition cond,
573388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
573488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rd,
573588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            QRegister rm,
573688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const QOperand& operand);
573788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsri(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
573888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vsri(al, dt, rd, rm, operand);
573988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
574088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
574188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vst1(Condition cond,
574288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
574388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
574488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand);
574588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vst1(DataType dt,
574688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
574788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand) {
574888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vst1(al, dt, nreglist, operand);
574988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
575088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
575188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vst2(Condition cond,
575288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
575388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
575488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand);
575588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vst2(DataType dt,
575688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
575788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand) {
575888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vst2(al, dt, nreglist, operand);
575988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
576088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
576188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vst3(Condition cond,
576288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
576388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
576488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand);
576588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vst3(DataType dt,
576688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
576788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand) {
576888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vst3(al, dt, nreglist, operand);
576988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
577088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
577188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vst3(Condition cond,
577288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
577388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
577488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand);
577588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vst3(DataType dt,
577688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
577788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand) {
577888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vst3(al, dt, nreglist, operand);
577988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
578088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
578188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vst4(Condition cond,
578288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
578388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
578488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand);
578588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vst4(DataType dt,
578688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
578788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const AlignedMemOperand& operand) {
578888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vst4(al, dt, nreglist, operand);
578988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
579088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
579188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstm(Condition cond,
579288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
579388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
579488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            WriteBack write_back,
579588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegisterList dreglist);
579688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstm(DataType dt,
579788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
579888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            WriteBack write_back,
579988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegisterList dreglist) {
580088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstm(al, dt, rn, write_back, dreglist);
580188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
580288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstm(Register rn, WriteBack write_back, DRegisterList dreglist) {
580388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstm(al, kDataTypeValueNone, rn, write_back, dreglist);
580488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
580588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstm(Condition cond,
580688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
580788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            WriteBack write_back,
580888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegisterList dreglist) {
580988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstm(cond, kDataTypeValueNone, rn, write_back, dreglist);
581088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
581188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
581288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstm(Condition cond,
581388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
581488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
581588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            WriteBack write_back,
581688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            SRegisterList sreglist);
581788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstm(DataType dt,
581888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
581988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            WriteBack write_back,
582088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            SRegisterList sreglist) {
582188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstm(al, dt, rn, write_back, sreglist);
582288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
582388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstm(Register rn, WriteBack write_back, SRegisterList sreglist) {
582488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstm(al, kDataTypeValueNone, rn, write_back, sreglist);
582588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
582688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstm(Condition cond,
582788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            Register rn,
582888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            WriteBack write_back,
582988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            SRegisterList sreglist) {
583088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstm(cond, kDataTypeValueNone, rn, write_back, sreglist);
583188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
583288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
583388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmdb(Condition cond,
583488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DataType dt,
583588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
583688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
583788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegisterList dreglist);
583888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmdb(DataType dt,
583988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
584088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
584188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegisterList dreglist) {
584288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstmdb(al, dt, rn, write_back, dreglist);
584388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
584488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmdb(Register rn, WriteBack write_back, DRegisterList dreglist) {
584588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstmdb(al, kDataTypeValueNone, rn, write_back, dreglist);
584688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
584788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmdb(Condition cond,
584888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
584988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
585088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegisterList dreglist) {
585188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstmdb(cond, kDataTypeValueNone, rn, write_back, dreglist);
585288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
585388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
585488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmdb(Condition cond,
585588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DataType dt,
585688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
585788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
585888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              SRegisterList sreglist);
585988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmdb(DataType dt,
586088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
586188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
586288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              SRegisterList sreglist) {
586388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstmdb(al, dt, rn, write_back, sreglist);
586488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
586588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmdb(Register rn, WriteBack write_back, SRegisterList sreglist) {
586688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstmdb(al, kDataTypeValueNone, rn, write_back, sreglist);
586788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
586888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmdb(Condition cond,
586988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
587088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
587188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              SRegisterList sreglist) {
587288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstmdb(cond, kDataTypeValueNone, rn, write_back, sreglist);
587388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
587488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
587588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmia(Condition cond,
587688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DataType dt,
587788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
587888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
587988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegisterList dreglist);
588088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmia(DataType dt,
588188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
588288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
588388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegisterList dreglist) {
588488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstmia(al, dt, rn, write_back, dreglist);
588588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
588688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmia(Register rn, WriteBack write_back, DRegisterList dreglist) {
588788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstmia(al, kDataTypeValueNone, rn, write_back, dreglist);
588888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
588988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmia(Condition cond,
589088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
589188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
589288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DRegisterList dreglist) {
589388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstmia(cond, kDataTypeValueNone, rn, write_back, dreglist);
589488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
589588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
589688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmia(Condition cond,
589788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              DataType dt,
589888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
589988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
590088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              SRegisterList sreglist);
590188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmia(DataType dt,
590288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
590388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
590488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              SRegisterList sreglist) {
590588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstmia(al, dt, rn, write_back, sreglist);
590688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
590788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmia(Register rn, WriteBack write_back, SRegisterList sreglist) {
590888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstmia(al, kDataTypeValueNone, rn, write_back, sreglist);
590988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
591088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstmia(Condition cond,
591188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              Register rn,
591288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              WriteBack write_back,
591388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois              SRegisterList sreglist) {
591488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstmia(cond, kDataTypeValueNone, rn, write_back, sreglist);
591588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
591688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
591788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstr(Condition cond,
591888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
591988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
592088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand);
592188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstr(DataType dt, DRegister rd, const MemOperand& operand) {
592288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstr(al, dt, rd, operand);
592388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
592488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstr(DRegister rd, const MemOperand& operand) {
592588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstr(al, Untyped64, rd, operand);
592688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
592788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstr(Condition cond, DRegister rd, const MemOperand& operand) {
592888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstr(cond, Untyped64, rd, operand);
592988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
593088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
593188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstr(Condition cond,
593288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
593388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            SRegister rd,
593488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const MemOperand& operand);
593588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstr(DataType dt, SRegister rd, const MemOperand& operand) {
593688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstr(al, dt, rd, operand);
593788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
593888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstr(SRegister rd, const MemOperand& operand) {
593988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstr(al, Untyped32, rd, operand);
594088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
594188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vstr(Condition cond, SRegister rd, const MemOperand& operand) {
594288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vstr(cond, Untyped32, rd, operand);
594388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
594488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
594588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsub(
594688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
594788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsub(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
594888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vsub(al, dt, rd, rn, rm);
594988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
595088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
595188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsub(
595288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
595388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsub(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
595488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vsub(al, dt, rd, rn, rm);
595588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
595688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
595788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsub(
595888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
595988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsub(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
596088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vsub(al, dt, rd, rn, rm);
596188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
596288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
596388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsubhn(
596488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
596588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsubhn(DataType dt, DRegister rd, QRegister rn, QRegister rm) {
596688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vsubhn(al, dt, rd, rn, rm);
596788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
596888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
596988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsubl(
597088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
597188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsubl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
597288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vsubl(al, dt, rd, rn, rm);
597388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
597488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
597588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsubw(
597688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, DRegister rm);
597788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vsubw(DataType dt, QRegister rd, QRegister rn, DRegister rm) {
597888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vsubw(al, dt, rd, rn, rm);
597988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
598088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
598188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vswp(Condition cond, DataType dt, DRegister rd, DRegister rm);
598288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vswp(DataType dt, DRegister rd, DRegister rm) { vswp(al, dt, rd, rm); }
598388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vswp(DRegister rd, DRegister rm) {
598488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vswp(al, kDataTypeValueNone, rd, rm);
598588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
598688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vswp(Condition cond, DRegister rd, DRegister rm) {
598788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vswp(cond, kDataTypeValueNone, rd, rm);
598888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
598988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
599088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vswp(Condition cond, DataType dt, QRegister rd, QRegister rm);
599188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vswp(DataType dt, QRegister rd, QRegister rm) { vswp(al, dt, rd, rm); }
599288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vswp(QRegister rd, QRegister rm) {
599388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vswp(al, kDataTypeValueNone, rd, rm);
599488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
599588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vswp(Condition cond, QRegister rd, QRegister rm) {
599688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vswp(cond, kDataTypeValueNone, rd, rm);
599788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
599888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
599988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vtbl(Condition cond,
600088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
600188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
600288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
600388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm);
600488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vtbl(DataType dt,
600588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
600688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
600788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm) {
600888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vtbl(al, dt, rd, nreglist, rm);
600988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
601088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
601188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vtbx(Condition cond,
601288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DataType dt,
601388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
601488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
601588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm);
601688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vtbx(DataType dt,
601788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rd,
601888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            const NeonRegisterList& nreglist,
601988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois            DRegister rm) {
602088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vtbx(al, dt, rd, nreglist, rm);
602188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
602288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
602388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vtrn(Condition cond, DataType dt, DRegister rd, DRegister rm);
602488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vtrn(DataType dt, DRegister rd, DRegister rm) { vtrn(al, dt, rd, rm); }
602588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
602688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vtrn(Condition cond, DataType dt, QRegister rd, QRegister rm);
602788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vtrn(DataType dt, QRegister rd, QRegister rm) { vtrn(al, dt, rd, rm); }
602888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
602988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vtst(
603088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
603188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vtst(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
603288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vtst(al, dt, rd, rn, rm);
603388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
603488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
603588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vtst(
603688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois      Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
603788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vtst(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
603888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois    vtst(al, dt, rd, rn, rm);
603988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
604088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
604188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vuzp(Condition cond, DataType dt, DRegister rd, DRegister rm);
604288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vuzp(DataType dt, DRegister rd, DRegister rm) { vuzp(al, dt, rd, rm); }
604388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
604488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vuzp(Condition cond, DataType dt, QRegister rd, QRegister rm);
604588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vuzp(DataType dt, QRegister rd, QRegister rm) { vuzp(al, dt, rd, rm); }
604688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
604788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vzip(Condition cond, DataType dt, DRegister rd, DRegister rm);
604888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vzip(DataType dt, DRegister rd, DRegister rm) { vzip(al, dt, rd, rm); }
604988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
605088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vzip(Condition cond, DataType dt, QRegister rd, QRegister rm);
605188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void vzip(DataType dt, QRegister rd, QRegister rm) { vzip(al, dt, rd, rm); }
605288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
605388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void yield(Condition cond, EncodingSize size);
605488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void yield() { yield(al, Best); }
605588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void yield(Condition cond) { yield(cond, Best); }
605688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  void yield(EncodingSize size) { yield(al, size); }
605788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  // End of generated code.
6058b44f7a6ee7f9cd194cde9577f5a941f2864795a4Pierre Langlois  virtual void UnimplementedDelegate(InstructionType type) {
6059b44f7a6ee7f9cd194cde9577f5a941f2864795a4Pierre Langlois    std::string error_message(std::string("Ill-formed '") +
6060b44f7a6ee7f9cd194cde9577f5a941f2864795a4Pierre Langlois                              std::string(ToCString(type)) +
6061b44f7a6ee7f9cd194cde9577f5a941f2864795a4Pierre Langlois                              std::string("' instruction.\n"));
6062b44f7a6ee7f9cd194cde9577f5a941f2864795a4Pierre Langlois    VIXL_ABORT_WITH_MSG(error_message.c_str());
606388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
60640cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois  virtual bool AllowUnpredictable() { return allow_unpredictable_; }
60650cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois  virtual bool AllowStronglyDiscouraged() {
60660cc43be9ba1881f608a25467b1387927af3b4caaPierre Langlois    return allow_strongly_discouraged_;
606788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois  }
606888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois};
606988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
607088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois}  // namespace aarch32
607188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois}  // namespace vixl
607288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois
6073d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#endif  // VIXL_AARCH32_ASSEMBLER_AARCH32_H_
6074