1// Copyright 2016, 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 28// ----------------------------------------------------------------------------- 29// This file is auto generated from the 30// test/aarch32/config/template-assembler-aarch32.cc.in template file using 31// tools/generate_tests.py. 32// 33// PLEASE DO NOT EDIT. 34// ----------------------------------------------------------------------------- 35 36 37#include "test-runner.h" 38 39#include "test-utils.h" 40#include "test-utils-aarch32.h" 41 42#include "aarch32/assembler-aarch32.h" 43#include "aarch32/macro-assembler-aarch32.h" 44 45#define BUF_SIZE (4096) 46 47namespace vixl { 48namespace aarch32 { 49 50// List of instruction mnemonics. 51#define FOREACH_INSTRUCTION(M) \ 52 M(adc) \ 53 M(adcs) \ 54 M(add) \ 55 M(adds) \ 56 M(and_) \ 57 M(ands) \ 58 M(bic) \ 59 M(bics) \ 60 M(eor) \ 61 M(eors) \ 62 M(orn) \ 63 M(orns) \ 64 M(orr) \ 65 M(orrs) \ 66 M(rsb) \ 67 M(rsbs) \ 68 M(sbc) \ 69 M(sbcs) \ 70 M(sub) \ 71 M(subs) 72 73 74// The following definitions are defined again in each generated test, therefore 75// we need to place them in an anomymous namespace. It expresses that they are 76// local to this file only, and the compiler is not allowed to share these types 77// across test files during template instantiation. Specifically, `Operands` has 78// various layouts across generated tests so it absolutely cannot be shared. 79 80#ifdef VIXL_INCLUDE_TARGET_T32 81namespace { 82 83// Values to be passed to the assembler to produce the instruction under test. 84struct Operands { 85 Condition cond; 86 Register rd; 87 Register rn; 88 uint32_t immediate; 89}; 90 91// This structure contains all data needed to test one specific 92// instruction. 93struct TestData { 94 // The `operands` field represents what to pass to the assembler to 95 // produce the instruction. 96 Operands operands; 97 // True if we need to generate an IT instruction for this test to be valid. 98 bool in_it_block; 99 // The condition to give the IT instruction, this will be set to "al" by 100 // default. 101 Condition it_condition; 102 // Description of the operands, used for error reporting. 103 const char* operands_description; 104 // Unique identifier, used for generating traces. 105 const char* identifier; 106}; 107 108struct TestResult { 109 size_t size; 110 const byte* encoding; 111}; 112 113// Each element of this array produce one instruction encoding. 114const TestData kTests[] = {{{al, r13, r14, 0x02ac0000}, 115 false, 116 al, 117 "al r13 r14 0x02ac0000", 118 "al_r13_r14_0x02ac0000"}, 119 {{al, r10, r1, 0x00156000}, 120 false, 121 al, 122 "al r10 r1 0x00156000", 123 "al_r10_r1_0x00156000"}, 124 {{al, r10, r0, 0x000003fc}, 125 false, 126 al, 127 "al r10 r0 0x000003fc", 128 "al_r10_r0_0x000003fc"}, 129 {{al, r1, r11, 0x2ac00000}, 130 false, 131 al, 132 "al r1 r11 0x2ac00000", 133 "al_r1_r11_0x2ac00000"}, 134 {{al, r8, r6, 0x00156000}, 135 false, 136 al, 137 "al r8 r6 0x00156000", 138 "al_r8_r6_0x00156000"}, 139 {{al, r7, r12, 0x00ff0000}, 140 false, 141 al, 142 "al r7 r12 0x00ff0000", 143 "al_r7_r12_0x00ff0000"}, 144 {{al, r12, r3, 0x00ff0000}, 145 false, 146 al, 147 "al r12 r3 0x00ff0000", 148 "al_r12_r3_0x00ff0000"}, 149 {{al, r4, r7, 0x0000ff00}, 150 false, 151 al, 152 "al r4 r7 0x0000ff00", 153 "al_r4_r7_0x0000ff00"}, 154 {{al, r11, r13, 0x0ab00000}, 155 false, 156 al, 157 "al r11 r13 0x0ab00000", 158 "al_r11_r13_0x0ab00000"}, 159 {{al, r6, r12, 0xff00ff00}, 160 false, 161 al, 162 "al r6 r12 0xff00ff00", 163 "al_r6_r12_0xff00ff00"}, 164 {{al, r12, r8, 0x003fc000}, 165 false, 166 al, 167 "al r12 r8 0x003fc000", 168 "al_r12_r8_0x003fc000"}, 169 {{al, r5, r12, 0x00ab00ab}, 170 false, 171 al, 172 "al r5 r12 0x00ab00ab", 173 "al_r5_r12_0x00ab00ab"}, 174 {{al, r7, r6, 0x00ab00ab}, 175 false, 176 al, 177 "al r7 r6 0x00ab00ab", 178 "al_r7_r6_0x00ab00ab"}, 179 {{al, r0, r1, 0x00ab00ab}, 180 false, 181 al, 182 "al r0 r1 0x00ab00ab", 183 "al_r0_r1_0x00ab00ab"}, 184 {{al, r9, r9, 0x000001fe}, 185 false, 186 al, 187 "al r9 r9 0x000001fe", 188 "al_r9_r9_0x000001fe"}, 189 {{al, r2, r8, 0xab00ab00}, 190 false, 191 al, 192 "al r2 r8 0xab00ab00", 193 "al_r2_r8_0xab00ab00"}, 194 {{al, r9, r10, 0x00ff0000}, 195 false, 196 al, 197 "al r9 r10 0x00ff0000", 198 "al_r9_r10_0x00ff0000"}, 199 {{al, r8, r8, 0x55800000}, 200 false, 201 al, 202 "al r8 r8 0x55800000", 203 "al_r8_r8_0x55800000"}, 204 {{al, r6, r7, 0x00ab00ab}, 205 false, 206 al, 207 "al r6 r7 0x00ab00ab", 208 "al_r6_r7_0x00ab00ab"}, 209 {{al, r5, r9, 0xff000000}, 210 false, 211 al, 212 "al r5 r9 0xff000000", 213 "al_r5_r9_0xff000000"}, 214 {{al, r8, r8, 0x00ab0000}, 215 false, 216 al, 217 "al r8 r8 0x00ab0000", 218 "al_r8_r8_0x00ab0000"}, 219 {{al, r5, r8, 0xab00ab00}, 220 false, 221 al, 222 "al r5 r8 0xab00ab00", 223 "al_r5_r8_0xab00ab00"}, 224 {{al, r0, r12, 0xab000000}, 225 false, 226 al, 227 "al r0 r12 0xab000000", 228 "al_r0_r12_0xab000000"}, 229 {{al, r13, r11, 0xab000000}, 230 false, 231 al, 232 "al r13 r11 0xab000000", 233 "al_r13_r11_0xab000000"}, 234 {{al, r14, r3, 0xab00ab00}, 235 false, 236 al, 237 "al r14 r3 0xab00ab00", 238 "al_r14_r3_0xab00ab00"}, 239 {{al, r0, r1, 0x0003fc00}, 240 false, 241 al, 242 "al r0 r1 0x0003fc00", 243 "al_r0_r1_0x0003fc00"}, 244 {{al, r14, r13, 0x0ab00000}, 245 false, 246 al, 247 "al r14 r13 0x0ab00000", 248 "al_r14_r13_0x0ab00000"}, 249 {{al, r6, r0, 0x0002ac00}, 250 false, 251 al, 252 "al r6 r0 0x0002ac00", 253 "al_r6_r0_0x0002ac00"}, 254 {{al, r6, r8, 0x55800000}, 255 false, 256 al, 257 "al r6 r8 0x55800000", 258 "al_r6_r8_0x55800000"}, 259 {{al, r2, r14, 0x01560000}, 260 false, 261 al, 262 "al r2 r14 0x01560000", 263 "al_r2_r14_0x01560000"}, 264 {{al, r5, r13, 0x03fc0000}, 265 false, 266 al, 267 "al r5 r13 0x03fc0000", 268 "al_r5_r13_0x03fc0000"}, 269 {{al, r7, r6, 0x00000ab0}, 270 false, 271 al, 272 "al r7 r6 0x00000ab0", 273 "al_r7_r6_0x00000ab0"}, 274 {{al, r3, r14, 0x007f8000}, 275 false, 276 al, 277 "al r3 r14 0x007f8000", 278 "al_r3_r14_0x007f8000"}, 279 {{al, r9, r4, 0x00558000}, 280 false, 281 al, 282 "al r9 r4 0x00558000", 283 "al_r9_r4_0x00558000"}, 284 {{al, r10, r11, 0x00002ac0}, 285 false, 286 al, 287 "al r10 r11 0x00002ac0", 288 "al_r10_r11_0x00002ac0"}, 289 {{al, r1, r5, 0x003fc000}, 290 false, 291 al, 292 "al r1 r5 0x003fc000", 293 "al_r1_r5_0x003fc000"}, 294 {{al, r7, r7, 0x00003fc0}, 295 false, 296 al, 297 "al r7 r7 0x00003fc0", 298 "al_r7_r7_0x00003fc0"}, 299 {{al, r5, r3, 0x000007f8}, 300 false, 301 al, 302 "al r5 r3 0x000007f8", 303 "al_r5_r3_0x000007f8"}, 304 {{al, r4, r3, 0x00001560}, 305 false, 306 al, 307 "al r4 r3 0x00001560", 308 "al_r4_r3_0x00001560"}, 309 {{al, r5, r3, 0x03fc0000}, 310 false, 311 al, 312 "al r5 r3 0x03fc0000", 313 "al_r5_r3_0x03fc0000"}, 314 {{al, r2, r6, 0x55800000}, 315 false, 316 al, 317 "al r2 r6 0x55800000", 318 "al_r2_r6_0x55800000"}, 319 {{al, r13, r5, 0x0000ab00}, 320 false, 321 al, 322 "al r13 r5 0x0000ab00", 323 "al_r13_r5_0x0000ab00"}, 324 {{al, r0, r11, 0xab00ab00}, 325 false, 326 al, 327 "al r0 r11 0xab00ab00", 328 "al_r0_r11_0xab00ab00"}, 329 {{al, r14, r12, 0x00ff00ff}, 330 false, 331 al, 332 "al r14 r12 0x00ff00ff", 333 "al_r14_r12_0x00ff00ff"}, 334 {{al, r13, r8, 0x7f800000}, 335 false, 336 al, 337 "al r13 r8 0x7f800000", 338 "al_r13_r8_0x7f800000"}, 339 {{al, r1, r2, 0x15600000}, 340 false, 341 al, 342 "al r1 r2 0x15600000", 343 "al_r1_r2_0x15600000"}, 344 {{al, r7, r6, 0xab000000}, 345 false, 346 al, 347 "al r7 r6 0xab000000", 348 "al_r7_r6_0xab000000"}, 349 {{al, r1, r9, 0x00000ff0}, 350 false, 351 al, 352 "al r1 r9 0x00000ff0", 353 "al_r1_r9_0x00000ff0"}, 354 {{al, r12, r8, 0x0007f800}, 355 false, 356 al, 357 "al r12 r8 0x0007f800", 358 "al_r12_r8_0x0007f800"}, 359 {{al, r0, r8, 0x00ab0000}, 360 false, 361 al, 362 "al r0 r8 0x00ab0000", 363 "al_r0_r8_0x00ab0000"}, 364 {{al, r11, r11, 0x000000ff}, 365 false, 366 al, 367 "al r11 r11 0x000000ff", 368 "al_r11_r11_0x000000ff"}, 369 {{al, r12, r13, 0xff000000}, 370 false, 371 al, 372 "al r12 r13 0xff000000", 373 "al_r12_r13_0xff000000"}, 374 {{al, r1, r3, 0x0ab00000}, 375 false, 376 al, 377 "al r1 r3 0x0ab00000", 378 "al_r1_r3_0x0ab00000"}, 379 {{al, r2, r10, 0x0001fe00}, 380 false, 381 al, 382 "al r2 r10 0x0001fe00", 383 "al_r2_r10_0x0001fe00"}, 384 {{al, r14, r2, 0x01fe0000}, 385 false, 386 al, 387 "al r14 r2 0x01fe0000", 388 "al_r14_r2_0x01fe0000"}, 389 {{al, r3, r4, 0x000000ff}, 390 false, 391 al, 392 "al r3 r4 0x000000ff", 393 "al_r3_r4_0x000000ff"}, 394 {{al, r3, r13, 0x00000558}, 395 false, 396 al, 397 "al r3 r13 0x00000558", 398 "al_r3_r13_0x00000558"}, 399 {{al, r13, r10, 0x00055800}, 400 false, 401 al, 402 "al r13 r10 0x00055800", 403 "al_r13_r10_0x00055800"}, 404 {{al, r1, r10, 0xff000000}, 405 false, 406 al, 407 "al r1 r10 0xff000000", 408 "al_r1_r10_0xff000000"}, 409 {{al, r0, r7, 0x2ac00000}, 410 false, 411 al, 412 "al r0 r7 0x2ac00000", 413 "al_r0_r7_0x2ac00000"}, 414 {{al, r12, r1, 0xab000000}, 415 false, 416 al, 417 "al r12 r1 0xab000000", 418 "al_r12_r1_0xab000000"}, 419 {{al, r9, r14, 0x00003fc0}, 420 false, 421 al, 422 "al r9 r14 0x00003fc0", 423 "al_r9_r14_0x00003fc0"}, 424 {{al, r7, r2, 0x2ac00000}, 425 false, 426 al, 427 "al r7 r2 0x2ac00000", 428 "al_r7_r2_0x2ac00000"}, 429 {{al, r14, r4, 0x00001fe0}, 430 false, 431 al, 432 "al r14 r4 0x00001fe0", 433 "al_r14_r4_0x00001fe0"}, 434 {{al, r12, r8, 0x00007f80}, 435 false, 436 al, 437 "al r12 r8 0x00007f80", 438 "al_r12_r8_0x00007f80"}, 439 {{al, r7, r10, 0x00000ab0}, 440 false, 441 al, 442 "al r7 r10 0x00000ab0", 443 "al_r7_r10_0x00000ab0"}, 444 {{al, r13, r6, 0x00ab0000}, 445 false, 446 al, 447 "al r13 r6 0x00ab0000", 448 "al_r13_r6_0x00ab0000"}, 449 {{al, r7, r9, 0x0000ff00}, 450 false, 451 al, 452 "al r7 r9 0x0000ff00", 453 "al_r7_r9_0x0000ff00"}, 454 {{al, r2, r12, 0xff00ff00}, 455 false, 456 al, 457 "al r2 r12 0xff00ff00", 458 "al_r2_r12_0xff00ff00"}, 459 {{al, r1, r6, 0x00000156}, 460 false, 461 al, 462 "al r1 r6 0x00000156", 463 "al_r1_r6_0x00000156"}, 464 {{al, r7, r5, 0x03fc0000}, 465 false, 466 al, 467 "al r7 r5 0x03fc0000", 468 "al_r7_r5_0x03fc0000"}, 469 {{al, r2, r9, 0x01fe0000}, 470 false, 471 al, 472 "al r2 r9 0x01fe0000", 473 "al_r2_r9_0x01fe0000"}, 474 {{al, r10, r12, 0x00002ac0}, 475 false, 476 al, 477 "al r10 r12 0x00002ac0", 478 "al_r10_r12_0x00002ac0"}, 479 {{al, r14, r10, 0x7f800000}, 480 false, 481 al, 482 "al r14 r10 0x7f800000", 483 "al_r14_r10_0x7f800000"}, 484 {{al, r2, r8, 0x02ac0000}, 485 false, 486 al, 487 "al r2 r8 0x02ac0000", 488 "al_r2_r8_0x02ac0000"}, 489 {{al, r4, r9, 0x000001fe}, 490 false, 491 al, 492 "al r4 r9 0x000001fe", 493 "al_r4_r9_0x000001fe"}, 494 {{al, r10, r10, 0x000001fe}, 495 false, 496 al, 497 "al r10 r10 0x000001fe", 498 "al_r10_r10_0x000001fe"}, 499 {{al, r6, r6, 0x3fc00000}, 500 false, 501 al, 502 "al r6 r6 0x3fc00000", 503 "al_r6_r6_0x3fc00000"}, 504 {{al, r4, r12, 0x000003fc}, 505 false, 506 al, 507 "al r4 r12 0x000003fc", 508 "al_r4_r12_0x000003fc"}, 509 {{al, r0, r2, 0x0000ff00}, 510 false, 511 al, 512 "al r0 r2 0x0000ff00", 513 "al_r0_r2_0x0000ff00"}, 514 {{al, r9, r0, 0x003fc000}, 515 false, 516 al, 517 "al r9 r0 0x003fc000", 518 "al_r9_r0_0x003fc000"}, 519 {{al, r7, r4, 0x000002ac}, 520 false, 521 al, 522 "al r7 r4 0x000002ac", 523 "al_r7_r4_0x000002ac"}, 524 {{al, r6, r6, 0x7f800000}, 525 false, 526 al, 527 "al r6 r6 0x7f800000", 528 "al_r6_r6_0x7f800000"}, 529 {{al, r6, r8, 0x00015600}, 530 false, 531 al, 532 "al r6 r8 0x00015600", 533 "al_r6_r8_0x00015600"}, 534 {{al, r10, r0, 0x00000ff0}, 535 false, 536 al, 537 "al r10 r0 0x00000ff0", 538 "al_r10_r0_0x00000ff0"}, 539 {{al, r8, r1, 0xffffffff}, 540 false, 541 al, 542 "al r8 r1 0xffffffff", 543 "al_r8_r1_0xffffffff"}, 544 {{al, r3, r7, 0x00ab00ab}, 545 false, 546 al, 547 "al r3 r7 0x00ab00ab", 548 "al_r3_r7_0x00ab00ab"}, 549 {{al, r8, r11, 0x01fe0000}, 550 false, 551 al, 552 "al r8 r11 0x01fe0000", 553 "al_r8_r11_0x01fe0000"}, 554 {{al, r3, r1, 0x00ff0000}, 555 false, 556 al, 557 "al r3 r1 0x00ff0000", 558 "al_r3_r1_0x00ff0000"}, 559 {{al, r5, r4, 0x000001fe}, 560 false, 561 al, 562 "al r5 r4 0x000001fe", 563 "al_r5_r4_0x000001fe"}, 564 {{al, r7, r10, 0x00000558}, 565 false, 566 al, 567 "al r7 r10 0x00000558", 568 "al_r7_r10_0x00000558"}, 569 {{al, r8, r13, 0x00001560}, 570 false, 571 al, 572 "al r8 r13 0x00001560", 573 "al_r8_r13_0x00001560"}, 574 {{al, r9, r4, 0x00002ac0}, 575 false, 576 al, 577 "al r9 r4 0x00002ac0", 578 "al_r9_r4_0x00002ac0"}, 579 {{al, r9, r7, 0x03fc0000}, 580 false, 581 al, 582 "al r9 r7 0x03fc0000", 583 "al_r9_r7_0x03fc0000"}, 584 {{al, r11, r12, 0x2ac00000}, 585 false, 586 al, 587 "al r11 r12 0x2ac00000", 588 "al_r11_r12_0x2ac00000"}, 589 {{al, r13, r10, 0x00001fe0}, 590 false, 591 al, 592 "al r13 r10 0x00001fe0", 593 "al_r13_r10_0x00001fe0"}, 594 {{al, r11, r10, 0x00558000}, 595 false, 596 al, 597 "al r11 r10 0x00558000", 598 "al_r11_r10_0x00558000"}, 599 {{al, r3, r2, 0x000000ab}, 600 false, 601 al, 602 "al r3 r2 0x000000ab", 603 "al_r3_r2_0x000000ab"}, 604 {{al, r0, r8, 0x00000ab0}, 605 false, 606 al, 607 "al r0 r8 0x00000ab0", 608 "al_r0_r8_0x00000ab0"}, 609 {{al, r9, r7, 0xab000000}, 610 false, 611 al, 612 "al r9 r7 0xab000000", 613 "al_r9_r7_0xab000000"}, 614 {{al, r11, r7, 0x0ff00000}, 615 false, 616 al, 617 "al r11 r7 0x0ff00000", 618 "al_r11_r7_0x0ff00000"}, 619 {{al, r10, r2, 0x7f800000}, 620 false, 621 al, 622 "al r10 r2 0x7f800000", 623 "al_r10_r2_0x7f800000"}, 624 {{al, r3, r1, 0x05580000}, 625 false, 626 al, 627 "al r3 r1 0x05580000", 628 "al_r3_r1_0x05580000"}, 629 {{al, r1, r4, 0x0ab00000}, 630 false, 631 al, 632 "al r1 r4 0x0ab00000", 633 "al_r1_r4_0x0ab00000"}, 634 {{al, r4, r9, 0x00005580}, 635 false, 636 al, 637 "al r4 r9 0x00005580", 638 "al_r4_r9_0x00005580"}, 639 {{al, r3, r2, 0x001fe000}, 640 false, 641 al, 642 "al r3 r2 0x001fe000", 643 "al_r3_r2_0x001fe000"}, 644 {{al, r14, r6, 0x00000156}, 645 false, 646 al, 647 "al r14 r6 0x00000156", 648 "al_r14_r6_0x00000156"}, 649 {{al, r14, r3, 0x00000ab0}, 650 false, 651 al, 652 "al r14 r3 0x00000ab0", 653 "al_r14_r3_0x00000ab0"}, 654 {{al, r12, r13, 0x000001fe}, 655 false, 656 al, 657 "al r12 r13 0x000001fe", 658 "al_r12_r13_0x000001fe"}, 659 {{al, r12, r10, 0x1fe00000}, 660 false, 661 al, 662 "al r12 r10 0x1fe00000", 663 "al_r12_r10_0x1fe00000"}, 664 {{al, r0, r9, 0x2ac00000}, 665 false, 666 al, 667 "al r0 r9 0x2ac00000", 668 "al_r0_r9_0x2ac00000"}, 669 {{al, r11, r6, 0x00000156}, 670 false, 671 al, 672 "al r11 r6 0x00000156", 673 "al_r11_r6_0x00000156"}, 674 {{al, r2, r4, 0x3fc00000}, 675 false, 676 al, 677 "al r2 r4 0x3fc00000", 678 "al_r2_r4_0x3fc00000"}, 679 {{al, r8, r13, 0x00002ac0}, 680 false, 681 al, 682 "al r8 r13 0x00002ac0", 683 "al_r8_r13_0x00002ac0"}, 684 {{al, r1, r5, 0x00ff00ff}, 685 false, 686 al, 687 "al r1 r5 0x00ff00ff", 688 "al_r1_r5_0x00ff00ff"}, 689 {{al, r6, r1, 0x0007f800}, 690 false, 691 al, 692 "al r6 r1 0x0007f800", 693 "al_r6_r1_0x0007f800"}, 694 {{al, r5, r1, 0x00001fe0}, 695 false, 696 al, 697 "al r5 r1 0x00001fe0", 698 "al_r5_r1_0x00001fe0"}, 699 {{al, r8, r11, 0xab00ab00}, 700 false, 701 al, 702 "al r8 r11 0xab00ab00", 703 "al_r8_r11_0xab00ab00"}, 704 {{al, r5, r0, 0xff00ff00}, 705 false, 706 al, 707 "al r5 r0 0xff00ff00", 708 "al_r5_r0_0xff00ff00"}, 709 {{al, r14, r13, 0x000000ab}, 710 false, 711 al, 712 "al r14 r13 0x000000ab", 713 "al_r14_r13_0x000000ab"}, 714 {{al, r2, r4, 0x05580000}, 715 false, 716 al, 717 "al r2 r4 0x05580000", 718 "al_r2_r4_0x05580000"}, 719 {{al, r14, r10, 0x07f80000}, 720 false, 721 al, 722 "al r14 r10 0x07f80000", 723 "al_r14_r10_0x07f80000"}, 724 {{al, r10, r3, 0x55800000}, 725 false, 726 al, 727 "al r10 r3 0x55800000", 728 "al_r10_r3_0x55800000"}, 729 {{al, r0, r11, 0x7f800000}, 730 false, 731 al, 732 "al r0 r11 0x7f800000", 733 "al_r0_r11_0x7f800000"}, 734 {{al, r3, r12, 0xffffffff}, 735 false, 736 al, 737 "al r3 r12 0xffffffff", 738 "al_r3_r12_0xffffffff"}, 739 {{al, r2, r3, 0x00000558}, 740 false, 741 al, 742 "al r2 r3 0x00000558", 743 "al_r2_r3_0x00000558"}, 744 {{al, r2, r2, 0x0003fc00}, 745 false, 746 al, 747 "al r2 r2 0x0003fc00", 748 "al_r2_r2_0x0003fc00"}, 749 {{al, r14, r10, 0x15600000}, 750 false, 751 al, 752 "al r14 r10 0x15600000", 753 "al_r14_r10_0x15600000"}, 754 {{al, r3, r13, 0x00000156}, 755 false, 756 al, 757 "al r3 r13 0x00000156", 758 "al_r3_r13_0x00000156"}, 759 {{al, r10, r5, 0x1fe00000}, 760 false, 761 al, 762 "al r10 r5 0x1fe00000", 763 "al_r10_r5_0x1fe00000"}, 764 {{al, r1, r5, 0x00055800}, 765 false, 766 al, 767 "al r1 r5 0x00055800", 768 "al_r1_r5_0x00055800"}, 769 {{al, r8, r6, 0xff000000}, 770 false, 771 al, 772 "al r8 r6 0xff000000", 773 "al_r8_r6_0xff000000"}, 774 {{al, r3, r7, 0x002ac000}, 775 false, 776 al, 777 "al r3 r7 0x002ac000", 778 "al_r3_r7_0x002ac000"}, 779 {{al, r6, r4, 0x00ff00ff}, 780 false, 781 al, 782 "al r6 r4 0x00ff00ff", 783 "al_r6_r4_0x00ff00ff"}, 784 {{al, r0, r8, 0x0007f800}, 785 false, 786 al, 787 "al r0 r8 0x0007f800", 788 "al_r0_r8_0x0007f800"}, 789 {{al, r0, r3, 0xff000000}, 790 false, 791 al, 792 "al r0 r3 0xff000000", 793 "al_r0_r3_0xff000000"}, 794 {{al, r11, r1, 0xabababab}, 795 false, 796 al, 797 "al r11 r1 0xabababab", 798 "al_r11_r1_0xabababab"}, 799 {{al, r14, r10, 0x000001fe}, 800 false, 801 al, 802 "al r14 r10 0x000001fe", 803 "al_r14_r10_0x000001fe"}, 804 {{al, r4, r11, 0x002ac000}, 805 false, 806 al, 807 "al r4 r11 0x002ac000", 808 "al_r4_r11_0x002ac000"}, 809 {{al, r11, r12, 0x000000ab}, 810 false, 811 al, 812 "al r11 r12 0x000000ab", 813 "al_r11_r12_0x000000ab"}, 814 {{al, r3, r4, 0x003fc000}, 815 false, 816 al, 817 "al r3 r4 0x003fc000", 818 "al_r3_r4_0x003fc000"}, 819 {{al, r3, r13, 0x0ff00000}, 820 false, 821 al, 822 "al r3 r13 0x0ff00000", 823 "al_r3_r13_0x0ff00000"}, 824 {{al, r5, r4, 0x00001fe0}, 825 false, 826 al, 827 "al r5 r4 0x00001fe0", 828 "al_r5_r4_0x00001fe0"}, 829 {{al, r6, r12, 0x002ac000}, 830 false, 831 al, 832 "al r6 r12 0x002ac000", 833 "al_r6_r12_0x002ac000"}, 834 {{al, r13, r13, 0x1fe00000}, 835 false, 836 al, 837 "al r13 r13 0x1fe00000", 838 "al_r13_r13_0x1fe00000"}, 839 {{al, r0, r8, 0x01560000}, 840 false, 841 al, 842 "al r0 r8 0x01560000", 843 "al_r0_r8_0x01560000"}, 844 {{al, r9, r7, 0x00055800}, 845 false, 846 al, 847 "al r9 r7 0x00055800", 848 "al_r9_r7_0x00055800"}, 849 {{al, r6, r0, 0x00000156}, 850 false, 851 al, 852 "al r6 r0 0x00000156", 853 "al_r6_r0_0x00000156"}, 854 {{al, r14, r12, 0x00055800}, 855 false, 856 al, 857 "al r14 r12 0x00055800", 858 "al_r14_r12_0x00055800"}, 859 {{al, r14, r0, 0xab00ab00}, 860 false, 861 al, 862 "al r14 r0 0xab00ab00", 863 "al_r14_r0_0xab00ab00"}, 864 {{al, r14, r2, 0x00ab0000}, 865 false, 866 al, 867 "al r14 r2 0x00ab0000", 868 "al_r14_r2_0x00ab0000"}, 869 {{al, r0, r3, 0x000000ab}, 870 false, 871 al, 872 "al r0 r3 0x000000ab", 873 "al_r0_r3_0x000000ab"}, 874 {{al, r13, r4, 0x003fc000}, 875 false, 876 al, 877 "al r13 r4 0x003fc000", 878 "al_r13_r4_0x003fc000"}, 879 {{al, r4, r2, 0x00001560}, 880 false, 881 al, 882 "al r4 r2 0x00001560", 883 "al_r4_r2_0x00001560"}, 884 {{al, r14, r4, 0x2ac00000}, 885 false, 886 al, 887 "al r14 r4 0x2ac00000", 888 "al_r14_r4_0x2ac00000"}, 889 {{al, r4, r11, 0x000003fc}, 890 false, 891 al, 892 "al r4 r11 0x000003fc", 893 "al_r4_r11_0x000003fc"}, 894 {{al, r6, r8, 0x001fe000}, 895 false, 896 al, 897 "al r6 r8 0x001fe000", 898 "al_r6_r8_0x001fe000"}, 899 {{al, r12, r14, 0x00000558}, 900 false, 901 al, 902 "al r12 r14 0x00000558", 903 "al_r12_r14_0x00000558"}, 904 {{al, r0, r13, 0x0ff00000}, 905 false, 906 al, 907 "al r0 r13 0x0ff00000", 908 "al_r0_r13_0x0ff00000"}, 909 {{al, r3, r11, 0xabababab}, 910 false, 911 al, 912 "al r3 r11 0xabababab", 913 "al_r3_r11_0xabababab"}, 914 {{al, r4, r1, 0x000001fe}, 915 false, 916 al, 917 "al r4 r1 0x000001fe", 918 "al_r4_r1_0x000001fe"}, 919 {{al, r0, r5, 0x000002ac}, 920 false, 921 al, 922 "al r0 r5 0x000002ac", 923 "al_r0_r5_0x000002ac"}, 924 {{al, r8, r5, 0x0003fc00}, 925 false, 926 al, 927 "al r8 r5 0x0003fc00", 928 "al_r8_r5_0x0003fc00"}, 929 {{al, r7, r13, 0x0002ac00}, 930 false, 931 al, 932 "al r7 r13 0x0002ac00", 933 "al_r7_r13_0x0002ac00"}, 934 {{al, r10, r6, 0x00015600}, 935 false, 936 al, 937 "al r10 r6 0x00015600", 938 "al_r10_r6_0x00015600"}, 939 {{al, r12, r10, 0x00ff0000}, 940 false, 941 al, 942 "al r12 r10 0x00ff0000", 943 "al_r12_r10_0x00ff0000"}, 944 {{al, r12, r12, 0x00005580}, 945 false, 946 al, 947 "al r12 r12 0x00005580", 948 "al_r12_r12_0x00005580"}, 949 {{al, r0, r4, 0x02ac0000}, 950 false, 951 al, 952 "al r0 r4 0x02ac0000", 953 "al_r0_r4_0x02ac0000"}, 954 {{al, r9, r9, 0x02ac0000}, 955 false, 956 al, 957 "al r9 r9 0x02ac0000", 958 "al_r9_r9_0x02ac0000"}, 959 {{al, r7, r4, 0x00000558}, 960 false, 961 al, 962 "al r7 r4 0x00000558", 963 "al_r7_r4_0x00000558"}, 964 {{al, r12, r14, 0x07f80000}, 965 false, 966 al, 967 "al r12 r14 0x07f80000", 968 "al_r12_r14_0x07f80000"}, 969 {{al, r7, r2, 0xab00ab00}, 970 false, 971 al, 972 "al r7 r2 0xab00ab00", 973 "al_r7_r2_0xab00ab00"}, 974 {{al, r1, r12, 0xff000000}, 975 false, 976 al, 977 "al r1 r12 0xff000000", 978 "al_r1_r12_0xff000000"}, 979 {{al, r8, r0, 0x7f800000}, 980 false, 981 al, 982 "al r8 r0 0x7f800000", 983 "al_r8_r0_0x7f800000"}, 984 {{al, r7, r0, 0x00000ab0}, 985 false, 986 al, 987 "al r7 r0 0x00000ab0", 988 "al_r7_r0_0x00000ab0"}, 989 {{al, r1, r0, 0x00005580}, 990 false, 991 al, 992 "al r1 r0 0x00005580", 993 "al_r1_r0_0x00005580"}, 994 {{al, r14, r1, 0x001fe000}, 995 false, 996 al, 997 "al r14 r1 0x001fe000", 998 "al_r14_r1_0x001fe000"}, 999 {{al, r13, r13, 0x0002ac00}, 1000 false, 1001 al, 1002 "al r13 r13 0x0002ac00", 1003 "al_r13_r13_0x0002ac00"}, 1004 {{al, r8, r12, 0x0002ac00}, 1005 false, 1006 al, 1007 "al r8 r12 0x0002ac00", 1008 "al_r8_r12_0x0002ac00"}, 1009 {{al, r10, r10, 0x00ff00ff}, 1010 false, 1011 al, 1012 "al r10 r10 0x00ff00ff", 1013 "al_r10_r10_0x00ff00ff"}, 1014 {{al, r4, r4, 0x002ac000}, 1015 false, 1016 al, 1017 "al r4 r4 0x002ac000", 1018 "al_r4_r4_0x002ac000"}, 1019 {{al, r12, r5, 0x000ab000}, 1020 false, 1021 al, 1022 "al r12 r5 0x000ab000", 1023 "al_r12_r5_0x000ab000"}, 1024 {{al, r1, r2, 0x000003fc}, 1025 false, 1026 al, 1027 "al r1 r2 0x000003fc", 1028 "al_r1_r2_0x000003fc"}, 1029 {{al, r10, r11, 0x001fe000}, 1030 false, 1031 al, 1032 "al r10 r11 0x001fe000", 1033 "al_r10_r11_0x001fe000"}, 1034 {{al, r11, r2, 0x05580000}, 1035 false, 1036 al, 1037 "al r11 r2 0x05580000", 1038 "al_r11_r2_0x05580000"}, 1039 {{al, r2, r6, 0x000000ab}, 1040 false, 1041 al, 1042 "al r2 r6 0x000000ab", 1043 "al_r2_r6_0x000000ab"}, 1044 {{al, r6, r3, 0x0000ff00}, 1045 false, 1046 al, 1047 "al r6 r3 0x0000ff00", 1048 "al_r6_r3_0x0000ff00"}, 1049 {{al, r13, r0, 0x00156000}, 1050 false, 1051 al, 1052 "al r13 r0 0x00156000", 1053 "al_r13_r0_0x00156000"}, 1054 {{al, r2, r9, 0x00002ac0}, 1055 false, 1056 al, 1057 "al r2 r9 0x00002ac0", 1058 "al_r2_r9_0x00002ac0"}, 1059 {{al, r11, r7, 0x00055800}, 1060 false, 1061 al, 1062 "al r11 r7 0x00055800", 1063 "al_r11_r7_0x00055800"}, 1064 {{al, r10, r9, 0x00001fe0}, 1065 false, 1066 al, 1067 "al r10 r9 0x00001fe0", 1068 "al_r10_r9_0x00001fe0"}, 1069 {{al, r10, r11, 0x00156000}, 1070 false, 1071 al, 1072 "al r10 r11 0x00156000", 1073 "al_r10_r11_0x00156000"}, 1074 {{al, r12, r10, 0xff00ff00}, 1075 false, 1076 al, 1077 "al r12 r10 0xff00ff00", 1078 "al_r12_r10_0xff00ff00"}, 1079 {{al, r7, r14, 0x00ab00ab}, 1080 false, 1081 al, 1082 "al r7 r14 0x00ab00ab", 1083 "al_r7_r14_0x00ab00ab"}, 1084 {{al, r14, r7, 0x002ac000}, 1085 false, 1086 al, 1087 "al r14 r7 0x002ac000", 1088 "al_r14_r7_0x002ac000"}, 1089 {{al, r5, r6, 0x000ff000}, 1090 false, 1091 al, 1092 "al r5 r6 0x000ff000", 1093 "al_r5_r6_0x000ff000"}, 1094 {{al, r8, r1, 0xff000000}, 1095 false, 1096 al, 1097 "al r8 r1 0xff000000", 1098 "al_r8_r1_0xff000000"}, 1099 {{al, r8, r0, 0x000002ac}, 1100 false, 1101 al, 1102 "al r8 r0 0x000002ac", 1103 "al_r8_r0_0x000002ac"}, 1104 {{al, r12, r6, 0x00002ac0}, 1105 false, 1106 al, 1107 "al r12 r6 0x00002ac0", 1108 "al_r12_r6_0x00002ac0"}, 1109 {{al, r14, r2, 0x3fc00000}, 1110 false, 1111 al, 1112 "al r14 r2 0x3fc00000", 1113 "al_r14_r2_0x3fc00000"}, 1114 {{al, r3, r3, 0x01560000}, 1115 false, 1116 al, 1117 "al r3 r3 0x01560000", 1118 "al_r3_r3_0x01560000"}, 1119 {{al, r3, r12, 0x0001fe00}, 1120 false, 1121 al, 1122 "al r3 r12 0x0001fe00", 1123 "al_r3_r12_0x0001fe00"}, 1124 {{al, r8, r10, 0x000002ac}, 1125 false, 1126 al, 1127 "al r8 r10 0x000002ac", 1128 "al_r8_r10_0x000002ac"}, 1129 {{al, r9, r9, 0x002ac000}, 1130 false, 1131 al, 1132 "al r9 r9 0x002ac000", 1133 "al_r9_r9_0x002ac000"}, 1134 {{al, r0, r6, 0x00156000}, 1135 false, 1136 al, 1137 "al r0 r6 0x00156000", 1138 "al_r0_r6_0x00156000"}, 1139 {{al, r14, r7, 0x0ff00000}, 1140 false, 1141 al, 1142 "al r14 r7 0x0ff00000", 1143 "al_r14_r7_0x0ff00000"}, 1144 {{al, r1, r3, 0x00005580}, 1145 false, 1146 al, 1147 "al r1 r3 0x00005580", 1148 "al_r1_r3_0x00005580"}, 1149 {{al, r14, r7, 0x000001fe}, 1150 false, 1151 al, 1152 "al r14 r7 0x000001fe", 1153 "al_r14_r7_0x000001fe"}, 1154 {{al, r9, r5, 0x03fc0000}, 1155 false, 1156 al, 1157 "al r9 r5 0x03fc0000", 1158 "al_r9_r5_0x03fc0000"}, 1159 {{al, r7, r14, 0x002ac000}, 1160 false, 1161 al, 1162 "al r7 r14 0x002ac000", 1163 "al_r7_r14_0x002ac000"}, 1164 {{al, r8, r9, 0x00000558}, 1165 false, 1166 al, 1167 "al r8 r9 0x00000558", 1168 "al_r8_r9_0x00000558"}, 1169 {{al, r14, r1, 0x007f8000}, 1170 false, 1171 al, 1172 "al r14 r1 0x007f8000", 1173 "al_r14_r1_0x007f8000"}, 1174 {{al, r11, r0, 0xab00ab00}, 1175 false, 1176 al, 1177 "al r11 r0 0xab00ab00", 1178 "al_r11_r0_0xab00ab00"}, 1179 {{al, r11, r8, 0x00000156}, 1180 false, 1181 al, 1182 "al r11 r8 0x00000156", 1183 "al_r11_r8_0x00000156"}, 1184 {{al, r4, r10, 0x00055800}, 1185 false, 1186 al, 1187 "al r4 r10 0x00055800", 1188 "al_r4_r10_0x00055800"}, 1189 {{al, r2, r7, 0x00007f80}, 1190 false, 1191 al, 1192 "al r2 r7 0x00007f80", 1193 "al_r2_r7_0x00007f80"}, 1194 {{al, r0, r6, 0x00558000}, 1195 false, 1196 al, 1197 "al r0 r6 0x00558000", 1198 "al_r0_r6_0x00558000"}, 1199 {{al, r4, r2, 0x00558000}, 1200 false, 1201 al, 1202 "al r4 r2 0x00558000", 1203 "al_r4_r2_0x00558000"}, 1204 {{al, r2, r3, 0x0007f800}, 1205 false, 1206 al, 1207 "al r2 r3 0x0007f800", 1208 "al_r2_r3_0x0007f800"}, 1209 {{al, r14, r14, 0xab00ab00}, 1210 false, 1211 al, 1212 "al r14 r14 0xab00ab00", 1213 "al_r14_r14_0xab00ab00"}, 1214 {{al, r0, r13, 0x000000ff}, 1215 false, 1216 al, 1217 "al r0 r13 0x000000ff", 1218 "al_r0_r13_0x000000ff"}, 1219 {{al, r10, r9, 0xab00ab00}, 1220 false, 1221 al, 1222 "al r10 r9 0xab00ab00", 1223 "al_r10_r9_0xab00ab00"}, 1224 {{al, r1, r1, 0x3fc00000}, 1225 false, 1226 al, 1227 "al r1 r1 0x3fc00000", 1228 "al_r1_r1_0x3fc00000"}, 1229 {{al, r8, r6, 0x002ac000}, 1230 false, 1231 al, 1232 "al r8 r6 0x002ac000", 1233 "al_r8_r6_0x002ac000"}, 1234 {{al, r12, r4, 0x55800000}, 1235 false, 1236 al, 1237 "al r12 r4 0x55800000", 1238 "al_r12_r4_0x55800000"}, 1239 {{al, r6, r10, 0x2ac00000}, 1240 false, 1241 al, 1242 "al r6 r10 0x2ac00000", 1243 "al_r6_r10_0x2ac00000"}, 1244 {{al, r7, r9, 0x001fe000}, 1245 false, 1246 al, 1247 "al r7 r9 0x001fe000", 1248 "al_r7_r9_0x001fe000"}, 1249 {{al, r4, r12, 0x00005580}, 1250 false, 1251 al, 1252 "al r4 r12 0x00005580", 1253 "al_r4_r12_0x00005580"}, 1254 {{al, r9, r8, 0x0ab00000}, 1255 false, 1256 al, 1257 "al r9 r8 0x0ab00000", 1258 "al_r9_r8_0x0ab00000"}, 1259 {{al, r2, r4, 0xff00ff00}, 1260 false, 1261 al, 1262 "al r2 r4 0xff00ff00", 1263 "al_r2_r4_0xff00ff00"}, 1264 {{al, r8, r14, 0x00001fe0}, 1265 false, 1266 al, 1267 "al r8 r14 0x00001fe0", 1268 "al_r8_r14_0x00001fe0"}, 1269 {{al, r5, r3, 0x003fc000}, 1270 false, 1271 al, 1272 "al r5 r3 0x003fc000", 1273 "al_r5_r3_0x003fc000"}, 1274 {{al, r2, r10, 0x00ff00ff}, 1275 false, 1276 al, 1277 "al r2 r10 0x00ff00ff", 1278 "al_r2_r10_0x00ff00ff"}, 1279 {{al, r11, r12, 0x15600000}, 1280 false, 1281 al, 1282 "al r11 r12 0x15600000", 1283 "al_r11_r12_0x15600000"}, 1284 {{al, r1, r5, 0x00002ac0}, 1285 false, 1286 al, 1287 "al r1 r5 0x00002ac0", 1288 "al_r1_r5_0x00002ac0"}, 1289 {{al, r3, r7, 0x2ac00000}, 1290 false, 1291 al, 1292 "al r3 r7 0x2ac00000", 1293 "al_r3_r7_0x2ac00000"}, 1294 {{al, r5, r1, 0xffffffff}, 1295 false, 1296 al, 1297 "al r5 r1 0xffffffff", 1298 "al_r5_r1_0xffffffff"}, 1299 {{al, r4, r10, 0xff00ff00}, 1300 false, 1301 al, 1302 "al r4 r10 0xff00ff00", 1303 "al_r4_r10_0xff00ff00"}, 1304 {{al, r1, r2, 0x00001fe0}, 1305 false, 1306 al, 1307 "al r1 r2 0x00001fe0", 1308 "al_r1_r2_0x00001fe0"}, 1309 {{al, r5, r14, 0x000000ff}, 1310 false, 1311 al, 1312 "al r5 r14 0x000000ff", 1313 "al_r5_r14_0x000000ff"}, 1314 {{al, r14, r0, 0x000ab000}, 1315 false, 1316 al, 1317 "al r14 r0 0x000ab000", 1318 "al_r14_r0_0x000ab000"}, 1319 {{al, r10, r3, 0x00ab0000}, 1320 false, 1321 al, 1322 "al r10 r3 0x00ab0000", 1323 "al_r10_r3_0x00ab0000"}, 1324 {{al, r10, r12, 0x03fc0000}, 1325 false, 1326 al, 1327 "al r10 r12 0x03fc0000", 1328 "al_r10_r12_0x03fc0000"}, 1329 {{al, r8, r11, 0x0007f800}, 1330 false, 1331 al, 1332 "al r8 r11 0x0007f800", 1333 "al_r8_r11_0x0007f800"}, 1334 {{al, r9, r13, 0x0001fe00}, 1335 false, 1336 al, 1337 "al r9 r13 0x0001fe00", 1338 "al_r9_r13_0x0001fe00"}, 1339 {{al, r12, r13, 0x02ac0000}, 1340 false, 1341 al, 1342 "al r12 r13 0x02ac0000", 1343 "al_r12_r13_0x02ac0000"}, 1344 {{al, r3, r9, 0x00ab00ab}, 1345 false, 1346 al, 1347 "al r3 r9 0x00ab00ab", 1348 "al_r3_r9_0x00ab00ab"}, 1349 {{al, r10, r1, 0x3fc00000}, 1350 false, 1351 al, 1352 "al r10 r1 0x3fc00000", 1353 "al_r10_r1_0x3fc00000"}, 1354 {{al, r6, r8, 0x00000558}, 1355 false, 1356 al, 1357 "al r6 r8 0x00000558", 1358 "al_r6_r8_0x00000558"}, 1359 {{al, r6, r12, 0x0000ab00}, 1360 false, 1361 al, 1362 "al r6 r12 0x0000ab00", 1363 "al_r6_r12_0x0000ab00"}, 1364 {{al, r14, r13, 0x000ab000}, 1365 false, 1366 al, 1367 "al r14 r13 0x000ab000", 1368 "al_r14_r13_0x000ab000"}, 1369 {{al, r1, r5, 0x1fe00000}, 1370 false, 1371 al, 1372 "al r1 r5 0x1fe00000", 1373 "al_r1_r5_0x1fe00000"}, 1374 {{al, r11, r3, 0x02ac0000}, 1375 false, 1376 al, 1377 "al r11 r3 0x02ac0000", 1378 "al_r11_r3_0x02ac0000"}, 1379 {{al, r9, r5, 0x55800000}, 1380 false, 1381 al, 1382 "al r9 r5 0x55800000", 1383 "al_r9_r5_0x55800000"}, 1384 {{al, r5, r5, 0x000ab000}, 1385 false, 1386 al, 1387 "al r5 r5 0x000ab000", 1388 "al_r5_r5_0x000ab000"}, 1389 {{al, r0, r12, 0x003fc000}, 1390 false, 1391 al, 1392 "al r0 r12 0x003fc000", 1393 "al_r0_r12_0x003fc000"}, 1394 {{al, r10, r4, 0x0000ab00}, 1395 false, 1396 al, 1397 "al r10 r4 0x0000ab00", 1398 "al_r10_r4_0x0000ab00"}, 1399 {{al, r3, r2, 0x0000ff00}, 1400 false, 1401 al, 1402 "al r3 r2 0x0000ff00", 1403 "al_r3_r2_0x0000ff00"}, 1404 {{al, r14, r8, 0x3fc00000}, 1405 false, 1406 al, 1407 "al r14 r8 0x3fc00000", 1408 "al_r14_r8_0x3fc00000"}, 1409 {{al, r10, r13, 0x05580000}, 1410 false, 1411 al, 1412 "al r10 r13 0x05580000", 1413 "al_r10_r13_0x05580000"}, 1414 {{al, r4, r13, 0x00156000}, 1415 false, 1416 al, 1417 "al r4 r13 0x00156000", 1418 "al_r4_r13_0x00156000"}, 1419 {{al, r7, r2, 0x000002ac}, 1420 false, 1421 al, 1422 "al r7 r2 0x000002ac", 1423 "al_r7_r2_0x000002ac"}, 1424 {{al, r5, r10, 0x000002ac}, 1425 false, 1426 al, 1427 "al r5 r10 0x000002ac", 1428 "al_r5_r10_0x000002ac"}, 1429 {{al, r7, r0, 0xab000000}, 1430 false, 1431 al, 1432 "al r7 r0 0xab000000", 1433 "al_r7_r0_0xab000000"}, 1434 {{al, r1, r10, 0x000002ac}, 1435 false, 1436 al, 1437 "al r1 r10 0x000002ac", 1438 "al_r1_r10_0x000002ac"}, 1439 {{al, r11, r9, 0x00002ac0}, 1440 false, 1441 al, 1442 "al r11 r9 0x00002ac0", 1443 "al_r11_r9_0x00002ac0"}, 1444 {{al, r4, r0, 0x000001fe}, 1445 false, 1446 al, 1447 "al r4 r0 0x000001fe", 1448 "al_r4_r0_0x000001fe"}, 1449 {{al, r11, r9, 0x0003fc00}, 1450 false, 1451 al, 1452 "al r11 r9 0x0003fc00", 1453 "al_r11_r9_0x0003fc00"}, 1454 {{al, r8, r3, 0x00005580}, 1455 false, 1456 al, 1457 "al r8 r3 0x00005580", 1458 "al_r8_r3_0x00005580"}, 1459 {{al, r4, r4, 0xffffffff}, 1460 false, 1461 al, 1462 "al r4 r4 0xffffffff", 1463 "al_r4_r4_0xffffffff"}, 1464 {{al, r1, r9, 0x00000558}, 1465 false, 1466 al, 1467 "al r1 r9 0x00000558", 1468 "al_r1_r9_0x00000558"}, 1469 {{al, r9, r2, 0x00ab0000}, 1470 false, 1471 al, 1472 "al r9 r2 0x00ab0000", 1473 "al_r9_r2_0x00ab0000"}, 1474 {{al, r11, r6, 0x00003fc0}, 1475 false, 1476 al, 1477 "al r11 r6 0x00003fc0", 1478 "al_r11_r6_0x00003fc0"}, 1479 {{al, r11, r11, 0x01fe0000}, 1480 false, 1481 al, 1482 "al r11 r11 0x01fe0000", 1483 "al_r11_r11_0x01fe0000"}, 1484 {{al, r6, r10, 0x0001fe00}, 1485 false, 1486 al, 1487 "al r6 r10 0x0001fe00", 1488 "al_r6_r10_0x0001fe00"}, 1489 {{al, r8, r3, 0x00000156}, 1490 false, 1491 al, 1492 "al r8 r3 0x00000156", 1493 "al_r8_r3_0x00000156"}, 1494 {{al, r12, r12, 0x0002ac00}, 1495 false, 1496 al, 1497 "al r12 r12 0x0002ac00", 1498 "al_r12_r12_0x0002ac00"}, 1499 {{al, r8, r6, 0x7f800000}, 1500 false, 1501 al, 1502 "al r8 r6 0x7f800000", 1503 "al_r8_r6_0x7f800000"}, 1504 {{al, r5, r13, 0x000002ac}, 1505 false, 1506 al, 1507 "al r5 r13 0x000002ac", 1508 "al_r5_r13_0x000002ac"}, 1509 {{al, r5, r13, 0x15600000}, 1510 false, 1511 al, 1512 "al r5 r13 0x15600000", 1513 "al_r5_r13_0x15600000"}, 1514 {{al, r8, r8, 0x000000ab}, 1515 false, 1516 al, 1517 "al r8 r8 0x000000ab", 1518 "al_r8_r8_0x000000ab"}, 1519 {{al, r12, r14, 0x00156000}, 1520 false, 1521 al, 1522 "al r12 r14 0x00156000", 1523 "al_r12_r14_0x00156000"}, 1524 {{al, r1, r7, 0x003fc000}, 1525 false, 1526 al, 1527 "al r1 r7 0x003fc000", 1528 "al_r1_r7_0x003fc000"}, 1529 {{al, r8, r0, 0x00003fc0}, 1530 false, 1531 al, 1532 "al r8 r0 0x00003fc0", 1533 "al_r8_r0_0x00003fc0"}, 1534 {{al, r14, r11, 0x0007f800}, 1535 false, 1536 al, 1537 "al r14 r11 0x0007f800", 1538 "al_r14_r11_0x0007f800"}, 1539 {{al, r3, r8, 0x00ab00ab}, 1540 false, 1541 al, 1542 "al r3 r8 0x00ab00ab", 1543 "al_r3_r8_0x00ab00ab"}, 1544 {{al, r14, r8, 0x55800000}, 1545 false, 1546 al, 1547 "al r14 r8 0x55800000", 1548 "al_r14_r8_0x55800000"}, 1549 {{al, r7, r8, 0x000ff000}, 1550 false, 1551 al, 1552 "al r7 r8 0x000ff000", 1553 "al_r7_r8_0x000ff000"}, 1554 {{al, r4, r11, 0x01fe0000}, 1555 false, 1556 al, 1557 "al r4 r11 0x01fe0000", 1558 "al_r4_r11_0x01fe0000"}, 1559 {{al, r2, r4, 0x01560000}, 1560 false, 1561 al, 1562 "al r2 r4 0x01560000", 1563 "al_r2_r4_0x01560000"}, 1564 {{al, r4, r3, 0xffffffff}, 1565 false, 1566 al, 1567 "al r4 r3 0xffffffff", 1568 "al_r4_r3_0xffffffff"}, 1569 {{al, r7, r8, 0xab000000}, 1570 false, 1571 al, 1572 "al r7 r8 0xab000000", 1573 "al_r7_r8_0xab000000"}, 1574 {{al, r0, r13, 0x00000ab0}, 1575 false, 1576 al, 1577 "al r0 r13 0x00000ab0", 1578 "al_r0_r13_0x00000ab0"}, 1579 {{al, r1, r2, 0x000001fe}, 1580 false, 1581 al, 1582 "al r1 r2 0x000001fe", 1583 "al_r1_r2_0x000001fe"}, 1584 {{al, r8, r14, 0x02ac0000}, 1585 false, 1586 al, 1587 "al r8 r14 0x02ac0000", 1588 "al_r8_r14_0x02ac0000"}, 1589 {{al, r4, r5, 0x00558000}, 1590 false, 1591 al, 1592 "al r4 r5 0x00558000", 1593 "al_r4_r5_0x00558000"}, 1594 {{al, r6, r7, 0xff00ff00}, 1595 false, 1596 al, 1597 "al r6 r7 0xff00ff00", 1598 "al_r6_r7_0xff00ff00"}, 1599 {{al, r8, r12, 0x001fe000}, 1600 false, 1601 al, 1602 "al r8 r12 0x001fe000", 1603 "al_r8_r12_0x001fe000"}, 1604 {{al, r6, r4, 0x07f80000}, 1605 false, 1606 al, 1607 "al r6 r4 0x07f80000", 1608 "al_r6_r4_0x07f80000"}, 1609 {{al, r4, r0, 0x00001fe0}, 1610 false, 1611 al, 1612 "al r4 r0 0x00001fe0", 1613 "al_r4_r0_0x00001fe0"}, 1614 {{al, r14, r3, 0xff00ff00}, 1615 false, 1616 al, 1617 "al r14 r3 0xff00ff00", 1618 "al_r14_r3_0xff00ff00"}, 1619 {{al, r0, r6, 0xab000000}, 1620 false, 1621 al, 1622 "al r0 r6 0xab000000", 1623 "al_r0_r6_0xab000000"}, 1624 {{al, r12, r13, 0x00000ab0}, 1625 false, 1626 al, 1627 "al r12 r13 0x00000ab0", 1628 "al_r12_r13_0x00000ab0"}, 1629 {{al, r12, r8, 0x00000558}, 1630 false, 1631 al, 1632 "al r12 r8 0x00000558", 1633 "al_r12_r8_0x00000558"}, 1634 {{al, r3, r12, 0x0003fc00}, 1635 false, 1636 al, 1637 "al r3 r12 0x0003fc00", 1638 "al_r3_r12_0x0003fc00"}, 1639 {{al, r2, r11, 0x7f800000}, 1640 false, 1641 al, 1642 "al r2 r11 0x7f800000", 1643 "al_r2_r11_0x7f800000"}, 1644 {{al, r10, r4, 0x15600000}, 1645 false, 1646 al, 1647 "al r10 r4 0x15600000", 1648 "al_r10_r4_0x15600000"}, 1649 {{al, r8, r7, 0x0ab00000}, 1650 false, 1651 al, 1652 "al r8 r7 0x0ab00000", 1653 "al_r8_r7_0x0ab00000"}, 1654 {{al, r10, r6, 0x000000ff}, 1655 false, 1656 al, 1657 "al r10 r6 0x000000ff", 1658 "al_r10_r6_0x000000ff"}, 1659 {{al, r3, r4, 0xff00ff00}, 1660 false, 1661 al, 1662 "al r3 r4 0xff00ff00", 1663 "al_r3_r4_0xff00ff00"}, 1664 {{al, r14, r10, 0x00ab0000}, 1665 false, 1666 al, 1667 "al r14 r10 0x00ab0000", 1668 "al_r14_r10_0x00ab0000"}, 1669 {{al, r8, r3, 0x0002ac00}, 1670 false, 1671 al, 1672 "al r8 r3 0x0002ac00", 1673 "al_r8_r3_0x0002ac00"}, 1674 {{al, r8, r8, 0x00000558}, 1675 false, 1676 al, 1677 "al r8 r8 0x00000558", 1678 "al_r8_r8_0x00000558"}, 1679 {{al, r12, r4, 0x00015600}, 1680 false, 1681 al, 1682 "al r12 r4 0x00015600", 1683 "al_r12_r4_0x00015600"}, 1684 {{al, r8, r1, 0x002ac000}, 1685 false, 1686 al, 1687 "al r8 r1 0x002ac000", 1688 "al_r8_r1_0x002ac000"}, 1689 {{al, r8, r5, 0x000000ab}, 1690 false, 1691 al, 1692 "al r8 r5 0x000000ab", 1693 "al_r8_r5_0x000000ab"}, 1694 {{al, r6, r6, 0x000000ab}, 1695 false, 1696 al, 1697 "al r6 r6 0x000000ab", 1698 "al_r6_r6_0x000000ab"}, 1699 {{al, r5, r7, 0x00002ac0}, 1700 false, 1701 al, 1702 "al r5 r7 0x00002ac0", 1703 "al_r5_r7_0x00002ac0"}, 1704 {{al, r11, r4, 0x00000ff0}, 1705 false, 1706 al, 1707 "al r11 r4 0x00000ff0", 1708 "al_r11_r4_0x00000ff0"}, 1709 {{al, r9, r9, 0x00000ff0}, 1710 false, 1711 al, 1712 "al r9 r9 0x00000ff0", 1713 "al_r9_r9_0x00000ff0"}, 1714 {{al, r0, r8, 0x00ff0000}, 1715 false, 1716 al, 1717 "al r0 r8 0x00ff0000", 1718 "al_r0_r8_0x00ff0000"}, 1719 {{al, r9, r11, 0x000000ab}, 1720 false, 1721 al, 1722 "al r9 r11 0x000000ab", 1723 "al_r9_r11_0x000000ab"}, 1724 {{al, r7, r5, 0x000000ff}, 1725 false, 1726 al, 1727 "al r7 r5 0x000000ff", 1728 "al_r7_r5_0x000000ff"}, 1729 {{al, r14, r0, 0x15600000}, 1730 false, 1731 al, 1732 "al r14 r0 0x15600000", 1733 "al_r14_r0_0x15600000"}, 1734 {{al, r10, r9, 0x00000156}, 1735 false, 1736 al, 1737 "al r10 r9 0x00000156", 1738 "al_r10_r9_0x00000156"}, 1739 {{al, r3, r7, 0x00ff0000}, 1740 false, 1741 al, 1742 "al r3 r7 0x00ff0000", 1743 "al_r3_r7_0x00ff0000"}, 1744 {{al, r6, r11, 0xab00ab00}, 1745 false, 1746 al, 1747 "al r6 r11 0xab00ab00", 1748 "al_r6_r11_0xab00ab00"}, 1749 {{al, r5, r2, 0x002ac000}, 1750 false, 1751 al, 1752 "al r5 r2 0x002ac000", 1753 "al_r5_r2_0x002ac000"}, 1754 {{al, r9, r14, 0x55800000}, 1755 false, 1756 al, 1757 "al r9 r14 0x55800000", 1758 "al_r9_r14_0x55800000"}, 1759 {{al, r10, r13, 0x15600000}, 1760 false, 1761 al, 1762 "al r10 r13 0x15600000", 1763 "al_r10_r13_0x15600000"}, 1764 {{al, r13, r7, 0x0ff00000}, 1765 false, 1766 al, 1767 "al r13 r7 0x0ff00000", 1768 "al_r13_r7_0x0ff00000"}, 1769 {{al, r12, r5, 0xffffffff}, 1770 false, 1771 al, 1772 "al r12 r5 0xffffffff", 1773 "al_r12_r5_0xffffffff"}, 1774 {{al, r8, r10, 0x00000156}, 1775 false, 1776 al, 1777 "al r8 r10 0x00000156", 1778 "al_r8_r10_0x00000156"}, 1779 {{al, r7, r6, 0x00005580}, 1780 false, 1781 al, 1782 "al r7 r6 0x00005580", 1783 "al_r7_r6_0x00005580"}, 1784 {{al, r6, r6, 0x0ab00000}, 1785 false, 1786 al, 1787 "al r6 r6 0x0ab00000", 1788 "al_r6_r6_0x0ab00000"}, 1789 {{al, r3, r7, 0x01fe0000}, 1790 false, 1791 al, 1792 "al r3 r7 0x01fe0000", 1793 "al_r3_r7_0x01fe0000"}, 1794 {{al, r14, r9, 0x00558000}, 1795 false, 1796 al, 1797 "al r14 r9 0x00558000", 1798 "al_r14_r9_0x00558000"}, 1799 {{al, r3, r13, 0x000007f8}, 1800 false, 1801 al, 1802 "al r3 r13 0x000007f8", 1803 "al_r3_r13_0x000007f8"}, 1804 {{al, r10, r2, 0x00055800}, 1805 false, 1806 al, 1807 "al r10 r2 0x00055800", 1808 "al_r10_r2_0x00055800"}, 1809 {{al, r5, r14, 0x00005580}, 1810 false, 1811 al, 1812 "al r5 r14 0x00005580", 1813 "al_r5_r14_0x00005580"}, 1814 {{al, r9, r12, 0xab000000}, 1815 false, 1816 al, 1817 "al r9 r12 0xab000000", 1818 "al_r9_r12_0xab000000"}, 1819 {{al, r2, r14, 0x00000156}, 1820 false, 1821 al, 1822 "al r2 r14 0x00000156", 1823 "al_r2_r14_0x00000156"}, 1824 {{al, r6, r10, 0x000ff000}, 1825 false, 1826 al, 1827 "al r6 r10 0x000ff000", 1828 "al_r6_r10_0x000ff000"}, 1829 {{al, r6, r7, 0x000007f8}, 1830 false, 1831 al, 1832 "al r6 r7 0x000007f8", 1833 "al_r6_r7_0x000007f8"}, 1834 {{al, r8, r3, 0x7f800000}, 1835 false, 1836 al, 1837 "al r8 r3 0x7f800000", 1838 "al_r8_r3_0x7f800000"}, 1839 {{al, r0, r12, 0x15600000}, 1840 false, 1841 al, 1842 "al r0 r12 0x15600000", 1843 "al_r0_r12_0x15600000"}, 1844 {{al, r1, r6, 0x00558000}, 1845 false, 1846 al, 1847 "al r1 r6 0x00558000", 1848 "al_r1_r6_0x00558000"}, 1849 {{al, r3, r8, 0x55800000}, 1850 false, 1851 al, 1852 "al r3 r8 0x55800000", 1853 "al_r3_r8_0x55800000"}, 1854 {{al, r1, r14, 0x000003fc}, 1855 false, 1856 al, 1857 "al r1 r14 0x000003fc", 1858 "al_r1_r14_0x000003fc"}, 1859 {{al, r0, r2, 0x0ab00000}, 1860 false, 1861 al, 1862 "al r0 r2 0x0ab00000", 1863 "al_r0_r2_0x0ab00000"}, 1864 {{al, r10, r12, 0x00000156}, 1865 false, 1866 al, 1867 "al r10 r12 0x00000156", 1868 "al_r10_r12_0x00000156"}, 1869 {{al, r12, r14, 0x03fc0000}, 1870 false, 1871 al, 1872 "al r12 r14 0x03fc0000", 1873 "al_r12_r14_0x03fc0000"}, 1874 {{al, r2, r5, 0x0001fe00}, 1875 false, 1876 al, 1877 "al r2 r5 0x0001fe00", 1878 "al_r2_r5_0x0001fe00"}, 1879 {{al, r5, r11, 0x000ab000}, 1880 false, 1881 al, 1882 "al r5 r11 0x000ab000", 1883 "al_r5_r11_0x000ab000"}, 1884 {{al, r14, r14, 0x0001fe00}, 1885 false, 1886 al, 1887 "al r14 r14 0x0001fe00", 1888 "al_r14_r14_0x0001fe00"}, 1889 {{al, r13, r2, 0x00003fc0}, 1890 false, 1891 al, 1892 "al r13 r2 0x00003fc0", 1893 "al_r13_r2_0x00003fc0"}, 1894 {{al, r0, r8, 0xab000000}, 1895 false, 1896 al, 1897 "al r0 r8 0xab000000", 1898 "al_r0_r8_0xab000000"}, 1899 {{al, r12, r0, 0x000000ab}, 1900 false, 1901 al, 1902 "al r12 r0 0x000000ab", 1903 "al_r12_r0_0x000000ab"}, 1904 {{al, r11, r10, 0x002ac000}, 1905 false, 1906 al, 1907 "al r11 r10 0x002ac000", 1908 "al_r11_r10_0x002ac000"}, 1909 {{al, r12, r11, 0x00ab0000}, 1910 false, 1911 al, 1912 "al r12 r11 0x00ab0000", 1913 "al_r12_r11_0x00ab0000"}, 1914 {{al, r2, r9, 0x0ff00000}, 1915 false, 1916 al, 1917 "al r2 r9 0x0ff00000", 1918 "al_r2_r9_0x0ff00000"}, 1919 {{al, r7, r4, 0x000001fe}, 1920 false, 1921 al, 1922 "al r7 r4 0x000001fe", 1923 "al_r7_r4_0x000001fe"}, 1924 {{al, r7, r6, 0x0000ff00}, 1925 false, 1926 al, 1927 "al r7 r6 0x0000ff00", 1928 "al_r7_r6_0x0000ff00"}, 1929 {{al, r11, r14, 0x05580000}, 1930 false, 1931 al, 1932 "al r11 r14 0x05580000", 1933 "al_r11_r14_0x05580000"}, 1934 {{al, r6, r10, 0x00000558}, 1935 false, 1936 al, 1937 "al r6 r10 0x00000558", 1938 "al_r6_r10_0x00000558"}, 1939 {{al, r11, r6, 0x0001fe00}, 1940 false, 1941 al, 1942 "al r11 r6 0x0001fe00", 1943 "al_r11_r6_0x0001fe00"}, 1944 {{al, r11, r12, 0xab00ab00}, 1945 false, 1946 al, 1947 "al r11 r12 0xab00ab00", 1948 "al_r11_r12_0xab00ab00"}, 1949 {{al, r1, r8, 0x7f800000}, 1950 false, 1951 al, 1952 "al r1 r8 0x7f800000", 1953 "al_r1_r8_0x7f800000"}, 1954 {{al, r4, r3, 0x0000ff00}, 1955 false, 1956 al, 1957 "al r4 r3 0x0000ff00", 1958 "al_r4_r3_0x0000ff00"}, 1959 {{al, r5, r4, 0x00ff00ff}, 1960 false, 1961 al, 1962 "al r5 r4 0x00ff00ff", 1963 "al_r5_r4_0x00ff00ff"}, 1964 {{al, r12, r11, 0x2ac00000}, 1965 false, 1966 al, 1967 "al r12 r11 0x2ac00000", 1968 "al_r12_r11_0x2ac00000"}, 1969 {{al, r1, r6, 0xab00ab00}, 1970 false, 1971 al, 1972 "al r1 r6 0xab00ab00", 1973 "al_r1_r6_0xab00ab00"}, 1974 {{al, r6, r3, 0x000000ab}, 1975 false, 1976 al, 1977 "al r6 r3 0x000000ab", 1978 "al_r6_r3_0x000000ab"}, 1979 {{al, r2, r11, 0x0007f800}, 1980 false, 1981 al, 1982 "al r2 r11 0x0007f800", 1983 "al_r2_r11_0x0007f800"}, 1984 {{al, r3, r0, 0x00001560}, 1985 false, 1986 al, 1987 "al r3 r0 0x00001560", 1988 "al_r3_r0_0x00001560"}, 1989 {{al, r1, r14, 0x00000558}, 1990 false, 1991 al, 1992 "al r1 r14 0x00000558", 1993 "al_r1_r14_0x00000558"}, 1994 {{al, r10, r8, 0x00558000}, 1995 false, 1996 al, 1997 "al r10 r8 0x00558000", 1998 "al_r10_r8_0x00558000"}, 1999 {{al, r0, r8, 0x000ff000}, 2000 false, 2001 al, 2002 "al r0 r8 0x000ff000", 2003 "al_r0_r8_0x000ff000"}, 2004 {{al, r13, r6, 0x007f8000}, 2005 false, 2006 al, 2007 "al r13 r6 0x007f8000", 2008 "al_r13_r6_0x007f8000"}, 2009 {{al, r3, r10, 0x000002ac}, 2010 false, 2011 al, 2012 "al r3 r10 0x000002ac", 2013 "al_r3_r10_0x000002ac"}, 2014 {{al, r12, r2, 0x0003fc00}, 2015 false, 2016 al, 2017 "al r12 r2 0x0003fc00", 2018 "al_r12_r2_0x0003fc00"}, 2019 {{al, r5, r5, 0x02ac0000}, 2020 false, 2021 al, 2022 "al r5 r5 0x02ac0000", 2023 "al_r5_r5_0x02ac0000"}, 2024 {{al, r11, r12, 0x001fe000}, 2025 false, 2026 al, 2027 "al r11 r12 0x001fe000", 2028 "al_r11_r12_0x001fe000"}, 2029 {{al, r0, r14, 0x001fe000}, 2030 false, 2031 al, 2032 "al r0 r14 0x001fe000", 2033 "al_r0_r14_0x001fe000"}, 2034 {{al, r0, r14, 0x02ac0000}, 2035 false, 2036 al, 2037 "al r0 r14 0x02ac0000", 2038 "al_r0_r14_0x02ac0000"}, 2039 {{al, r6, r7, 0x0ff00000}, 2040 false, 2041 al, 2042 "al r6 r7 0x0ff00000", 2043 "al_r6_r7_0x0ff00000"}, 2044 {{al, r10, r13, 0x00000156}, 2045 false, 2046 al, 2047 "al r10 r13 0x00000156", 2048 "al_r10_r13_0x00000156"}, 2049 {{al, r3, r7, 0x000007f8}, 2050 false, 2051 al, 2052 "al r3 r7 0x000007f8", 2053 "al_r3_r7_0x000007f8"}, 2054 {{al, r4, r10, 0x000000ab}, 2055 false, 2056 al, 2057 "al r4 r10 0x000000ab", 2058 "al_r4_r10_0x000000ab"}, 2059 {{al, r0, r6, 0x00000558}, 2060 false, 2061 al, 2062 "al r0 r6 0x00000558", 2063 "al_r0_r6_0x00000558"}, 2064 {{al, r1, r1, 0x05580000}, 2065 false, 2066 al, 2067 "al r1 r1 0x05580000", 2068 "al_r1_r1_0x05580000"}, 2069 {{al, r8, r2, 0x00001560}, 2070 false, 2071 al, 2072 "al r8 r2 0x00001560", 2073 "al_r8_r2_0x00001560"}, 2074 {{al, r9, r5, 0x0001fe00}, 2075 false, 2076 al, 2077 "al r9 r5 0x0001fe00", 2078 "al_r9_r5_0x0001fe00"}, 2079 {{al, r13, r9, 0x0ab00000}, 2080 false, 2081 al, 2082 "al r13 r9 0x0ab00000", 2083 "al_r13_r9_0x0ab00000"}, 2084 {{al, r13, r9, 0x00007f80}, 2085 false, 2086 al, 2087 "al r13 r9 0x00007f80", 2088 "al_r13_r9_0x00007f80"}, 2089 {{al, r10, r5, 0x0000ab00}, 2090 false, 2091 al, 2092 "al r10 r5 0x0000ab00", 2093 "al_r10_r5_0x0000ab00"}, 2094 {{al, r6, r13, 0x007f8000}, 2095 false, 2096 al, 2097 "al r6 r13 0x007f8000", 2098 "al_r6_r13_0x007f8000"}, 2099 {{al, r5, r9, 0x000ab000}, 2100 false, 2101 al, 2102 "al r5 r9 0x000ab000", 2103 "al_r5_r9_0x000ab000"}, 2104 {{al, r4, r4, 0x000000ab}, 2105 false, 2106 al, 2107 "al r4 r4 0x000000ab", 2108 "al_r4_r4_0x000000ab"}, 2109 {{al, r13, r5, 0xab00ab00}, 2110 false, 2111 al, 2112 "al r13 r5 0xab00ab00", 2113 "al_r13_r5_0xab00ab00"}, 2114 {{al, r12, r3, 0x00005580}, 2115 false, 2116 al, 2117 "al r12 r3 0x00005580", 2118 "al_r12_r3_0x00005580"}, 2119 {{al, r0, r10, 0x55800000}, 2120 false, 2121 al, 2122 "al r0 r10 0x55800000", 2123 "al_r0_r10_0x55800000"}, 2124 {{al, r2, r8, 0x00ab00ab}, 2125 false, 2126 al, 2127 "al r2 r8 0x00ab00ab", 2128 "al_r2_r8_0x00ab00ab"}, 2129 {{al, r11, r5, 0x0003fc00}, 2130 false, 2131 al, 2132 "al r11 r5 0x0003fc00", 2133 "al_r11_r5_0x0003fc00"}, 2134 {{al, r11, r0, 0x00ab0000}, 2135 false, 2136 al, 2137 "al r11 r0 0x00ab0000", 2138 "al_r11_r0_0x00ab0000"}, 2139 {{al, r10, r2, 0x000002ac}, 2140 false, 2141 al, 2142 "al r10 r2 0x000002ac", 2143 "al_r10_r2_0x000002ac"}, 2144 {{al, r11, r12, 0x00055800}, 2145 false, 2146 al, 2147 "al r11 r12 0x00055800", 2148 "al_r11_r12_0x00055800"}, 2149 {{al, r5, r13, 0x00000ff0}, 2150 false, 2151 al, 2152 "al r5 r13 0x00000ff0", 2153 "al_r5_r13_0x00000ff0"}, 2154 {{al, r4, r14, 0x15600000}, 2155 false, 2156 al, 2157 "al r4 r14 0x15600000", 2158 "al_r4_r14_0x15600000"}, 2159 {{al, r10, r1, 0x00003fc0}, 2160 false, 2161 al, 2162 "al r10 r1 0x00003fc0", 2163 "al_r10_r1_0x00003fc0"}, 2164 {{al, r14, r8, 0xff000000}, 2165 false, 2166 al, 2167 "al r14 r8 0xff000000", 2168 "al_r14_r8_0xff000000"}, 2169 {{al, r12, r0, 0x00ff0000}, 2170 false, 2171 al, 2172 "al r12 r0 0x00ff0000", 2173 "al_r12_r0_0x00ff0000"}, 2174 {{al, r4, r5, 0x3fc00000}, 2175 false, 2176 al, 2177 "al r4 r5 0x3fc00000", 2178 "al_r4_r5_0x3fc00000"}, 2179 {{al, r14, r10, 0x3fc00000}, 2180 false, 2181 al, 2182 "al r14 r10 0x3fc00000", 2183 "al_r14_r10_0x3fc00000"}, 2184 {{al, r10, r1, 0x00015600}, 2185 false, 2186 al, 2187 "al r10 r1 0x00015600", 2188 "al_r10_r1_0x00015600"}, 2189 {{al, r4, r3, 0xff000000}, 2190 false, 2191 al, 2192 "al r4 r3 0xff000000", 2193 "al_r4_r3_0xff000000"}, 2194 {{al, r10, r10, 0x02ac0000}, 2195 false, 2196 al, 2197 "al r10 r10 0x02ac0000", 2198 "al_r10_r10_0x02ac0000"}, 2199 {{al, r9, r9, 0x000ff000}, 2200 false, 2201 al, 2202 "al r9 r9 0x000ff000", 2203 "al_r9_r9_0x000ff000"}, 2204 {{al, r13, r7, 0x0002ac00}, 2205 false, 2206 al, 2207 "al r13 r7 0x0002ac00", 2208 "al_r13_r7_0x0002ac00"}, 2209 {{al, r7, r8, 0x00001fe0}, 2210 false, 2211 al, 2212 "al r7 r8 0x00001fe0", 2213 "al_r7_r8_0x00001fe0"}, 2214 {{al, r2, r4, 0x00001560}, 2215 false, 2216 al, 2217 "al r2 r4 0x00001560", 2218 "al_r2_r4_0x00001560"}, 2219 {{al, r13, r7, 0x00156000}, 2220 false, 2221 al, 2222 "al r13 r7 0x00156000", 2223 "al_r13_r7_0x00156000"}, 2224 {{al, r9, r9, 0x000003fc}, 2225 false, 2226 al, 2227 "al r9 r9 0x000003fc", 2228 "al_r9_r9_0x000003fc"}, 2229 {{al, r0, r3, 0x000ab000}, 2230 false, 2231 al, 2232 "al r0 r3 0x000ab000", 2233 "al_r0_r3_0x000ab000"}, 2234 {{al, r10, r12, 0x0000ab00}, 2235 false, 2236 al, 2237 "al r10 r12 0x0000ab00", 2238 "al_r10_r12_0x0000ab00"}, 2239 {{al, r1, r13, 0x00002ac0}, 2240 false, 2241 al, 2242 "al r1 r13 0x00002ac0", 2243 "al_r1_r13_0x00002ac0"}, 2244 {{al, r3, r10, 0x001fe000}, 2245 false, 2246 al, 2247 "al r3 r10 0x001fe000", 2248 "al_r3_r10_0x001fe000"}, 2249 {{al, r4, r12, 0x00ff00ff}, 2250 false, 2251 al, 2252 "al r4 r12 0x00ff00ff", 2253 "al_r4_r12_0x00ff00ff"}, 2254 {{al, r12, r5, 0x003fc000}, 2255 false, 2256 al, 2257 "al r12 r5 0x003fc000", 2258 "al_r12_r5_0x003fc000"}, 2259 {{al, r11, r2, 0x0001fe00}, 2260 false, 2261 al, 2262 "al r11 r2 0x0001fe00", 2263 "al_r11_r2_0x0001fe00"}, 2264 {{al, r8, r6, 0x0007f800}, 2265 false, 2266 al, 2267 "al r8 r6 0x0007f800", 2268 "al_r8_r6_0x0007f800"}, 2269 {{al, r11, r1, 0x000000ff}, 2270 false, 2271 al, 2272 "al r11 r1 0x000000ff", 2273 "al_r11_r1_0x000000ff"}, 2274 {{al, r5, r2, 0x007f8000}, 2275 false, 2276 al, 2277 "al r5 r2 0x007f8000", 2278 "al_r5_r2_0x007f8000"}, 2279 {{al, r8, r10, 0xab000000}, 2280 false, 2281 al, 2282 "al r8 r10 0xab000000", 2283 "al_r8_r10_0xab000000"}, 2284 {{al, r10, r3, 0x000ff000}, 2285 false, 2286 al, 2287 "al r10 r3 0x000ff000", 2288 "al_r10_r3_0x000ff000"}, 2289 {{al, r6, r0, 0x00ff0000}, 2290 false, 2291 al, 2292 "al r6 r0 0x00ff0000", 2293 "al_r6_r0_0x00ff0000"}, 2294 {{al, r7, r14, 0x0ff00000}, 2295 false, 2296 al, 2297 "al r7 r14 0x0ff00000", 2298 "al_r7_r14_0x0ff00000"}, 2299 {{al, r8, r3, 0x00001560}, 2300 false, 2301 al, 2302 "al r8 r3 0x00001560", 2303 "al_r8_r3_0x00001560"}, 2304 {{al, r13, r9, 0x00000558}, 2305 false, 2306 al, 2307 "al r13 r9 0x00000558", 2308 "al_r13_r9_0x00000558"}, 2309 {{al, r8, r7, 0x00001fe0}, 2310 false, 2311 al, 2312 "al r8 r7 0x00001fe0", 2313 "al_r8_r7_0x00001fe0"}, 2314 {{al, r13, r3, 0x0003fc00}, 2315 false, 2316 al, 2317 "al r13 r3 0x0003fc00", 2318 "al_r13_r3_0x0003fc00"}, 2319 {{al, r4, r14, 0x000000ab}, 2320 false, 2321 al, 2322 "al r4 r14 0x000000ab", 2323 "al_r4_r14_0x000000ab"}, 2324 {{al, r14, r7, 0x000000ab}, 2325 false, 2326 al, 2327 "al r14 r7 0x000000ab", 2328 "al_r14_r7_0x000000ab"}, 2329 {{al, r11, r9, 0x00558000}, 2330 false, 2331 al, 2332 "al r11 r9 0x00558000", 2333 "al_r11_r9_0x00558000"}, 2334 {{al, r3, r10, 0x0000ff00}, 2335 false, 2336 al, 2337 "al r3 r10 0x0000ff00", 2338 "al_r3_r10_0x0000ff00"}, 2339 {{al, r4, r12, 0x003fc000}, 2340 false, 2341 al, 2342 "al r4 r12 0x003fc000", 2343 "al_r4_r12_0x003fc000"}, 2344 {{al, r11, r1, 0x002ac000}, 2345 false, 2346 al, 2347 "al r11 r1 0x002ac000", 2348 "al_r11_r1_0x002ac000"}, 2349 {{al, r12, r0, 0x7f800000}, 2350 false, 2351 al, 2352 "al r12 r0 0x7f800000", 2353 "al_r12_r0_0x7f800000"}, 2354 {{al, r3, r9, 0x00003fc0}, 2355 false, 2356 al, 2357 "al r3 r9 0x00003fc0", 2358 "al_r3_r9_0x00003fc0"}, 2359 {{al, r6, r6, 0x0ff00000}, 2360 false, 2361 al, 2362 "al r6 r6 0x0ff00000", 2363 "al_r6_r6_0x0ff00000"}, 2364 {{al, r1, r11, 0xff000000}, 2365 false, 2366 al, 2367 "al r1 r11 0xff000000", 2368 "al_r1_r11_0xff000000"}, 2369 {{al, r2, r10, 0x0007f800}, 2370 false, 2371 al, 2372 "al r2 r10 0x0007f800", 2373 "al_r2_r10_0x0007f800"}, 2374 {{al, r12, r10, 0x000002ac}, 2375 false, 2376 al, 2377 "al r12 r10 0x000002ac", 2378 "al_r12_r10_0x000002ac"}, 2379 {{al, r10, r8, 0x000003fc}, 2380 false, 2381 al, 2382 "al r10 r8 0x000003fc", 2383 "al_r10_r8_0x000003fc"}, 2384 {{al, r9, r0, 0x55800000}, 2385 false, 2386 al, 2387 "al r9 r0 0x55800000", 2388 "al_r9_r0_0x55800000"}, 2389 {{al, r8, r7, 0x1fe00000}, 2390 false, 2391 al, 2392 "al r8 r7 0x1fe00000", 2393 "al_r8_r7_0x1fe00000"}, 2394 {{al, r4, r0, 0x15600000}, 2395 false, 2396 al, 2397 "al r4 r0 0x15600000", 2398 "al_r4_r0_0x15600000"}, 2399 {{al, r4, r0, 0xff00ff00}, 2400 false, 2401 al, 2402 "al r4 r0 0xff00ff00", 2403 "al_r4_r0_0xff00ff00"}, 2404 {{al, r1, r14, 0x00007f80}, 2405 false, 2406 al, 2407 "al r1 r14 0x00007f80", 2408 "al_r1_r14_0x00007f80"}, 2409 {{al, r7, r3, 0x00ff00ff}, 2410 false, 2411 al, 2412 "al r7 r3 0x00ff00ff", 2413 "al_r7_r3_0x00ff00ff"}, 2414 {{al, r10, r2, 0x00001560}, 2415 false, 2416 al, 2417 "al r10 r2 0x00001560", 2418 "al_r10_r2_0x00001560"}, 2419 {{al, r0, r14, 0xabababab}, 2420 false, 2421 al, 2422 "al r0 r14 0xabababab", 2423 "al_r0_r14_0xabababab"}, 2424 {{al, r3, r4, 0x007f8000}, 2425 false, 2426 al, 2427 "al r3 r4 0x007f8000", 2428 "al_r3_r4_0x007f8000"}, 2429 {{al, r0, r2, 0x003fc000}, 2430 false, 2431 al, 2432 "al r0 r2 0x003fc000", 2433 "al_r0_r2_0x003fc000"}, 2434 {{al, r13, r6, 0x0002ac00}, 2435 false, 2436 al, 2437 "al r13 r6 0x0002ac00", 2438 "al_r13_r6_0x0002ac00"}, 2439 {{al, r11, r5, 0x00001fe0}, 2440 false, 2441 al, 2442 "al r11 r5 0x00001fe0", 2443 "al_r11_r5_0x00001fe0"}, 2444 {{al, r1, r13, 0x00005580}, 2445 false, 2446 al, 2447 "al r1 r13 0x00005580", 2448 "al_r1_r13_0x00005580"}, 2449 {{al, r13, r8, 0x000007f8}, 2450 false, 2451 al, 2452 "al r13 r8 0x000007f8", 2453 "al_r13_r8_0x000007f8"}, 2454 {{al, r6, r4, 0x0ab00000}, 2455 false, 2456 al, 2457 "al r6 r4 0x0ab00000", 2458 "al_r6_r4_0x0ab00000"}, 2459 {{al, r14, r10, 0x1fe00000}, 2460 false, 2461 al, 2462 "al r14 r10 0x1fe00000", 2463 "al_r14_r10_0x1fe00000"}, 2464 {{al, r7, r6, 0xff00ff00}, 2465 false, 2466 al, 2467 "al r7 r6 0xff00ff00", 2468 "al_r7_r6_0xff00ff00"}, 2469 {{al, r11, r5, 0xffffffff}, 2470 false, 2471 al, 2472 "al r11 r5 0xffffffff", 2473 "al_r11_r5_0xffffffff"}, 2474 {{al, r0, r12, 0xffffffff}, 2475 false, 2476 al, 2477 "al r0 r12 0xffffffff", 2478 "al_r0_r12_0xffffffff"}, 2479 {{al, r12, r2, 0x15600000}, 2480 false, 2481 al, 2482 "al r12 r2 0x15600000", 2483 "al_r12_r2_0x15600000"}, 2484 {{al, r3, r12, 0x000ff000}, 2485 false, 2486 al, 2487 "al r3 r12 0x000ff000", 2488 "al_r3_r12_0x000ff000"}, 2489 {{al, r6, r8, 0x00055800}, 2490 false, 2491 al, 2492 "al r6 r8 0x00055800", 2493 "al_r6_r8_0x00055800"}, 2494 {{al, r12, r7, 0x05580000}, 2495 false, 2496 al, 2497 "al r12 r7 0x05580000", 2498 "al_r12_r7_0x05580000"}, 2499 {{al, r8, r5, 0x007f8000}, 2500 false, 2501 al, 2502 "al r8 r5 0x007f8000", 2503 "al_r8_r5_0x007f8000"}, 2504 {{al, r4, r1, 0x000ab000}, 2505 false, 2506 al, 2507 "al r4 r1 0x000ab000", 2508 "al_r4_r1_0x000ab000"}, 2509 {{al, r13, r12, 0x02ac0000}, 2510 false, 2511 al, 2512 "al r13 r12 0x02ac0000", 2513 "al_r13_r12_0x02ac0000"}, 2514 {{al, r9, r8, 0x000000ff}, 2515 false, 2516 al, 2517 "al r9 r8 0x000000ff", 2518 "al_r9_r8_0x000000ff"}, 2519 {{al, r1, r11, 0x00005580}, 2520 false, 2521 al, 2522 "al r1 r11 0x00005580", 2523 "al_r1_r11_0x00005580"}, 2524 {{al, r10, r12, 0x02ac0000}, 2525 false, 2526 al, 2527 "al r10 r12 0x02ac0000", 2528 "al_r10_r12_0x02ac0000"}, 2529 {{al, r7, r9, 0x00ab00ab}, 2530 false, 2531 al, 2532 "al r7 r9 0x00ab00ab", 2533 "al_r7_r9_0x00ab00ab"}, 2534 {{al, r0, r5, 0x0000ab00}, 2535 false, 2536 al, 2537 "al r0 r5 0x0000ab00", 2538 "al_r0_r5_0x0000ab00"}, 2539 {{al, r13, r9, 0x00558000}, 2540 false, 2541 al, 2542 "al r13 r9 0x00558000", 2543 "al_r13_r9_0x00558000"}, 2544 {{al, r0, r1, 0x002ac000}, 2545 false, 2546 al, 2547 "al r0 r1 0x002ac000", 2548 "al_r0_r1_0x002ac000"}, 2549 {{al, r14, r1, 0x00000ab0}, 2550 false, 2551 al, 2552 "al r14 r1 0x00000ab0", 2553 "al_r14_r1_0x00000ab0"}, 2554 {{al, r2, r2, 0x00000558}, 2555 false, 2556 al, 2557 "al r2 r2 0x00000558", 2558 "al_r2_r2_0x00000558"}, 2559 {{al, r10, r13, 0x00ab00ab}, 2560 false, 2561 al, 2562 "al r10 r13 0x00ab00ab", 2563 "al_r10_r13_0x00ab00ab"}, 2564 {{al, r4, r6, 0x00001560}, 2565 false, 2566 al, 2567 "al r4 r6 0x00001560", 2568 "al_r4_r6_0x00001560"}, 2569 {{al, r10, r0, 0x00156000}, 2570 false, 2571 al, 2572 "al r10 r0 0x00156000", 2573 "al_r10_r0_0x00156000"}, 2574 {{al, r10, r13, 0x00156000}, 2575 false, 2576 al, 2577 "al r10 r13 0x00156000", 2578 "al_r10_r13_0x00156000"}, 2579 {{al, r11, r2, 0x001fe000}, 2580 false, 2581 al, 2582 "al r11 r2 0x001fe000", 2583 "al_r11_r2_0x001fe000"}, 2584 {{al, r4, r5, 0x2ac00000}, 2585 false, 2586 al, 2587 "al r4 r5 0x2ac00000", 2588 "al_r4_r5_0x2ac00000"}, 2589 {{al, r8, r8, 0x02ac0000}, 2590 false, 2591 al, 2592 "al r8 r8 0x02ac0000", 2593 "al_r8_r8_0x02ac0000"}, 2594 {{al, r9, r1, 0x7f800000}, 2595 false, 2596 al, 2597 "al r9 r1 0x7f800000", 2598 "al_r9_r1_0x7f800000"}, 2599 {{al, r8, r9, 0xff00ff00}, 2600 false, 2601 al, 2602 "al r8 r9 0xff00ff00", 2603 "al_r8_r9_0xff00ff00"}, 2604 {{al, r12, r7, 0x00ff00ff}, 2605 false, 2606 al, 2607 "al r12 r7 0x00ff00ff", 2608 "al_r12_r7_0x00ff00ff"}, 2609 {{al, r9, r10, 0x00156000}, 2610 false, 2611 al, 2612 "al r9 r10 0x00156000", 2613 "al_r9_r10_0x00156000"}}; 2614 2615// These headers each contain an array of `TestResult` with the reference output 2616// values. The reference arrays are names `kReference{mnemonic}`. 2617#include "aarch32/traces/assembler-cond-rd-rn-operand-const-adc-t32.h" 2618#include "aarch32/traces/assembler-cond-rd-rn-operand-const-adcs-t32.h" 2619#include "aarch32/traces/assembler-cond-rd-rn-operand-const-add-t32.h" 2620#include "aarch32/traces/assembler-cond-rd-rn-operand-const-adds-t32.h" 2621#include "aarch32/traces/assembler-cond-rd-rn-operand-const-and-t32.h" 2622#include "aarch32/traces/assembler-cond-rd-rn-operand-const-ands-t32.h" 2623#include "aarch32/traces/assembler-cond-rd-rn-operand-const-bic-t32.h" 2624#include "aarch32/traces/assembler-cond-rd-rn-operand-const-bics-t32.h" 2625#include "aarch32/traces/assembler-cond-rd-rn-operand-const-eor-t32.h" 2626#include "aarch32/traces/assembler-cond-rd-rn-operand-const-eors-t32.h" 2627#include "aarch32/traces/assembler-cond-rd-rn-operand-const-orn-t32.h" 2628#include "aarch32/traces/assembler-cond-rd-rn-operand-const-orns-t32.h" 2629#include "aarch32/traces/assembler-cond-rd-rn-operand-const-orr-t32.h" 2630#include "aarch32/traces/assembler-cond-rd-rn-operand-const-orrs-t32.h" 2631#include "aarch32/traces/assembler-cond-rd-rn-operand-const-rsb-t32.h" 2632#include "aarch32/traces/assembler-cond-rd-rn-operand-const-rsbs-t32.h" 2633#include "aarch32/traces/assembler-cond-rd-rn-operand-const-sbc-t32.h" 2634#include "aarch32/traces/assembler-cond-rd-rn-operand-const-sbcs-t32.h" 2635#include "aarch32/traces/assembler-cond-rd-rn-operand-const-sub-t32.h" 2636#include "aarch32/traces/assembler-cond-rd-rn-operand-const-subs-t32.h" 2637 2638 2639// The maximum number of errors to report in detail for each test. 2640const unsigned kErrorReportLimit = 8; 2641 2642typedef void (MacroAssembler::*Fn)(Condition cond, 2643 Register rd, 2644 Register rn, 2645 const Operand& op); 2646 2647void TestHelper(Fn instruction, 2648 const char* mnemonic, 2649 const TestResult reference[]) { 2650 unsigned total_error_count = 0; 2651 MacroAssembler masm(BUF_SIZE); 2652 2653 masm.UseT32(); 2654 2655 for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) { 2656 // Values to pass to the macro-assembler. 2657 Condition cond = kTests[i].operands.cond; 2658 Register rd = kTests[i].operands.rd; 2659 Register rn = kTests[i].operands.rn; 2660 uint32_t immediate = kTests[i].operands.immediate; 2661 Operand op(immediate); 2662 2663 int32_t start = masm.GetCursorOffset(); 2664 { 2665 // We never generate more that 4 bytes, as IT instructions are only 2666 // allowed for narrow encodings. 2667 ExactAssemblyScope scope(&masm, 4, ExactAssemblyScope::kMaximumSize); 2668 if (kTests[i].in_it_block) { 2669 masm.it(kTests[i].it_condition); 2670 } 2671 (masm.*instruction)(cond, rd, rn, op); 2672 } 2673 int32_t end = masm.GetCursorOffset(); 2674 2675 const byte* result_ptr = 2676 masm.GetBuffer()->GetOffsetAddress<const byte*>(start); 2677 VIXL_ASSERT(start < end); 2678 uint32_t result_size = end - start; 2679 2680 if (Test::generate_test_trace()) { 2681 // Print the result bytes. 2682 printf("const byte kInstruction_%s_%s[] = {\n", 2683 mnemonic, 2684 kTests[i].identifier); 2685 for (uint32_t j = 0; j < result_size; j++) { 2686 if (j == 0) { 2687 printf(" 0x%02" PRIx8, result_ptr[j]); 2688 } else { 2689 printf(", 0x%02" PRIx8, result_ptr[j]); 2690 } 2691 } 2692 // This comment is meant to be used by external tools to validate 2693 // the encoding. We can parse the comment to figure out what 2694 // instruction this corresponds to. 2695 if (kTests[i].in_it_block) { 2696 printf(" // It %s; %s %s\n};\n", 2697 kTests[i].it_condition.GetName(), 2698 mnemonic, 2699 kTests[i].operands_description); 2700 } else { 2701 printf(" // %s %s\n};\n", mnemonic, kTests[i].operands_description); 2702 } 2703 } else { 2704 // Check we've emitted the exact same encoding as present in the 2705 // trace file. Only print up to `kErrorReportLimit` errors. 2706 if (((result_size != reference[i].size) || 2707 (memcmp(result_ptr, reference[i].encoding, reference[i].size) != 2708 0)) && 2709 (++total_error_count <= kErrorReportLimit)) { 2710 printf("Error when testing \"%s\" with operands \"%s\":\n", 2711 mnemonic, 2712 kTests[i].operands_description); 2713 printf(" Expected: "); 2714 for (uint32_t j = 0; j < reference[i].size; j++) { 2715 if (j == 0) { 2716 printf("0x%02" PRIx8, reference[i].encoding[j]); 2717 } else { 2718 printf(", 0x%02" PRIx8, reference[i].encoding[j]); 2719 } 2720 } 2721 printf("\n"); 2722 printf(" Found: "); 2723 for (uint32_t j = 0; j < result_size; j++) { 2724 if (j == 0) { 2725 printf("0x%02" PRIx8, result_ptr[j]); 2726 } else { 2727 printf(", 0x%02" PRIx8, result_ptr[j]); 2728 } 2729 } 2730 printf("\n"); 2731 } 2732 } 2733 } 2734 2735 masm.FinalizeCode(); 2736 2737 if (Test::generate_test_trace()) { 2738 // Finalize the trace file by writing the final `TestResult` array 2739 // which links all generated instruction encodings. 2740 printf("const TestResult kReference%s[] = {\n", mnemonic); 2741 for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) { 2742 printf(" {\n"); 2743 printf(" ARRAY_SIZE(kInstruction_%s_%s),\n", 2744 mnemonic, 2745 kTests[i].identifier); 2746 printf(" kInstruction_%s_%s,\n", mnemonic, kTests[i].identifier); 2747 printf(" },\n"); 2748 } 2749 printf("};\n"); 2750 } else { 2751 if (total_error_count > kErrorReportLimit) { 2752 printf("%u other errors follow.\n", 2753 total_error_count - kErrorReportLimit); 2754 } 2755 // Crash if the test failed. 2756 VIXL_CHECK(total_error_count == 0); 2757 } 2758} 2759 2760// Instantiate tests for each instruction in the list. 2761#define TEST(mnemonic) \ 2762 void Test_##mnemonic() { \ 2763 TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \ 2764 } \ 2765 Test test_##mnemonic("AARCH32_ASSEMBLER_COND_RD_RN_OPERAND_CONST_" #mnemonic \ 2766 "_T32", \ 2767 &Test_##mnemonic); 2768FOREACH_INSTRUCTION(TEST) 2769#undef TEST 2770 2771} // namespace 2772#endif 2773 2774} // namespace aarch32 2775} // namespace vixl 2776