| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 COMPARE(mrs(r2, CPSR, ge), "a10f2000 mrsge r2, CPSR"); | 498 COMPARE(mrs(r2, CPSR, ge), "a10f2000 mrsge r2, CPSR"); |
| 499 COMPARE(mrs(r3, SPSR, lt), "b14f3000 mrslt r3, SPSR"); | 499 COMPARE(mrs(r3, SPSR, lt), "b14f3000 mrslt r3, SPSR"); |
| 500 | 500 |
| 501 VERIFY_RUN(); | 501 VERIFY_RUN(); |
| 502 } | 502 } |
| 503 | 503 |
| 504 | 504 |
| 505 TEST(Vfp) { | 505 TEST(Vfp) { |
| 506 SET_UP(); | 506 SET_UP(); |
| 507 | 507 |
| 508 if (CpuFeatures::IsSupported(VFP3)) { | 508 if (CpuFeatures::IsSupported(VFPv3)) { |
| 509 CpuFeatureScope scope(&assm, VFP3); | 509 CpuFeatureScope scope(&assm, VFPv3); |
| 510 COMPARE(vmov(d0, r2, r3), | 510 COMPARE(vmov(d0, r2, r3), |
| 511 "ec432b10 vmov d0, r2, r3"); | 511 "ec432b10 vmov d0, r2, r3"); |
| 512 COMPARE(vmov(r2, r3, d0), | 512 COMPARE(vmov(r2, r3, d0), |
| 513 "ec532b10 vmov r2, r3, d0"); | 513 "ec532b10 vmov r2, r3, d0"); |
| 514 COMPARE(vmov(d0, d1), | 514 COMPARE(vmov(d0, d1), |
| 515 "eeb00b41 vmov.f64 d0, d1"); | 515 "eeb00b41 vmov.f64 d0, d1"); |
| 516 COMPARE(vmov(d3, d3, eq), | 516 COMPARE(vmov(d3, d3, eq), |
| 517 "0eb03b43 vmoveq.f64 d3, d3"); | 517 "0eb03b43 vmoveq.f64 d3, d3"); |
| 518 | 518 |
| 519 COMPARE(vmov(s0, s31), | 519 COMPARE(vmov(s0, s31), |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 730 "eefdbbcb vcvt.s32.f64 s23, d11"); | 730 "eefdbbcb vcvt.s32.f64 s23, d11"); |
| 731 COMPARE(vcvt_u32_f32(s22, s21), | 731 COMPARE(vcvt_u32_f32(s22, s21), |
| 732 "eebcbaea vcvt.u32.f32 s22, s21"); | 732 "eebcbaea vcvt.u32.f32 s22, s21"); |
| 733 COMPARE(vcvt_u32_f64(s20, d10), | 733 COMPARE(vcvt_u32_f64(s20, d10), |
| 734 "eebcabca vcvt.u32.f64 s20, d10"); | 734 "eebcabca vcvt.u32.f64 s20, d10"); |
| 735 | 735 |
| 736 COMPARE(vcvt_f64_s32(d9, 2), | 736 COMPARE(vcvt_f64_s32(d9, 2), |
| 737 "eeba9bcf vcvt.f64.s32 d9, d9, #2"); | 737 "eeba9bcf vcvt.f64.s32 d9, d9, #2"); |
| 738 | 738 |
| 739 if (CpuFeatures::IsSupported(VFP32DREGS)) { | 739 if (CpuFeatures::IsSupported(VFP32DREGS)) { |
| 740 CpuFeatureScope scope(&assm, VFP32DREGS); |
| 740 COMPARE(vmov(d3, d27), | 741 COMPARE(vmov(d3, d27), |
| 741 "eeb03b6b vmov.f64 d3, d27"); | 742 "eeb03b6b vmov.f64 d3, d27"); |
| 742 COMPARE(vmov(d18, d7), | 743 COMPARE(vmov(d18, d7), |
| 743 "eef02b47 vmov.f64 d18, d7"); | 744 "eef02b47 vmov.f64 d18, d7"); |
| 744 COMPARE(vmov(d18, r2, r3), | 745 COMPARE(vmov(d18, r2, r3), |
| 745 "ec432b32 vmov d18, r2, r3"); | 746 "ec432b32 vmov d18, r2, r3"); |
| 746 COMPARE(vmov(r2, r3, d18), | 747 COMPARE(vmov(r2, r3, d18), |
| 747 "ec532b32 vmov r2, r3, d18"); | 748 "ec532b32 vmov r2, r3, d18"); |
| 748 COMPARE(vmov(d20, d31), | 749 COMPARE(vmov(d20, d31), |
| 749 "eef04b6f vmov.f64 d20, d31"); | 750 "eef04b6f vmov.f64 d20, d31"); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 833 } | 834 } |
| 834 | 835 |
| 835 VERIFY_RUN(); | 836 VERIFY_RUN(); |
| 836 } | 837 } |
| 837 | 838 |
| 838 | 839 |
| 839 TEST(ARMv8_vrintX_disasm) { | 840 TEST(ARMv8_vrintX_disasm) { |
| 840 SET_UP(); | 841 SET_UP(); |
| 841 | 842 |
| 842 if (CpuFeatures::IsSupported(ARMv8)) { | 843 if (CpuFeatures::IsSupported(ARMv8)) { |
| 844 CpuFeatureScope scope(&assm, ARMv8); |
| 843 COMPARE(vrinta(d0, d0), "feb80b40 vrinta.f64.f64 d0, d0"); | 845 COMPARE(vrinta(d0, d0), "feb80b40 vrinta.f64.f64 d0, d0"); |
| 844 COMPARE(vrinta(d2, d3), "feb82b43 vrinta.f64.f64 d2, d3"); | 846 COMPARE(vrinta(d2, d3), "feb82b43 vrinta.f64.f64 d2, d3"); |
| 845 | 847 |
| 846 COMPARE(vrintp(d0, d0), "feba0b40 vrintp.f64.f64 d0, d0"); | 848 COMPARE(vrintp(d0, d0), "feba0b40 vrintp.f64.f64 d0, d0"); |
| 847 COMPARE(vrintp(d2, d3), "feba2b43 vrintp.f64.f64 d2, d3"); | 849 COMPARE(vrintp(d2, d3), "feba2b43 vrintp.f64.f64 d2, d3"); |
| 848 | 850 |
| 849 COMPARE(vrintn(d0, d0), "feb90b40 vrintn.f64.f64 d0, d0"); | 851 COMPARE(vrintn(d0, d0), "feb90b40 vrintn.f64.f64 d0, d0"); |
| 850 COMPARE(vrintn(d2, d3), "feb92b43 vrintn.f64.f64 d2, d3"); | 852 COMPARE(vrintn(d2, d3), "feb92b43 vrintn.f64.f64 d2, d3"); |
| 851 | 853 |
| 852 COMPARE(vrintm(d0, d0), "febb0b40 vrintm.f64.f64 d0, d0"); | 854 COMPARE(vrintm(d0, d0), "febb0b40 vrintm.f64.f64 d0, d0"); |
| 853 COMPARE(vrintm(d2, d3), "febb2b43 vrintm.f64.f64 d2, d3"); | 855 COMPARE(vrintm(d2, d3), "febb2b43 vrintm.f64.f64 d2, d3"); |
| 854 | 856 |
| 855 COMPARE(vrintz(d0, d0), "eeb60bc0 vrintz.f64.f64 d0, d0"); | 857 COMPARE(vrintz(d0, d0), "eeb60bc0 vrintz.f64.f64 d0, d0"); |
| 856 COMPARE(vrintz(d2, d3, ne), "1eb62bc3 vrintzne.f64.f64 d2, d3"); | 858 COMPARE(vrintz(d2, d3, ne), "1eb62bc3 vrintzne.f64.f64 d2, d3"); |
| 857 } | 859 } |
| 858 | 860 |
| 859 VERIFY_RUN(); | 861 VERIFY_RUN(); |
| 860 } | 862 } |
| 861 | 863 |
| 862 | 864 |
| 863 TEST(ARMv8_vminmax_disasm) { | 865 TEST(ARMv8_vminmax_disasm) { |
| 864 SET_UP(); | 866 SET_UP(); |
| 865 | 867 |
| 866 if (CpuFeatures::IsSupported(ARMv8)) { | 868 if (CpuFeatures::IsSupported(ARMv8)) { |
| 869 CpuFeatureScope scope(&assm, ARMv8); |
| 867 COMPARE(vmaxnm(d0, d1, d2), "fe810b02 vmaxnm.f64 d0, d1, d2"); | 870 COMPARE(vmaxnm(d0, d1, d2), "fe810b02 vmaxnm.f64 d0, d1, d2"); |
| 868 COMPARE(vminnm(d3, d4, d5), "fe843b45 vminnm.f64 d3, d4, d5"); | 871 COMPARE(vminnm(d3, d4, d5), "fe843b45 vminnm.f64 d3, d4, d5"); |
| 869 COMPARE(vmaxnm(s6, s7, s8), "fe833a84 vmaxnm.f32 s6, s7, s8"); | 872 COMPARE(vmaxnm(s6, s7, s8), "fe833a84 vmaxnm.f32 s6, s7, s8"); |
| 870 COMPARE(vminnm(s9, s10, s11), "fec54a65 vminnm.f32 s9, s10, s11"); | 873 COMPARE(vminnm(s9, s10, s11), "fec54a65 vminnm.f32 s9, s10, s11"); |
| 871 } | 874 } |
| 872 | 875 |
| 873 VERIFY_RUN(); | 876 VERIFY_RUN(); |
| 874 } | 877 } |
| 875 | 878 |
| 876 | 879 |
| 877 TEST(ARMv8_vselX_disasm) { | 880 TEST(ARMv8_vselX_disasm) { |
| 878 SET_UP(); | 881 SET_UP(); |
| 879 | 882 |
| 880 if (CpuFeatures::IsSupported(ARMv8)) { | 883 if (CpuFeatures::IsSupported(ARMv8)) { |
| 884 CpuFeatureScope scope(&assm, ARMv8); |
| 881 // Native instructions. | 885 // Native instructions. |
| 882 COMPARE(vsel(eq, d0, d1, d2), | 886 COMPARE(vsel(eq, d0, d1, d2), |
| 883 "fe010b02 vseleq.f64 d0, d1, d2"); | 887 "fe010b02 vseleq.f64 d0, d1, d2"); |
| 884 COMPARE(vsel(eq, s0, s1, s2), | 888 COMPARE(vsel(eq, s0, s1, s2), |
| 885 "fe000a81 vseleq.f32 s0, s1, s2"); | 889 "fe000a81 vseleq.f32 s0, s1, s2"); |
| 886 COMPARE(vsel(ge, d0, d1, d2), | 890 COMPARE(vsel(ge, d0, d1, d2), |
| 887 "fe210b02 vselge.f64 d0, d1, d2"); | 891 "fe210b02 vselge.f64 d0, d1, d2"); |
| 888 COMPARE(vsel(ge, s0, s1, s2), | 892 COMPARE(vsel(ge, s0, s1, s2), |
| 889 "fe200a81 vselge.f32 s0, s1, s2"); | 893 "fe200a81 vselge.f32 s0, s1, s2"); |
| 890 COMPARE(vsel(gt, d0, d1, d2), | 894 COMPARE(vsel(gt, d0, d1, d2), |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1219 | 1223 |
| 1220 COMPARE(ldrexb(r0, r1), "e1d10f9f ldrexb r0, [r1]"); | 1224 COMPARE(ldrexb(r0, r1), "e1d10f9f ldrexb r0, [r1]"); |
| 1221 COMPARE(strexb(r0, r1, r2), "e1c20f91 strexb r0, r1, [r2]"); | 1225 COMPARE(strexb(r0, r1, r2), "e1c20f91 strexb r0, r1, [r2]"); |
| 1222 COMPARE(ldrexh(r0, r1), "e1f10f9f ldrexh r0, [r1]"); | 1226 COMPARE(ldrexh(r0, r1), "e1f10f9f ldrexh r0, [r1]"); |
| 1223 COMPARE(strexh(r0, r1, r2), "e1e20f91 strexh r0, r1, [r2]"); | 1227 COMPARE(strexh(r0, r1, r2), "e1e20f91 strexh r0, r1, [r2]"); |
| 1224 COMPARE(ldrex(r0, r1), "e1910f9f ldrex r0, [r1]"); | 1228 COMPARE(ldrex(r0, r1), "e1910f9f ldrex r0, [r1]"); |
| 1225 COMPARE(strex(r0, r1, r2), "e1820f91 strex r0, r1, [r2]"); | 1229 COMPARE(strex(r0, r1, r2), "e1820f91 strex r0, r1, [r2]"); |
| 1226 | 1230 |
| 1227 VERIFY_RUN(); | 1231 VERIFY_RUN(); |
| 1228 } | 1232 } |
| OLD | NEW |