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