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