6160 lines
223 KiB
C++
6160 lines
223 KiB
C++
// Copyright 2017, VIXL authors
|
|
// All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions are met:
|
|
//
|
|
// * Redistributions of source code must retain the above copyright notice,
|
|
// this list of conditions and the following disclaimer.
|
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
// this list of conditions and the following disclaimer in the documentation
|
|
// and/or other materials provided with the distribution.
|
|
// * Neither the name of ARM Limited nor the names of its contributors may be
|
|
// used to endorse or promote products derived from this software without
|
|
// specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
|
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
#ifndef VIXL_AARCH32_ASSEMBLER_AARCH32_H_
|
|
#define VIXL_AARCH32_ASSEMBLER_AARCH32_H_
|
|
|
|
#include "assembler-base-vixl.h"
|
|
|
|
#include "aarch32/instructions-aarch32.h"
|
|
#include "aarch32/location-aarch32.h"
|
|
|
|
namespace vixl {
|
|
namespace aarch32 {
|
|
|
|
class Assembler : public internal::AssemblerBase {
|
|
InstructionSet isa_;
|
|
Condition first_condition_;
|
|
uint16_t it_mask_;
|
|
bool has_32_dregs_;
|
|
bool allow_unpredictable_;
|
|
bool allow_strongly_discouraged_;
|
|
|
|
protected:
|
|
void EmitT32_16(uint16_t instr);
|
|
void EmitT32_32(uint32_t instr);
|
|
void EmitA32(uint32_t instr);
|
|
// Check that the condition of the current instruction is consistent with the
|
|
// IT state.
|
|
void CheckIT(Condition condition) {
|
|
#ifdef VIXL_DEBUG
|
|
PerformCheckIT(condition);
|
|
#else
|
|
USE(condition);
|
|
#endif
|
|
}
|
|
#ifdef VIXL_DEBUG
|
|
void PerformCheckIT(Condition condition);
|
|
#endif
|
|
void AdvanceIT() {
|
|
first_condition_ =
|
|
Condition((first_condition_.GetCondition() & 0xe) | (it_mask_ >> 3));
|
|
it_mask_ = (it_mask_ << 1) & 0xf;
|
|
}
|
|
// Virtual, in order to be overridden by the MacroAssembler, which needs to
|
|
// notify the pool manager.
|
|
virtual void BindHelper(Label* label);
|
|
|
|
uint32_t Link(uint32_t instr,
|
|
Location* location,
|
|
const Location::EmitOperator& op,
|
|
const ReferenceInfo* info);
|
|
|
|
public:
|
|
class AllowUnpredictableScope {
|
|
Assembler* assembler_;
|
|
bool old_;
|
|
|
|
public:
|
|
explicit AllowUnpredictableScope(Assembler* assembler)
|
|
: assembler_(assembler), old_(assembler->allow_unpredictable_) {
|
|
assembler_->allow_unpredictable_ = true;
|
|
}
|
|
~AllowUnpredictableScope() { assembler_->allow_unpredictable_ = old_; }
|
|
};
|
|
class AllowStronglyDiscouragedScope {
|
|
Assembler* assembler_;
|
|
bool old_;
|
|
|
|
public:
|
|
explicit AllowStronglyDiscouragedScope(Assembler* assembler)
|
|
: assembler_(assembler), old_(assembler->allow_strongly_discouraged_) {
|
|
assembler_->allow_strongly_discouraged_ = true;
|
|
}
|
|
~AllowStronglyDiscouragedScope() {
|
|
assembler_->allow_strongly_discouraged_ = old_;
|
|
}
|
|
};
|
|
|
|
explicit Assembler(InstructionSet isa = kDefaultISA)
|
|
: isa_(isa),
|
|
first_condition_(al),
|
|
it_mask_(0),
|
|
has_32_dregs_(true),
|
|
allow_unpredictable_(false),
|
|
allow_strongly_discouraged_(false) {
|
|
#if defined(VIXL_INCLUDE_TARGET_A32_ONLY)
|
|
// Avoid compiler warning.
|
|
USE(isa_);
|
|
VIXL_ASSERT(isa == A32);
|
|
#elif defined(VIXL_INCLUDE_TARGET_T32_ONLY)
|
|
USE(isa_);
|
|
VIXL_ASSERT(isa == T32);
|
|
#endif
|
|
}
|
|
explicit Assembler(size_t capacity, InstructionSet isa = kDefaultISA)
|
|
: AssemblerBase(capacity),
|
|
isa_(isa),
|
|
first_condition_(al),
|
|
it_mask_(0),
|
|
has_32_dregs_(true),
|
|
allow_unpredictable_(false),
|
|
allow_strongly_discouraged_(false) {
|
|
#if defined(VIXL_INCLUDE_TARGET_A32_ONLY)
|
|
VIXL_ASSERT(isa == A32);
|
|
#elif defined(VIXL_INCLUDE_TARGET_T32_ONLY)
|
|
VIXL_ASSERT(isa == T32);
|
|
#endif
|
|
}
|
|
Assembler(byte* buffer, size_t capacity, InstructionSet isa = kDefaultISA)
|
|
: AssemblerBase(buffer, capacity),
|
|
isa_(isa),
|
|
first_condition_(al),
|
|
it_mask_(0),
|
|
has_32_dregs_(true),
|
|
allow_unpredictable_(false),
|
|
allow_strongly_discouraged_(false) {
|
|
#if defined(VIXL_INCLUDE_TARGET_A32_ONLY)
|
|
VIXL_ASSERT(isa == A32);
|
|
#elif defined(VIXL_INCLUDE_TARGET_T32_ONLY)
|
|
VIXL_ASSERT(isa == T32);
|
|
#endif
|
|
}
|
|
virtual ~Assembler() {}
|
|
|
|
void UseInstructionSet(InstructionSet isa) {
|
|
#if defined(VIXL_INCLUDE_TARGET_A32_ONLY)
|
|
USE(isa);
|
|
VIXL_ASSERT(isa == A32);
|
|
#elif defined(VIXL_INCLUDE_TARGET_T32_ONLY)
|
|
USE(isa);
|
|
VIXL_ASSERT(isa == T32);
|
|
#else
|
|
VIXL_ASSERT((isa_ == isa) || (GetCursorOffset() == 0));
|
|
isa_ = isa;
|
|
#endif
|
|
}
|
|
|
|
#if defined(VIXL_INCLUDE_TARGET_A32_ONLY)
|
|
InstructionSet GetInstructionSetInUse() const { return A32; }
|
|
#elif defined(VIXL_INCLUDE_TARGET_T32_ONLY)
|
|
InstructionSet GetInstructionSetInUse() const { return T32; }
|
|
#else
|
|
InstructionSet GetInstructionSetInUse() const { return isa_; }
|
|
#endif
|
|
|
|
void UseT32() { UseInstructionSet(T32); }
|
|
void UseA32() { UseInstructionSet(A32); }
|
|
bool IsUsingT32() const { return GetInstructionSetInUse() == T32; }
|
|
bool IsUsingA32() const { return GetInstructionSetInUse() == A32; }
|
|
|
|
void SetIT(Condition first_condition, uint16_t it_mask) {
|
|
VIXL_ASSERT(it_mask_ == 0);
|
|
first_condition_ = first_condition;
|
|
it_mask_ = it_mask;
|
|
}
|
|
bool InITBlock() { return it_mask_ != 0; }
|
|
bool OutsideITBlock() { return it_mask_ == 0; }
|
|
bool OutsideITBlockOrLast() { return (it_mask_ == 0) || (it_mask_ == 0x8); }
|
|
bool OutsideITBlockAndAlOrLast(Condition cond) {
|
|
return ((it_mask_ == 0) && cond.Is(al)) || (it_mask_ == 0x8);
|
|
}
|
|
void CheckNotIT() { VIXL_ASSERT(it_mask_ == 0); }
|
|
bool Has32DRegs() const { return has_32_dregs_; }
|
|
void SetHas32DRegs(bool has_32_dregs) { has_32_dregs_ = has_32_dregs; }
|
|
|
|
int32_t GetCursorOffset() const {
|
|
ptrdiff_t offset = buffer_.GetCursorOffset();
|
|
VIXL_ASSERT(IsInt32(offset));
|
|
return static_cast<int32_t>(offset);
|
|
}
|
|
|
|
uint32_t GetArchitectureStatePCOffset() const { return IsUsingT32() ? 4 : 8; }
|
|
|
|
// Bind a raw Location that will never be tracked by the pool manager.
|
|
void bind(Location* location) {
|
|
VIXL_ASSERT(AllowAssembler());
|
|
VIXL_ASSERT(!location->IsBound());
|
|
location->SetLocation(this, GetCursorOffset());
|
|
location->MarkBound();
|
|
}
|
|
|
|
// Bind a Label, which may be tracked by the pool manager in the presence of a
|
|
// MacroAssembler.
|
|
void bind(Label* label) {
|
|
VIXL_ASSERT(AllowAssembler());
|
|
BindHelper(label);
|
|
}
|
|
|
|
void place(RawLiteral* literal) {
|
|
VIXL_ASSERT(AllowAssembler());
|
|
VIXL_ASSERT(literal->IsManuallyPlaced());
|
|
literal->SetLocation(this, GetCursorOffset());
|
|
literal->MarkBound();
|
|
GetBuffer()->EnsureSpaceFor(literal->GetSize());
|
|
GetBuffer()->EmitData(literal->GetDataAddress(), literal->GetSize());
|
|
}
|
|
|
|
size_t GetSizeOfCodeGeneratedSince(Label* label) const {
|
|
VIXL_ASSERT(label->IsBound());
|
|
return buffer_.GetOffsetFrom(label->GetLocation());
|
|
}
|
|
|
|
// Helpers for it instruction.
|
|
void it(Condition cond) { it(cond, 0x8); }
|
|
void itt(Condition cond) { it(cond, 0x4); }
|
|
void ite(Condition cond) { it(cond, 0xc); }
|
|
void ittt(Condition cond) { it(cond, 0x2); }
|
|
void itet(Condition cond) { it(cond, 0xa); }
|
|
void itte(Condition cond) { it(cond, 0x6); }
|
|
void itee(Condition cond) { it(cond, 0xe); }
|
|
void itttt(Condition cond) { it(cond, 0x1); }
|
|
void itett(Condition cond) { it(cond, 0x9); }
|
|
void ittet(Condition cond) { it(cond, 0x5); }
|
|
void iteet(Condition cond) { it(cond, 0xd); }
|
|
void ittte(Condition cond) { it(cond, 0x3); }
|
|
void itete(Condition cond) { it(cond, 0xb); }
|
|
void ittee(Condition cond) { it(cond, 0x7); }
|
|
void iteee(Condition cond) { it(cond, 0xf); }
|
|
|
|
// Start of generated code.
|
|
typedef void (Assembler::*InstructionCondSizeRROp)(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
typedef void (Assembler::*InstructionCondROp)(Condition cond,
|
|
Register rd,
|
|
const Operand& operand);
|
|
typedef void (Assembler::*InstructionROp)(Register rd,
|
|
const Operand& operand);
|
|
typedef void (Assembler::*InstructionCondRROp)(Condition cond,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
typedef void (Assembler::*InstructionCondSizeRL)(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Location* location);
|
|
typedef void (Assembler::*InstructionDtQQ)(DataType dt,
|
|
QRegister rd,
|
|
QRegister rm);
|
|
typedef void (Assembler::*InstructionCondSizeL)(Condition cond,
|
|
EncodingSize size,
|
|
Location* location);
|
|
typedef void (Assembler::*InstructionCondRII)(Condition cond,
|
|
Register rd,
|
|
uint32_t lsb,
|
|
uint32_t width);
|
|
typedef void (Assembler::*InstructionCondRRII)(
|
|
Condition cond, Register rd, Register rn, uint32_t lsb, uint32_t width);
|
|
typedef void (Assembler::*InstructionCondI)(Condition cond, uint32_t imm);
|
|
typedef void (Assembler::*InstructionCondL)(Condition cond,
|
|
Location* location);
|
|
typedef void (Assembler::*InstructionCondR)(Condition cond, Register rm);
|
|
typedef void (Assembler::*InstructionRL)(Register rn, Location* location);
|
|
typedef void (Assembler::*InstructionCond)(Condition cond);
|
|
typedef void (Assembler::*InstructionCondRR)(Condition cond,
|
|
Register rd,
|
|
Register rm);
|
|
typedef void (Assembler::*InstructionCondSizeROp)(Condition cond,
|
|
EncodingSize size,
|
|
Register rn,
|
|
const Operand& operand);
|
|
typedef void (Assembler::*InstructionCondRRR)(Condition cond,
|
|
Register rd,
|
|
Register rn,
|
|
Register rm);
|
|
typedef void (Assembler::*InstructionCondBa)(Condition cond,
|
|
MemoryBarrier option);
|
|
typedef void (Assembler::*InstructionCondRwbDrl)(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist);
|
|
typedef void (Assembler::*InstructionCondRMop)(Condition cond,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
typedef void (Assembler::*InstructionCondRRMop)(Condition cond,
|
|
Register rt,
|
|
Register rt2,
|
|
const MemOperand& operand);
|
|
typedef void (Assembler::*InstructionCondSizeRwbRl)(Condition cond,
|
|
EncodingSize size,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
typedef void (Assembler::*InstructionCondRwbRl)(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
typedef void (Assembler::*InstructionCondSizeRMop)(Condition cond,
|
|
EncodingSize size,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
typedef void (Assembler::*InstructionCondRL)(Condition cond,
|
|
Register rt,
|
|
Location* location);
|
|
typedef void (Assembler::*InstructionCondRRL)(Condition cond,
|
|
Register rt,
|
|
Register rt2,
|
|
Location* location);
|
|
typedef void (Assembler::*InstructionCondRRRR)(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
typedef void (Assembler::*InstructionCondRSr)(Condition cond,
|
|
Register rd,
|
|
SpecialRegister spec_reg);
|
|
typedef void (Assembler::*InstructionCondMsrOp)(
|
|
Condition cond, MaskedSpecialRegister spec_reg, const Operand& operand);
|
|
typedef void (Assembler::*InstructionCondSizeRRR)(
|
|
Condition cond, EncodingSize size, Register rd, Register rn, Register rm);
|
|
typedef void (Assembler::*InstructionCondSize)(Condition cond,
|
|
EncodingSize size);
|
|
typedef void (Assembler::*InstructionCondMop)(Condition cond,
|
|
const MemOperand& operand);
|
|
typedef void (Assembler::*InstructionCondSizeRl)(Condition cond,
|
|
EncodingSize size,
|
|
RegisterList registers);
|
|
typedef void (Assembler::*InstructionCondSizeOrl)(Condition cond,
|
|
EncodingSize size,
|
|
Register rt);
|
|
typedef void (Assembler::*InstructionCondSizeRR)(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rm);
|
|
typedef void (Assembler::*InstructionDtQQQ)(DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
QRegister rm);
|
|
typedef void (Assembler::*InstructionCondRIOp)(Condition cond,
|
|
Register rd,
|
|
uint32_t imm,
|
|
const Operand& operand);
|
|
typedef void (Assembler::*InstructionCondRIR)(Condition cond,
|
|
Register rd,
|
|
uint32_t imm,
|
|
Register rn);
|
|
typedef void (Assembler::*InstructionCondRRRMop)(Condition cond,
|
|
Register rd,
|
|
Register rt,
|
|
Register rt2,
|
|
const MemOperand& operand);
|
|
typedef void (Assembler::*InstructionCondSizeI)(Condition cond,
|
|
EncodingSize size,
|
|
uint32_t imm);
|
|
typedef void (Assembler::*InstructionCondDtDDD)(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtQQQ)(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtQDD)(
|
|
Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtDD)(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtQQ)(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtSS)(Condition cond,
|
|
DataType dt,
|
|
SRegister rd,
|
|
SRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtSSS)(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtDQQ)(
|
|
Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtQQD)(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, DRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtDDDop)(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
const DOperand& operand);
|
|
typedef void (Assembler::*InstructionCondDtQQQop)(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
const QOperand& operand);
|
|
typedef void (Assembler::*InstructionCondDtSSop)(Condition cond,
|
|
DataType dt,
|
|
SRegister rd,
|
|
const SOperand& operand);
|
|
typedef void (Assembler::*InstructionCondDtDDop)(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
const DOperand& operand);
|
|
typedef void (Assembler::*InstructionCondDtDtDS)(
|
|
Condition cond, DataType dt1, DataType dt2, DRegister rd, SRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtDtSD)(
|
|
Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtDtDDSi)(Condition cond,
|
|
DataType dt1,
|
|
DataType dt2,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
int32_t fbits);
|
|
typedef void (Assembler::*InstructionCondDtDtQQSi)(Condition cond,
|
|
DataType dt1,
|
|
DataType dt2,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
int32_t fbits);
|
|
typedef void (Assembler::*InstructionCondDtDtSSSi)(Condition cond,
|
|
DataType dt1,
|
|
DataType dt2,
|
|
SRegister rd,
|
|
SRegister rm,
|
|
int32_t fbits);
|
|
typedef void (Assembler::*InstructionCondDtDtDD)(
|
|
Condition cond, DataType dt1, DataType dt2, DRegister rd, DRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtDtQQ)(
|
|
Condition cond, DataType dt1, DataType dt2, QRegister rd, QRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtDtDQ)(
|
|
Condition cond, DataType dt1, DataType dt2, DRegister rd, QRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtDtQD)(
|
|
Condition cond, DataType dt1, DataType dt2, QRegister rd, DRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtDtSS)(
|
|
Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
|
|
typedef void (Assembler::*InstructionDtDtDD)(DataType dt1,
|
|
DataType dt2,
|
|
DRegister rd,
|
|
DRegister rm);
|
|
typedef void (Assembler::*InstructionDtDtQQ)(DataType dt1,
|
|
DataType dt2,
|
|
QRegister rd,
|
|
QRegister rm);
|
|
typedef void (Assembler::*InstructionDtDtSS)(DataType dt1,
|
|
DataType dt2,
|
|
SRegister rd,
|
|
SRegister rm);
|
|
typedef void (Assembler::*InstructionDtDtSD)(DataType dt1,
|
|
DataType dt2,
|
|
SRegister rd,
|
|
DRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtQR)(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
Register rt);
|
|
typedef void (Assembler::*InstructionCondDtDR)(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
Register rt);
|
|
typedef void (Assembler::*InstructionCondDtDDx)(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegisterLane rm);
|
|
typedef void (Assembler::*InstructionCondDtQDx)(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
DRegisterLane rm);
|
|
typedef void (Assembler::*InstructionCondDtDDDDop)(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
typedef void (Assembler::*InstructionCondDtQQQQop)(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
typedef void (Assembler::*InstructionCondDtNrlAmop)(
|
|
Condition cond,
|
|
DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand);
|
|
typedef void (Assembler::*InstructionCondDtNrlMop)(
|
|
Condition cond,
|
|
DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const MemOperand& operand);
|
|
typedef void (Assembler::*InstructionCondDtRwbDrl)(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist);
|
|
typedef void (Assembler::*InstructionCondDtRwbSrl)(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist);
|
|
typedef void (Assembler::*InstructionCondDtDL)(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
Location* location);
|
|
typedef void (Assembler::*InstructionCondDtDMop)(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
const MemOperand& operand);
|
|
typedef void (Assembler::*InstructionCondDtSL)(Condition cond,
|
|
DataType dt,
|
|
SRegister rd,
|
|
Location* location);
|
|
typedef void (Assembler::*InstructionCondDtSMop)(Condition cond,
|
|
DataType dt,
|
|
SRegister rd,
|
|
const MemOperand& operand);
|
|
typedef void (Assembler::*InstructionDtDDD)(DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
DRegister rm);
|
|
typedef void (Assembler::*InstructionDtSSS)(DataType dt,
|
|
SRegister rd,
|
|
SRegister rn,
|
|
SRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtDDDx)(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
DRegisterLane rm);
|
|
typedef void (Assembler::*InstructionCondDtQQDx)(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
DRegisterLane rm);
|
|
typedef void (Assembler::*InstructionCondDtQDDx)(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
DRegister rn,
|
|
DRegisterLane rm);
|
|
typedef void (Assembler::*InstructionCondRS)(Condition cond,
|
|
Register rt,
|
|
SRegister rn);
|
|
typedef void (Assembler::*InstructionCondSR)(Condition cond,
|
|
SRegister rn,
|
|
Register rt);
|
|
typedef void (Assembler::*InstructionCondRRD)(Condition cond,
|
|
Register rt,
|
|
Register rt2,
|
|
DRegister rm);
|
|
typedef void (Assembler::*InstructionCondDRR)(Condition cond,
|
|
DRegister rm,
|
|
Register rt,
|
|
Register rt2);
|
|
typedef void (Assembler::*InstructionCondRRSS)(
|
|
Condition cond, Register rt, Register rt2, SRegister rm, SRegister rm1);
|
|
typedef void (Assembler::*InstructionCondSSRR)(
|
|
Condition cond, SRegister rm, SRegister rm1, Register rt, Register rt2);
|
|
typedef void (Assembler::*InstructionCondDtDxR)(Condition cond,
|
|
DataType dt,
|
|
DRegisterLane rd,
|
|
Register rt);
|
|
typedef void (Assembler::*InstructionCondDtQQop)(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
const QOperand& operand);
|
|
typedef void (Assembler::*InstructionCondDtRDx)(Condition cond,
|
|
DataType dt,
|
|
Register rt,
|
|
DRegisterLane rn);
|
|
typedef void (Assembler::*InstructionCondDtQD)(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
DRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtDQ)(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
QRegister rm);
|
|
typedef void (Assembler::*InstructionCondRoaSfp)(Condition cond,
|
|
RegisterOrAPSR_nzcv rt,
|
|
SpecialFPRegister spec_reg);
|
|
typedef void (Assembler::*InstructionCondSfpR)(Condition cond,
|
|
SpecialFPRegister spec_reg,
|
|
Register rt);
|
|
typedef void (Assembler::*InstructionCondDtDDIr)(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
DRegister dm,
|
|
unsigned index);
|
|
typedef void (Assembler::*InstructionCondDtQQIr)(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
DRegister dm,
|
|
unsigned index);
|
|
typedef void (Assembler::*InstructionCondDtQDIr)(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
DRegister rn,
|
|
DRegister dm,
|
|
unsigned index);
|
|
typedef void (Assembler::*InstructionCondDtDrl)(Condition cond,
|
|
DataType dt,
|
|
DRegisterList dreglist);
|
|
typedef void (Assembler::*InstructionCondDtSrl)(Condition cond,
|
|
DataType dt,
|
|
SRegisterList sreglist);
|
|
typedef void (Assembler::*InstructionCondDtDQQop)(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
typedef void (Assembler::*InstructionDtDD)(DataType dt,
|
|
DRegister rd,
|
|
DRegister rm);
|
|
typedef void (Assembler::*InstructionDtSS)(DataType dt,
|
|
SRegister rd,
|
|
SRegister rm);
|
|
typedef void (Assembler::*InstructionCondDtQDDop)(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
typedef void (Assembler::*InstructionCondDtDNrlD)(
|
|
Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
const NeonRegisterList& nreglist,
|
|
DRegister rm);
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSizeRROp /*instruction*/,
|
|
Condition /*cond*/,
|
|
EncodingSize /*size*/,
|
|
Register /*rd*/,
|
|
Register /*rn*/,
|
|
const Operand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kAdc) || (type == kAdcs) || (type == kAdd) ||
|
|
(type == kAdds) || (type == kAnd) || (type == kAnds) ||
|
|
(type == kAsr) || (type == kAsrs) || (type == kBic) ||
|
|
(type == kBics) || (type == kEor) || (type == kEors) ||
|
|
(type == kLsl) || (type == kLsls) || (type == kLsr) ||
|
|
(type == kLsrs) || (type == kOrr) || (type == kOrrs) ||
|
|
(type == kRor) || (type == kRors) || (type == kRsb) ||
|
|
(type == kRsbs) || (type == kSbc) || (type == kSbcs) ||
|
|
(type == kSub) || (type == kSubs));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondROp /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rd*/,
|
|
const Operand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kAdd) || (type == kMovt) || (type == kMovw) ||
|
|
(type == kSub) || (type == kSxtb16) || (type == kTeq) ||
|
|
(type == kUxtb16));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionROp /*instruction*/,
|
|
Register /*rd*/,
|
|
const Operand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kAdds) || (type == kSubs));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRROp /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rd*/,
|
|
Register /*rn*/,
|
|
const Operand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kAddw) || (type == kOrn) || (type == kOrns) ||
|
|
(type == kPkhbt) || (type == kPkhtb) || (type == kRsc) ||
|
|
(type == kRscs) || (type == kSubw) || (type == kSxtab) ||
|
|
(type == kSxtab16) || (type == kSxtah) || (type == kUxtab) ||
|
|
(type == kUxtab16) || (type == kUxtah));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSizeRL /*instruction*/,
|
|
Condition /*cond*/,
|
|
EncodingSize /*size*/,
|
|
Register /*rd*/,
|
|
Location* /*location*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kAdr) || (type == kLdr));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionDtQQ /*instruction*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
QRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVrinta) || (type == kVrintm) || (type == kVrintn) ||
|
|
(type == kVrintp) || (type == kVrintx) || (type == kVrintz));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSizeL /*instruction*/,
|
|
Condition /*cond*/,
|
|
EncodingSize /*size*/,
|
|
Location* /*location*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kB));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRII /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rd*/,
|
|
uint32_t /*lsb*/,
|
|
uint32_t /*width*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kBfc));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRRII /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rd*/,
|
|
Register /*rn*/,
|
|
uint32_t /*lsb*/,
|
|
uint32_t /*width*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kBfi) || (type == kSbfx) || (type == kUbfx));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondI /*instruction*/,
|
|
Condition /*cond*/,
|
|
uint32_t /*imm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kBkpt) || (type == kHlt) || (type == kHvc) ||
|
|
(type == kSvc));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondL /*instruction*/,
|
|
Condition /*cond*/,
|
|
Location* /*location*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kBl) || (type == kBlx) || (type == kPld) ||
|
|
(type == kPli));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondR /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kBlx) || (type == kBx) || (type == kBxj));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionRL /*instruction*/,
|
|
Register /*rn*/,
|
|
Location* /*location*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kCbnz) || (type == kCbz));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCond /*instruction*/,
|
|
Condition /*cond*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kClrex));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRR /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rd*/,
|
|
Register /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kClz) || (type == kRbit) || (type == kRrx) ||
|
|
(type == kRrxs));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSizeROp /*instruction*/,
|
|
Condition /*cond*/,
|
|
EncodingSize /*size*/,
|
|
Register /*rn*/,
|
|
const Operand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kCmn) || (type == kCmp) || (type == kMov) ||
|
|
(type == kMovs) || (type == kMvn) || (type == kMvns) ||
|
|
(type == kSxtb) || (type == kSxth) || (type == kTst) ||
|
|
(type == kUxtb) || (type == kUxth));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRRR /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rd*/,
|
|
Register /*rn*/,
|
|
Register /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kCrc32b) || (type == kCrc32cb) || (type == kCrc32ch) ||
|
|
(type == kCrc32cw) || (type == kCrc32h) || (type == kCrc32w) ||
|
|
(type == kMuls) || (type == kQadd) || (type == kQadd16) ||
|
|
(type == kQadd8) || (type == kQasx) || (type == kQdadd) ||
|
|
(type == kQdsub) || (type == kQsax) || (type == kQsub) ||
|
|
(type == kQsub16) || (type == kQsub8) || (type == kSadd16) ||
|
|
(type == kSadd8) || (type == kSasx) || (type == kSdiv) ||
|
|
(type == kSel) || (type == kShadd16) || (type == kShadd8) ||
|
|
(type == kShasx) || (type == kShsax) || (type == kShsub16) ||
|
|
(type == kShsub8) || (type == kSmmul) || (type == kSmmulr) ||
|
|
(type == kSmuad) || (type == kSmuadx) || (type == kSmulbb) ||
|
|
(type == kSmulbt) || (type == kSmultb) || (type == kSmultt) ||
|
|
(type == kSmulwb) || (type == kSmulwt) || (type == kSmusd) ||
|
|
(type == kSmusdx) || (type == kSsax) || (type == kSsub16) ||
|
|
(type == kSsub8) || (type == kUadd16) || (type == kUadd8) ||
|
|
(type == kUasx) || (type == kUdiv) || (type == kUhadd16) ||
|
|
(type == kUhadd8) || (type == kUhasx) || (type == kUhsax) ||
|
|
(type == kUhsub16) || (type == kUhsub8) || (type == kUqadd16) ||
|
|
(type == kUqadd8) || (type == kUqasx) || (type == kUqsax) ||
|
|
(type == kUqsub16) || (type == kUqsub8) || (type == kUsad8) ||
|
|
(type == kUsax) || (type == kUsub16) || (type == kUsub8));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondBa /*instruction*/,
|
|
Condition /*cond*/,
|
|
MemoryBarrier /*option*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kDmb) || (type == kDsb) || (type == kIsb));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRwbDrl /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rn*/,
|
|
WriteBack /*write_back*/,
|
|
DRegisterList /*dreglist*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kFldmdbx) || (type == kFldmiax) ||
|
|
(type == kFstmdbx) || (type == kFstmiax));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void DelegateIt(Condition /*cond*/, uint16_t /*mask*/) {
|
|
UnimplementedDelegate(kIt);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRMop /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rt*/,
|
|
const MemOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kLda) || (type == kLdab) || (type == kLdaex) ||
|
|
(type == kLdaexb) || (type == kLdaexh) || (type == kLdah) ||
|
|
(type == kLdrex) || (type == kLdrexb) || (type == kLdrexh) ||
|
|
(type == kStl) || (type == kStlb) || (type == kStlh));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRRMop /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rt*/,
|
|
Register /*rt2*/,
|
|
const MemOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kLdaexd) || (type == kLdrd) || (type == kLdrexd) ||
|
|
(type == kStlex) || (type == kStlexb) || (type == kStlexh) ||
|
|
(type == kStrd) || (type == kStrex) || (type == kStrexb) ||
|
|
(type == kStrexh));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSizeRwbRl /*instruction*/,
|
|
Condition /*cond*/,
|
|
EncodingSize /*size*/,
|
|
Register /*rn*/,
|
|
WriteBack /*write_back*/,
|
|
RegisterList /*registers*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kLdm) || (type == kLdmfd) || (type == kStm) ||
|
|
(type == kStmdb) || (type == kStmea));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRwbRl /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rn*/,
|
|
WriteBack /*write_back*/,
|
|
RegisterList /*registers*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kLdmda) || (type == kLdmdb) || (type == kLdmea) ||
|
|
(type == kLdmed) || (type == kLdmfa) || (type == kLdmib) ||
|
|
(type == kStmda) || (type == kStmed) || (type == kStmfa) ||
|
|
(type == kStmfd) || (type == kStmib));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSizeRMop /*instruction*/,
|
|
Condition /*cond*/,
|
|
EncodingSize /*size*/,
|
|
Register /*rt*/,
|
|
const MemOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kLdr) || (type == kLdrb) || (type == kLdrh) ||
|
|
(type == kLdrsb) || (type == kLdrsh) || (type == kStr) ||
|
|
(type == kStrb) || (type == kStrh));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRL /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rt*/,
|
|
Location* /*location*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kLdrb) || (type == kLdrh) || (type == kLdrsb) ||
|
|
(type == kLdrsh));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRRL /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rt*/,
|
|
Register /*rt2*/,
|
|
Location* /*location*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kLdrd));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRRRR /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rd*/,
|
|
Register /*rn*/,
|
|
Register /*rm*/,
|
|
Register /*ra*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kMla) || (type == kMlas) || (type == kMls) ||
|
|
(type == kSmlabb) || (type == kSmlabt) || (type == kSmlad) ||
|
|
(type == kSmladx) || (type == kSmlal) || (type == kSmlalbb) ||
|
|
(type == kSmlalbt) || (type == kSmlald) || (type == kSmlaldx) ||
|
|
(type == kSmlals) || (type == kSmlaltb) || (type == kSmlaltt) ||
|
|
(type == kSmlatb) || (type == kSmlatt) || (type == kSmlawb) ||
|
|
(type == kSmlawt) || (type == kSmlsd) || (type == kSmlsdx) ||
|
|
(type == kSmlsld) || (type == kSmlsldx) || (type == kSmmla) ||
|
|
(type == kSmmlar) || (type == kSmmls) || (type == kSmmlsr) ||
|
|
(type == kSmull) || (type == kSmulls) || (type == kUmaal) ||
|
|
(type == kUmlal) || (type == kUmlals) || (type == kUmull) ||
|
|
(type == kUmulls) || (type == kUsada8));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRSr /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rd*/,
|
|
SpecialRegister /*spec_reg*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kMrs));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondMsrOp /*instruction*/,
|
|
Condition /*cond*/,
|
|
MaskedSpecialRegister /*spec_reg*/,
|
|
const Operand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kMsr));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSizeRRR /*instruction*/,
|
|
Condition /*cond*/,
|
|
EncodingSize /*size*/,
|
|
Register /*rd*/,
|
|
Register /*rn*/,
|
|
Register /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kMul));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSize /*instruction*/,
|
|
Condition /*cond*/,
|
|
EncodingSize /*size*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kNop) || (type == kYield));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondMop /*instruction*/,
|
|
Condition /*cond*/,
|
|
const MemOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kPld) || (type == kPldw) || (type == kPli));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSizeRl /*instruction*/,
|
|
Condition /*cond*/,
|
|
EncodingSize /*size*/,
|
|
RegisterList /*registers*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kPop) || (type == kPush));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSizeOrl /*instruction*/,
|
|
Condition /*cond*/,
|
|
EncodingSize /*size*/,
|
|
Register /*rt*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kPop) || (type == kPush));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSizeRR /*instruction*/,
|
|
Condition /*cond*/,
|
|
EncodingSize /*size*/,
|
|
Register /*rd*/,
|
|
Register /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kRev) || (type == kRev16) || (type == kRevsh));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionDtQQQ /*instruction*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
QRegister /*rn*/,
|
|
QRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmaxnm) || (type == kVminnm));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRIOp /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rd*/,
|
|
uint32_t /*imm*/,
|
|
const Operand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kSsat) || (type == kUsat));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRIR /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rd*/,
|
|
uint32_t /*imm*/,
|
|
Register /*rn*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kSsat16) || (type == kUsat16));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRRRMop /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rd*/,
|
|
Register /*rt*/,
|
|
Register /*rt2*/,
|
|
const MemOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kStlexd) || (type == kStrexd));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSizeI /*instruction*/,
|
|
Condition /*cond*/,
|
|
EncodingSize /*size*/,
|
|
uint32_t /*imm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kUdf));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDDD /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
DRegister /*rn*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVaba) || (type == kVabd) || (type == kVacge) ||
|
|
(type == kVacgt) || (type == kVacle) || (type == kVaclt) ||
|
|
(type == kVadd) || (type == kVbif) || (type == kVbit) ||
|
|
(type == kVbsl) || (type == kVceq) || (type == kVcge) ||
|
|
(type == kVcgt) || (type == kVcle) || (type == kVclt) ||
|
|
(type == kVdiv) || (type == kVeor) || (type == kVfma) ||
|
|
(type == kVfms) || (type == kVfnma) || (type == kVfnms) ||
|
|
(type == kVhadd) || (type == kVhsub) || (type == kVmax) ||
|
|
(type == kVmin) || (type == kVmla) || (type == kVmls) ||
|
|
(type == kVmul) || (type == kVnmla) || (type == kVnmls) ||
|
|
(type == kVnmul) || (type == kVpadd) || (type == kVpmax) ||
|
|
(type == kVpmin) || (type == kVqadd) || (type == kVqdmulh) ||
|
|
(type == kVqrdmulh) || (type == kVqrshl) || (type == kVqsub) ||
|
|
(type == kVrecps) || (type == kVrhadd) || (type == kVrshl) ||
|
|
(type == kVrsqrts) || (type == kVsub) || (type == kVtst));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQQQ /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
QRegister /*rn*/,
|
|
QRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVaba) || (type == kVabd) || (type == kVacge) ||
|
|
(type == kVacgt) || (type == kVacle) || (type == kVaclt) ||
|
|
(type == kVadd) || (type == kVbif) || (type == kVbit) ||
|
|
(type == kVbsl) || (type == kVceq) || (type == kVcge) ||
|
|
(type == kVcgt) || (type == kVcle) || (type == kVclt) ||
|
|
(type == kVeor) || (type == kVfma) || (type == kVfms) ||
|
|
(type == kVhadd) || (type == kVhsub) || (type == kVmax) ||
|
|
(type == kVmin) || (type == kVmla) || (type == kVmls) ||
|
|
(type == kVmul) || (type == kVqadd) || (type == kVqdmulh) ||
|
|
(type == kVqrdmulh) || (type == kVqrshl) || (type == kVqsub) ||
|
|
(type == kVrecps) || (type == kVrhadd) || (type == kVrshl) ||
|
|
(type == kVrsqrts) || (type == kVsub) || (type == kVtst));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQDD /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
DRegister /*rn*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVabal) || (type == kVabdl) || (type == kVaddl) ||
|
|
(type == kVmlal) || (type == kVmlsl) || (type == kVmull) ||
|
|
(type == kVqdmlal) || (type == kVqdmlsl) ||
|
|
(type == kVqdmull) || (type == kVsubl));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDD /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVabs) || (type == kVcls) || (type == kVclz) ||
|
|
(type == kVcnt) || (type == kVneg) || (type == kVpadal) ||
|
|
(type == kVpaddl) || (type == kVqabs) || (type == kVqneg) ||
|
|
(type == kVrecpe) || (type == kVrev16) || (type == kVrev32) ||
|
|
(type == kVrev64) || (type == kVrintr) || (type == kVrintx) ||
|
|
(type == kVrintz) || (type == kVrsqrte) || (type == kVsqrt) ||
|
|
(type == kVswp) || (type == kVtrn) || (type == kVuzp) ||
|
|
(type == kVzip));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQQ /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
QRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVabs) || (type == kVcls) || (type == kVclz) ||
|
|
(type == kVcnt) || (type == kVneg) || (type == kVpadal) ||
|
|
(type == kVpaddl) || (type == kVqabs) || (type == kVqneg) ||
|
|
(type == kVrecpe) || (type == kVrev16) || (type == kVrev32) ||
|
|
(type == kVrev64) || (type == kVrsqrte) || (type == kVswp) ||
|
|
(type == kVtrn) || (type == kVuzp) || (type == kVzip));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtSS /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
SRegister /*rd*/,
|
|
SRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVabs) || (type == kVneg) || (type == kVrintr) ||
|
|
(type == kVrintx) || (type == kVrintz) || (type == kVsqrt));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtSSS /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
SRegister /*rd*/,
|
|
SRegister /*rn*/,
|
|
SRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVadd) || (type == kVdiv) || (type == kVfma) ||
|
|
(type == kVfms) || (type == kVfnma) || (type == kVfnms) ||
|
|
(type == kVmla) || (type == kVmls) || (type == kVmul) ||
|
|
(type == kVnmla) || (type == kVnmls) || (type == kVnmul) ||
|
|
(type == kVsub));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDQQ /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
QRegister /*rn*/,
|
|
QRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVaddhn) || (type == kVraddhn) || (type == kVrsubhn) ||
|
|
(type == kVsubhn));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQQD /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
QRegister /*rn*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVaddw) || (type == kVsubw));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDDDop /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
DRegister /*rn*/,
|
|
const DOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVand) || (type == kVbic) || (type == kVceq) ||
|
|
(type == kVcge) || (type == kVcgt) || (type == kVcle) ||
|
|
(type == kVclt) || (type == kVorn) || (type == kVorr) ||
|
|
(type == kVqshl) || (type == kVqshlu) || (type == kVrshr) ||
|
|
(type == kVrsra) || (type == kVshl) || (type == kVshr) ||
|
|
(type == kVsli) || (type == kVsra) || (type == kVsri));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQQQop /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
QRegister /*rn*/,
|
|
const QOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVand) || (type == kVbic) || (type == kVceq) ||
|
|
(type == kVcge) || (type == kVcgt) || (type == kVcle) ||
|
|
(type == kVclt) || (type == kVorn) || (type == kVorr) ||
|
|
(type == kVqshl) || (type == kVqshlu) || (type == kVrshr) ||
|
|
(type == kVrsra) || (type == kVshl) || (type == kVshr) ||
|
|
(type == kVsli) || (type == kVsra) || (type == kVsri));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtSSop /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
SRegister /*rd*/,
|
|
const SOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcmp) || (type == kVcmpe) || (type == kVmov));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDDop /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
const DOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcmp) || (type == kVcmpe) || (type == kVmov) ||
|
|
(type == kVmvn));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDtDS /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
DRegister /*rd*/,
|
|
SRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvt) || (type == kVcvtb) || (type == kVcvtt));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDtSD /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
SRegister /*rd*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvt) || (type == kVcvtb) || (type == kVcvtr) ||
|
|
(type == kVcvtt));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDtDDSi /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
DRegister /*rd*/,
|
|
DRegister /*rm*/,
|
|
int32_t /*fbits*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvt));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDtQQSi /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
QRegister /*rd*/,
|
|
QRegister /*rm*/,
|
|
int32_t /*fbits*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvt));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDtSSSi /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
SRegister /*rd*/,
|
|
SRegister /*rm*/,
|
|
int32_t /*fbits*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvt));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDtDD /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
DRegister /*rd*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvt));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDtQQ /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
QRegister /*rd*/,
|
|
QRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvt));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDtDQ /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
DRegister /*rd*/,
|
|
QRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvt));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDtQD /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
QRegister /*rd*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvt));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDtSS /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
SRegister /*rd*/,
|
|
SRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvt) || (type == kVcvtb) || (type == kVcvtr) ||
|
|
(type == kVcvtt));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionDtDtDD /*instruction*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
DRegister /*rd*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvta) || (type == kVcvtm) || (type == kVcvtn) ||
|
|
(type == kVcvtp));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionDtDtQQ /*instruction*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
QRegister /*rd*/,
|
|
QRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvta) || (type == kVcvtm) || (type == kVcvtn) ||
|
|
(type == kVcvtp));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionDtDtSS /*instruction*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
SRegister /*rd*/,
|
|
SRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvta) || (type == kVcvtm) || (type == kVcvtn) ||
|
|
(type == kVcvtp));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionDtDtSD /*instruction*/,
|
|
DataType /*dt1*/,
|
|
DataType /*dt2*/,
|
|
SRegister /*rd*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVcvta) || (type == kVcvtm) || (type == kVcvtn) ||
|
|
(type == kVcvtp));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQR /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
Register /*rt*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVdup));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDR /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
Register /*rt*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVdup));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDDx /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
DRegisterLane /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVdup));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQDx /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
DRegisterLane /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVdup));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDDDDop /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
DRegister /*rn*/,
|
|
DRegister /*rm*/,
|
|
const DOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVext));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQQQQop /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
QRegister /*rn*/,
|
|
QRegister /*rm*/,
|
|
const QOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVext));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtNrlAmop /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
const NeonRegisterList& /*nreglist*/,
|
|
const AlignedMemOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVld1) || (type == kVld2) || (type == kVld3) ||
|
|
(type == kVld4) || (type == kVst1) || (type == kVst2) ||
|
|
(type == kVst3) || (type == kVst4));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtNrlMop /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
const NeonRegisterList& /*nreglist*/,
|
|
const MemOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVld3) || (type == kVst3));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtRwbDrl /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
Register /*rn*/,
|
|
WriteBack /*write_back*/,
|
|
DRegisterList /*dreglist*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVldm) || (type == kVldmdb) || (type == kVldmia) ||
|
|
(type == kVstm) || (type == kVstmdb) || (type == kVstmia));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtRwbSrl /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
Register /*rn*/,
|
|
WriteBack /*write_back*/,
|
|
SRegisterList /*sreglist*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVldm) || (type == kVldmdb) || (type == kVldmia) ||
|
|
(type == kVstm) || (type == kVstmdb) || (type == kVstmia));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDL /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
Location* /*location*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVldr));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDMop /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
const MemOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVldr) || (type == kVstr));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtSL /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
SRegister /*rd*/,
|
|
Location* /*location*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVldr));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtSMop /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
SRegister /*rd*/,
|
|
const MemOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVldr) || (type == kVstr));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionDtDDD /*instruction*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
DRegister /*rn*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmaxnm) || (type == kVminnm) || (type == kVseleq) ||
|
|
(type == kVselge) || (type == kVselgt) || (type == kVselvs));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionDtSSS /*instruction*/,
|
|
DataType /*dt*/,
|
|
SRegister /*rd*/,
|
|
SRegister /*rn*/,
|
|
SRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmaxnm) || (type == kVminnm) || (type == kVseleq) ||
|
|
(type == kVselge) || (type == kVselgt) || (type == kVselvs));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDDDx /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
DRegister /*rn*/,
|
|
DRegisterLane /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmla) || (type == kVmls) || (type == kVqdmulh) ||
|
|
(type == kVqrdmulh));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQQDx /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
QRegister /*rn*/,
|
|
DRegisterLane /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmla) || (type == kVmls) || (type == kVqdmulh) ||
|
|
(type == kVqrdmulh));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQDDx /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
DRegister /*rn*/,
|
|
DRegisterLane /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmlal) || (type == kVmlsl) || (type == kVqdmull));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRS /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rt*/,
|
|
SRegister /*rn*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmov));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSR /*instruction*/,
|
|
Condition /*cond*/,
|
|
SRegister /*rn*/,
|
|
Register /*rt*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmov));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRRD /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rt*/,
|
|
Register /*rt2*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmov));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDRR /*instruction*/,
|
|
Condition /*cond*/,
|
|
DRegister /*rm*/,
|
|
Register /*rt*/,
|
|
Register /*rt2*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmov));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRRSS /*instruction*/,
|
|
Condition /*cond*/,
|
|
Register /*rt*/,
|
|
Register /*rt2*/,
|
|
SRegister /*rm*/,
|
|
SRegister /*rm1*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmov));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSSRR /*instruction*/,
|
|
Condition /*cond*/,
|
|
SRegister /*rm*/,
|
|
SRegister /*rm1*/,
|
|
Register /*rt*/,
|
|
Register /*rt2*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmov));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDxR /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegisterLane /*rd*/,
|
|
Register /*rt*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmov));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQQop /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
const QOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmov) || (type == kVmvn));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtRDx /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
Register /*rt*/,
|
|
DRegisterLane /*rn*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmov));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQD /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmovl));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDQ /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
QRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmovn) || (type == kVqmovn) || (type == kVqmovun));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondRoaSfp /*instruction*/,
|
|
Condition /*cond*/,
|
|
RegisterOrAPSR_nzcv /*rt*/,
|
|
SpecialFPRegister /*spec_reg*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmrs));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondSfpR /*instruction*/,
|
|
Condition /*cond*/,
|
|
SpecialFPRegister /*spec_reg*/,
|
|
Register /*rt*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmsr));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDDIr /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
DRegister /*rn*/,
|
|
DRegister /*dm*/,
|
|
unsigned /*index*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmul));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQQIr /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
QRegister /*rn*/,
|
|
DRegister /*dm*/,
|
|
unsigned /*index*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmul));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQDIr /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
DRegister /*rn*/,
|
|
DRegister /*dm*/,
|
|
unsigned /*index*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVmull) || (type == kVqdmlal) || (type == kVqdmlsl));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDrl /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegisterList /*dreglist*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVpop) || (type == kVpush));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtSrl /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
SRegisterList /*sreglist*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVpop) || (type == kVpush));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDQQop /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
QRegister /*rm*/,
|
|
const QOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVqrshrn) || (type == kVqrshrun) ||
|
|
(type == kVqshrn) || (type == kVqshrun) || (type == kVrshrn) ||
|
|
(type == kVshrn));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionDtDD /*instruction*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVrinta) || (type == kVrintm) || (type == kVrintn) ||
|
|
(type == kVrintp));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionDtSS /*instruction*/,
|
|
DataType /*dt*/,
|
|
SRegister /*rd*/,
|
|
SRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVrinta) || (type == kVrintm) || (type == kVrintn) ||
|
|
(type == kVrintp));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtQDDop /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
QRegister /*rd*/,
|
|
DRegister /*rm*/,
|
|
const DOperand& /*operand*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVshll));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
virtual void Delegate(InstructionType type,
|
|
InstructionCondDtDNrlD /*instruction*/,
|
|
Condition /*cond*/,
|
|
DataType /*dt*/,
|
|
DRegister /*rd*/,
|
|
const NeonRegisterList& /*nreglist*/,
|
|
DRegister /*rm*/) {
|
|
USE(type);
|
|
VIXL_ASSERT((type == kVtbl) || (type == kVtbx));
|
|
UnimplementedDelegate(type);
|
|
}
|
|
|
|
void adc(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void adc(Register rd, Register rn, const Operand& operand) {
|
|
adc(al, Best, rd, rn, operand);
|
|
}
|
|
void adc(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
adc(cond, Best, rd, rn, operand);
|
|
}
|
|
void adc(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
adc(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void adcs(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void adcs(Register rd, Register rn, const Operand& operand) {
|
|
adcs(al, Best, rd, rn, operand);
|
|
}
|
|
void adcs(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
adcs(cond, Best, rd, rn, operand);
|
|
}
|
|
void adcs(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
adcs(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void add(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void add(Register rd, Register rn, const Operand& operand) {
|
|
add(al, Best, rd, rn, operand);
|
|
}
|
|
void add(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
add(cond, Best, rd, rn, operand);
|
|
}
|
|
void add(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
add(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void add(Condition cond, Register rd, const Operand& operand);
|
|
void add(Register rd, const Operand& operand) { add(al, rd, operand); }
|
|
|
|
void adds(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void adds(Register rd, Register rn, const Operand& operand) {
|
|
adds(al, Best, rd, rn, operand);
|
|
}
|
|
void adds(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
adds(cond, Best, rd, rn, operand);
|
|
}
|
|
void adds(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
adds(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void adds(Register rd, const Operand& operand);
|
|
|
|
void addw(Condition cond, Register rd, Register rn, const Operand& operand);
|
|
void addw(Register rd, Register rn, const Operand& operand) {
|
|
addw(al, rd, rn, operand);
|
|
}
|
|
|
|
void adr(Condition cond, EncodingSize size, Register rd, Location* location);
|
|
bool adr_info(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void adr(Register rd, Location* location) { adr(al, Best, rd, location); }
|
|
void adr(Condition cond, Register rd, Location* location) {
|
|
adr(cond, Best, rd, location);
|
|
}
|
|
void adr(EncodingSize size, Register rd, Location* location) {
|
|
adr(al, size, rd, location);
|
|
}
|
|
|
|
void and_(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void and_(Register rd, Register rn, const Operand& operand) {
|
|
and_(al, Best, rd, rn, operand);
|
|
}
|
|
void and_(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
and_(cond, Best, rd, rn, operand);
|
|
}
|
|
void and_(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
and_(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void ands(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void ands(Register rd, Register rn, const Operand& operand) {
|
|
ands(al, Best, rd, rn, operand);
|
|
}
|
|
void ands(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
ands(cond, Best, rd, rn, operand);
|
|
}
|
|
void ands(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
ands(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void asr(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand);
|
|
void asr(Register rd, Register rm, const Operand& operand) {
|
|
asr(al, Best, rd, rm, operand);
|
|
}
|
|
void asr(Condition cond, Register rd, Register rm, const Operand& operand) {
|
|
asr(cond, Best, rd, rm, operand);
|
|
}
|
|
void asr(EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand) {
|
|
asr(al, size, rd, rm, operand);
|
|
}
|
|
|
|
void asrs(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand);
|
|
void asrs(Register rd, Register rm, const Operand& operand) {
|
|
asrs(al, Best, rd, rm, operand);
|
|
}
|
|
void asrs(Condition cond, Register rd, Register rm, const Operand& operand) {
|
|
asrs(cond, Best, rd, rm, operand);
|
|
}
|
|
void asrs(EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand) {
|
|
asrs(al, size, rd, rm, operand);
|
|
}
|
|
|
|
void b(Condition cond, EncodingSize size, Location* location);
|
|
bool b_info(Condition cond,
|
|
EncodingSize size,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void b(Location* location) { b(al, Best, location); }
|
|
void b(Condition cond, Location* location) { b(cond, Best, location); }
|
|
void b(EncodingSize size, Location* location) { b(al, size, location); }
|
|
|
|
void bfc(Condition cond, Register rd, uint32_t lsb, uint32_t width);
|
|
void bfc(Register rd, uint32_t lsb, uint32_t width) {
|
|
bfc(al, rd, lsb, width);
|
|
}
|
|
|
|
void bfi(
|
|
Condition cond, Register rd, Register rn, uint32_t lsb, uint32_t width);
|
|
void bfi(Register rd, Register rn, uint32_t lsb, uint32_t width) {
|
|
bfi(al, rd, rn, lsb, width);
|
|
}
|
|
|
|
void bic(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void bic(Register rd, Register rn, const Operand& operand) {
|
|
bic(al, Best, rd, rn, operand);
|
|
}
|
|
void bic(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
bic(cond, Best, rd, rn, operand);
|
|
}
|
|
void bic(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
bic(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void bics(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void bics(Register rd, Register rn, const Operand& operand) {
|
|
bics(al, Best, rd, rn, operand);
|
|
}
|
|
void bics(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
bics(cond, Best, rd, rn, operand);
|
|
}
|
|
void bics(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
bics(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void bkpt(Condition cond, uint32_t imm);
|
|
void bkpt(uint32_t imm) { bkpt(al, imm); }
|
|
|
|
void bl(Condition cond, Location* location);
|
|
bool bl_info(Condition cond,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void bl(Location* location) { bl(al, location); }
|
|
|
|
void blx(Condition cond, Location* location);
|
|
bool blx_info(Condition cond,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void blx(Location* location) { blx(al, location); }
|
|
|
|
void blx(Condition cond, Register rm);
|
|
void blx(Register rm) { blx(al, rm); }
|
|
|
|
void bx(Condition cond, Register rm);
|
|
void bx(Register rm) { bx(al, rm); }
|
|
|
|
void bxj(Condition cond, Register rm);
|
|
void bxj(Register rm) { bxj(al, rm); }
|
|
|
|
void cbnz(Register rn, Location* location);
|
|
bool cbnz_info(Register rn,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
|
|
void cbz(Register rn, Location* location);
|
|
bool cbz_info(Register rn,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
|
|
void clrex(Condition cond);
|
|
void clrex() { clrex(al); }
|
|
|
|
void clz(Condition cond, Register rd, Register rm);
|
|
void clz(Register rd, Register rm) { clz(al, rd, rm); }
|
|
|
|
void cmn(Condition cond,
|
|
EncodingSize size,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void cmn(Register rn, const Operand& operand) { cmn(al, Best, rn, operand); }
|
|
void cmn(Condition cond, Register rn, const Operand& operand) {
|
|
cmn(cond, Best, rn, operand);
|
|
}
|
|
void cmn(EncodingSize size, Register rn, const Operand& operand) {
|
|
cmn(al, size, rn, operand);
|
|
}
|
|
|
|
void cmp(Condition cond,
|
|
EncodingSize size,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void cmp(Register rn, const Operand& operand) { cmp(al, Best, rn, operand); }
|
|
void cmp(Condition cond, Register rn, const Operand& operand) {
|
|
cmp(cond, Best, rn, operand);
|
|
}
|
|
void cmp(EncodingSize size, Register rn, const Operand& operand) {
|
|
cmp(al, size, rn, operand);
|
|
}
|
|
|
|
void crc32b(Condition cond, Register rd, Register rn, Register rm);
|
|
void crc32b(Register rd, Register rn, Register rm) { crc32b(al, rd, rn, rm); }
|
|
|
|
void crc32cb(Condition cond, Register rd, Register rn, Register rm);
|
|
void crc32cb(Register rd, Register rn, Register rm) {
|
|
crc32cb(al, rd, rn, rm);
|
|
}
|
|
|
|
void crc32ch(Condition cond, Register rd, Register rn, Register rm);
|
|
void crc32ch(Register rd, Register rn, Register rm) {
|
|
crc32ch(al, rd, rn, rm);
|
|
}
|
|
|
|
void crc32cw(Condition cond, Register rd, Register rn, Register rm);
|
|
void crc32cw(Register rd, Register rn, Register rm) {
|
|
crc32cw(al, rd, rn, rm);
|
|
}
|
|
|
|
void crc32h(Condition cond, Register rd, Register rn, Register rm);
|
|
void crc32h(Register rd, Register rn, Register rm) { crc32h(al, rd, rn, rm); }
|
|
|
|
void crc32w(Condition cond, Register rd, Register rn, Register rm);
|
|
void crc32w(Register rd, Register rn, Register rm) { crc32w(al, rd, rn, rm); }
|
|
|
|
void dmb(Condition cond, MemoryBarrier option);
|
|
void dmb(MemoryBarrier option) { dmb(al, option); }
|
|
|
|
void dsb(Condition cond, MemoryBarrier option);
|
|
void dsb(MemoryBarrier option) { dsb(al, option); }
|
|
|
|
void eor(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void eor(Register rd, Register rn, const Operand& operand) {
|
|
eor(al, Best, rd, rn, operand);
|
|
}
|
|
void eor(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
eor(cond, Best, rd, rn, operand);
|
|
}
|
|
void eor(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
eor(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void eors(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void eors(Register rd, Register rn, const Operand& operand) {
|
|
eors(al, Best, rd, rn, operand);
|
|
}
|
|
void eors(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
eors(cond, Best, rd, rn, operand);
|
|
}
|
|
void eors(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
eors(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void fldmdbx(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist);
|
|
void fldmdbx(Register rn, WriteBack write_back, DRegisterList dreglist) {
|
|
fldmdbx(al, rn, write_back, dreglist);
|
|
}
|
|
|
|
void fldmiax(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist);
|
|
void fldmiax(Register rn, WriteBack write_back, DRegisterList dreglist) {
|
|
fldmiax(al, rn, write_back, dreglist);
|
|
}
|
|
|
|
void fstmdbx(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist);
|
|
void fstmdbx(Register rn, WriteBack write_back, DRegisterList dreglist) {
|
|
fstmdbx(al, rn, write_back, dreglist);
|
|
}
|
|
|
|
void fstmiax(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist);
|
|
void fstmiax(Register rn, WriteBack write_back, DRegisterList dreglist) {
|
|
fstmiax(al, rn, write_back, dreglist);
|
|
}
|
|
|
|
void hlt(Condition cond, uint32_t imm);
|
|
void hlt(uint32_t imm) { hlt(al, imm); }
|
|
|
|
void hvc(Condition cond, uint32_t imm);
|
|
void hvc(uint32_t imm) { hvc(al, imm); }
|
|
|
|
void isb(Condition cond, MemoryBarrier option);
|
|
void isb(MemoryBarrier option) { isb(al, option); }
|
|
|
|
void it(Condition cond, uint16_t mask);
|
|
|
|
void lda(Condition cond, Register rt, const MemOperand& operand);
|
|
void lda(Register rt, const MemOperand& operand) { lda(al, rt, operand); }
|
|
|
|
void ldab(Condition cond, Register rt, const MemOperand& operand);
|
|
void ldab(Register rt, const MemOperand& operand) { ldab(al, rt, operand); }
|
|
|
|
void ldaex(Condition cond, Register rt, const MemOperand& operand);
|
|
void ldaex(Register rt, const MemOperand& operand) { ldaex(al, rt, operand); }
|
|
|
|
void ldaexb(Condition cond, Register rt, const MemOperand& operand);
|
|
void ldaexb(Register rt, const MemOperand& operand) {
|
|
ldaexb(al, rt, operand);
|
|
}
|
|
|
|
void ldaexd(Condition cond,
|
|
Register rt,
|
|
Register rt2,
|
|
const MemOperand& operand);
|
|
void ldaexd(Register rt, Register rt2, const MemOperand& operand) {
|
|
ldaexd(al, rt, rt2, operand);
|
|
}
|
|
|
|
void ldaexh(Condition cond, Register rt, const MemOperand& operand);
|
|
void ldaexh(Register rt, const MemOperand& operand) {
|
|
ldaexh(al, rt, operand);
|
|
}
|
|
|
|
void ldah(Condition cond, Register rt, const MemOperand& operand);
|
|
void ldah(Register rt, const MemOperand& operand) { ldah(al, rt, operand); }
|
|
|
|
void ldm(Condition cond,
|
|
EncodingSize size,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void ldm(Register rn, WriteBack write_back, RegisterList registers) {
|
|
ldm(al, Best, rn, write_back, registers);
|
|
}
|
|
void ldm(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers) {
|
|
ldm(cond, Best, rn, write_back, registers);
|
|
}
|
|
void ldm(EncodingSize size,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers) {
|
|
ldm(al, size, rn, write_back, registers);
|
|
}
|
|
|
|
void ldmda(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void ldmda(Register rn, WriteBack write_back, RegisterList registers) {
|
|
ldmda(al, rn, write_back, registers);
|
|
}
|
|
|
|
void ldmdb(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void ldmdb(Register rn, WriteBack write_back, RegisterList registers) {
|
|
ldmdb(al, rn, write_back, registers);
|
|
}
|
|
|
|
void ldmea(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void ldmea(Register rn, WriteBack write_back, RegisterList registers) {
|
|
ldmea(al, rn, write_back, registers);
|
|
}
|
|
|
|
void ldmed(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void ldmed(Register rn, WriteBack write_back, RegisterList registers) {
|
|
ldmed(al, rn, write_back, registers);
|
|
}
|
|
|
|
void ldmfa(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void ldmfa(Register rn, WriteBack write_back, RegisterList registers) {
|
|
ldmfa(al, rn, write_back, registers);
|
|
}
|
|
|
|
void ldmfd(Condition cond,
|
|
EncodingSize size,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void ldmfd(Register rn, WriteBack write_back, RegisterList registers) {
|
|
ldmfd(al, Best, rn, write_back, registers);
|
|
}
|
|
void ldmfd(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers) {
|
|
ldmfd(cond, Best, rn, write_back, registers);
|
|
}
|
|
void ldmfd(EncodingSize size,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers) {
|
|
ldmfd(al, size, rn, write_back, registers);
|
|
}
|
|
|
|
void ldmib(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void ldmib(Register rn, WriteBack write_back, RegisterList registers) {
|
|
ldmib(al, rn, write_back, registers);
|
|
}
|
|
|
|
void ldr(Condition cond,
|
|
EncodingSize size,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void ldr(Register rt, const MemOperand& operand) {
|
|
ldr(al, Best, rt, operand);
|
|
}
|
|
void ldr(Condition cond, Register rt, const MemOperand& operand) {
|
|
ldr(cond, Best, rt, operand);
|
|
}
|
|
void ldr(EncodingSize size, Register rt, const MemOperand& operand) {
|
|
ldr(al, size, rt, operand);
|
|
}
|
|
|
|
void ldr(Condition cond, EncodingSize size, Register rt, Location* location);
|
|
bool ldr_info(Condition cond,
|
|
EncodingSize size,
|
|
Register rt,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void ldr(Register rt, Location* location) { ldr(al, Best, rt, location); }
|
|
void ldr(Condition cond, Register rt, Location* location) {
|
|
ldr(cond, Best, rt, location);
|
|
}
|
|
void ldr(EncodingSize size, Register rt, Location* location) {
|
|
ldr(al, size, rt, location);
|
|
}
|
|
|
|
void ldrb(Condition cond,
|
|
EncodingSize size,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void ldrb(Register rt, const MemOperand& operand) {
|
|
ldrb(al, Best, rt, operand);
|
|
}
|
|
void ldrb(Condition cond, Register rt, const MemOperand& operand) {
|
|
ldrb(cond, Best, rt, operand);
|
|
}
|
|
void ldrb(EncodingSize size, Register rt, const MemOperand& operand) {
|
|
ldrb(al, size, rt, operand);
|
|
}
|
|
|
|
void ldrb(Condition cond, Register rt, Location* location);
|
|
bool ldrb_info(Condition cond,
|
|
Register rt,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void ldrb(Register rt, Location* location) { ldrb(al, rt, location); }
|
|
|
|
void ldrd(Condition cond,
|
|
Register rt,
|
|
Register rt2,
|
|
const MemOperand& operand);
|
|
void ldrd(Register rt, Register rt2, const MemOperand& operand) {
|
|
ldrd(al, rt, rt2, operand);
|
|
}
|
|
|
|
void ldrd(Condition cond, Register rt, Register rt2, Location* location);
|
|
bool ldrd_info(Condition cond,
|
|
Register rt,
|
|
Register rt2,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void ldrd(Register rt, Register rt2, Location* location) {
|
|
ldrd(al, rt, rt2, location);
|
|
}
|
|
|
|
void ldrex(Condition cond, Register rt, const MemOperand& operand);
|
|
void ldrex(Register rt, const MemOperand& operand) { ldrex(al, rt, operand); }
|
|
|
|
void ldrexb(Condition cond, Register rt, const MemOperand& operand);
|
|
void ldrexb(Register rt, const MemOperand& operand) {
|
|
ldrexb(al, rt, operand);
|
|
}
|
|
|
|
void ldrexd(Condition cond,
|
|
Register rt,
|
|
Register rt2,
|
|
const MemOperand& operand);
|
|
void ldrexd(Register rt, Register rt2, const MemOperand& operand) {
|
|
ldrexd(al, rt, rt2, operand);
|
|
}
|
|
|
|
void ldrexh(Condition cond, Register rt, const MemOperand& operand);
|
|
void ldrexh(Register rt, const MemOperand& operand) {
|
|
ldrexh(al, rt, operand);
|
|
}
|
|
|
|
void ldrh(Condition cond,
|
|
EncodingSize size,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void ldrh(Register rt, const MemOperand& operand) {
|
|
ldrh(al, Best, rt, operand);
|
|
}
|
|
void ldrh(Condition cond, Register rt, const MemOperand& operand) {
|
|
ldrh(cond, Best, rt, operand);
|
|
}
|
|
void ldrh(EncodingSize size, Register rt, const MemOperand& operand) {
|
|
ldrh(al, size, rt, operand);
|
|
}
|
|
|
|
void ldrh(Condition cond, Register rt, Location* location);
|
|
bool ldrh_info(Condition cond,
|
|
Register rt,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void ldrh(Register rt, Location* location) { ldrh(al, rt, location); }
|
|
|
|
void ldrsb(Condition cond,
|
|
EncodingSize size,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void ldrsb(Register rt, const MemOperand& operand) {
|
|
ldrsb(al, Best, rt, operand);
|
|
}
|
|
void ldrsb(Condition cond, Register rt, const MemOperand& operand) {
|
|
ldrsb(cond, Best, rt, operand);
|
|
}
|
|
void ldrsb(EncodingSize size, Register rt, const MemOperand& operand) {
|
|
ldrsb(al, size, rt, operand);
|
|
}
|
|
|
|
void ldrsb(Condition cond, Register rt, Location* location);
|
|
bool ldrsb_info(Condition cond,
|
|
Register rt,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void ldrsb(Register rt, Location* location) { ldrsb(al, rt, location); }
|
|
|
|
void ldrsh(Condition cond,
|
|
EncodingSize size,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void ldrsh(Register rt, const MemOperand& operand) {
|
|
ldrsh(al, Best, rt, operand);
|
|
}
|
|
void ldrsh(Condition cond, Register rt, const MemOperand& operand) {
|
|
ldrsh(cond, Best, rt, operand);
|
|
}
|
|
void ldrsh(EncodingSize size, Register rt, const MemOperand& operand) {
|
|
ldrsh(al, size, rt, operand);
|
|
}
|
|
|
|
void ldrsh(Condition cond, Register rt, Location* location);
|
|
bool ldrsh_info(Condition cond,
|
|
Register rt,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void ldrsh(Register rt, Location* location) { ldrsh(al, rt, location); }
|
|
|
|
void lsl(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand);
|
|
void lsl(Register rd, Register rm, const Operand& operand) {
|
|
lsl(al, Best, rd, rm, operand);
|
|
}
|
|
void lsl(Condition cond, Register rd, Register rm, const Operand& operand) {
|
|
lsl(cond, Best, rd, rm, operand);
|
|
}
|
|
void lsl(EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand) {
|
|
lsl(al, size, rd, rm, operand);
|
|
}
|
|
|
|
void lsls(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand);
|
|
void lsls(Register rd, Register rm, const Operand& operand) {
|
|
lsls(al, Best, rd, rm, operand);
|
|
}
|
|
void lsls(Condition cond, Register rd, Register rm, const Operand& operand) {
|
|
lsls(cond, Best, rd, rm, operand);
|
|
}
|
|
void lsls(EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand) {
|
|
lsls(al, size, rd, rm, operand);
|
|
}
|
|
|
|
void lsr(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand);
|
|
void lsr(Register rd, Register rm, const Operand& operand) {
|
|
lsr(al, Best, rd, rm, operand);
|
|
}
|
|
void lsr(Condition cond, Register rd, Register rm, const Operand& operand) {
|
|
lsr(cond, Best, rd, rm, operand);
|
|
}
|
|
void lsr(EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand) {
|
|
lsr(al, size, rd, rm, operand);
|
|
}
|
|
|
|
void lsrs(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand);
|
|
void lsrs(Register rd, Register rm, const Operand& operand) {
|
|
lsrs(al, Best, rd, rm, operand);
|
|
}
|
|
void lsrs(Condition cond, Register rd, Register rm, const Operand& operand) {
|
|
lsrs(cond, Best, rd, rm, operand);
|
|
}
|
|
void lsrs(EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand) {
|
|
lsrs(al, size, rd, rm, operand);
|
|
}
|
|
|
|
void mla(Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void mla(Register rd, Register rn, Register rm, Register ra) {
|
|
mla(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void mlas(Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void mlas(Register rd, Register rn, Register rm, Register ra) {
|
|
mlas(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void mls(Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void mls(Register rd, Register rn, Register rm, Register ra) {
|
|
mls(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void mov(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
const Operand& operand);
|
|
void mov(Register rd, const Operand& operand) { mov(al, Best, rd, operand); }
|
|
void mov(Condition cond, Register rd, const Operand& operand) {
|
|
mov(cond, Best, rd, operand);
|
|
}
|
|
void mov(EncodingSize size, Register rd, const Operand& operand) {
|
|
mov(al, size, rd, operand);
|
|
}
|
|
|
|
void movs(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
const Operand& operand);
|
|
void movs(Register rd, const Operand& operand) {
|
|
movs(al, Best, rd, operand);
|
|
}
|
|
void movs(Condition cond, Register rd, const Operand& operand) {
|
|
movs(cond, Best, rd, operand);
|
|
}
|
|
void movs(EncodingSize size, Register rd, const Operand& operand) {
|
|
movs(al, size, rd, operand);
|
|
}
|
|
|
|
void movt(Condition cond, Register rd, const Operand& operand);
|
|
void movt(Register rd, const Operand& operand) { movt(al, rd, operand); }
|
|
|
|
void movw(Condition cond, Register rd, const Operand& operand);
|
|
void movw(Register rd, const Operand& operand) { movw(al, rd, operand); }
|
|
|
|
void mrs(Condition cond, Register rd, SpecialRegister spec_reg);
|
|
void mrs(Register rd, SpecialRegister spec_reg) { mrs(al, rd, spec_reg); }
|
|
|
|
void msr(Condition cond,
|
|
MaskedSpecialRegister spec_reg,
|
|
const Operand& operand);
|
|
void msr(MaskedSpecialRegister spec_reg, const Operand& operand) {
|
|
msr(al, spec_reg, operand);
|
|
}
|
|
|
|
void mul(
|
|
Condition cond, EncodingSize size, Register rd, Register rn, Register rm);
|
|
void mul(Register rd, Register rn, Register rm) { mul(al, Best, rd, rn, rm); }
|
|
void mul(Condition cond, Register rd, Register rn, Register rm) {
|
|
mul(cond, Best, rd, rn, rm);
|
|
}
|
|
void mul(EncodingSize size, Register rd, Register rn, Register rm) {
|
|
mul(al, size, rd, rn, rm);
|
|
}
|
|
|
|
void muls(Condition cond, Register rd, Register rn, Register rm);
|
|
void muls(Register rd, Register rn, Register rm) { muls(al, rd, rn, rm); }
|
|
|
|
void mvn(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
const Operand& operand);
|
|
void mvn(Register rd, const Operand& operand) { mvn(al, Best, rd, operand); }
|
|
void mvn(Condition cond, Register rd, const Operand& operand) {
|
|
mvn(cond, Best, rd, operand);
|
|
}
|
|
void mvn(EncodingSize size, Register rd, const Operand& operand) {
|
|
mvn(al, size, rd, operand);
|
|
}
|
|
|
|
void mvns(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
const Operand& operand);
|
|
void mvns(Register rd, const Operand& operand) {
|
|
mvns(al, Best, rd, operand);
|
|
}
|
|
void mvns(Condition cond, Register rd, const Operand& operand) {
|
|
mvns(cond, Best, rd, operand);
|
|
}
|
|
void mvns(EncodingSize size, Register rd, const Operand& operand) {
|
|
mvns(al, size, rd, operand);
|
|
}
|
|
|
|
void nop(Condition cond, EncodingSize size);
|
|
void nop() { nop(al, Best); }
|
|
void nop(Condition cond) { nop(cond, Best); }
|
|
void nop(EncodingSize size) { nop(al, size); }
|
|
|
|
void orn(Condition cond, Register rd, Register rn, const Operand& operand);
|
|
void orn(Register rd, Register rn, const Operand& operand) {
|
|
orn(al, rd, rn, operand);
|
|
}
|
|
|
|
void orns(Condition cond, Register rd, Register rn, const Operand& operand);
|
|
void orns(Register rd, Register rn, const Operand& operand) {
|
|
orns(al, rd, rn, operand);
|
|
}
|
|
|
|
void orr(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void orr(Register rd, Register rn, const Operand& operand) {
|
|
orr(al, Best, rd, rn, operand);
|
|
}
|
|
void orr(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
orr(cond, Best, rd, rn, operand);
|
|
}
|
|
void orr(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
orr(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void orrs(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void orrs(Register rd, Register rn, const Operand& operand) {
|
|
orrs(al, Best, rd, rn, operand);
|
|
}
|
|
void orrs(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
orrs(cond, Best, rd, rn, operand);
|
|
}
|
|
void orrs(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
orrs(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void pkhbt(Condition cond, Register rd, Register rn, const Operand& operand);
|
|
void pkhbt(Register rd, Register rn, const Operand& operand) {
|
|
pkhbt(al, rd, rn, operand);
|
|
}
|
|
|
|
void pkhtb(Condition cond, Register rd, Register rn, const Operand& operand);
|
|
void pkhtb(Register rd, Register rn, const Operand& operand) {
|
|
pkhtb(al, rd, rn, operand);
|
|
}
|
|
|
|
void pld(Condition cond, Location* location);
|
|
bool pld_info(Condition cond,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void pld(Location* location) { pld(al, location); }
|
|
|
|
void pld(Condition cond, const MemOperand& operand);
|
|
void pld(const MemOperand& operand) { pld(al, operand); }
|
|
|
|
void pldw(Condition cond, const MemOperand& operand);
|
|
void pldw(const MemOperand& operand) { pldw(al, operand); }
|
|
|
|
void pli(Condition cond, const MemOperand& operand);
|
|
void pli(const MemOperand& operand) { pli(al, operand); }
|
|
|
|
void pli(Condition cond, Location* location);
|
|
bool pli_info(Condition cond,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void pli(Location* location) { pli(al, location); }
|
|
|
|
void pop(Condition cond, EncodingSize size, RegisterList registers);
|
|
void pop(RegisterList registers) { pop(al, Best, registers); }
|
|
void pop(Condition cond, RegisterList registers) {
|
|
pop(cond, Best, registers);
|
|
}
|
|
void pop(EncodingSize size, RegisterList registers) {
|
|
pop(al, size, registers);
|
|
}
|
|
|
|
void pop(Condition cond, EncodingSize size, Register rt);
|
|
void pop(Register rt) { pop(al, Best, rt); }
|
|
void pop(Condition cond, Register rt) { pop(cond, Best, rt); }
|
|
void pop(EncodingSize size, Register rt) { pop(al, size, rt); }
|
|
|
|
void push(Condition cond, EncodingSize size, RegisterList registers);
|
|
void push(RegisterList registers) { push(al, Best, registers); }
|
|
void push(Condition cond, RegisterList registers) {
|
|
push(cond, Best, registers);
|
|
}
|
|
void push(EncodingSize size, RegisterList registers) {
|
|
push(al, size, registers);
|
|
}
|
|
|
|
void push(Condition cond, EncodingSize size, Register rt);
|
|
void push(Register rt) { push(al, Best, rt); }
|
|
void push(Condition cond, Register rt) { push(cond, Best, rt); }
|
|
void push(EncodingSize size, Register rt) { push(al, size, rt); }
|
|
|
|
void qadd(Condition cond, Register rd, Register rm, Register rn);
|
|
void qadd(Register rd, Register rm, Register rn) { qadd(al, rd, rm, rn); }
|
|
|
|
void qadd16(Condition cond, Register rd, Register rn, Register rm);
|
|
void qadd16(Register rd, Register rn, Register rm) { qadd16(al, rd, rn, rm); }
|
|
|
|
void qadd8(Condition cond, Register rd, Register rn, Register rm);
|
|
void qadd8(Register rd, Register rn, Register rm) { qadd8(al, rd, rn, rm); }
|
|
|
|
void qasx(Condition cond, Register rd, Register rn, Register rm);
|
|
void qasx(Register rd, Register rn, Register rm) { qasx(al, rd, rn, rm); }
|
|
|
|
void qdadd(Condition cond, Register rd, Register rm, Register rn);
|
|
void qdadd(Register rd, Register rm, Register rn) { qdadd(al, rd, rm, rn); }
|
|
|
|
void qdsub(Condition cond, Register rd, Register rm, Register rn);
|
|
void qdsub(Register rd, Register rm, Register rn) { qdsub(al, rd, rm, rn); }
|
|
|
|
void qsax(Condition cond, Register rd, Register rn, Register rm);
|
|
void qsax(Register rd, Register rn, Register rm) { qsax(al, rd, rn, rm); }
|
|
|
|
void qsub(Condition cond, Register rd, Register rm, Register rn);
|
|
void qsub(Register rd, Register rm, Register rn) { qsub(al, rd, rm, rn); }
|
|
|
|
void qsub16(Condition cond, Register rd, Register rn, Register rm);
|
|
void qsub16(Register rd, Register rn, Register rm) { qsub16(al, rd, rn, rm); }
|
|
|
|
void qsub8(Condition cond, Register rd, Register rn, Register rm);
|
|
void qsub8(Register rd, Register rn, Register rm) { qsub8(al, rd, rn, rm); }
|
|
|
|
void rbit(Condition cond, Register rd, Register rm);
|
|
void rbit(Register rd, Register rm) { rbit(al, rd, rm); }
|
|
|
|
void rev(Condition cond, EncodingSize size, Register rd, Register rm);
|
|
void rev(Register rd, Register rm) { rev(al, Best, rd, rm); }
|
|
void rev(Condition cond, Register rd, Register rm) {
|
|
rev(cond, Best, rd, rm);
|
|
}
|
|
void rev(EncodingSize size, Register rd, Register rm) {
|
|
rev(al, size, rd, rm);
|
|
}
|
|
|
|
void rev16(Condition cond, EncodingSize size, Register rd, Register rm);
|
|
void rev16(Register rd, Register rm) { rev16(al, Best, rd, rm); }
|
|
void rev16(Condition cond, Register rd, Register rm) {
|
|
rev16(cond, Best, rd, rm);
|
|
}
|
|
void rev16(EncodingSize size, Register rd, Register rm) {
|
|
rev16(al, size, rd, rm);
|
|
}
|
|
|
|
void revsh(Condition cond, EncodingSize size, Register rd, Register rm);
|
|
void revsh(Register rd, Register rm) { revsh(al, Best, rd, rm); }
|
|
void revsh(Condition cond, Register rd, Register rm) {
|
|
revsh(cond, Best, rd, rm);
|
|
}
|
|
void revsh(EncodingSize size, Register rd, Register rm) {
|
|
revsh(al, size, rd, rm);
|
|
}
|
|
|
|
void ror(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand);
|
|
void ror(Register rd, Register rm, const Operand& operand) {
|
|
ror(al, Best, rd, rm, operand);
|
|
}
|
|
void ror(Condition cond, Register rd, Register rm, const Operand& operand) {
|
|
ror(cond, Best, rd, rm, operand);
|
|
}
|
|
void ror(EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand) {
|
|
ror(al, size, rd, rm, operand);
|
|
}
|
|
|
|
void rors(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand);
|
|
void rors(Register rd, Register rm, const Operand& operand) {
|
|
rors(al, Best, rd, rm, operand);
|
|
}
|
|
void rors(Condition cond, Register rd, Register rm, const Operand& operand) {
|
|
rors(cond, Best, rd, rm, operand);
|
|
}
|
|
void rors(EncodingSize size,
|
|
Register rd,
|
|
Register rm,
|
|
const Operand& operand) {
|
|
rors(al, size, rd, rm, operand);
|
|
}
|
|
|
|
void rrx(Condition cond, Register rd, Register rm);
|
|
void rrx(Register rd, Register rm) { rrx(al, rd, rm); }
|
|
|
|
void rrxs(Condition cond, Register rd, Register rm);
|
|
void rrxs(Register rd, Register rm) { rrxs(al, rd, rm); }
|
|
|
|
void rsb(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void rsb(Register rd, Register rn, const Operand& operand) {
|
|
rsb(al, Best, rd, rn, operand);
|
|
}
|
|
void rsb(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
rsb(cond, Best, rd, rn, operand);
|
|
}
|
|
void rsb(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
rsb(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void rsbs(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void rsbs(Register rd, Register rn, const Operand& operand) {
|
|
rsbs(al, Best, rd, rn, operand);
|
|
}
|
|
void rsbs(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
rsbs(cond, Best, rd, rn, operand);
|
|
}
|
|
void rsbs(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
rsbs(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void rsc(Condition cond, Register rd, Register rn, const Operand& operand);
|
|
void rsc(Register rd, Register rn, const Operand& operand) {
|
|
rsc(al, rd, rn, operand);
|
|
}
|
|
|
|
void rscs(Condition cond, Register rd, Register rn, const Operand& operand);
|
|
void rscs(Register rd, Register rn, const Operand& operand) {
|
|
rscs(al, rd, rn, operand);
|
|
}
|
|
|
|
void sadd16(Condition cond, Register rd, Register rn, Register rm);
|
|
void sadd16(Register rd, Register rn, Register rm) { sadd16(al, rd, rn, rm); }
|
|
|
|
void sadd8(Condition cond, Register rd, Register rn, Register rm);
|
|
void sadd8(Register rd, Register rn, Register rm) { sadd8(al, rd, rn, rm); }
|
|
|
|
void sasx(Condition cond, Register rd, Register rn, Register rm);
|
|
void sasx(Register rd, Register rn, Register rm) { sasx(al, rd, rn, rm); }
|
|
|
|
void sbc(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void sbc(Register rd, Register rn, const Operand& operand) {
|
|
sbc(al, Best, rd, rn, operand);
|
|
}
|
|
void sbc(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
sbc(cond, Best, rd, rn, operand);
|
|
}
|
|
void sbc(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
sbc(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void sbcs(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void sbcs(Register rd, Register rn, const Operand& operand) {
|
|
sbcs(al, Best, rd, rn, operand);
|
|
}
|
|
void sbcs(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
sbcs(cond, Best, rd, rn, operand);
|
|
}
|
|
void sbcs(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
sbcs(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void sbfx(
|
|
Condition cond, Register rd, Register rn, uint32_t lsb, uint32_t width);
|
|
void sbfx(Register rd, Register rn, uint32_t lsb, uint32_t width) {
|
|
sbfx(al, rd, rn, lsb, width);
|
|
}
|
|
|
|
void sdiv(Condition cond, Register rd, Register rn, Register rm);
|
|
void sdiv(Register rd, Register rn, Register rm) { sdiv(al, rd, rn, rm); }
|
|
|
|
void sel(Condition cond, Register rd, Register rn, Register rm);
|
|
void sel(Register rd, Register rn, Register rm) { sel(al, rd, rn, rm); }
|
|
|
|
void shadd16(Condition cond, Register rd, Register rn, Register rm);
|
|
void shadd16(Register rd, Register rn, Register rm) {
|
|
shadd16(al, rd, rn, rm);
|
|
}
|
|
|
|
void shadd8(Condition cond, Register rd, Register rn, Register rm);
|
|
void shadd8(Register rd, Register rn, Register rm) { shadd8(al, rd, rn, rm); }
|
|
|
|
void shasx(Condition cond, Register rd, Register rn, Register rm);
|
|
void shasx(Register rd, Register rn, Register rm) { shasx(al, rd, rn, rm); }
|
|
|
|
void shsax(Condition cond, Register rd, Register rn, Register rm);
|
|
void shsax(Register rd, Register rn, Register rm) { shsax(al, rd, rn, rm); }
|
|
|
|
void shsub16(Condition cond, Register rd, Register rn, Register rm);
|
|
void shsub16(Register rd, Register rn, Register rm) {
|
|
shsub16(al, rd, rn, rm);
|
|
}
|
|
|
|
void shsub8(Condition cond, Register rd, Register rn, Register rm);
|
|
void shsub8(Register rd, Register rn, Register rm) { shsub8(al, rd, rn, rm); }
|
|
|
|
void smlabb(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smlabb(Register rd, Register rn, Register rm, Register ra) {
|
|
smlabb(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smlabt(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smlabt(Register rd, Register rn, Register rm, Register ra) {
|
|
smlabt(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smlad(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smlad(Register rd, Register rn, Register rm, Register ra) {
|
|
smlad(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smladx(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smladx(Register rd, Register rn, Register rm, Register ra) {
|
|
smladx(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smlal(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void smlal(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
smlal(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void smlalbb(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void smlalbb(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
smlalbb(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void smlalbt(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void smlalbt(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
smlalbt(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void smlald(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void smlald(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
smlald(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void smlaldx(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void smlaldx(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
smlaldx(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void smlals(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void smlals(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
smlals(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void smlaltb(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void smlaltb(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
smlaltb(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void smlaltt(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void smlaltt(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
smlaltt(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void smlatb(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smlatb(Register rd, Register rn, Register rm, Register ra) {
|
|
smlatb(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smlatt(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smlatt(Register rd, Register rn, Register rm, Register ra) {
|
|
smlatt(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smlawb(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smlawb(Register rd, Register rn, Register rm, Register ra) {
|
|
smlawb(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smlawt(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smlawt(Register rd, Register rn, Register rm, Register ra) {
|
|
smlawt(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smlsd(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smlsd(Register rd, Register rn, Register rm, Register ra) {
|
|
smlsd(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smlsdx(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smlsdx(Register rd, Register rn, Register rm, Register ra) {
|
|
smlsdx(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smlsld(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void smlsld(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
smlsld(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void smlsldx(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void smlsldx(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
smlsldx(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void smmla(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smmla(Register rd, Register rn, Register rm, Register ra) {
|
|
smmla(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smmlar(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smmlar(Register rd, Register rn, Register rm, Register ra) {
|
|
smmlar(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smmls(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smmls(Register rd, Register rn, Register rm, Register ra) {
|
|
smmls(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smmlsr(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void smmlsr(Register rd, Register rn, Register rm, Register ra) {
|
|
smmlsr(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void smmul(Condition cond, Register rd, Register rn, Register rm);
|
|
void smmul(Register rd, Register rn, Register rm) { smmul(al, rd, rn, rm); }
|
|
|
|
void smmulr(Condition cond, Register rd, Register rn, Register rm);
|
|
void smmulr(Register rd, Register rn, Register rm) { smmulr(al, rd, rn, rm); }
|
|
|
|
void smuad(Condition cond, Register rd, Register rn, Register rm);
|
|
void smuad(Register rd, Register rn, Register rm) { smuad(al, rd, rn, rm); }
|
|
|
|
void smuadx(Condition cond, Register rd, Register rn, Register rm);
|
|
void smuadx(Register rd, Register rn, Register rm) { smuadx(al, rd, rn, rm); }
|
|
|
|
void smulbb(Condition cond, Register rd, Register rn, Register rm);
|
|
void smulbb(Register rd, Register rn, Register rm) { smulbb(al, rd, rn, rm); }
|
|
|
|
void smulbt(Condition cond, Register rd, Register rn, Register rm);
|
|
void smulbt(Register rd, Register rn, Register rm) { smulbt(al, rd, rn, rm); }
|
|
|
|
void smull(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void smull(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
smull(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void smulls(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void smulls(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
smulls(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void smultb(Condition cond, Register rd, Register rn, Register rm);
|
|
void smultb(Register rd, Register rn, Register rm) { smultb(al, rd, rn, rm); }
|
|
|
|
void smultt(Condition cond, Register rd, Register rn, Register rm);
|
|
void smultt(Register rd, Register rn, Register rm) { smultt(al, rd, rn, rm); }
|
|
|
|
void smulwb(Condition cond, Register rd, Register rn, Register rm);
|
|
void smulwb(Register rd, Register rn, Register rm) { smulwb(al, rd, rn, rm); }
|
|
|
|
void smulwt(Condition cond, Register rd, Register rn, Register rm);
|
|
void smulwt(Register rd, Register rn, Register rm) { smulwt(al, rd, rn, rm); }
|
|
|
|
void smusd(Condition cond, Register rd, Register rn, Register rm);
|
|
void smusd(Register rd, Register rn, Register rm) { smusd(al, rd, rn, rm); }
|
|
|
|
void smusdx(Condition cond, Register rd, Register rn, Register rm);
|
|
void smusdx(Register rd, Register rn, Register rm) { smusdx(al, rd, rn, rm); }
|
|
|
|
void ssat(Condition cond, Register rd, uint32_t imm, const Operand& operand);
|
|
void ssat(Register rd, uint32_t imm, const Operand& operand) {
|
|
ssat(al, rd, imm, operand);
|
|
}
|
|
|
|
void ssat16(Condition cond, Register rd, uint32_t imm, Register rn);
|
|
void ssat16(Register rd, uint32_t imm, Register rn) {
|
|
ssat16(al, rd, imm, rn);
|
|
}
|
|
|
|
void ssax(Condition cond, Register rd, Register rn, Register rm);
|
|
void ssax(Register rd, Register rn, Register rm) { ssax(al, rd, rn, rm); }
|
|
|
|
void ssub16(Condition cond, Register rd, Register rn, Register rm);
|
|
void ssub16(Register rd, Register rn, Register rm) { ssub16(al, rd, rn, rm); }
|
|
|
|
void ssub8(Condition cond, Register rd, Register rn, Register rm);
|
|
void ssub8(Register rd, Register rn, Register rm) { ssub8(al, rd, rn, rm); }
|
|
|
|
void stl(Condition cond, Register rt, const MemOperand& operand);
|
|
void stl(Register rt, const MemOperand& operand) { stl(al, rt, operand); }
|
|
|
|
void stlb(Condition cond, Register rt, const MemOperand& operand);
|
|
void stlb(Register rt, const MemOperand& operand) { stlb(al, rt, operand); }
|
|
|
|
void stlex(Condition cond,
|
|
Register rd,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void stlex(Register rd, Register rt, const MemOperand& operand) {
|
|
stlex(al, rd, rt, operand);
|
|
}
|
|
|
|
void stlexb(Condition cond,
|
|
Register rd,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void stlexb(Register rd, Register rt, const MemOperand& operand) {
|
|
stlexb(al, rd, rt, operand);
|
|
}
|
|
|
|
void stlexd(Condition cond,
|
|
Register rd,
|
|
Register rt,
|
|
Register rt2,
|
|
const MemOperand& operand);
|
|
void stlexd(Register rd,
|
|
Register rt,
|
|
Register rt2,
|
|
const MemOperand& operand) {
|
|
stlexd(al, rd, rt, rt2, operand);
|
|
}
|
|
|
|
void stlexh(Condition cond,
|
|
Register rd,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void stlexh(Register rd, Register rt, const MemOperand& operand) {
|
|
stlexh(al, rd, rt, operand);
|
|
}
|
|
|
|
void stlh(Condition cond, Register rt, const MemOperand& operand);
|
|
void stlh(Register rt, const MemOperand& operand) { stlh(al, rt, operand); }
|
|
|
|
void stm(Condition cond,
|
|
EncodingSize size,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void stm(Register rn, WriteBack write_back, RegisterList registers) {
|
|
stm(al, Best, rn, write_back, registers);
|
|
}
|
|
void stm(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers) {
|
|
stm(cond, Best, rn, write_back, registers);
|
|
}
|
|
void stm(EncodingSize size,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers) {
|
|
stm(al, size, rn, write_back, registers);
|
|
}
|
|
|
|
void stmda(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void stmda(Register rn, WriteBack write_back, RegisterList registers) {
|
|
stmda(al, rn, write_back, registers);
|
|
}
|
|
|
|
void stmdb(Condition cond,
|
|
EncodingSize size,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void stmdb(Register rn, WriteBack write_back, RegisterList registers) {
|
|
stmdb(al, Best, rn, write_back, registers);
|
|
}
|
|
void stmdb(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers) {
|
|
stmdb(cond, Best, rn, write_back, registers);
|
|
}
|
|
void stmdb(EncodingSize size,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers) {
|
|
stmdb(al, size, rn, write_back, registers);
|
|
}
|
|
|
|
void stmea(Condition cond,
|
|
EncodingSize size,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void stmea(Register rn, WriteBack write_back, RegisterList registers) {
|
|
stmea(al, Best, rn, write_back, registers);
|
|
}
|
|
void stmea(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers) {
|
|
stmea(cond, Best, rn, write_back, registers);
|
|
}
|
|
void stmea(EncodingSize size,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers) {
|
|
stmea(al, size, rn, write_back, registers);
|
|
}
|
|
|
|
void stmed(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void stmed(Register rn, WriteBack write_back, RegisterList registers) {
|
|
stmed(al, rn, write_back, registers);
|
|
}
|
|
|
|
void stmfa(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void stmfa(Register rn, WriteBack write_back, RegisterList registers) {
|
|
stmfa(al, rn, write_back, registers);
|
|
}
|
|
|
|
void stmfd(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void stmfd(Register rn, WriteBack write_back, RegisterList registers) {
|
|
stmfd(al, rn, write_back, registers);
|
|
}
|
|
|
|
void stmib(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
RegisterList registers);
|
|
void stmib(Register rn, WriteBack write_back, RegisterList registers) {
|
|
stmib(al, rn, write_back, registers);
|
|
}
|
|
|
|
void str(Condition cond,
|
|
EncodingSize size,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void str(Register rt, const MemOperand& operand) {
|
|
str(al, Best, rt, operand);
|
|
}
|
|
void str(Condition cond, Register rt, const MemOperand& operand) {
|
|
str(cond, Best, rt, operand);
|
|
}
|
|
void str(EncodingSize size, Register rt, const MemOperand& operand) {
|
|
str(al, size, rt, operand);
|
|
}
|
|
|
|
void strb(Condition cond,
|
|
EncodingSize size,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void strb(Register rt, const MemOperand& operand) {
|
|
strb(al, Best, rt, operand);
|
|
}
|
|
void strb(Condition cond, Register rt, const MemOperand& operand) {
|
|
strb(cond, Best, rt, operand);
|
|
}
|
|
void strb(EncodingSize size, Register rt, const MemOperand& operand) {
|
|
strb(al, size, rt, operand);
|
|
}
|
|
|
|
void strd(Condition cond,
|
|
Register rt,
|
|
Register rt2,
|
|
const MemOperand& operand);
|
|
void strd(Register rt, Register rt2, const MemOperand& operand) {
|
|
strd(al, rt, rt2, operand);
|
|
}
|
|
|
|
void strex(Condition cond,
|
|
Register rd,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void strex(Register rd, Register rt, const MemOperand& operand) {
|
|
strex(al, rd, rt, operand);
|
|
}
|
|
|
|
void strexb(Condition cond,
|
|
Register rd,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void strexb(Register rd, Register rt, const MemOperand& operand) {
|
|
strexb(al, rd, rt, operand);
|
|
}
|
|
|
|
void strexd(Condition cond,
|
|
Register rd,
|
|
Register rt,
|
|
Register rt2,
|
|
const MemOperand& operand);
|
|
void strexd(Register rd,
|
|
Register rt,
|
|
Register rt2,
|
|
const MemOperand& operand) {
|
|
strexd(al, rd, rt, rt2, operand);
|
|
}
|
|
|
|
void strexh(Condition cond,
|
|
Register rd,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void strexh(Register rd, Register rt, const MemOperand& operand) {
|
|
strexh(al, rd, rt, operand);
|
|
}
|
|
|
|
void strh(Condition cond,
|
|
EncodingSize size,
|
|
Register rt,
|
|
const MemOperand& operand);
|
|
void strh(Register rt, const MemOperand& operand) {
|
|
strh(al, Best, rt, operand);
|
|
}
|
|
void strh(Condition cond, Register rt, const MemOperand& operand) {
|
|
strh(cond, Best, rt, operand);
|
|
}
|
|
void strh(EncodingSize size, Register rt, const MemOperand& operand) {
|
|
strh(al, size, rt, operand);
|
|
}
|
|
|
|
void sub(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void sub(Register rd, Register rn, const Operand& operand) {
|
|
sub(al, Best, rd, rn, operand);
|
|
}
|
|
void sub(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
sub(cond, Best, rd, rn, operand);
|
|
}
|
|
void sub(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
sub(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void sub(Condition cond, Register rd, const Operand& operand);
|
|
void sub(Register rd, const Operand& operand) { sub(al, rd, operand); }
|
|
|
|
void subs(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void subs(Register rd, Register rn, const Operand& operand) {
|
|
subs(al, Best, rd, rn, operand);
|
|
}
|
|
void subs(Condition cond, Register rd, Register rn, const Operand& operand) {
|
|
subs(cond, Best, rd, rn, operand);
|
|
}
|
|
void subs(EncodingSize size,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand) {
|
|
subs(al, size, rd, rn, operand);
|
|
}
|
|
|
|
void subs(Register rd, const Operand& operand);
|
|
|
|
void subw(Condition cond, Register rd, Register rn, const Operand& operand);
|
|
void subw(Register rd, Register rn, const Operand& operand) {
|
|
subw(al, rd, rn, operand);
|
|
}
|
|
|
|
void svc(Condition cond, uint32_t imm);
|
|
void svc(uint32_t imm) { svc(al, imm); }
|
|
|
|
void sxtab(Condition cond, Register rd, Register rn, const Operand& operand);
|
|
void sxtab(Register rd, Register rn, const Operand& operand) {
|
|
sxtab(al, rd, rn, operand);
|
|
}
|
|
|
|
void sxtab16(Condition cond,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void sxtab16(Register rd, Register rn, const Operand& operand) {
|
|
sxtab16(al, rd, rn, operand);
|
|
}
|
|
|
|
void sxtah(Condition cond, Register rd, Register rn, const Operand& operand);
|
|
void sxtah(Register rd, Register rn, const Operand& operand) {
|
|
sxtah(al, rd, rn, operand);
|
|
}
|
|
|
|
void sxtb(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
const Operand& operand);
|
|
void sxtb(Register rd, const Operand& operand) {
|
|
sxtb(al, Best, rd, operand);
|
|
}
|
|
void sxtb(Condition cond, Register rd, const Operand& operand) {
|
|
sxtb(cond, Best, rd, operand);
|
|
}
|
|
void sxtb(EncodingSize size, Register rd, const Operand& operand) {
|
|
sxtb(al, size, rd, operand);
|
|
}
|
|
|
|
void sxtb16(Condition cond, Register rd, const Operand& operand);
|
|
void sxtb16(Register rd, const Operand& operand) { sxtb16(al, rd, operand); }
|
|
|
|
void sxth(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
const Operand& operand);
|
|
void sxth(Register rd, const Operand& operand) {
|
|
sxth(al, Best, rd, operand);
|
|
}
|
|
void sxth(Condition cond, Register rd, const Operand& operand) {
|
|
sxth(cond, Best, rd, operand);
|
|
}
|
|
void sxth(EncodingSize size, Register rd, const Operand& operand) {
|
|
sxth(al, size, rd, operand);
|
|
}
|
|
|
|
void tbb(Condition cond, Register rn, Register rm);
|
|
void tbb(Register rn, Register rm) { tbb(al, rn, rm); }
|
|
|
|
void tbh(Condition cond, Register rn, Register rm);
|
|
void tbh(Register rn, Register rm) { tbh(al, rn, rm); }
|
|
|
|
void teq(Condition cond, Register rn, const Operand& operand);
|
|
void teq(Register rn, const Operand& operand) { teq(al, rn, operand); }
|
|
|
|
void tst(Condition cond,
|
|
EncodingSize size,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void tst(Register rn, const Operand& operand) { tst(al, Best, rn, operand); }
|
|
void tst(Condition cond, Register rn, const Operand& operand) {
|
|
tst(cond, Best, rn, operand);
|
|
}
|
|
void tst(EncodingSize size, Register rn, const Operand& operand) {
|
|
tst(al, size, rn, operand);
|
|
}
|
|
|
|
void uadd16(Condition cond, Register rd, Register rn, Register rm);
|
|
void uadd16(Register rd, Register rn, Register rm) { uadd16(al, rd, rn, rm); }
|
|
|
|
void uadd8(Condition cond, Register rd, Register rn, Register rm);
|
|
void uadd8(Register rd, Register rn, Register rm) { uadd8(al, rd, rn, rm); }
|
|
|
|
void uasx(Condition cond, Register rd, Register rn, Register rm);
|
|
void uasx(Register rd, Register rn, Register rm) { uasx(al, rd, rn, rm); }
|
|
|
|
void ubfx(
|
|
Condition cond, Register rd, Register rn, uint32_t lsb, uint32_t width);
|
|
void ubfx(Register rd, Register rn, uint32_t lsb, uint32_t width) {
|
|
ubfx(al, rd, rn, lsb, width);
|
|
}
|
|
|
|
void udf(Condition cond, EncodingSize size, uint32_t imm);
|
|
void udf(uint32_t imm) { udf(al, Best, imm); }
|
|
void udf(Condition cond, uint32_t imm) { udf(cond, Best, imm); }
|
|
void udf(EncodingSize size, uint32_t imm) { udf(al, size, imm); }
|
|
|
|
void udiv(Condition cond, Register rd, Register rn, Register rm);
|
|
void udiv(Register rd, Register rn, Register rm) { udiv(al, rd, rn, rm); }
|
|
|
|
void uhadd16(Condition cond, Register rd, Register rn, Register rm);
|
|
void uhadd16(Register rd, Register rn, Register rm) {
|
|
uhadd16(al, rd, rn, rm);
|
|
}
|
|
|
|
void uhadd8(Condition cond, Register rd, Register rn, Register rm);
|
|
void uhadd8(Register rd, Register rn, Register rm) { uhadd8(al, rd, rn, rm); }
|
|
|
|
void uhasx(Condition cond, Register rd, Register rn, Register rm);
|
|
void uhasx(Register rd, Register rn, Register rm) { uhasx(al, rd, rn, rm); }
|
|
|
|
void uhsax(Condition cond, Register rd, Register rn, Register rm);
|
|
void uhsax(Register rd, Register rn, Register rm) { uhsax(al, rd, rn, rm); }
|
|
|
|
void uhsub16(Condition cond, Register rd, Register rn, Register rm);
|
|
void uhsub16(Register rd, Register rn, Register rm) {
|
|
uhsub16(al, rd, rn, rm);
|
|
}
|
|
|
|
void uhsub8(Condition cond, Register rd, Register rn, Register rm);
|
|
void uhsub8(Register rd, Register rn, Register rm) { uhsub8(al, rd, rn, rm); }
|
|
|
|
void umaal(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void umaal(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
umaal(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void umlal(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void umlal(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
umlal(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void umlals(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void umlals(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
umlals(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void umull(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void umull(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
umull(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void umulls(
|
|
Condition cond, Register rdlo, Register rdhi, Register rn, Register rm);
|
|
void umulls(Register rdlo, Register rdhi, Register rn, Register rm) {
|
|
umulls(al, rdlo, rdhi, rn, rm);
|
|
}
|
|
|
|
void uqadd16(Condition cond, Register rd, Register rn, Register rm);
|
|
void uqadd16(Register rd, Register rn, Register rm) {
|
|
uqadd16(al, rd, rn, rm);
|
|
}
|
|
|
|
void uqadd8(Condition cond, Register rd, Register rn, Register rm);
|
|
void uqadd8(Register rd, Register rn, Register rm) { uqadd8(al, rd, rn, rm); }
|
|
|
|
void uqasx(Condition cond, Register rd, Register rn, Register rm);
|
|
void uqasx(Register rd, Register rn, Register rm) { uqasx(al, rd, rn, rm); }
|
|
|
|
void uqsax(Condition cond, Register rd, Register rn, Register rm);
|
|
void uqsax(Register rd, Register rn, Register rm) { uqsax(al, rd, rn, rm); }
|
|
|
|
void uqsub16(Condition cond, Register rd, Register rn, Register rm);
|
|
void uqsub16(Register rd, Register rn, Register rm) {
|
|
uqsub16(al, rd, rn, rm);
|
|
}
|
|
|
|
void uqsub8(Condition cond, Register rd, Register rn, Register rm);
|
|
void uqsub8(Register rd, Register rn, Register rm) { uqsub8(al, rd, rn, rm); }
|
|
|
|
void usad8(Condition cond, Register rd, Register rn, Register rm);
|
|
void usad8(Register rd, Register rn, Register rm) { usad8(al, rd, rn, rm); }
|
|
|
|
void usada8(
|
|
Condition cond, Register rd, Register rn, Register rm, Register ra);
|
|
void usada8(Register rd, Register rn, Register rm, Register ra) {
|
|
usada8(al, rd, rn, rm, ra);
|
|
}
|
|
|
|
void usat(Condition cond, Register rd, uint32_t imm, const Operand& operand);
|
|
void usat(Register rd, uint32_t imm, const Operand& operand) {
|
|
usat(al, rd, imm, operand);
|
|
}
|
|
|
|
void usat16(Condition cond, Register rd, uint32_t imm, Register rn);
|
|
void usat16(Register rd, uint32_t imm, Register rn) {
|
|
usat16(al, rd, imm, rn);
|
|
}
|
|
|
|
void usax(Condition cond, Register rd, Register rn, Register rm);
|
|
void usax(Register rd, Register rn, Register rm) { usax(al, rd, rn, rm); }
|
|
|
|
void usub16(Condition cond, Register rd, Register rn, Register rm);
|
|
void usub16(Register rd, Register rn, Register rm) { usub16(al, rd, rn, rm); }
|
|
|
|
void usub8(Condition cond, Register rd, Register rn, Register rm);
|
|
void usub8(Register rd, Register rn, Register rm) { usub8(al, rd, rn, rm); }
|
|
|
|
void uxtab(Condition cond, Register rd, Register rn, const Operand& operand);
|
|
void uxtab(Register rd, Register rn, const Operand& operand) {
|
|
uxtab(al, rd, rn, operand);
|
|
}
|
|
|
|
void uxtab16(Condition cond,
|
|
Register rd,
|
|
Register rn,
|
|
const Operand& operand);
|
|
void uxtab16(Register rd, Register rn, const Operand& operand) {
|
|
uxtab16(al, rd, rn, operand);
|
|
}
|
|
|
|
void uxtah(Condition cond, Register rd, Register rn, const Operand& operand);
|
|
void uxtah(Register rd, Register rn, const Operand& operand) {
|
|
uxtah(al, rd, rn, operand);
|
|
}
|
|
|
|
void uxtb(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
const Operand& operand);
|
|
void uxtb(Register rd, const Operand& operand) {
|
|
uxtb(al, Best, rd, operand);
|
|
}
|
|
void uxtb(Condition cond, Register rd, const Operand& operand) {
|
|
uxtb(cond, Best, rd, operand);
|
|
}
|
|
void uxtb(EncodingSize size, Register rd, const Operand& operand) {
|
|
uxtb(al, size, rd, operand);
|
|
}
|
|
|
|
void uxtb16(Condition cond, Register rd, const Operand& operand);
|
|
void uxtb16(Register rd, const Operand& operand) { uxtb16(al, rd, operand); }
|
|
|
|
void uxth(Condition cond,
|
|
EncodingSize size,
|
|
Register rd,
|
|
const Operand& operand);
|
|
void uxth(Register rd, const Operand& operand) {
|
|
uxth(al, Best, rd, operand);
|
|
}
|
|
void uxth(Condition cond, Register rd, const Operand& operand) {
|
|
uxth(cond, Best, rd, operand);
|
|
}
|
|
void uxth(EncodingSize size, Register rd, const Operand& operand) {
|
|
uxth(al, size, rd, operand);
|
|
}
|
|
|
|
void vaba(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vaba(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vaba(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vaba(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vaba(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vaba(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vabal(
|
|
Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
|
|
void vabal(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
|
|
vabal(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vabd(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vabd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vabd(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vabd(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vabd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vabd(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vabdl(
|
|
Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
|
|
void vabdl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
|
|
vabdl(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vabs(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vabs(DataType dt, DRegister rd, DRegister rm) { vabs(al, dt, rd, rm); }
|
|
|
|
void vabs(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vabs(DataType dt, QRegister rd, QRegister rm) { vabs(al, dt, rd, rm); }
|
|
|
|
void vabs(Condition cond, DataType dt, SRegister rd, SRegister rm);
|
|
void vabs(DataType dt, SRegister rd, SRegister rm) { vabs(al, dt, rd, rm); }
|
|
|
|
void vacge(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vacge(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vacge(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vacge(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vacge(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vacge(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vacgt(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vacgt(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vacgt(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vacgt(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vacgt(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vacgt(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vacle(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vacle(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vacle(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vacle(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vacle(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vacle(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vaclt(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vaclt(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vaclt(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vaclt(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vaclt(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vaclt(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vadd(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vadd(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vadd(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vadd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vadd(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vadd(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
void vadd(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
|
|
vadd(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vaddhn(
|
|
Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
|
|
void vaddhn(DataType dt, DRegister rd, QRegister rn, QRegister rm) {
|
|
vaddhn(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vaddl(
|
|
Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
|
|
void vaddl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
|
|
vaddl(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vaddw(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, DRegister rm);
|
|
void vaddw(DataType dt, QRegister rd, QRegister rn, DRegister rm) {
|
|
vaddw(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vand(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
const DOperand& operand);
|
|
void vand(DataType dt, DRegister rd, DRegister rn, const DOperand& operand) {
|
|
vand(al, dt, rd, rn, operand);
|
|
}
|
|
|
|
void vand(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
const QOperand& operand);
|
|
void vand(DataType dt, QRegister rd, QRegister rn, const QOperand& operand) {
|
|
vand(al, dt, rd, rn, operand);
|
|
}
|
|
|
|
void vbic(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
const DOperand& operand);
|
|
void vbic(DataType dt, DRegister rd, DRegister rn, const DOperand& operand) {
|
|
vbic(al, dt, rd, rn, operand);
|
|
}
|
|
|
|
void vbic(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
const QOperand& operand);
|
|
void vbic(DataType dt, QRegister rd, QRegister rn, const QOperand& operand) {
|
|
vbic(al, dt, rd, rn, operand);
|
|
}
|
|
|
|
void vbif(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vbif(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vbif(al, dt, rd, rn, rm);
|
|
}
|
|
void vbif(DRegister rd, DRegister rn, DRegister rm) {
|
|
vbif(al, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
void vbif(Condition cond, DRegister rd, DRegister rn, DRegister rm) {
|
|
vbif(cond, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
|
|
void vbif(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vbif(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vbif(al, dt, rd, rn, rm);
|
|
}
|
|
void vbif(QRegister rd, QRegister rn, QRegister rm) {
|
|
vbif(al, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
void vbif(Condition cond, QRegister rd, QRegister rn, QRegister rm) {
|
|
vbif(cond, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
|
|
void vbit(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vbit(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vbit(al, dt, rd, rn, rm);
|
|
}
|
|
void vbit(DRegister rd, DRegister rn, DRegister rm) {
|
|
vbit(al, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
void vbit(Condition cond, DRegister rd, DRegister rn, DRegister rm) {
|
|
vbit(cond, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
|
|
void vbit(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vbit(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vbit(al, dt, rd, rn, rm);
|
|
}
|
|
void vbit(QRegister rd, QRegister rn, QRegister rm) {
|
|
vbit(al, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
void vbit(Condition cond, QRegister rd, QRegister rn, QRegister rm) {
|
|
vbit(cond, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
|
|
void vbsl(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vbsl(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vbsl(al, dt, rd, rn, rm);
|
|
}
|
|
void vbsl(DRegister rd, DRegister rn, DRegister rm) {
|
|
vbsl(al, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
void vbsl(Condition cond, DRegister rd, DRegister rn, DRegister rm) {
|
|
vbsl(cond, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
|
|
void vbsl(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vbsl(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vbsl(al, dt, rd, rn, rm);
|
|
}
|
|
void vbsl(QRegister rd, QRegister rn, QRegister rm) {
|
|
vbsl(al, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
void vbsl(Condition cond, QRegister rd, QRegister rn, QRegister rm) {
|
|
vbsl(cond, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
|
|
void vceq(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vceq(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
|
|
vceq(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vceq(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vceq(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
|
|
vceq(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vceq(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vceq(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vceq(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vceq(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vceq(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vceq(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vcge(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vcge(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
|
|
vcge(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vcge(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vcge(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
|
|
vcge(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vcge(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vcge(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vcge(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vcge(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vcge(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vcge(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vcgt(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vcgt(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
|
|
vcgt(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vcgt(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vcgt(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
|
|
vcgt(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vcgt(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vcgt(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vcgt(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vcgt(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vcgt(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vcgt(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vcle(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vcle(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
|
|
vcle(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vcle(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vcle(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
|
|
vcle(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vcle(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vcle(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vcle(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vcle(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vcle(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vcle(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vcls(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vcls(DataType dt, DRegister rd, DRegister rm) { vcls(al, dt, rd, rm); }
|
|
|
|
void vcls(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vcls(DataType dt, QRegister rd, QRegister rm) { vcls(al, dt, rd, rm); }
|
|
|
|
void vclt(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vclt(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
|
|
vclt(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vclt(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vclt(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
|
|
vclt(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vclt(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vclt(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vclt(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vclt(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vclt(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vclt(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vclz(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vclz(DataType dt, DRegister rd, DRegister rm) { vclz(al, dt, rd, rm); }
|
|
|
|
void vclz(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vclz(DataType dt, QRegister rd, QRegister rm) { vclz(al, dt, rd, rm); }
|
|
|
|
void vcmp(Condition cond, DataType dt, SRegister rd, const SOperand& operand);
|
|
void vcmp(DataType dt, SRegister rd, const SOperand& operand) {
|
|
vcmp(al, dt, rd, operand);
|
|
}
|
|
|
|
void vcmp(Condition cond, DataType dt, DRegister rd, const DOperand& operand);
|
|
void vcmp(DataType dt, DRegister rd, const DOperand& operand) {
|
|
vcmp(al, dt, rd, operand);
|
|
}
|
|
|
|
void vcmpe(Condition cond,
|
|
DataType dt,
|
|
SRegister rd,
|
|
const SOperand& operand);
|
|
void vcmpe(DataType dt, SRegister rd, const SOperand& operand) {
|
|
vcmpe(al, dt, rd, operand);
|
|
}
|
|
|
|
void vcmpe(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
const DOperand& operand);
|
|
void vcmpe(DataType dt, DRegister rd, const DOperand& operand) {
|
|
vcmpe(al, dt, rd, operand);
|
|
}
|
|
|
|
void vcnt(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vcnt(DataType dt, DRegister rd, DRegister rm) { vcnt(al, dt, rd, rm); }
|
|
|
|
void vcnt(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vcnt(DataType dt, QRegister rd, QRegister rm) { vcnt(al, dt, rd, rm); }
|
|
|
|
void vcvt(
|
|
Condition cond, DataType dt1, DataType dt2, DRegister rd, SRegister rm);
|
|
void vcvt(DataType dt1, DataType dt2, DRegister rd, SRegister rm) {
|
|
vcvt(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvt(
|
|
Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
|
|
void vcvt(DataType dt1, DataType dt2, SRegister rd, DRegister rm) {
|
|
vcvt(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvt(Condition cond,
|
|
DataType dt1,
|
|
DataType dt2,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
int32_t fbits);
|
|
void vcvt(
|
|
DataType dt1, DataType dt2, DRegister rd, DRegister rm, int32_t fbits) {
|
|
vcvt(al, dt1, dt2, rd, rm, fbits);
|
|
}
|
|
|
|
void vcvt(Condition cond,
|
|
DataType dt1,
|
|
DataType dt2,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
int32_t fbits);
|
|
void vcvt(
|
|
DataType dt1, DataType dt2, QRegister rd, QRegister rm, int32_t fbits) {
|
|
vcvt(al, dt1, dt2, rd, rm, fbits);
|
|
}
|
|
|
|
void vcvt(Condition cond,
|
|
DataType dt1,
|
|
DataType dt2,
|
|
SRegister rd,
|
|
SRegister rm,
|
|
int32_t fbits);
|
|
void vcvt(
|
|
DataType dt1, DataType dt2, SRegister rd, SRegister rm, int32_t fbits) {
|
|
vcvt(al, dt1, dt2, rd, rm, fbits);
|
|
}
|
|
|
|
void vcvt(
|
|
Condition cond, DataType dt1, DataType dt2, DRegister rd, DRegister rm);
|
|
void vcvt(DataType dt1, DataType dt2, DRegister rd, DRegister rm) {
|
|
vcvt(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvt(
|
|
Condition cond, DataType dt1, DataType dt2, QRegister rd, QRegister rm);
|
|
void vcvt(DataType dt1, DataType dt2, QRegister rd, QRegister rm) {
|
|
vcvt(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvt(
|
|
Condition cond, DataType dt1, DataType dt2, DRegister rd, QRegister rm);
|
|
void vcvt(DataType dt1, DataType dt2, DRegister rd, QRegister rm) {
|
|
vcvt(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvt(
|
|
Condition cond, DataType dt1, DataType dt2, QRegister rd, DRegister rm);
|
|
void vcvt(DataType dt1, DataType dt2, QRegister rd, DRegister rm) {
|
|
vcvt(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvt(
|
|
Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
|
|
void vcvt(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
|
|
vcvt(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvta(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
|
|
|
|
void vcvta(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
|
|
|
|
void vcvta(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
|
|
|
|
void vcvta(DataType dt1, DataType dt2, SRegister rd, DRegister rm);
|
|
|
|
void vcvtb(
|
|
Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
|
|
void vcvtb(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
|
|
vcvtb(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvtb(
|
|
Condition cond, DataType dt1, DataType dt2, DRegister rd, SRegister rm);
|
|
void vcvtb(DataType dt1, DataType dt2, DRegister rd, SRegister rm) {
|
|
vcvtb(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvtb(
|
|
Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
|
|
void vcvtb(DataType dt1, DataType dt2, SRegister rd, DRegister rm) {
|
|
vcvtb(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvtm(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
|
|
|
|
void vcvtm(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
|
|
|
|
void vcvtm(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
|
|
|
|
void vcvtm(DataType dt1, DataType dt2, SRegister rd, DRegister rm);
|
|
|
|
void vcvtn(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
|
|
|
|
void vcvtn(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
|
|
|
|
void vcvtn(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
|
|
|
|
void vcvtn(DataType dt1, DataType dt2, SRegister rd, DRegister rm);
|
|
|
|
void vcvtp(DataType dt1, DataType dt2, DRegister rd, DRegister rm);
|
|
|
|
void vcvtp(DataType dt1, DataType dt2, QRegister rd, QRegister rm);
|
|
|
|
void vcvtp(DataType dt1, DataType dt2, SRegister rd, SRegister rm);
|
|
|
|
void vcvtp(DataType dt1, DataType dt2, SRegister rd, DRegister rm);
|
|
|
|
void vcvtr(
|
|
Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
|
|
void vcvtr(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
|
|
vcvtr(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvtr(
|
|
Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
|
|
void vcvtr(DataType dt1, DataType dt2, SRegister rd, DRegister rm) {
|
|
vcvtr(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvtt(
|
|
Condition cond, DataType dt1, DataType dt2, SRegister rd, SRegister rm);
|
|
void vcvtt(DataType dt1, DataType dt2, SRegister rd, SRegister rm) {
|
|
vcvtt(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvtt(
|
|
Condition cond, DataType dt1, DataType dt2, DRegister rd, SRegister rm);
|
|
void vcvtt(DataType dt1, DataType dt2, DRegister rd, SRegister rm) {
|
|
vcvtt(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vcvtt(
|
|
Condition cond, DataType dt1, DataType dt2, SRegister rd, DRegister rm);
|
|
void vcvtt(DataType dt1, DataType dt2, SRegister rd, DRegister rm) {
|
|
vcvtt(al, dt1, dt2, rd, rm);
|
|
}
|
|
|
|
void vdiv(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
void vdiv(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
|
|
vdiv(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vdiv(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vdiv(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vdiv(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vdup(Condition cond, DataType dt, QRegister rd, Register rt);
|
|
void vdup(DataType dt, QRegister rd, Register rt) { vdup(al, dt, rd, rt); }
|
|
|
|
void vdup(Condition cond, DataType dt, DRegister rd, Register rt);
|
|
void vdup(DataType dt, DRegister rd, Register rt) { vdup(al, dt, rd, rt); }
|
|
|
|
void vdup(Condition cond, DataType dt, DRegister rd, DRegisterLane rm);
|
|
void vdup(DataType dt, DRegister rd, DRegisterLane rm) {
|
|
vdup(al, dt, rd, rm);
|
|
}
|
|
|
|
void vdup(Condition cond, DataType dt, QRegister rd, DRegisterLane rm);
|
|
void vdup(DataType dt, QRegister rd, DRegisterLane rm) {
|
|
vdup(al, dt, rd, rm);
|
|
}
|
|
|
|
void veor(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void veor(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
veor(al, dt, rd, rn, rm);
|
|
}
|
|
void veor(DRegister rd, DRegister rn, DRegister rm) {
|
|
veor(al, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
void veor(Condition cond, DRegister rd, DRegister rn, DRegister rm) {
|
|
veor(cond, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
|
|
void veor(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void veor(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
veor(al, dt, rd, rn, rm);
|
|
}
|
|
void veor(QRegister rd, QRegister rn, QRegister rm) {
|
|
veor(al, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
void veor(Condition cond, QRegister rd, QRegister rn, QRegister rm) {
|
|
veor(cond, kDataTypeValueNone, rd, rn, rm);
|
|
}
|
|
|
|
void vext(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vext(DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
DRegister rm,
|
|
const DOperand& operand) {
|
|
vext(al, dt, rd, rn, rm, operand);
|
|
}
|
|
|
|
void vext(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vext(DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
QRegister rm,
|
|
const QOperand& operand) {
|
|
vext(al, dt, rd, rn, rm, operand);
|
|
}
|
|
|
|
void vfma(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vfma(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vfma(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vfma(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vfma(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vfma(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vfma(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
void vfma(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
|
|
vfma(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vfms(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vfms(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vfms(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vfms(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vfms(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vfms(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vfms(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
void vfms(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
|
|
vfms(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vfnma(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
void vfnma(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
|
|
vfnma(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vfnma(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vfnma(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vfnma(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vfnms(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
void vfnms(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
|
|
vfnms(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vfnms(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vfnms(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vfnms(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vhadd(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vhadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vhadd(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vhadd(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vhadd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vhadd(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vhsub(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vhsub(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vhsub(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vhsub(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vhsub(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vhsub(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vld1(Condition cond,
|
|
DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand);
|
|
void vld1(DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand) {
|
|
vld1(al, dt, nreglist, operand);
|
|
}
|
|
|
|
void vld2(Condition cond,
|
|
DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand);
|
|
void vld2(DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand) {
|
|
vld2(al, dt, nreglist, operand);
|
|
}
|
|
|
|
void vld3(Condition cond,
|
|
DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand);
|
|
void vld3(DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand) {
|
|
vld3(al, dt, nreglist, operand);
|
|
}
|
|
|
|
void vld3(Condition cond,
|
|
DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const MemOperand& operand);
|
|
void vld3(DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const MemOperand& operand) {
|
|
vld3(al, dt, nreglist, operand);
|
|
}
|
|
|
|
void vld4(Condition cond,
|
|
DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand);
|
|
void vld4(DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand) {
|
|
vld4(al, dt, nreglist, operand);
|
|
}
|
|
|
|
void vldm(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist);
|
|
void vldm(DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist) {
|
|
vldm(al, dt, rn, write_back, dreglist);
|
|
}
|
|
void vldm(Register rn, WriteBack write_back, DRegisterList dreglist) {
|
|
vldm(al, kDataTypeValueNone, rn, write_back, dreglist);
|
|
}
|
|
void vldm(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist) {
|
|
vldm(cond, kDataTypeValueNone, rn, write_back, dreglist);
|
|
}
|
|
|
|
void vldm(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist);
|
|
void vldm(DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist) {
|
|
vldm(al, dt, rn, write_back, sreglist);
|
|
}
|
|
void vldm(Register rn, WriteBack write_back, SRegisterList sreglist) {
|
|
vldm(al, kDataTypeValueNone, rn, write_back, sreglist);
|
|
}
|
|
void vldm(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist) {
|
|
vldm(cond, kDataTypeValueNone, rn, write_back, sreglist);
|
|
}
|
|
|
|
void vldmdb(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist);
|
|
void vldmdb(DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist) {
|
|
vldmdb(al, dt, rn, write_back, dreglist);
|
|
}
|
|
void vldmdb(Register rn, WriteBack write_back, DRegisterList dreglist) {
|
|
vldmdb(al, kDataTypeValueNone, rn, write_back, dreglist);
|
|
}
|
|
void vldmdb(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist) {
|
|
vldmdb(cond, kDataTypeValueNone, rn, write_back, dreglist);
|
|
}
|
|
|
|
void vldmdb(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist);
|
|
void vldmdb(DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist) {
|
|
vldmdb(al, dt, rn, write_back, sreglist);
|
|
}
|
|
void vldmdb(Register rn, WriteBack write_back, SRegisterList sreglist) {
|
|
vldmdb(al, kDataTypeValueNone, rn, write_back, sreglist);
|
|
}
|
|
void vldmdb(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist) {
|
|
vldmdb(cond, kDataTypeValueNone, rn, write_back, sreglist);
|
|
}
|
|
|
|
void vldmia(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist);
|
|
void vldmia(DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist) {
|
|
vldmia(al, dt, rn, write_back, dreglist);
|
|
}
|
|
void vldmia(Register rn, WriteBack write_back, DRegisterList dreglist) {
|
|
vldmia(al, kDataTypeValueNone, rn, write_back, dreglist);
|
|
}
|
|
void vldmia(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist) {
|
|
vldmia(cond, kDataTypeValueNone, rn, write_back, dreglist);
|
|
}
|
|
|
|
void vldmia(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist);
|
|
void vldmia(DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist) {
|
|
vldmia(al, dt, rn, write_back, sreglist);
|
|
}
|
|
void vldmia(Register rn, WriteBack write_back, SRegisterList sreglist) {
|
|
vldmia(al, kDataTypeValueNone, rn, write_back, sreglist);
|
|
}
|
|
void vldmia(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist) {
|
|
vldmia(cond, kDataTypeValueNone, rn, write_back, sreglist);
|
|
}
|
|
|
|
void vldr(Condition cond, DataType dt, DRegister rd, Location* location);
|
|
bool vldr_info(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void vldr(DataType dt, DRegister rd, Location* location) {
|
|
vldr(al, dt, rd, location);
|
|
}
|
|
void vldr(DRegister rd, Location* location) {
|
|
vldr(al, Untyped64, rd, location);
|
|
}
|
|
void vldr(Condition cond, DRegister rd, Location* location) {
|
|
vldr(cond, Untyped64, rd, location);
|
|
}
|
|
|
|
void vldr(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
const MemOperand& operand);
|
|
void vldr(DataType dt, DRegister rd, const MemOperand& operand) {
|
|
vldr(al, dt, rd, operand);
|
|
}
|
|
void vldr(DRegister rd, const MemOperand& operand) {
|
|
vldr(al, Untyped64, rd, operand);
|
|
}
|
|
void vldr(Condition cond, DRegister rd, const MemOperand& operand) {
|
|
vldr(cond, Untyped64, rd, operand);
|
|
}
|
|
|
|
void vldr(Condition cond, DataType dt, SRegister rd, Location* location);
|
|
bool vldr_info(Condition cond,
|
|
DataType dt,
|
|
SRegister rd,
|
|
Location* location,
|
|
const struct ReferenceInfo** info);
|
|
void vldr(DataType dt, SRegister rd, Location* location) {
|
|
vldr(al, dt, rd, location);
|
|
}
|
|
void vldr(SRegister rd, Location* location) {
|
|
vldr(al, Untyped32, rd, location);
|
|
}
|
|
void vldr(Condition cond, SRegister rd, Location* location) {
|
|
vldr(cond, Untyped32, rd, location);
|
|
}
|
|
|
|
void vldr(Condition cond,
|
|
DataType dt,
|
|
SRegister rd,
|
|
const MemOperand& operand);
|
|
void vldr(DataType dt, SRegister rd, const MemOperand& operand) {
|
|
vldr(al, dt, rd, operand);
|
|
}
|
|
void vldr(SRegister rd, const MemOperand& operand) {
|
|
vldr(al, Untyped32, rd, operand);
|
|
}
|
|
void vldr(Condition cond, SRegister rd, const MemOperand& operand) {
|
|
vldr(cond, Untyped32, rd, operand);
|
|
}
|
|
|
|
void vmax(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vmax(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vmax(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmax(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vmax(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vmax(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmaxnm(DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
|
|
void vmaxnm(DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
|
|
void vmaxnm(DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
|
|
void vmin(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vmin(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vmin(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmin(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vmin(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vmin(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vminnm(DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
|
|
void vminnm(DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
|
|
void vminnm(DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
|
|
void vmla(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
DRegisterLane rm);
|
|
void vmla(DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
|
|
vmla(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmla(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
DRegisterLane rm);
|
|
void vmla(DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
|
|
vmla(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmla(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vmla(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vmla(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmla(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vmla(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vmla(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmla(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
void vmla(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
|
|
vmla(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmlal(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
DRegister rn,
|
|
DRegisterLane rm);
|
|
void vmlal(DataType dt, QRegister rd, DRegister rn, DRegisterLane rm) {
|
|
vmlal(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmlal(
|
|
Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
|
|
void vmlal(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
|
|
vmlal(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmls(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
DRegisterLane rm);
|
|
void vmls(DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
|
|
vmls(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmls(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
DRegisterLane rm);
|
|
void vmls(DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
|
|
vmls(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmls(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vmls(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vmls(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmls(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vmls(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vmls(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmls(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
void vmls(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
|
|
vmls(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmlsl(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
DRegister rn,
|
|
DRegisterLane rm);
|
|
void vmlsl(DataType dt, QRegister rd, DRegister rn, DRegisterLane rm) {
|
|
vmlsl(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmlsl(
|
|
Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
|
|
void vmlsl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
|
|
vmlsl(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmov(Condition cond, Register rt, SRegister rn);
|
|
void vmov(Register rt, SRegister rn) { vmov(al, rt, rn); }
|
|
|
|
void vmov(Condition cond, SRegister rn, Register rt);
|
|
void vmov(SRegister rn, Register rt) { vmov(al, rn, rt); }
|
|
|
|
void vmov(Condition cond, Register rt, Register rt2, DRegister rm);
|
|
void vmov(Register rt, Register rt2, DRegister rm) { vmov(al, rt, rt2, rm); }
|
|
|
|
void vmov(Condition cond, DRegister rm, Register rt, Register rt2);
|
|
void vmov(DRegister rm, Register rt, Register rt2) { vmov(al, rm, rt, rt2); }
|
|
|
|
void vmov(
|
|
Condition cond, Register rt, Register rt2, SRegister rm, SRegister rm1);
|
|
void vmov(Register rt, Register rt2, SRegister rm, SRegister rm1) {
|
|
vmov(al, rt, rt2, rm, rm1);
|
|
}
|
|
|
|
void vmov(
|
|
Condition cond, SRegister rm, SRegister rm1, Register rt, Register rt2);
|
|
void vmov(SRegister rm, SRegister rm1, Register rt, Register rt2) {
|
|
vmov(al, rm, rm1, rt, rt2);
|
|
}
|
|
|
|
void vmov(Condition cond, DataType dt, DRegisterLane rd, Register rt);
|
|
void vmov(DataType dt, DRegisterLane rd, Register rt) {
|
|
vmov(al, dt, rd, rt);
|
|
}
|
|
void vmov(DRegisterLane rd, Register rt) {
|
|
vmov(al, kDataTypeValueNone, rd, rt);
|
|
}
|
|
void vmov(Condition cond, DRegisterLane rd, Register rt) {
|
|
vmov(cond, kDataTypeValueNone, rd, rt);
|
|
}
|
|
|
|
void vmov(Condition cond, DataType dt, DRegister rd, const DOperand& operand);
|
|
void vmov(DataType dt, DRegister rd, const DOperand& operand) {
|
|
vmov(al, dt, rd, operand);
|
|
}
|
|
|
|
void vmov(Condition cond, DataType dt, QRegister rd, const QOperand& operand);
|
|
void vmov(DataType dt, QRegister rd, const QOperand& operand) {
|
|
vmov(al, dt, rd, operand);
|
|
}
|
|
|
|
void vmov(Condition cond, DataType dt, SRegister rd, const SOperand& operand);
|
|
void vmov(DataType dt, SRegister rd, const SOperand& operand) {
|
|
vmov(al, dt, rd, operand);
|
|
}
|
|
|
|
void vmov(Condition cond, DataType dt, Register rt, DRegisterLane rn);
|
|
void vmov(DataType dt, Register rt, DRegisterLane rn) {
|
|
vmov(al, dt, rt, rn);
|
|
}
|
|
void vmov(Register rt, DRegisterLane rn) {
|
|
vmov(al, kDataTypeValueNone, rt, rn);
|
|
}
|
|
void vmov(Condition cond, Register rt, DRegisterLane rn) {
|
|
vmov(cond, kDataTypeValueNone, rt, rn);
|
|
}
|
|
|
|
void vmovl(Condition cond, DataType dt, QRegister rd, DRegister rm);
|
|
void vmovl(DataType dt, QRegister rd, DRegister rm) { vmovl(al, dt, rd, rm); }
|
|
|
|
void vmovn(Condition cond, DataType dt, DRegister rd, QRegister rm);
|
|
void vmovn(DataType dt, DRegister rd, QRegister rm) { vmovn(al, dt, rd, rm); }
|
|
|
|
void vmrs(Condition cond, RegisterOrAPSR_nzcv rt, SpecialFPRegister spec_reg);
|
|
void vmrs(RegisterOrAPSR_nzcv rt, SpecialFPRegister spec_reg) {
|
|
vmrs(al, rt, spec_reg);
|
|
}
|
|
|
|
void vmsr(Condition cond, SpecialFPRegister spec_reg, Register rt);
|
|
void vmsr(SpecialFPRegister spec_reg, Register rt) { vmsr(al, spec_reg, rt); }
|
|
|
|
void vmul(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
DRegister dm,
|
|
unsigned index);
|
|
void vmul(
|
|
DataType dt, DRegister rd, DRegister rn, DRegister dm, unsigned index) {
|
|
vmul(al, dt, rd, rn, dm, index);
|
|
}
|
|
|
|
void vmul(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
DRegister dm,
|
|
unsigned index);
|
|
void vmul(
|
|
DataType dt, QRegister rd, QRegister rn, DRegister dm, unsigned index) {
|
|
vmul(al, dt, rd, rn, dm, index);
|
|
}
|
|
|
|
void vmul(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vmul(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vmul(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmul(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vmul(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vmul(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmul(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
void vmul(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
|
|
vmul(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmull(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
DRegister rn,
|
|
DRegister dm,
|
|
unsigned index);
|
|
void vmull(
|
|
DataType dt, QRegister rd, DRegister rn, DRegister dm, unsigned index) {
|
|
vmull(al, dt, rd, rn, dm, index);
|
|
}
|
|
|
|
void vmull(
|
|
Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
|
|
void vmull(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
|
|
vmull(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vmvn(Condition cond, DataType dt, DRegister rd, const DOperand& operand);
|
|
void vmvn(DataType dt, DRegister rd, const DOperand& operand) {
|
|
vmvn(al, dt, rd, operand);
|
|
}
|
|
|
|
void vmvn(Condition cond, DataType dt, QRegister rd, const QOperand& operand);
|
|
void vmvn(DataType dt, QRegister rd, const QOperand& operand) {
|
|
vmvn(al, dt, rd, operand);
|
|
}
|
|
|
|
void vneg(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vneg(DataType dt, DRegister rd, DRegister rm) { vneg(al, dt, rd, rm); }
|
|
|
|
void vneg(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vneg(DataType dt, QRegister rd, QRegister rm) { vneg(al, dt, rd, rm); }
|
|
|
|
void vneg(Condition cond, DataType dt, SRegister rd, SRegister rm);
|
|
void vneg(DataType dt, SRegister rd, SRegister rm) { vneg(al, dt, rd, rm); }
|
|
|
|
void vnmla(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
void vnmla(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
|
|
vnmla(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vnmla(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vnmla(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vnmla(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vnmls(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
void vnmls(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
|
|
vnmls(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vnmls(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vnmls(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vnmls(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vnmul(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
void vnmul(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
|
|
vnmul(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vnmul(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vnmul(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vnmul(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vorn(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
const DOperand& operand);
|
|
void vorn(DataType dt, DRegister rd, DRegister rn, const DOperand& operand) {
|
|
vorn(al, dt, rd, rn, operand);
|
|
}
|
|
|
|
void vorn(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
const QOperand& operand);
|
|
void vorn(DataType dt, QRegister rd, QRegister rn, const QOperand& operand) {
|
|
vorn(al, dt, rd, rn, operand);
|
|
}
|
|
|
|
void vorr(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
const DOperand& operand);
|
|
void vorr(DataType dt, DRegister rd, DRegister rn, const DOperand& operand) {
|
|
vorr(al, dt, rd, rn, operand);
|
|
}
|
|
void vorr(DRegister rd, DRegister rn, const DOperand& operand) {
|
|
vorr(al, kDataTypeValueNone, rd, rn, operand);
|
|
}
|
|
void vorr(Condition cond,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
const DOperand& operand) {
|
|
vorr(cond, kDataTypeValueNone, rd, rn, operand);
|
|
}
|
|
|
|
void vorr(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
const QOperand& operand);
|
|
void vorr(DataType dt, QRegister rd, QRegister rn, const QOperand& operand) {
|
|
vorr(al, dt, rd, rn, operand);
|
|
}
|
|
void vorr(QRegister rd, QRegister rn, const QOperand& operand) {
|
|
vorr(al, kDataTypeValueNone, rd, rn, operand);
|
|
}
|
|
void vorr(Condition cond,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
const QOperand& operand) {
|
|
vorr(cond, kDataTypeValueNone, rd, rn, operand);
|
|
}
|
|
|
|
void vpadal(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vpadal(DataType dt, DRegister rd, DRegister rm) {
|
|
vpadal(al, dt, rd, rm);
|
|
}
|
|
|
|
void vpadal(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vpadal(DataType dt, QRegister rd, QRegister rm) {
|
|
vpadal(al, dt, rd, rm);
|
|
}
|
|
|
|
void vpadd(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vpadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vpadd(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vpaddl(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vpaddl(DataType dt, DRegister rd, DRegister rm) {
|
|
vpaddl(al, dt, rd, rm);
|
|
}
|
|
|
|
void vpaddl(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vpaddl(DataType dt, QRegister rd, QRegister rm) {
|
|
vpaddl(al, dt, rd, rm);
|
|
}
|
|
|
|
void vpmax(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vpmax(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vpmax(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vpmin(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vpmin(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vpmin(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vpop(Condition cond, DataType dt, DRegisterList dreglist);
|
|
void vpop(DataType dt, DRegisterList dreglist) { vpop(al, dt, dreglist); }
|
|
void vpop(DRegisterList dreglist) { vpop(al, kDataTypeValueNone, dreglist); }
|
|
void vpop(Condition cond, DRegisterList dreglist) {
|
|
vpop(cond, kDataTypeValueNone, dreglist);
|
|
}
|
|
|
|
void vpop(Condition cond, DataType dt, SRegisterList sreglist);
|
|
void vpop(DataType dt, SRegisterList sreglist) { vpop(al, dt, sreglist); }
|
|
void vpop(SRegisterList sreglist) { vpop(al, kDataTypeValueNone, sreglist); }
|
|
void vpop(Condition cond, SRegisterList sreglist) {
|
|
vpop(cond, kDataTypeValueNone, sreglist);
|
|
}
|
|
|
|
void vpush(Condition cond, DataType dt, DRegisterList dreglist);
|
|
void vpush(DataType dt, DRegisterList dreglist) { vpush(al, dt, dreglist); }
|
|
void vpush(DRegisterList dreglist) {
|
|
vpush(al, kDataTypeValueNone, dreglist);
|
|
}
|
|
void vpush(Condition cond, DRegisterList dreglist) {
|
|
vpush(cond, kDataTypeValueNone, dreglist);
|
|
}
|
|
|
|
void vpush(Condition cond, DataType dt, SRegisterList sreglist);
|
|
void vpush(DataType dt, SRegisterList sreglist) { vpush(al, dt, sreglist); }
|
|
void vpush(SRegisterList sreglist) {
|
|
vpush(al, kDataTypeValueNone, sreglist);
|
|
}
|
|
void vpush(Condition cond, SRegisterList sreglist) {
|
|
vpush(cond, kDataTypeValueNone, sreglist);
|
|
}
|
|
|
|
void vqabs(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vqabs(DataType dt, DRegister rd, DRegister rm) { vqabs(al, dt, rd, rm); }
|
|
|
|
void vqabs(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vqabs(DataType dt, QRegister rd, QRegister rm) { vqabs(al, dt, rd, rm); }
|
|
|
|
void vqadd(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vqadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vqadd(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqadd(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vqadd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vqadd(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqdmlal(
|
|
Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
|
|
void vqdmlal(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
|
|
vqdmlal(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqdmlal(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
DRegister rn,
|
|
DRegister dm,
|
|
unsigned index);
|
|
void vqdmlal(
|
|
DataType dt, QRegister rd, DRegister rn, DRegister dm, unsigned index) {
|
|
vqdmlal(al, dt, rd, rn, dm, index);
|
|
}
|
|
|
|
void vqdmlsl(
|
|
Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
|
|
void vqdmlsl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
|
|
vqdmlsl(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqdmlsl(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
DRegister rn,
|
|
DRegister dm,
|
|
unsigned index);
|
|
void vqdmlsl(
|
|
DataType dt, QRegister rd, DRegister rn, DRegister dm, unsigned index) {
|
|
vqdmlsl(al, dt, rd, rn, dm, index);
|
|
}
|
|
|
|
void vqdmulh(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vqdmulh(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vqdmulh(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqdmulh(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vqdmulh(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vqdmulh(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqdmulh(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
DRegisterLane rm);
|
|
void vqdmulh(DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
|
|
vqdmulh(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqdmulh(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
DRegisterLane rm);
|
|
void vqdmulh(DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
|
|
vqdmulh(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqdmull(
|
|
Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
|
|
void vqdmull(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
|
|
vqdmull(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqdmull(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
DRegister rn,
|
|
DRegisterLane rm);
|
|
void vqdmull(DataType dt, QRegister rd, DRegister rn, DRegisterLane rm) {
|
|
vqdmull(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqmovn(Condition cond, DataType dt, DRegister rd, QRegister rm);
|
|
void vqmovn(DataType dt, DRegister rd, QRegister rm) {
|
|
vqmovn(al, dt, rd, rm);
|
|
}
|
|
|
|
void vqmovun(Condition cond, DataType dt, DRegister rd, QRegister rm);
|
|
void vqmovun(DataType dt, DRegister rd, QRegister rm) {
|
|
vqmovun(al, dt, rd, rm);
|
|
}
|
|
|
|
void vqneg(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vqneg(DataType dt, DRegister rd, DRegister rm) { vqneg(al, dt, rd, rm); }
|
|
|
|
void vqneg(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vqneg(DataType dt, QRegister rd, QRegister rm) { vqneg(al, dt, rd, rm); }
|
|
|
|
void vqrdmulh(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vqrdmulh(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vqrdmulh(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqrdmulh(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vqrdmulh(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vqrdmulh(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqrdmulh(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rn,
|
|
DRegisterLane rm);
|
|
void vqrdmulh(DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
|
|
vqrdmulh(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqrdmulh(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rn,
|
|
DRegisterLane rm);
|
|
void vqrdmulh(DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
|
|
vqrdmulh(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqrshl(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rm, DRegister rn);
|
|
void vqrshl(DataType dt, DRegister rd, DRegister rm, DRegister rn) {
|
|
vqrshl(al, dt, rd, rm, rn);
|
|
}
|
|
|
|
void vqrshl(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rm, QRegister rn);
|
|
void vqrshl(DataType dt, QRegister rd, QRegister rm, QRegister rn) {
|
|
vqrshl(al, dt, rd, rm, rn);
|
|
}
|
|
|
|
void vqrshrn(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vqrshrn(DataType dt,
|
|
DRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand) {
|
|
vqrshrn(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vqrshrun(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vqrshrun(DataType dt,
|
|
DRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand) {
|
|
vqrshrun(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vqshl(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vqshl(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
|
|
vqshl(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vqshl(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vqshl(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
|
|
vqshl(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vqshlu(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vqshlu(DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand) {
|
|
vqshlu(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vqshlu(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vqshlu(DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand) {
|
|
vqshlu(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vqshrn(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vqshrn(DataType dt,
|
|
DRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand) {
|
|
vqshrn(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vqshrun(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vqshrun(DataType dt,
|
|
DRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand) {
|
|
vqshrun(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vqsub(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vqsub(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vqsub(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vqsub(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vqsub(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vqsub(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vraddhn(
|
|
Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
|
|
void vraddhn(DataType dt, DRegister rd, QRegister rn, QRegister rm) {
|
|
vraddhn(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vrecpe(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vrecpe(DataType dt, DRegister rd, DRegister rm) {
|
|
vrecpe(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrecpe(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vrecpe(DataType dt, QRegister rd, QRegister rm) {
|
|
vrecpe(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrecps(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vrecps(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vrecps(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vrecps(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vrecps(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vrecps(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vrev16(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vrev16(DataType dt, DRegister rd, DRegister rm) {
|
|
vrev16(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrev16(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vrev16(DataType dt, QRegister rd, QRegister rm) {
|
|
vrev16(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrev32(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vrev32(DataType dt, DRegister rd, DRegister rm) {
|
|
vrev32(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrev32(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vrev32(DataType dt, QRegister rd, QRegister rm) {
|
|
vrev32(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrev64(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vrev64(DataType dt, DRegister rd, DRegister rm) {
|
|
vrev64(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrev64(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vrev64(DataType dt, QRegister rd, QRegister rm) {
|
|
vrev64(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrhadd(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vrhadd(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vrhadd(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vrhadd(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vrhadd(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vrhadd(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vrinta(DataType dt, DRegister rd, DRegister rm);
|
|
|
|
void vrinta(DataType dt, QRegister rd, QRegister rm);
|
|
|
|
void vrinta(DataType dt, SRegister rd, SRegister rm);
|
|
|
|
void vrintm(DataType dt, DRegister rd, DRegister rm);
|
|
|
|
void vrintm(DataType dt, QRegister rd, QRegister rm);
|
|
|
|
void vrintm(DataType dt, SRegister rd, SRegister rm);
|
|
|
|
void vrintn(DataType dt, DRegister rd, DRegister rm);
|
|
|
|
void vrintn(DataType dt, QRegister rd, QRegister rm);
|
|
|
|
void vrintn(DataType dt, SRegister rd, SRegister rm);
|
|
|
|
void vrintp(DataType dt, DRegister rd, DRegister rm);
|
|
|
|
void vrintp(DataType dt, QRegister rd, QRegister rm);
|
|
|
|
void vrintp(DataType dt, SRegister rd, SRegister rm);
|
|
|
|
void vrintr(Condition cond, DataType dt, SRegister rd, SRegister rm);
|
|
void vrintr(DataType dt, SRegister rd, SRegister rm) {
|
|
vrintr(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrintr(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vrintr(DataType dt, DRegister rd, DRegister rm) {
|
|
vrintr(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrintx(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vrintx(DataType dt, DRegister rd, DRegister rm) {
|
|
vrintx(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrintx(DataType dt, QRegister rd, QRegister rm);
|
|
|
|
void vrintx(Condition cond, DataType dt, SRegister rd, SRegister rm);
|
|
void vrintx(DataType dt, SRegister rd, SRegister rm) {
|
|
vrintx(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrintz(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vrintz(DataType dt, DRegister rd, DRegister rm) {
|
|
vrintz(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrintz(DataType dt, QRegister rd, QRegister rm);
|
|
|
|
void vrintz(Condition cond, DataType dt, SRegister rd, SRegister rm);
|
|
void vrintz(DataType dt, SRegister rd, SRegister rm) {
|
|
vrintz(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrshl(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rm, DRegister rn);
|
|
void vrshl(DataType dt, DRegister rd, DRegister rm, DRegister rn) {
|
|
vrshl(al, dt, rd, rm, rn);
|
|
}
|
|
|
|
void vrshl(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rm, QRegister rn);
|
|
void vrshl(DataType dt, QRegister rd, QRegister rm, QRegister rn) {
|
|
vrshl(al, dt, rd, rm, rn);
|
|
}
|
|
|
|
void vrshr(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vrshr(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
|
|
vrshr(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vrshr(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vrshr(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
|
|
vrshr(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vrshrn(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vrshrn(DataType dt,
|
|
DRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand) {
|
|
vrshrn(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vrsqrte(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vrsqrte(DataType dt, DRegister rd, DRegister rm) {
|
|
vrsqrte(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrsqrte(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vrsqrte(DataType dt, QRegister rd, QRegister rm) {
|
|
vrsqrte(al, dt, rd, rm);
|
|
}
|
|
|
|
void vrsqrts(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vrsqrts(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vrsqrts(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vrsqrts(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vrsqrts(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vrsqrts(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vrsra(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vrsra(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
|
|
vrsra(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vrsra(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vrsra(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
|
|
vrsra(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vrsubhn(
|
|
Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
|
|
void vrsubhn(DataType dt, DRegister rd, QRegister rn, QRegister rm) {
|
|
vrsubhn(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vseleq(DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
|
|
void vseleq(DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
|
|
void vselge(DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
|
|
void vselge(DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
|
|
void vselgt(DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
|
|
void vselgt(DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
|
|
void vselvs(DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
|
|
void vselvs(DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
|
|
void vshl(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vshl(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
|
|
vshl(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vshl(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vshl(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
|
|
vshl(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vshll(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vshll(DataType dt, QRegister rd, DRegister rm, const DOperand& operand) {
|
|
vshll(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vshr(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vshr(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
|
|
vshr(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vshr(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vshr(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
|
|
vshr(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vshrn(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vshrn(DataType dt, DRegister rd, QRegister rm, const QOperand& operand) {
|
|
vshrn(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vsli(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vsli(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
|
|
vsli(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vsli(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vsli(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
|
|
vsli(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vsqrt(Condition cond, DataType dt, SRegister rd, SRegister rm);
|
|
void vsqrt(DataType dt, SRegister rd, SRegister rm) { vsqrt(al, dt, rd, rm); }
|
|
|
|
void vsqrt(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vsqrt(DataType dt, DRegister rd, DRegister rm) { vsqrt(al, dt, rd, rm); }
|
|
|
|
void vsra(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vsra(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
|
|
vsra(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vsra(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vsra(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
|
|
vsra(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vsri(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
DRegister rm,
|
|
const DOperand& operand);
|
|
void vsri(DataType dt, DRegister rd, DRegister rm, const DOperand& operand) {
|
|
vsri(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vsri(Condition cond,
|
|
DataType dt,
|
|
QRegister rd,
|
|
QRegister rm,
|
|
const QOperand& operand);
|
|
void vsri(DataType dt, QRegister rd, QRegister rm, const QOperand& operand) {
|
|
vsri(al, dt, rd, rm, operand);
|
|
}
|
|
|
|
void vst1(Condition cond,
|
|
DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand);
|
|
void vst1(DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand) {
|
|
vst1(al, dt, nreglist, operand);
|
|
}
|
|
|
|
void vst2(Condition cond,
|
|
DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand);
|
|
void vst2(DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand) {
|
|
vst2(al, dt, nreglist, operand);
|
|
}
|
|
|
|
void vst3(Condition cond,
|
|
DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand);
|
|
void vst3(DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand) {
|
|
vst3(al, dt, nreglist, operand);
|
|
}
|
|
|
|
void vst3(Condition cond,
|
|
DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const MemOperand& operand);
|
|
void vst3(DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const MemOperand& operand) {
|
|
vst3(al, dt, nreglist, operand);
|
|
}
|
|
|
|
void vst4(Condition cond,
|
|
DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand);
|
|
void vst4(DataType dt,
|
|
const NeonRegisterList& nreglist,
|
|
const AlignedMemOperand& operand) {
|
|
vst4(al, dt, nreglist, operand);
|
|
}
|
|
|
|
void vstm(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist);
|
|
void vstm(DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist) {
|
|
vstm(al, dt, rn, write_back, dreglist);
|
|
}
|
|
void vstm(Register rn, WriteBack write_back, DRegisterList dreglist) {
|
|
vstm(al, kDataTypeValueNone, rn, write_back, dreglist);
|
|
}
|
|
void vstm(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist) {
|
|
vstm(cond, kDataTypeValueNone, rn, write_back, dreglist);
|
|
}
|
|
|
|
void vstm(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist);
|
|
void vstm(DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist) {
|
|
vstm(al, dt, rn, write_back, sreglist);
|
|
}
|
|
void vstm(Register rn, WriteBack write_back, SRegisterList sreglist) {
|
|
vstm(al, kDataTypeValueNone, rn, write_back, sreglist);
|
|
}
|
|
void vstm(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist) {
|
|
vstm(cond, kDataTypeValueNone, rn, write_back, sreglist);
|
|
}
|
|
|
|
void vstmdb(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist);
|
|
void vstmdb(DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist) {
|
|
vstmdb(al, dt, rn, write_back, dreglist);
|
|
}
|
|
void vstmdb(Register rn, WriteBack write_back, DRegisterList dreglist) {
|
|
vstmdb(al, kDataTypeValueNone, rn, write_back, dreglist);
|
|
}
|
|
void vstmdb(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist) {
|
|
vstmdb(cond, kDataTypeValueNone, rn, write_back, dreglist);
|
|
}
|
|
|
|
void vstmdb(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist);
|
|
void vstmdb(DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist) {
|
|
vstmdb(al, dt, rn, write_back, sreglist);
|
|
}
|
|
void vstmdb(Register rn, WriteBack write_back, SRegisterList sreglist) {
|
|
vstmdb(al, kDataTypeValueNone, rn, write_back, sreglist);
|
|
}
|
|
void vstmdb(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist) {
|
|
vstmdb(cond, kDataTypeValueNone, rn, write_back, sreglist);
|
|
}
|
|
|
|
void vstmia(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist);
|
|
void vstmia(DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist) {
|
|
vstmia(al, dt, rn, write_back, dreglist);
|
|
}
|
|
void vstmia(Register rn, WriteBack write_back, DRegisterList dreglist) {
|
|
vstmia(al, kDataTypeValueNone, rn, write_back, dreglist);
|
|
}
|
|
void vstmia(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
DRegisterList dreglist) {
|
|
vstmia(cond, kDataTypeValueNone, rn, write_back, dreglist);
|
|
}
|
|
|
|
void vstmia(Condition cond,
|
|
DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist);
|
|
void vstmia(DataType dt,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist) {
|
|
vstmia(al, dt, rn, write_back, sreglist);
|
|
}
|
|
void vstmia(Register rn, WriteBack write_back, SRegisterList sreglist) {
|
|
vstmia(al, kDataTypeValueNone, rn, write_back, sreglist);
|
|
}
|
|
void vstmia(Condition cond,
|
|
Register rn,
|
|
WriteBack write_back,
|
|
SRegisterList sreglist) {
|
|
vstmia(cond, kDataTypeValueNone, rn, write_back, sreglist);
|
|
}
|
|
|
|
void vstr(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
const MemOperand& operand);
|
|
void vstr(DataType dt, DRegister rd, const MemOperand& operand) {
|
|
vstr(al, dt, rd, operand);
|
|
}
|
|
void vstr(DRegister rd, const MemOperand& operand) {
|
|
vstr(al, Untyped64, rd, operand);
|
|
}
|
|
void vstr(Condition cond, DRegister rd, const MemOperand& operand) {
|
|
vstr(cond, Untyped64, rd, operand);
|
|
}
|
|
|
|
void vstr(Condition cond,
|
|
DataType dt,
|
|
SRegister rd,
|
|
const MemOperand& operand);
|
|
void vstr(DataType dt, SRegister rd, const MemOperand& operand) {
|
|
vstr(al, dt, rd, operand);
|
|
}
|
|
void vstr(SRegister rd, const MemOperand& operand) {
|
|
vstr(al, Untyped32, rd, operand);
|
|
}
|
|
void vstr(Condition cond, SRegister rd, const MemOperand& operand) {
|
|
vstr(cond, Untyped32, rd, operand);
|
|
}
|
|
|
|
void vsub(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vsub(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vsub(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vsub(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vsub(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vsub(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vsub(
|
|
Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm);
|
|
void vsub(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
|
|
vsub(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vsubhn(
|
|
Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm);
|
|
void vsubhn(DataType dt, DRegister rd, QRegister rn, QRegister rm) {
|
|
vsubhn(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vsubl(
|
|
Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm);
|
|
void vsubl(DataType dt, QRegister rd, DRegister rn, DRegister rm) {
|
|
vsubl(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vsubw(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, DRegister rm);
|
|
void vsubw(DataType dt, QRegister rd, QRegister rn, DRegister rm) {
|
|
vsubw(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vswp(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vswp(DataType dt, DRegister rd, DRegister rm) { vswp(al, dt, rd, rm); }
|
|
void vswp(DRegister rd, DRegister rm) {
|
|
vswp(al, kDataTypeValueNone, rd, rm);
|
|
}
|
|
void vswp(Condition cond, DRegister rd, DRegister rm) {
|
|
vswp(cond, kDataTypeValueNone, rd, rm);
|
|
}
|
|
|
|
void vswp(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vswp(DataType dt, QRegister rd, QRegister rm) { vswp(al, dt, rd, rm); }
|
|
void vswp(QRegister rd, QRegister rm) {
|
|
vswp(al, kDataTypeValueNone, rd, rm);
|
|
}
|
|
void vswp(Condition cond, QRegister rd, QRegister rm) {
|
|
vswp(cond, kDataTypeValueNone, rd, rm);
|
|
}
|
|
|
|
void vtbl(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
const NeonRegisterList& nreglist,
|
|
DRegister rm);
|
|
void vtbl(DataType dt,
|
|
DRegister rd,
|
|
const NeonRegisterList& nreglist,
|
|
DRegister rm) {
|
|
vtbl(al, dt, rd, nreglist, rm);
|
|
}
|
|
|
|
void vtbx(Condition cond,
|
|
DataType dt,
|
|
DRegister rd,
|
|
const NeonRegisterList& nreglist,
|
|
DRegister rm);
|
|
void vtbx(DataType dt,
|
|
DRegister rd,
|
|
const NeonRegisterList& nreglist,
|
|
DRegister rm) {
|
|
vtbx(al, dt, rd, nreglist, rm);
|
|
}
|
|
|
|
void vtrn(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vtrn(DataType dt, DRegister rd, DRegister rm) { vtrn(al, dt, rd, rm); }
|
|
|
|
void vtrn(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vtrn(DataType dt, QRegister rd, QRegister rm) { vtrn(al, dt, rd, rm); }
|
|
|
|
void vtst(
|
|
Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm);
|
|
void vtst(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
|
|
vtst(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vtst(
|
|
Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm);
|
|
void vtst(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
|
|
vtst(al, dt, rd, rn, rm);
|
|
}
|
|
|
|
void vuzp(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vuzp(DataType dt, DRegister rd, DRegister rm) { vuzp(al, dt, rd, rm); }
|
|
|
|
void vuzp(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vuzp(DataType dt, QRegister rd, QRegister rm) { vuzp(al, dt, rd, rm); }
|
|
|
|
void vzip(Condition cond, DataType dt, DRegister rd, DRegister rm);
|
|
void vzip(DataType dt, DRegister rd, DRegister rm) { vzip(al, dt, rd, rm); }
|
|
|
|
void vzip(Condition cond, DataType dt, QRegister rd, QRegister rm);
|
|
void vzip(DataType dt, QRegister rd, QRegister rm) { vzip(al, dt, rd, rm); }
|
|
|
|
void yield(Condition cond, EncodingSize size);
|
|
void yield() { yield(al, Best); }
|
|
void yield(Condition cond) { yield(cond, Best); }
|
|
void yield(EncodingSize size) { yield(al, size); }
|
|
// End of generated code.
|
|
virtual void UnimplementedDelegate(InstructionType type) {
|
|
std::string error_message(std::string("Ill-formed '") +
|
|
std::string(ToCString(type)) +
|
|
std::string("' instruction.\n"));
|
|
VIXL_ABORT_WITH_MSG(error_message.c_str());
|
|
}
|
|
virtual bool AllowUnpredictable() { return allow_unpredictable_; }
|
|
virtual bool AllowStronglyDiscouraged() {
|
|
return allow_strongly_discouraged_;
|
|
}
|
|
};
|
|
|
|
} // namespace aarch32
|
|
} // namespace vixl
|
|
|
|
#endif // VIXL_AARCH32_ASSEMBLER_AARCH32_H_
|