OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 1266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1277 uint32_t vmov_from_scalar_s16, vmov_from_scalar_u16; | 1277 uint32_t vmov_from_scalar_s16, vmov_from_scalar_u16; |
1278 uint32_t vmov_from_scalar_32; | 1278 uint32_t vmov_from_scalar_32; |
1279 uint32_t vmov[4], vmvn[4]; | 1279 uint32_t vmov[4], vmvn[4]; |
1280 int32_t vcvt_s32_f32[4]; | 1280 int32_t vcvt_s32_f32[4]; |
1281 uint32_t vcvt_u32_f32[4]; | 1281 uint32_t vcvt_u32_f32[4]; |
1282 float vcvt_f32_s32[4], vcvt_f32_u32[4]; | 1282 float vcvt_f32_s32[4], vcvt_f32_u32[4]; |
1283 uint32_t vdup8[4], vdup16[4], vdup32[4]; | 1283 uint32_t vdup8[4], vdup16[4], vdup32[4]; |
1284 float vabsf[4], vnegf[4]; | 1284 float vabsf[4], vnegf[4]; |
1285 uint32_t vabs_s8[4], vabs_s16[4], vabs_s32[4]; | 1285 uint32_t vabs_s8[4], vabs_s16[4], vabs_s32[4]; |
1286 uint32_t vneg_s8[4], vneg_s16[4], vneg_s32[4]; | 1286 uint32_t vneg_s8[4], vneg_s16[4], vneg_s32[4]; |
1287 uint32_t veor[4]; | 1287 uint32_t veor[4], vand[4], vorr[4]; |
1288 float vdupf[4], vaddf[4], vsubf[4], vmulf[4]; | 1288 float vdupf[4], vaddf[4], vsubf[4], vmulf[4]; |
1289 uint32_t vadd8[4], vadd16[4], vadd32[4]; | 1289 uint32_t vadd8[4], vadd16[4], vadd32[4]; |
1290 uint32_t vsub8[4], vsub16[4], vsub32[4]; | 1290 uint32_t vsub8[4], vsub16[4], vsub32[4]; |
1291 uint32_t vmul8[4], vmul16[4], vmul32[4]; | 1291 uint32_t vmul8[4], vmul16[4], vmul32[4]; |
1292 float vrecpe[4], vrecps[4], vrsqrte[4], vrsqrts[4]; | 1292 float vrecpe[4], vrecps[4], vrsqrte[4], vrsqrts[4]; |
1293 uint32_t vtst[4], vceq[4], vceqf[4], vbsl[4]; | 1293 uint32_t vtst[4], vceq[4], vceqf[4], vbsl[4]; |
1294 uint32_t vext[4]; | 1294 uint32_t vext[4]; |
1295 uint32_t vzip8a[4], vzip8b[4], vzip16a[4], vzip16b[4], vzip32a[4], | 1295 uint32_t vzip8a[4], vzip8b[4], vzip16a[4], vzip16b[4], vzip32a[4], |
1296 vzip32b[4]; | 1296 vzip32b[4]; |
1297 uint32_t vrev64_32[4], vrev64_16[4], vrev64_8[4]; | 1297 uint32_t vrev64_32[4], vrev64_16[4], vrev64_8[4]; |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1446 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vneg_s8)))); | 1446 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vneg_s8)))); |
1447 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1447 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
1448 __ vneg(Neon16, q1, q0); | 1448 __ vneg(Neon16, q1, q0); |
1449 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vneg_s16)))); | 1449 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vneg_s16)))); |
1450 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1450 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
1451 __ vneg(Neon32, q1, q0); | 1451 __ vneg(Neon32, q1, q0); |
1452 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vneg_s32)))); | 1452 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vneg_s32)))); |
1453 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1453 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
1454 | 1454 |
1455 // veor. | 1455 // veor. |
1456 __ mov(r4, Operand(0x00aa)); | 1456 __ mov(r4, Operand(0xaa)); |
1457 __ vdup(Neon16, q0, r4); | 1457 __ vdup(Neon16, q0, r4); |
1458 __ mov(r4, Operand(0x0055)); | 1458 __ mov(r4, Operand(0x55)); |
1459 __ vdup(Neon16, q1, r4); | 1459 __ vdup(Neon16, q1, r4); |
1460 __ veor(q1, q1, q0); | 1460 __ veor(q1, q1, q0); |
1461 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, veor)))); | 1461 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, veor)))); |
1462 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1462 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
| 1463 // vand. |
| 1464 __ mov(r4, Operand(0xff)); |
| 1465 __ vdup(Neon16, q0, r4); |
| 1466 __ mov(r4, Operand(0xfe)); |
| 1467 __ vdup(Neon16, q1, r4); |
| 1468 __ vand(q1, q1, q0); |
| 1469 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vand)))); |
| 1470 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
| 1471 // vorr. |
| 1472 __ mov(r4, Operand(0xaa)); |
| 1473 __ vdup(Neon16, q0, r4); |
| 1474 __ mov(r4, Operand(0x55)); |
| 1475 __ vdup(Neon16, q1, r4); |
| 1476 __ vorr(q1, q1, q0); |
| 1477 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vorr)))); |
| 1478 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
1463 | 1479 |
1464 // vadd (float). | 1480 // vadd (float). |
1465 __ vmov(s4, 1.0); | 1481 __ vmov(s4, 1.0); |
1466 __ vdup(q0, s4); | 1482 __ vdup(q0, s4); |
1467 __ vdup(q1, s4); | 1483 __ vdup(q1, s4); |
1468 __ vadd(q1, q1, q0); | 1484 __ vadd(q1, q1, q0); |
1469 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vaddf)))); | 1485 __ add(r4, r0, Operand(static_cast<int32_t>(offsetof(T, vaddf)))); |
1470 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); | 1486 __ vst1(Neon8, NeonListOperand(q1), NeonMemOperand(r4)); |
1471 // vsub (float). | 1487 // vsub (float). |
1472 __ vmov(s4, 2.0); | 1488 __ vmov(s4, 2.0); |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1769 CHECK_EQ_32X4(vnegf, 1.0, 0.0, -0.0, -1.0); | 1785 CHECK_EQ_32X4(vnegf, 1.0, 0.0, -0.0, -1.0); |
1770 // src: [0x7f7f7f7f, 0x01010101, 0xffffffff, 0x80808080] | 1786 // src: [0x7f7f7f7f, 0x01010101, 0xffffffff, 0x80808080] |
1771 CHECK_EQ_32X4(vabs_s8, 0x7f7f7f7fu, 0x01010101u, 0x01010101u, 0x80808080u); | 1787 CHECK_EQ_32X4(vabs_s8, 0x7f7f7f7fu, 0x01010101u, 0x01010101u, 0x80808080u); |
1772 CHECK_EQ_32X4(vabs_s16, 0x7f7f7f7fu, 0x01010101u, 0x00010001u, 0x7f807f80u); | 1788 CHECK_EQ_32X4(vabs_s16, 0x7f7f7f7fu, 0x01010101u, 0x00010001u, 0x7f807f80u); |
1773 CHECK_EQ_32X4(vabs_s32, 0x7f7f7f7fu, 0x01010101u, 0x00000001u, 0x7f7f7f80u); | 1789 CHECK_EQ_32X4(vabs_s32, 0x7f7f7f7fu, 0x01010101u, 0x00000001u, 0x7f7f7f80u); |
1774 CHECK_EQ_32X4(vneg_s8, 0x81818181u, 0xffffffffu, 0x01010101u, 0x80808080u); | 1790 CHECK_EQ_32X4(vneg_s8, 0x81818181u, 0xffffffffu, 0x01010101u, 0x80808080u); |
1775 CHECK_EQ_32X4(vneg_s16, 0x80818081u, 0xfefffeffu, 0x00010001u, 0x7f807f80u); | 1791 CHECK_EQ_32X4(vneg_s16, 0x80818081u, 0xfefffeffu, 0x00010001u, 0x7f807f80u); |
1776 CHECK_EQ_32X4(vneg_s32, 0x80808081u, 0xfefefeffu, 0x00000001u, 0x7f7f7f80u); | 1792 CHECK_EQ_32X4(vneg_s32, 0x80808081u, 0xfefefeffu, 0x00000001u, 0x7f7f7f80u); |
1777 | 1793 |
1778 CHECK_EQ_SPLAT(veor, 0x00ff00ffu); | 1794 CHECK_EQ_SPLAT(veor, 0x00ff00ffu); |
| 1795 CHECK_EQ_SPLAT(vand, 0x00fe00feu); |
| 1796 CHECK_EQ_SPLAT(vorr, 0x00ff00ffu); |
1779 CHECK_EQ_SPLAT(vaddf, 2.0); | 1797 CHECK_EQ_SPLAT(vaddf, 2.0); |
1780 CHECK_EQ_SPLAT(vsubf, -1.0); | 1798 CHECK_EQ_SPLAT(vsubf, -1.0); |
1781 CHECK_EQ_SPLAT(vmulf, 4.0); | 1799 CHECK_EQ_SPLAT(vmulf, 4.0); |
1782 CHECK_EQ_SPLAT(vrecpe, 0.5f); // 1 / 2 | 1800 CHECK_EQ_SPLAT(vrecpe, 0.5f); // 1 / 2 |
1783 CHECK_EQ_SPLAT(vrecps, -1.0f); // 2 - (2 * 1.5) | 1801 CHECK_EQ_SPLAT(vrecps, -1.0f); // 2 - (2 * 1.5) |
1784 CHECK_EQ_SPLAT(vrsqrte, 0.5f); // 1 / sqrt(4) | 1802 CHECK_EQ_SPLAT(vrsqrte, 0.5f); // 1 / sqrt(4) |
1785 CHECK_EQ_SPLAT(vrsqrts, -1.0f); // (3 - (2 * 2.5)) / 2 | 1803 CHECK_EQ_SPLAT(vrsqrts, -1.0f); // (3 - (2 * 2.5)) / 2 |
1786 CHECK_EQ_SPLAT(vceqf, 0xffffffffu); | 1804 CHECK_EQ_SPLAT(vceqf, 0xffffffffu); |
1787 CHECK_EQ_SPLAT(vadd8, 0x03030303u); | 1805 CHECK_EQ_SPLAT(vadd8, 0x03030303u); |
1788 CHECK_EQ_SPLAT(vadd16, 0x00030003u); | 1806 CHECK_EQ_SPLAT(vadd16, 0x00030003u); |
(...skipping 1707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3496 HandleScope scope(isolate); | 3514 HandleScope scope(isolate); |
3497 | 3515 |
3498 Assembler assm(isolate, NULL, 0); | 3516 Assembler assm(isolate, NULL, 0); |
3499 __ mov(r0, Operand(isolate->factory()->infinity_value())); | 3517 __ mov(r0, Operand(isolate->factory()->infinity_value())); |
3500 __ BlockConstPoolFor(1019); | 3518 __ BlockConstPoolFor(1019); |
3501 for (int i = 0; i < 1019; ++i) __ nop(); | 3519 for (int i = 0; i < 1019; ++i) __ nop(); |
3502 __ vldr(d0, MemOperand(r0, 0)); | 3520 __ vldr(d0, MemOperand(r0, 0)); |
3503 } | 3521 } |
3504 | 3522 |
3505 #undef __ | 3523 #undef __ |
OLD | NEW |