| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 775 COMPARE(rorv(w18, w19, w20), "ror w18, w19, w20"); | 775 COMPARE(rorv(w18, w19, w20), "ror w18, w19, w20"); |
| 776 COMPARE(rorv(x21, x22, x23), "ror x21, x22, x23"); | 776 COMPARE(rorv(x21, x22, x23), "ror x21, x22, x23"); |
| 777 | 777 |
| 778 CLEANUP(); | 778 CLEANUP(); |
| 779 } | 779 } |
| 780 | 780 |
| 781 | 781 |
| 782 TEST_(adr) { | 782 TEST_(adr) { |
| 783 SET_UP(); | 783 SET_UP(); |
| 784 | 784 |
| 785 COMPARE(adr(x0, 0), "adr x0, #+0x0"); | 785 COMPARE_PREFIX(adr(x0, 0), "adr x0, #+0x0"); |
| 786 COMPARE(adr(x1, 1), "adr x1, #+0x1"); | 786 COMPARE_PREFIX(adr(x1, 1), "adr x1, #+0x1"); |
| 787 COMPARE(adr(x2, -1), "adr x2, #-0x1"); | 787 COMPARE_PREFIX(adr(x2, -1), "adr x2, #-0x1"); |
| 788 COMPARE(adr(x3, 4), "adr x3, #+0x4"); | 788 COMPARE_PREFIX(adr(x3, 4), "adr x3, #+0x4"); |
| 789 COMPARE(adr(x4, -4), "adr x4, #-0x4"); | 789 COMPARE_PREFIX(adr(x4, -4), "adr x4, #-0x4"); |
| 790 COMPARE(adr(x5, 0x000fffff), "adr x5, #+0xfffff"); | 790 COMPARE_PREFIX(adr(x5, 0x000fffff), "adr x5, #+0xfffff"); |
| 791 COMPARE(adr(x6, -0x00100000), "adr x6, #-0x100000"); | 791 COMPARE_PREFIX(adr(x6, -0x00100000), "adr x6, #-0x100000"); |
| 792 COMPARE(adr(xzr, 0), "adr xzr, #+0x0"); | 792 COMPARE_PREFIX(adr(xzr, 0), "adr xzr, #+0x0"); |
| 793 | 793 |
| 794 CLEANUP(); | 794 CLEANUP(); |
| 795 } | 795 } |
| 796 | 796 |
| 797 | 797 |
| 798 TEST_(branch) { | 798 TEST_(branch) { |
| 799 SET_UP(); | 799 SET_UP(); |
| 800 | 800 |
| 801 #define INST_OFF(x) ((x) >> kInstructionSizeLog2) | 801 #define INST_OFF(x) ((x) >> kInstructionSizeLog2) |
| 802 COMPARE(b(INST_OFF(0x4)), "b #+0x4"); | 802 COMPARE_PREFIX(b(INST_OFF(0x4)), "b #+0x4"); |
| 803 COMPARE(b(INST_OFF(-0x4)), "b #-0x4"); | 803 COMPARE_PREFIX(b(INST_OFF(-0x4)), "b #-0x4"); |
| 804 COMPARE(b(INST_OFF(0x7fffffc)), "b #+0x7fffffc"); | 804 COMPARE_PREFIX(b(INST_OFF(0x7fffffc)), "b #+0x7fffffc"); |
| 805 COMPARE(b(INST_OFF(-0x8000000)), "b #-0x8000000"); | 805 COMPARE_PREFIX(b(INST_OFF(-0x8000000)), "b #-0x8000000"); |
| 806 COMPARE(b(INST_OFF(0xffffc), eq), "b.eq #+0xffffc"); | 806 COMPARE_PREFIX(b(INST_OFF(0xffffc), eq), "b.eq #+0xffffc"); |
| 807 COMPARE(b(INST_OFF(-0x100000), mi), "b.mi #-0x100000"); | 807 COMPARE_PREFIX(b(INST_OFF(-0x100000), mi), "b.mi #-0x100000"); |
| 808 COMPARE(bl(INST_OFF(0x4)), "bl #+0x4"); | 808 COMPARE_PREFIX(bl(INST_OFF(0x4)), "bl #+0x4"); |
| 809 COMPARE(bl(INST_OFF(-0x4)), "bl #-0x4"); | 809 COMPARE_PREFIX(bl(INST_OFF(-0x4)), "bl #-0x4"); |
| 810 COMPARE(bl(INST_OFF(0xffffc)), "bl #+0xffffc"); | 810 COMPARE_PREFIX(bl(INST_OFF(0xffffc)), "bl #+0xffffc"); |
| 811 COMPARE(bl(INST_OFF(-0x100000)), "bl #-0x100000"); | 811 COMPARE_PREFIX(bl(INST_OFF(-0x100000)), "bl #-0x100000"); |
| 812 COMPARE(cbz(w0, INST_OFF(0xffffc)), "cbz w0, #+0xffffc"); | 812 COMPARE_PREFIX(cbz(w0, INST_OFF(0xffffc)), "cbz w0, #+0xffffc"); |
| 813 COMPARE(cbz(x1, INST_OFF(-0x100000)), "cbz x1, #-0x100000"); | 813 COMPARE_PREFIX(cbz(x1, INST_OFF(-0x100000)), "cbz x1, #-0x100000"); |
| 814 COMPARE(cbnz(w2, INST_OFF(0xffffc)), "cbnz w2, #+0xffffc"); | 814 COMPARE_PREFIX(cbnz(w2, INST_OFF(0xffffc)), "cbnz w2, #+0xffffc"); |
| 815 COMPARE(cbnz(x3, INST_OFF(-0x100000)), "cbnz x3, #-0x100000"); | 815 COMPARE_PREFIX(cbnz(x3, INST_OFF(-0x100000)), "cbnz x3, #-0x100000"); |
| 816 COMPARE(tbz(w4, 0, INST_OFF(0x7ffc)), "tbz w4, #0, #+0x7ffc"); | 816 COMPARE_PREFIX(tbz(w4, 0, INST_OFF(0x7ffc)), "tbz w4, #0, #+0x7ffc"); |
| 817 COMPARE(tbz(x5, 63, INST_OFF(-0x8000)), "tbz x5, #63, #-0x8000"); | 817 COMPARE_PREFIX(tbz(x5, 63, INST_OFF(-0x8000)), "tbz x5, #63, #-0x8000"); |
| 818 COMPARE(tbz(w6, 31, INST_OFF(0)), "tbz w6, #31, #+0x0"); | 818 COMPARE_PREFIX(tbz(w6, 31, INST_OFF(0)), "tbz w6, #31, #+0x0"); |
| 819 COMPARE(tbz(x7, 31, INST_OFF(0x4)), "tbz w7, #31, #+0x4"); | 819 COMPARE_PREFIX(tbz(x7, 31, INST_OFF(0x4)), "tbz w7, #31, #+0x4"); |
| 820 COMPARE(tbz(x8, 32, INST_OFF(0x8)), "tbz x8, #32, #+0x8"); | 820 COMPARE_PREFIX(tbz(x8, 32, INST_OFF(0x8)), "tbz x8, #32, #+0x8"); |
| 821 COMPARE(tbnz(w8, 0, INST_OFF(0x7ffc)), "tbnz w8, #0, #+0x7ffc"); | 821 COMPARE_PREFIX(tbnz(w8, 0, INST_OFF(0x7ffc)), "tbnz w8, #0, #+0x7ffc"); |
| 822 COMPARE(tbnz(x9, 63, INST_OFF(-0x8000)), "tbnz x9, #63, #-0x8000"); | 822 COMPARE_PREFIX(tbnz(x9, 63, INST_OFF(-0x8000)), "tbnz x9, #63, #-0x8000"); |
| 823 COMPARE(tbnz(w10, 31, INST_OFF(0)), "tbnz w10, #31, #+0x0"); | 823 COMPARE_PREFIX(tbnz(w10, 31, INST_OFF(0)), "tbnz w10, #31, #+0x0"); |
| 824 COMPARE(tbnz(x11, 31, INST_OFF(0x4)), "tbnz w11, #31, #+0x4"); | 824 COMPARE_PREFIX(tbnz(x11, 31, INST_OFF(0x4)), "tbnz w11, #31, #+0x4"); |
| 825 COMPARE(tbnz(x12, 32, INST_OFF(0x8)), "tbnz x12, #32, #+0x8"); | 825 COMPARE_PREFIX(tbnz(x12, 32, INST_OFF(0x8)), "tbnz x12, #32, #+0x8"); |
| 826 COMPARE(br(x0), "br x0"); | 826 COMPARE(br(x0), "br x0"); |
| 827 COMPARE(blr(x1), "blr x1"); | 827 COMPARE(blr(x1), "blr x1"); |
| 828 COMPARE(ret(x2), "ret x2"); | 828 COMPARE(ret(x2), "ret x2"); |
| 829 COMPARE(ret(lr), "ret") | 829 COMPARE(ret(lr), "ret") |
| 830 | 830 |
| 831 CLEANUP(); | 831 CLEANUP(); |
| 832 } | 832 } |
| 833 | 833 |
| 834 | 834 |
| 835 TEST_(load_store) { | 835 TEST_(load_store) { |
| (...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1266 CLEANUP(); | 1266 CLEANUP(); |
| 1267 } | 1267 } |
| 1268 | 1268 |
| 1269 #if 0 // TODO(all): enable. | 1269 #if 0 // TODO(all): enable. |
| 1270 TEST_(load_literal) { | 1270 TEST_(load_literal) { |
| 1271 SET_UP(); | 1271 SET_UP(); |
| 1272 | 1272 |
| 1273 COMPARE_PREFIX(ldr(x10, 0x1234567890abcdefUL), "ldr x10, pc+8"); | 1273 COMPARE_PREFIX(ldr(x10, 0x1234567890abcdefUL), "ldr x10, pc+8"); |
| 1274 COMPARE_PREFIX(ldr(w20, 0xfedcba09), "ldr w20, pc+8"); | 1274 COMPARE_PREFIX(ldr(w20, 0xfedcba09), "ldr w20, pc+8"); |
| 1275 COMPARE_PREFIX(ldr(d11, 1.234), "ldr d11, pc+8"); | 1275 COMPARE_PREFIX(ldr(d11, 1.234), "ldr d11, pc+8"); |
| 1276 COMPARE_PREFIX(ldr(s22, 2.5), "ldr s22, pc+8"); | 1276 COMPARE_PREFIX(ldr(s22, 2.5f), "ldr s22, pc+8"); |
| 1277 | 1277 |
| 1278 CLEANUP(); | 1278 CLEANUP(); |
| 1279 } | 1279 } |
| 1280 #endif | 1280 #endif |
| 1281 | 1281 |
| 1282 TEST_(cond_select) { | 1282 TEST_(cond_select) { |
| 1283 SET_UP(); | 1283 SET_UP(); |
| 1284 | 1284 |
| 1285 COMPARE(csel(w0, w1, w2, eq), "csel w0, w1, w2, eq"); | 1285 COMPARE(csel(w0, w1, w2, eq), "csel w0, w1, w2, eq"); |
| 1286 COMPARE(csel(x3, x4, x5, ne), "csel x3, x4, x5, ne"); | 1286 COMPARE(csel(x3, x4, x5, ne), "csel x3, x4, x5, ne"); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1354 COMPARE(Ccmn(w2, -1, CVFlag, gt), "ccmp w2, #1, #nzCV, gt"); | 1354 COMPARE(Ccmn(w2, -1, CVFlag, gt), "ccmp w2, #1, #nzCV, gt"); |
| 1355 COMPARE(Ccmn(x3, -31, ZCVFlag, ls), "ccmp x3, #31, #nZCV, ls"); | 1355 COMPARE(Ccmn(x3, -31, ZCVFlag, ls), "ccmp x3, #31, #nZCV, ls"); |
| 1356 | 1356 |
| 1357 CLEANUP(); | 1357 CLEANUP(); |
| 1358 } | 1358 } |
| 1359 | 1359 |
| 1360 | 1360 |
| 1361 TEST_(fmov_imm) { | 1361 TEST_(fmov_imm) { |
| 1362 SET_UP(); | 1362 SET_UP(); |
| 1363 | 1363 |
| 1364 COMPARE(fmov(s0, 1.0), "fmov s0, #0x70 (1.0000)"); | 1364 COMPARE(fmov(s0, 1.0f), "fmov s0, #0x70 (1.0000)"); |
| 1365 COMPARE(fmov(s31, -13.0), "fmov s31, #0xaa (-13.0000)"); | 1365 COMPARE(fmov(s31, -13.0f), "fmov s31, #0xaa (-13.0000)"); |
| 1366 COMPARE(fmov(d1, 1.0), "fmov d1, #0x70 (1.0000)"); | 1366 COMPARE(fmov(d1, 1.0), "fmov d1, #0x70 (1.0000)"); |
| 1367 COMPARE(fmov(d29, -13.0), "fmov d29, #0xaa (-13.0000)"); | 1367 COMPARE(fmov(d29, -13.0), "fmov d29, #0xaa (-13.0000)"); |
| 1368 | 1368 |
| 1369 CLEANUP(); | 1369 CLEANUP(); |
| 1370 } | 1370 } |
| 1371 | 1371 |
| 1372 | 1372 |
| 1373 TEST_(fmov_reg) { | 1373 TEST_(fmov_reg) { |
| 1374 SET_UP(); | 1374 SET_UP(); |
| 1375 | 1375 |
| (...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1754 COMPARE(Dsb(FullSystem, BarrierOther), "dsb sy (0b1100)"); | 1754 COMPARE(Dsb(FullSystem, BarrierOther), "dsb sy (0b1100)"); |
| 1755 COMPARE(Dsb(InnerShareable, BarrierOther), "dsb sy (0b1000)"); | 1755 COMPARE(Dsb(InnerShareable, BarrierOther), "dsb sy (0b1000)"); |
| 1756 COMPARE(Dsb(NonShareable, BarrierOther), "dsb sy (0b0100)"); | 1756 COMPARE(Dsb(NonShareable, BarrierOther), "dsb sy (0b0100)"); |
| 1757 COMPARE(Dsb(OuterShareable, BarrierOther), "dsb sy (0b0000)"); | 1757 COMPARE(Dsb(OuterShareable, BarrierOther), "dsb sy (0b0000)"); |
| 1758 | 1758 |
| 1759 // ISB | 1759 // ISB |
| 1760 COMPARE(Isb(), "isb"); | 1760 COMPARE(Isb(), "isb"); |
| 1761 | 1761 |
| 1762 CLEANUP(); | 1762 CLEANUP(); |
| 1763 } | 1763 } |
| OLD | NEW |